diff options
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 33374 |
1 files changed, 966 insertions, 32408 deletions
@@ -4,7 +4,7 @@ INCLUDE "includes.asm" SECTION "bank1", ROMX, BANK[$1] -Function4000:: ; 4000 +PlaceWaitingText:: ; 4000 hlcoord 3, 10 ld b, 1 ld c, 11 @@ -14,12 +14,12 @@ Function4000:: ; 4000 jr z, .notinbattle call TextBox - jr .incave + jr .proceed .notinbattle - predef Function28eef + predef Predef_LinkTextbox -.incave +.proceed hlcoord 4, 11 ld de, .Waiting call PlaceString @@ -58,1429 +58,7 @@ PushOAMEnd INCLUDE "engine/map_objects.asm" - -Function5ae8: ; 5ae8 - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - ld de, MUSIC_MAIN_MENU - ld a, e - ld [wMapMusic], a - call PlayMusic - callba MainMenu - jp Function6219 -; 5b04 - -; unreferenced - ret -; 5b05 - -PrintDayOfWeek: ; 5b05 - push de - ld hl, .Days - ld a, b - call GetNthString - ld d, h - ld e, l - pop hl - call PlaceString - ld h, b - ld l, c - ld de, .Day - call PlaceString - ret -; 5b1c - -.Days ; 5b1c - db "SUN@" - db "MON@" - db "TUES@" - db "WEDNES@" - db "THURS@" - db "FRI@" - db "SATUR@" -; 5b40 - -.Day ; 5b40 - db "DAY@" -; 5b44 - -NewGame_ClearTileMapEtc: ; 5b44 - xor a - ld [hMapAnims], a - call ClearTileMap - call LoadFontsExtra - call LoadStandardFont - call ResetTextRelatedRAM - ret -; 5b54 - -MysteryGift: ; 5b54 - call UpdateTime - callba DoMysteryGiftIfDayHasPassed - callba DoMysteryGift - ret -; 5b64 - -OptionsMenu: ; 5b64 - callba _OptionsMenu - ret -; 5b6b - -NewGame: ; 5b6b - xor a - ld [wc2cc], a - call ResetWRAM - call NewGame_ClearTileMapEtc - call AreYouABoyOrAreYouAGirl - call OakSpeech - call InitializeWorld - ld a, 1 - ld [wPreviousLandmark], a - - ld a, SPAWN_HOME - ld [DefaultSpawnpoint], a - - ld a, MAPSETUP_WARP - ld [hMapEntryMethod], a - jp FinishContinueFunction -; 5b8f - -AreYouABoyOrAreYouAGirl: ; 5b8f - callba Function10632f ; some mobile stuff - jr c, .ok - callba InitGender - ret - -.ok - ld c, 0 - callba Function4802f - ret -; 5ba7 - -ResetWRAM: ; 5ba7 - xor a - ld [hBGMapMode], a - call _ResetWRAM - ret -; 5bae - -_ResetWRAM: ; 5bae - - ld hl, Sprites - ld bc, Options - Sprites - xor a - call ByteFill - - ld hl, wd000 - ld bc, wGameData - wd000 - xor a - call ByteFill - - ld hl, wGameData - ld bc, wGameDataEnd - wGameData - xor a - call ByteFill - - ld a, [rLY] - ld [hSecondsBackup], a - call DelayFrame - ld a, [hRandomSub] - ld [PlayerID], a - - ld a, [rLY] - ld [hSecondsBackup], a - call DelayFrame - ld a, [hRandomAdd] - ld [PlayerID + 1], a - - call Random - ld [wSecretID], a - call DelayFrame - call Random - ld [wSecretID + 1], a - - ld hl, PartyCount - call InitList - - xor a - ld [wCurBox], a - ld [wSavedAtLeastOnce], a - - call SetDefaultBoxNames - - ld a, BANK(sBoxCount) - call GetSRAMBank - ld hl, sBoxCount - call InitList - call CloseSRAM - - ld hl, NumItems - call InitList - - ld hl, NumKeyItems - call InitList - - ld hl, NumBalls - call InitList - - ld hl, PCItems - call InitList - - xor a - ld [wRoamMon1Species], a - ld [wRoamMon2Species], a - ld [wRoamMon3Species], a - ld a, -1 - ld [wRoamMon1MapGroup], a - ld [wRoamMon2MapGroup], a - ld [wRoamMon3MapGroup], a - ld [wRoamMon1MapNumber], a - ld [wRoamMon2MapNumber], a - ld [wRoamMon3MapNumber], a - - ld a, BANK(sMysteryGiftItem) - call GetSRAMBank - ld hl, sMysteryGiftItem - xor a - ld [hli], a - dec a - ld [hl], a - call CloseSRAM - - call LoadOrRegenerateLuckyIDNumber - call InitializeMagikarpHouse - - xor a - ld [MonType], a - - ld [JohtoBadges], a - ld [KantoBadges], a - - ld [Coins], a - ld [Coins + 1], a - -START_MONEY EQU 3000 - -IF START_MONEY / $10000 - ld a, START_MONEY / $10000 -ENDC - ld [Money], a - ld a, START_MONEY / $100 % $100 - ld [Money + 1], a - ld a, START_MONEY % $100 - ld [Money + 2], a - - xor a - ld [wdc17], a - - ld hl, wdc19 - ld [hl], 2300 / $10000 - inc hl - ld [hl], 2300 / $100 % $100 - inc hl - ld [hl], 2300 % $100 - - call InitializeNPCNames - - callba InitDecorations - - callba DeleteScratchmons - - callba DeleteMobileEventIndex - - call ResetGameTime - ret -; 5ca1 - -InitList: ; 5ca1 -; Loads 0 in the count and -1 in the first item or mon slot. - xor a - ld [hli], a - dec a - ld [hl], a - ret -; 5ca6 - -SetDefaultBoxNames: ; 5ca6 - ld hl, wBoxNames - ld c, 0 -.loop - push hl - ld de, .Box - call CopyName2 - dec hl - ld a, c - inc a - cp 10 - jr c, .less - sub 10 - ld [hl], "1" - inc hl - -.less - add "0" - ld [hli], a - ld [hl], "@" - pop hl - ld de, 9 - add hl, de - inc c - ld a, c - cp NUM_BOXES - jr c, .loop - ret - -.Box - db "BOX@" -; 5cd3 - -InitializeMagikarpHouse: ; 5cd3 - ld hl, wBestMagikarpLengthFeet - ld a, $3 - ld [hli], a - ld a, $6 - ld [hli], a - ld de, .Ralph - call CopyName2 - ret -; 5ce3 - -.Ralph ; 5ce3 - db "RALPH@" -; 5ce9 - -InitializeNPCNames: ; 5ce9 - ld hl, .Rival - ld de, RivalName - call .Copy - - ld hl, .Mom - ld de, MomsName - call .Copy - - ld hl, .Red - ld de, RedsName - call .Copy - - ld hl, .Green - ld de, GreensName - -.Copy - ld bc, NAME_LENGTH - call CopyBytes - ret - -.Rival db "???@" -.Red db "RED@" -.Green db "GREEN@" -.Mom db "MOM@" -; 5d23 - -InitializeWorld: ; 5d23 - call ShrinkPlayer - callba GetSpawnCoord - callba _InitializeStartDay - ret -; 5d33 - -LoadOrRegenerateLuckyIDNumber: ; 5d33 - ld a, BANK(sLuckyIDNumber) - call GetSRAMBank - ld a, [CurDay] - inc a - ld b, a - ld a, [sLuckyNumberDay] - cp b - ld a, [sLuckyIDNumber + 1] - ld c, a - ld a, [sLuckyIDNumber] - jr z, .skip - ld a, b - ld [sLuckyNumberDay], a - call Random - ld c, a - call Random - -.skip - ld [wLuckyIDNumber], a - ld [sLuckyIDNumber], a - ld a, c - ld [wLuckyIDNumber + 1], a - ld [sLuckyIDNumber + 1], a - jp CloseSRAM -; 5d65 - -Continue: ; 5d65 - callba TryLoadSaveFile - jr c, .FailToLoad - callba Function150b9 - call LoadStandardMenuDataHeader - call Function5e85 - ld a, $1 - ld [hBGMapMode], a - ld c, 20 - call DelayFrames - call ConfirmContinue - jr nc, .Check1Pass - call WriteBackup - jr .FailToLoad - -.Check1Pass - call Function5e48 - jr nc, .Check2Pass - call WriteBackup - jr .FailToLoad - -.Check2Pass - ld a, $8 - ld [MusicFade], a - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - call ClearBGPalettes - call Function5df0 - call WriteBackup - call ClearTileMap - ld c, 20 - call DelayFrames - callba JumpRoamMons - callba Function105091 - callba Function140ae ; time-related - ld a, [wSpawnAfterChampion] - cp SPAWN_LANCE - jr z, .SpawnAfterE4 - ld a, MAPSETUP_CONTINUE - ld [hMapEntryMethod], a - jp FinishContinueFunction - -.FailToLoad - ret - -.SpawnAfterE4 - ld a, SPAWN_NEW_BARK - ld [wd001], a - call PostCreditsSpawn - jp FinishContinueFunction -; 5de2 - -SpawnAfterRed: ; 5de2 - ld a, SPAWN_MT_SILVER - ld [wd001], a -; 5de7 - -PostCreditsSpawn: ; 5de7 - xor a - ld [wSpawnAfterChampion], a - ld a, MAPSETUP_WARP - ld [hMapEntryMethod], a - ret -; 5df0 - -Function5df0: ; 5df0 - callba Function10632f - ret nc - ld hl, wd479 - bit 1, [hl] - ret nz - ld a, $5 - ld [MusicFade], a - ld a, MUSIC_MOBILE_ADAPTER_MENU % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_MOBILE_ADAPTER_MENU / $100 - ld [MusicFadeIDHi], a - ld c, 20 - call DelayFrames - ld c, $1 - callba Function4802f - callba Function1509a - ld a, $8 - ld [MusicFade], a - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - ld c, 35 - call DelayFrames - ret -; 5e34 - -ConfirmContinue: ; 5e34 -.loop - call DelayFrame - call GetJoypad - ld hl, hJoyPressed - bit 0, [hl] - jr nz, .PressA - bit 1, [hl] - jr z, .loop - scf - ret - -.PressA - ret -; 5e48 - -Function5e48: ; 5e48 - call Function6e3 - and %10000000 ; Day count exceeded 16383 - jr z, .pass - callba RestartClock - ld a, c - and a - jr z, .pass - scf - ret - -.pass - xor a - ret -; 5e5d - -FinishContinueFunction: ; 5e5d -.loop - xor a - ld [wc2c1], a - ld [wLinkMode], a - ld hl, GameTimerPause - set 0, [hl] - res 7, [hl] - ld hl, wEnteredMapFromContinue - set 1, [hl] - callba OverworldLoop - ld a, [wSpawnAfterChampion] - cp SPAWN_RED - jr z, .AfterRed - jp Reset - -.AfterRed - call SpawnAfterRed - jr .loop -; 5e85 - -Function5e85: ; 5e85 - call Function6e3 - and $80 - jr z, .asm_5e93 - lb de, 4, 8 - call Function5eaf - ret - -.asm_5e93 - lb de, 4, 8 - call Function5e9f - ret -; 5e9a - -Function5e9a: ; 5e9a - lb de, 4, 0 - jr Function5e9f -; 5e9f - -Function5e9f: ; 5e9f - call Function5ebf - call Function5f1c - call Function5f40 - call LoadFontsExtra - call UpdateSprites - ret -; 5eaf - -Function5eaf: ; 5eaf - call Function5ebf - call Function5f1c - call Function5f48 - call LoadFontsExtra - call UpdateSprites - ret -; 5ebf - -Function5ebf: ; 5ebf - xor a - ld [hBGMapMode], a - ld hl, MenuDataHeader_0x5ed9 - ld a, [StatusFlags] - bit 0, a ; pokedex - jr nz, .asm_5ecf - ld hl, MenuDataHeader_0x5efb - -.asm_5ecf - call Function1e35 - call MenuBox - call Function1c89 - ret -; 5ed9 - -MenuDataHeader_0x5ed9: ; 5ed9 - db $40 ; flags - db 00, 00 ; start coords - db 09, 15 ; end coords - dw MenuData2_0x5ee1 - db 1 ; default option -; 5ee1 - -MenuData2_0x5ee1: ; 5ee1 - db $00 ; flags - db 4 ; items - db "PLAYER@" - db "BADGES@" - db "#DEX@" - db "TIME@" -; 5efb - -MenuDataHeader_0x5efb: ; 5efb - db $40 ; flags - db 00, 00 ; start coords - db 09, 15 ; end coords - dw MenuData2_0x5f03 - db 1 ; default option -; 5f03 - -MenuData2_0x5f03: ; 5f03 - db $00 ; flags - db 4 ; items - db "PLAYER <PLAYER>@" - db "BADGES@" - db " @" - db "TIME@" -; 5f1c - - -Function5f1c: ; 5f1c - call MenuBoxCoord2Tile - push hl - ld de, $5d - add hl, de - call DisplayBadgeCount - pop hl - push hl - ld de, $84 - add hl, de - call DisplayPokedexNumCaught - pop hl - push hl - ld de, $30 - add hl, de - ld de, .Player - call PlaceString - pop hl - ret - -.Player - db "<PLAYER>@" -; 5f40 - -Function5f40: ; 5f40 - ld de, $a9 - add hl, de - call DisplayGameTime - ret -; 5f48 - -Function5f48: ; 5f48 - ld de, $a9 - add hl, de - ld de, .text_5f53 - call PlaceString - ret - -.text_5f53 - db " ???@" -; 5f58 - -DisplayBadgeCount: ; 5f58 - push hl - ld hl, JohtoBadges - ld b, $2 - call CountSetBits - pop hl - ld de, wd265 - lb bc, 1, 2 - jp PrintNum -; 5f6b - -DisplayPokedexNumCaught: ; 5f6b - ld a, [StatusFlags] - bit 0, a - ret z - push hl - ld hl, PokedexCaught - ld b, $20 - call CountSetBits - pop hl - ld de, wd265 - lb bc, 1, 3 - jp PrintNum -; 5f84 - -DisplayGameTime: ; 5f84 - ld de, GameTimeHours - lb bc, 2, 3 - call PrintNum - ld [hl], $6d - inc hl - ld de, GameTimeMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - jp PrintNum -; 5f99 - - -OakSpeech: ; 0x5f99 - callba InitClock - call Function4dd - call ClearTileMap - - ld de, MUSIC_ROUTE_30 - call PlayMusic - - call Function4a3 - call FadeToWhite - xor a - ld [CurPartySpecies], a - ld a, POKEMON_PROF - ld [TrainerClass], a - call Intro_PrepTrainerPic - - ld b, $1c - call GetSGBLayout - call Intro_FadeInFrontpic - - ld hl, OakText1 - call PrintText - call FadeToWhite - call ClearTileMap - - ld a, WOOPER - ld [CurSpecies], a - ld [CurPartySpecies], a - call GetBaseData - - hlcoord 6, 4 - call PrepMonFrontpic - - xor a - ld [TempMonDVs], a - ld [TempMonDVs + 1], a - - ld b, $1c - call GetSGBLayout - call Intro_WipeInFrontpic - - ld hl, OakText2 - call PrintText - ld hl, OakText4 - call PrintText - call FadeToWhite - call ClearTileMap - - xor a - ld [CurPartySpecies], a - ld a, POKEMON_PROF - ld [TrainerClass], a - call Intro_PrepTrainerPic - - ld b, $1c - call GetSGBLayout - call Intro_FadeInFrontpic - - ld hl, OakText5 - call PrintText - call FadeToWhite - call ClearTileMap - - xor a - ld [CurPartySpecies], a - callba DrawIntroPlayerPic - - ld b, $1c - call GetSGBLayout - call Intro_FadeInFrontpic - - ld hl, OakText6 - call PrintText - call NamePlayer - ld hl, OakText7 - call PrintText - ret - -OakText1: ; 0x6045 - text_jump _OakText1 - db "@" - -OakText2: ; 0x604a - text_jump _OakText2 - start_asm - ld a, WOOPER - call PlayCry - call WaitSFX - ld hl, OakText3 - ret - -OakText3: ; 0x605b - text_jump _OakText3 - db "@" - -OakText4: ; 0x6060 - text_jump _OakText4 - db "@" - -OakText5: ; 0x6065 - text_jump _OakText5 - db "@" - -OakText6: ; 0x606a - text_jump _OakText6 - db "@" - -OakText7: ; 0x606f - text_jump _OakText7 - db "@" - -NamePlayer: ; 0x6074 - callba MovePlayerPicRight - callba ShowPlayerNamingChoices - ld a, [MenuSelection2] - dec a - jr z, .NewName - call StorePlayerName - callba Function8c1d - callba MovePlayerPicLeft - ret - -.NewName - ld b, 1 - ld de, PlayerName - callba NamingScreen - - call FadeToWhite - call ClearTileMap - - call LoadFontsExtra - call WaitBGMap - - xor a - ld [CurPartySpecies], a - callba DrawIntroPlayerPic - - ld b, $1c - call GetSGBLayout - call Function4f0 - - ld hl, PlayerName - ld de, .Chris - ld a, [PlayerGender] - bit 0, a - jr z, .Male - ld de, .Kris -.Male - call InitName - ret - -.Chris - db "CHRIS@@@@@@" -.Kris - db "KRIS@@@@@@@" -; 60e9 - -Function60e9: ; Unreferenced - call LoadMenuDataHeader - call InterpretMenu2 - ld a, [MenuSelection2] - dec a - call CopyNameFromMenu - call WriteBackup - ret -; 60fa - -StorePlayerName: ; 60fa - ld a, "@" - ld bc, NAME_LENGTH - ld hl, PlayerName - call ByteFill - ld hl, PlayerName - ld de, StringBuffer2 - call CopyName2 - ret -; 610f - -ShrinkPlayer: ; 610f - - ld a, [hROMBank] - push af - - ld a, 0 << 7 | 32 ; fade out - ld [MusicFade], a - ld de, MUSIC_NONE - ld a, e - ld [MusicFadeIDLo], a - ld a, d - ld [MusicFadeIDHi], a - - ld de, SFX_ESCAPE_ROPE - call PlaySFX - pop af - rst Bankswitch - - ld c, 8 - call DelayFrames - - ld hl, Shrink1Pic - ld b, BANK(Shrink1Pic) - call ShrinkFrame - - ld c, 8 - call DelayFrames - - ld hl, Shrink2Pic - ld b, BANK(Shrink2Pic) - call ShrinkFrame - - ld c, 8 - call DelayFrames - - hlcoord 6, 5 - ld b, 7 - ld c, 7 - call ClearBox - - ld c, 3 - call DelayFrames - - call Intro_PlacePlayerSprite - call LoadFontsExtra - - ld c, 50 - call DelayFrames - - call FadeToWhite - call ClearTileMap - ret -; 616a - -Intro_FadeInFrontpic: ; 616a - ld hl, IntroFadePalettes - ld b, IntroFadePalettesEnd - IntroFadePalettes -.loop - ld a, [hli] - call DmgToCgbBGPals - ld c, 10 - call DelayFrames - dec b - jr nz, .loop - ret -; 617c - -IntroFadePalettes: ; 0x617c - db %01010100 - db %10101000 - db %11111100 - db %11111000 - db %11110100 - db %11100100 -IntroFadePalettesEnd -; 6182 - -Intro_WipeInFrontpic: ; 6182 - ld a, $77 - ld [hWX], a - call DelayFrame - ld a, %11100100 - call DmgToCgbBGPals -.loop - call DelayFrame - ld a, [hWX] - sub $8 - cp -1 - ret z - ld [hWX], a - jr .loop -; 619c - -Intro_PrepTrainerPic: ; 619c - ld de, VTiles2 - callba GetTrainerPic - xor a - ld [hFillBox], a - hlcoord 6, 4 - lb bc, 7, 7 - predef FillBox - ret -; 61b4 - -ShrinkFrame: ; 61b4 - ld de, VTiles2 - ld c, $31 - predef DecompressPredef - xor a - ld [hFillBox], a - hlcoord 6, 4 - lb bc, 7, 7 - predef FillBox - ret -; 61cd - -Intro_PlacePlayerSprite: ; 61cd - - callba GetPlayerIcon - ld c, $c - ld hl, VTiles0 - call Request2bpp - - ld hl, Sprites - ld de, .sprites - ld a, [de] - inc de - - ld c, a -.loop - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - - ld b, 0 - ld a, [PlayerGender] - bit 0, a - jr z, .male - ld b, 1 -.male - ld a, b - - ld [hli], a - dec c - jr nz, .loop - ret -; 61fe - -.sprites ; 61fe - db 4 - db $4c, $48, 0 - db $4c, $50, 1 - db $54, $48, 2 - db $54, $50, 3 -; 620b - - -Function620b: ; 620b - callab Functione4579 - jr c, Function6219 - callba CrystalIntro - -Function6219: ; 6219 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - - call TitleScreen - call DelayFrame -.loop - call Function627b - jr nc, .loop - - call ClearSprites - call ClearBGPalettes - - pop af - ld [rSVBK], a - - ld hl, rLCDC - res 2, [hl] - call ClearScreen - call Function3200 - xor a - ld [hLCDStatCustom], a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - ld b, $8 - call GetSGBLayout - call UpdateTimePals - ld a, [wcf64] - cp $5 - jr c, .ok - xor a -.ok - ld e, a - ld d, 0 - ld hl, .jumptable_626a -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 626a - -.jumptable_626a - dw Function5ae8 - dw Function6389 - dw Function620b - dw Function620b - dw ResetClock -; 6274 - - -TitleScreen: ; 6274 - callba _TitleScreen - ret -; 627b - -Function627b: ; 627b - ld a, [wJumptableIndex] - bit 7, a - jr nz, .done_title - call TitleScreenScene - callba SuicuneFrameIterator - call DelayFrame - and a - ret - -.done_title - scf - ret -; 6292 - -Function6292: ; 6292 ; unreferenced - ld a, [hVBlankCounter] - and $7 - ret nz - ld hl, LYOverrides + $5f - ld a, [hl] - dec a - ld bc, 2 * SCREEN_WIDTH - call ByteFill - ret -; 62a3 - -TitleScreenScene: ; 62a3 - ld e, a - ld d, 0 - ld hl, .scenes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 62af - -.scenes - dw TitleScreenEntrance - dw TitleScreenTimer - dw TitleScreenMain - dw TitleScreenEnd -; 62b7 - -Function62b7: ; Unreferenced - ld hl, wJumptableIndex - inc [hl] - ret -; 62bc - - -TitleScreenEntrance: ; 62bc - -; Animate the logo: -; Move each line by 4 pixels until our count hits 0. - ld a, [hSCX] - and a - jr z, .done - sub 4 - ld [hSCX], a - -; Lay out a base (all lines scrolling together). - ld e, a - ld hl, LYOverrides - ld bc, 8 * 10 ; logo height - call ByteFill - -; Reversed signage for every other line's position. -; This is responsible for the interlaced effect. - ld a, e - xor -1 - inc a - - ld b, 8 * 10 / 2 ; logo height / 2 - ld hl, LYOverrides + 1 -.loop - ld [hli], a - inc hl - dec b - jr nz, .loop - - callba AnimateTitleCrystal - ret - -.done -; Next scene - ld hl, wJumptableIndex - inc [hl] - xor a - ld [hLCDStatCustom], a - -; Play the title screen music. - ld de, MUSIC_TITLE - call PlayMusic - - ld a, $88 - ld [hWY], a - ret -; 62f6 - - -TitleScreenTimer: ; 62f6 - -; Next scene - ld hl, wJumptableIndex - inc [hl] - -; Start a timer - ld hl, wcf65 - ld de, $1140 ; 73.6 seconds - ld [hl], e - inc hl - ld [hl], d - ret -; 6304 - -TitleScreenMain: ; 6304 - -; Run the timer down. - ld hl, wcf65 - ld e, [hl] - inc hl - ld d, [hl] - ld a, e - or d - jr z, .end - - dec de - ld [hl], d - dec hl - ld [hl], e - -; Save data can be deleted by pressing Up + B + Select. - call GetJoypad - ld hl, hJoyDown - ld a, [hl] - and D_UP + B_BUTTON + SELECT - cp D_UP + B_BUTTON + SELECT - jr z, .delete_save_data - -; To bring up the clock reset dialog: - -; Hold Down + B + Select to initiate the sequence. - ld a, [$ffeb] - cp $34 - jr z, .check_clock_reset - - ld a, [hl] - and D_DOWN + B_BUTTON + SELECT - cp D_DOWN + B_BUTTON + SELECT - jr nz, .check_start - - ld a, $34 - ld [$ffeb], a - jr .check_start - -; Keep Select pressed, and hold Left + Up. -; Then let go of Select. -.check_clock_reset - bit 2, [hl] ; SELECT - jr nz, .check_start - - xor a - ld [$ffeb], a - - ld a, [hl] - and D_LEFT + D_UP - cp D_LEFT + D_UP - jr z, .clock_reset - -; Press Start or A to start the game. -.check_start - ld a, [hl] - and START | A_BUTTON - jr nz, .incave - ret - -.incave - ld a, 0 - jr .done - -.delete_save_data - ld a, 1 - -.done - ld [wcf64], a - -; Return to the intro sequence. - ld hl, wJumptableIndex - set 7, [hl] - ret - -.end -; Next scene - ld hl, wJumptableIndex - inc [hl] - -; Fade out the title screen music - xor a - ld [MusicFadeIDLo], a - ld [MusicFadeIDHi], a - ld hl, MusicFade - ld [hl], 8 ; 1 second - - ld hl, wcf65 - inc [hl] - ret - -.clock_reset - ld a, 4 - ld [wcf64], a - -; Return to the intro sequence. - ld hl, wJumptableIndex - set 7, [hl] - ret -; 6375 - -TitleScreenEnd: ; 6375 - -; Wait until the music is done fading. - - ld hl, wcf65 - inc [hl] - - ld a, [MusicFade] - and a - ret nz - - ld a, 2 - ld [wcf64], a - -; Back to the intro. - ld hl, wJumptableIndex - set 7, [hl] - ret -; 6389 - -Function6389: ; 6389 - callba Function4d54c - jp Init -; 6392 - -ResetClock: ; 6392 - callba _ResetClock - jp Init -; 639b - -Function639b: ; unreferenced - ; If bit 0 or 1 of [wcf65] is set, we don't need to be here. - ld a, [wcf65] - and $3 - ret nz - ld bc, wc3a4 - ld hl, $a - add hl, bc ; over-the-top compicated way to load wc3ae into hl - ld l, [hl] - ld h, 0 -rept 2 - add hl, hl -endr - ld de, Data63ca - add hl, de - ; If bit 2 of [wcf65] is set, get the second dw; else, get the first dw - ld a, [wcf65] - and %00000100 -rept 2 - srl a -endr - ld e, a - ld d, 0 -rept 2 - add hl, de -endr - ld a, [hli] - and a - ret z - ld e, a - ld d, [hl] - ld a, $1 - call Function3b2a - ret -; 63ca - -Data63ca: ; 63ca - dw $505c, 0 - dw $685c, $585c - dw $685c, $785c - dw $885c, $785c - dw 0, $785c - dw 0, $585c -; 63e2 - -Copyright: ; 63e2 - call ClearTileMap - call LoadFontsExtra - ld de, CopyrightGFX - ld hl, VTiles2 tile $60 - lb bc, BANK(CopyrightGFX), $1d - call Request2bpp - hlcoord 2, 7 - ld de, CopyrightString - jp PlaceString -; 63fd - -CopyrightString: ; 63fd - ; ©1995-2001 Nintendo - db $60, $61, $62, $63, $64, $65, $66 - db $67, $68, $69, $6a, $6b, $6c - - db $4e - - ; ©1995-2001 Creatures inc. - db $60, $61, $62, $63, $64, $65, $66, $6d - db $6e, $6f, $70, $71, $72, $7a, $7b, $7c - - db $4e - - ; ©1995-2001 GAME FREAK inc. - db $60, $61, $62, $63, $64, $65, $66, $73, $74 - db $75, $76, $77, $78, $79, $7a, $7b, $7c - - db "@" -; 642e - -GameInit:: ; 642e - callba Function14f1c - call ResetTextRelatedRAM - call ClearBGPalettes - call ClearTileMap - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - xor a - ld [hBGMapAddress], a - ld [hJoyDown], a - ld [hSCX], a - ld [hSCY], a - ld a, $90 - ld [hWY], a - call WaitBGMap - jp Function620b -; 6454 +INCLUDE "engine/intro_menu.asm" Function6454:: ; 6454 call DelayFrame @@ -1521,13 +99,13 @@ Function6473: ; 6473 xor a ld [hBGMapMode], a ld [hWY], a - callba Function64db ; no need to callba + callba Function64db ; no need to farcall ld a, VBGMap0 / $100 call Function64b9 xor a - ld [wd152], a - ld a, $98 - ld [wd153], a + ld [wBGMapAnchor], a + ld a, VBGMap0 / $100 + ld [wBGMapAnchor + 1], a xor a ld [hSCX], a ld [hSCY], a @@ -1597,7 +175,7 @@ LearnMove: ; 6508 ld hl, PartyMonNicknames call GetNick ld hl, StringBuffer1 - ld de, wd050 + ld de, wd050_MonNick ld bc, PKMN_NAME_LENGTH call CopyBytes @@ -1609,6 +187,10 @@ LearnMove: ; 6508 ld d, h ld e, l ld b, NUM_MOVES +; Get the first empty move slot. This routine also serves to +; determine whether the Pokemon learning the moves already has +; all four slots occupied, in which case one would need to be +; deleted. .next ld a, [hl] and a @@ -1616,7 +198,8 @@ LearnMove: ; 6508 inc hl dec b jr nz, .next - +; If we're here, we enter the routine for forgetting a move +; to make room for the new move we're trying to learn. push de call ForgetMove pop de @@ -1639,7 +222,7 @@ LearnMove: ; 6508 .not_disabled call GetMoveName - ld hl, UnknownText_0x6684 + ld hl, UnknownText_0x6684 ; 1, 2 and… call PrintText pop de pop hl @@ -1690,18 +273,18 @@ LearnMove: ; 6508 jp .learned .cancel - ld hl, UnknownText_0x6675 + ld hl, UnknownText_0x6675 ; Stop learning <MOVE>? call PrintText call YesNoBox jp c, .loop - ld hl, UnknownText_0x667a + ld hl, UnknownText_0x667a ; <MON> did not learn <MOVE>. call PrintText ld b, 0 ret .learned - ld hl, UnknownText_0x666b + ld hl, UnknownText_0x666b ; <MON> learned <MOVE>! call PrintText ld b, 1 ret @@ -1733,6 +316,7 @@ ForgetMove: ; 65d3 ld a, SCREEN_WIDTH * 2 ld [Buffer1], a predef ListMoves + ; wMenuData3 ld a, $4 ld [wcfa1], a ld a, $6 @@ -1790,32 +374,38 @@ ForgetMove: ; 65d3 ; 666b UnknownText_0x666b: ; 666b +; <MON> learned <MOVE>! text_jump UnknownText_0x1c5660 db "@" ; 6670 UnknownText_0x6670: ; 6670 +; Which move should be forgotten? text_jump UnknownText_0x1c5678 db "@" ; 6675 UnknownText_0x6675: ; 6675 +; Stop learning <MOVE>? text_jump UnknownText_0x1c5699 db "@" ; 667a UnknownText_0x667a: ; 667a +; <MON> did not learn <MOVE>. text_jump UnknownText_0x1c56af db "@" ; 667f UnknownText_0x667f: ; 667f +; <MON> is trying to learn <MOVE>. But <MON> can't learn more than +; four moves. Delete an older move to make room for <MOVE>? text_jump UnknownText_0x1c56c9 db "@" ; 6684 UnknownText_0x6684: ; 6684 - text_jump UnknownText_0x1c5740 + text_jump UnknownText_0x1c5740 ; 1, 2 and… start_asm push de ld de, SFX_SWITCH_POKEMON @@ -1826,11 +416,13 @@ UnknownText_0x6684: ; 6684 ; 6695 UnknownText_0x6695: ; 6695 +; Poof! <MON> forgot <MOVE>. And… text_jump UnknownText_0x1c574e db "@" ; 669a UnknownText_0x669a: ; 669a +; HM moves can't be forgotten now. text_jump UnknownText_0x1c5772 db "@" ; 669f @@ -2122,23 +714,24 @@ Function6ec1: ; 6ec1 ld hl, OBJECT_PALETTE add hl, bc bit 5, [hl] - jr z, .asm_6ed9 + jr z, .not_bit_5 + ld hl, OBJECT_FLAGS1 add hl, bc - bit 4, [hl] + bit 4, [hl] ; lost push hl push bc call Function6f2c pop bc pop hl ret c - jr .asm_6ee9 + jr .resume -.asm_6ed9 +.not_bit_5 ld hl, OBJECT_FLAGS1 add hl, bc bit 4, [hl] - jr nz, .asm_6ee9 + jr nz, .resume push hl push bc call Function6f07 @@ -2146,29 +739,31 @@ Function6ec1: ; 6ec1 pop hl ret c -.asm_6ee9 +.resume bit 6, [hl] - jr nz, .asm_6ef5 + jr nz, .bit_6 push hl push bc - call Function7009 + call WillPersonBumpIntoSomeoneElse pop bc pop hl ret c -.asm_6ef5 +.bit_6 bit 5, [hl] - jr nz, .asm_6f05 + jr nz, .bit_5 push hl - call Function70a4 + call HasPersonReachedMovementLimit pop hl ret c + push hl - call Function70ed + call IsPersonMovingOffEdgeOfScreen pop hl ret c -.asm_6f05 + +.bit_5 and a ret ; 6f07 @@ -2177,17 +772,17 @@ Function6ec1: ; 6ec1 Function6f07: ; 6f07 call Function6f5f ret c - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] ld hl, OBJECT_PALETTE add hl, bc bit 7, [hl] jp nz, Function6fa1 - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] ld d, a @@ -2201,7 +796,7 @@ Function6f07: ; 6f07 Function6f2c: ; 6f2c call Function6f5f ret c - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call GetTileCollision @@ -2212,7 +807,7 @@ Function6f2c: ; 6f2c ; 6f3e Function6f3e: ; 6f3e - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call Function6f7f @@ -2238,7 +833,7 @@ Function6f3e: ; 6f3e ; 6f5f Function6f5f: ; 6f5f - ld hl, OBJECT_NEXT_TILE + ld hl, OBJECT_STANDING_TILE add hl, bc ld a, [hl] call Function6f7f @@ -2323,12 +918,12 @@ Function6fa1: ; 6fa1 inc e .asm_6fc2 - call Function2a3c + call GetCoordTile call GetTileCollision pop de and a jr nz, .asm_6fd7 - call Function2a3c + call GetCoordTile call GetTileCollision and a jr nz, .asm_6fd7 @@ -2350,14 +945,14 @@ CheckFacingObject:: ; 6fd9 call CheckCounterTile jr nz, .asm_6ff1 - ld a, [PlayerMapX] + ld a, [PlayerNextMapX] sub d cpl inc a add d ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] sub e cpl inc a @@ -2368,7 +963,7 @@ CheckFacingObject:: ; 6fd9 ld bc, ObjectStructs ; redundant ld a, 0 ld [hMapObjectIndexBuffer], a - call Function7041 + call IsNPCAtCoord ret nc ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -2384,28 +979,28 @@ CheckFacingObject:: ; 6fd9 ; 7009 -Function7009: ; 7009 - ld hl, OBJECT_MAP_X +WillPersonBumpIntoSomeoneElse: ; 7009 + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] - jr Function7041 + jr IsNPCAtCoord ; 7015 Function7015: ; unreferenced ld a, [hMapObjectIndexBuffer] call GetObjectStruct - call Function7021 - call Function7041 + call .CheckWillBeFacingNPC + call IsNPCAtCoord ret -Function7021: ; 7021 - ld hl, OBJECT_MAP_X +.CheckWillBeFacingNPC: ; 7021 + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] call GetSpriteDirection @@ -2431,32 +1026,35 @@ Function7021: ; 7021 ret ; 7041 -Function7041: ; 7041 +IsNPCAtCoord: ; 7041 ld bc, ObjectStructs xor a .loop ld [hObjectStructIndexBuffer], a call GetObjectSprite jr z, .next + ld hl, OBJECT_FLAGS1 add hl, bc bit 7, [hl] jr nz, .next + ld hl, OBJECT_PALETTE add hl, bc bit 7, [hl] jr z, .got + call Function7171 jr nc, .ok jr .ok2 .got - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] cp d jr nz, .ok - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] cp e @@ -2470,12 +1068,12 @@ Function7041: ; 7041 jr nz, .setcarry .ok - ld hl, OBJECT_NEXT_MAP_X + ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] cp d jr nz, .next - ld hl, OBJECT_NEXT_MAP_Y + ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] cp e @@ -2503,17 +1101,17 @@ Function7041: ; 7041 ret ; 70a4 -Function70a4: ; 70a4 - ld hl, OBJECT_22 +HasPersonReachedMovementLimit: ; 70a4 + ld hl, OBJECT_RADIUS add hl, bc ld a, [hl] and a - jr z, .asm_70e9 + jr z, .nope and $f - jr z, .asm_70c7 + jr z, .check_y ld e, a ld d, a - ld hl, OBJECT_20 + ld hl, OBJECT_INIT_X add hl, bc ld a, [hl] sub d @@ -2521,24 +1119,24 @@ Function70a4: ; 70a4 ld a, [hl] add e ld e, a - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] cp d - jr z, .asm_70eb + jr z, .yes cp e - jr z, .asm_70eb + jr z, .yes -.asm_70c7 - ld hl, OBJECT_22 +.check_y + ld hl, OBJECT_RADIUS add hl, bc ld a, [hl] swap a and $f - jr z, .asm_70e9 + jr z, .nope ld e, a ld d, a - ld hl, OBJECT_21 + ld hl, OBJECT_INIT_Y add hl, bc ld a, [hl] sub d @@ -2546,104 +1144,104 @@ Function70a4: ; 70a4 ld a, [hl] add e ld e, a - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] cp d - jr z, .asm_70eb + jr z, .yes cp e - jr z, .asm_70eb + jr z, .yes -.asm_70e9 +.nope xor a ret -.asm_70eb +.yes scf ret ; 70ed -Function70ed: ; 70ed - ld hl, OBJECT_MAP_X +IsPersonMovingOffEdgeOfScreen: ; 70ed + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [XCoord] cp [hl] - jr z, .asm_70fe - jr nc, .asm_7111 + jr z, .check_y + jr nc, .yes add $9 cp [hl] - jr c, .asm_7111 + jr c, .yes -.asm_70fe - ld hl, OBJECT_MAP_Y +.check_y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [YCoord] cp [hl] - jr z, .asm_710f - jr nc, .asm_7111 + jr z, .nope + jr nc, .yes add $8 cp [hl] - jr c, .asm_7111 + jr c, .yes -.asm_710f +.nope and a ret -.asm_7111 +.yes scf ret ; 7113 Function7113: ; unreferenced - ld a, [PlayerMapX] + ld a, [PlayerNextMapX] ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] ld e, a ld bc, ObjectStructs xor a .loop ld [hObjectStructIndexBuffer], a call GetObjectSprite - jr z, .asm_7160 + jr z, .next ld hl, OBJECT_MOVEMENTTYPE add hl, bc ld a, [hl] cp SPRITEMOVEDATA_SNORLAX - jr nz, .asm_7136 + jr nz, .not_snorlax call Function7171 - jr c, .asm_716f - jr .asm_7160 + jr c, .yes + jr .next -.asm_7136 - ld hl, OBJECT_MAP_Y +.not_snorlax + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] cp e - jr nz, .asm_714e - ld hl, OBJECT_MAP_X + jr nz, .check_current_coords + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] cp d - jr nz, .asm_714e + jr nz, .check_current_coords ld a, [hObjectStructIndexBuffer] cp $0 - jr z, .asm_7160 - jr .asm_716f + jr z, .next + jr .yes -.asm_714e - ld hl, OBJECT_NEXT_MAP_Y +.check_current_coords + ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] cp e - jr nz, .asm_7160 - ld hl, OBJECT_NEXT_MAP_X + jr nz, .next + ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] cp d - jr nz, .asm_7160 - jr .asm_716f + jr nz, .next + jr .yes -.asm_7160 +.next ld hl, OBJECT_STRUCT_LENGTH add hl, bc ld b, h @@ -2655,31 +1253,31 @@ Function7113: ; unreferenced xor a ret -.asm_716f +.yes scf ret ; 7171 Function7171: ; 7171 - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, d sub [hl] - jr c, .asm_718b + jr c, .nope cp $2 - jr nc, .asm_718b - ld hl, OBJECT_MAP_Y + jr nc, .nope + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, e sub [hl] - jr c, .asm_718b + jr c, .nope cp $2 - jr nc, .asm_718b + jr nc, .nope scf ret -.asm_718b +.nope and a ret ; 718d @@ -2950,7 +1548,7 @@ SpecialGiveShuckle: ; 7305 ; Caught data. ld b, 0 - callba SetPartymonCaughtData + callba SetGiftPartyMonCaughtData ; Holding a Berry. ld bc, PARTYMON_STRUCT_LENGTH @@ -3214,14 +1812,14 @@ GetSpawnCoord: ; 8029 call GetMapObject ld hl, MAPOBJECT_COLOR add hl, bc - ln e, (1 << 3) | PAL_OW_RED, $0 + ln e, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT ld a, [wPlayerSpriteSetupFlags] bit 2, a jr nz, .ok ld a, [PlayerGender] bit 0, a jr z, .ok - ln e, (1 << 3) | PAL_OW_BLUE, $0 + ln e, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT .ok ld [hl], e @@ -3231,9 +1829,9 @@ GetSpawnCoord: ; 8029 ld a, $0 ld [hObjectStructIndexBuffer], a ld de, ObjectStructs - call Function8116 - ld a, $0 - ld [wd4cf], a + call CopyMapObjectToObjectStruct + ld a, PLAYER + ld [wCenteredObject], a ret ; 8071 @@ -3241,7 +1839,7 @@ PlayerObjectTemplate: ; 8071 ; A dummy map object used to initialize the player object. ; Shorter than the actual amount copied by two bytes. ; Said bytes seem to be unused. - person_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, 0, 0, 0, -1 + person_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, PERSONTYPE_SCRIPT, 0, 0, -1 ; 807e CopyDECoordsToMapObject:: ; 807e @@ -3277,10 +1875,10 @@ WritePersonXY:: ; 80a1 call CheckObjectVisibility ret c - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] ld a, [hMapObjectIndexBuffer] @@ -3294,28 +1892,28 @@ RefreshPlayerCoords: ; 80b8 ld a, [XCoord] add 4 ld d, a - ld hl, PlayerMapX + ld hl, PlayerNextMapX sub [hl] ld [hl], d ld hl, MapObjects + MAPOBJECT_X_COORD ld [hl], d - ld hl, PlayerNextMapX + ld hl, PlayerMapX ld [hl], d ld d, a ld a, [YCoord] add 4 ld e, a - ld hl, PlayerMapY + ld hl, PlayerNextMapY sub [hl] ld [hl], e ld hl, MapObjects + MAPOBJECT_Y_COORD ld [hl], e - ld hl, PlayerNextMapY + ld hl, PlayerMapY ld [hl], e ld e, a ld a, [wObjectFollow_Leader] cp $0 - ret nz + ret nz ; wtf ret ; 80e7 @@ -3324,6 +1922,7 @@ CopyObjectStruct:: ; 80e7 call CheckObjectMask and a ret nz ; masked + ld hl, ObjectStructs + OBJECT_STRUCT_LENGTH * 1 ld a, 1 ld de, OBJECT_STRUCT_LENGTH @@ -3338,77 +1937,87 @@ CopyObjectStruct:: ; 80e7 cp NUM_OBJECT_STRUCTS jr nz, .loop scf - ret + ret ; overflow .done ld d, h ld e, l - call Function8116 + call CopyMapObjectToObjectStruct ld hl, VramState bit 7, [hl] ret z + ld hl, OBJECT_FLAGS2 add hl, de set 5, [hl] ret ; 8116 -Function8116: ; 8116 - call Function811d - call Function8286 +CopyMapObjectToObjectStruct: ; 8116 + call .CopyMapObjectToTempObject + call CopyTempObjectToObjectStruct ret ; 811d -Function811d: ; 811d +.CopyMapObjectToTempObject: ; 811d ld a, [hObjectStructIndexBuffer] ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld [hl], a + ld a, [hMapObjectIndexBuffer] - ld [wc2f0], a + ld [wTempObjectCopyMapObjectIndex], a + ld hl, MAPOBJECT_SPRITE add hl, bc ld a, [hl] - ld [wc2f1], a - call Function180e - ld [wc2f2], a + ld [wTempObjectCopySprite], a + + call GetSpriteVTile + ld [wTempObjectCopySpriteVTile], a + ld a, [hl] call GetSpritePalette - ld [wc2f3], a + ld [wTempObjectCopyPalette], a + ld hl, MAPOBJECT_COLOR add hl, bc ld a, [hl] and $f0 - jr z, .no_color + jr z, .skip_color_override swap a - and $7 - ld [wc2f3], a + and $7 ; OAM_PALETTE + ld [wTempObjectCopyPalette], a -.no_color +.skip_color_override ld hl, MAPOBJECT_MOVEMENT add hl, bc ld a, [hl] - ld [wc2f4], a + ld [wTempObjectCopyMovement], a + ld hl, MAPOBJECT_RANGE add hl, bc ld a, [hl] - ld [wc2f5], a + ld [wTempObjectCopyRange], a + ld hl, MAPOBJECT_X_COORD add hl, bc ld a, [hl] - ld [wc2f6], a + ld [wTempObjectCopyX], a + ld hl, MAPOBJECT_Y_COORD add hl, bc ld a, [hl] - ld [wc2f7], a + ld [wTempObjectCopyY], a + ld hl, MAPOBJECT_RADIUS add hl, bc ld a, [hl] - ld [wc2f8], a + ld [wTempObjectCopyRadius], a ret ; 8177 -Function8177: ; 8177 +InitializeVisibleSprites: ; 8177 ld bc, MapObjects + OBJECT_LENGTH ld a, 1 .loop @@ -3418,35 +2027,42 @@ Function8177: ; 8177 ld a, [hl] and a jr z, .next + ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] cp -1 jr nz, .next + ld a, [XCoord] ld d, a ld a, [YCoord] ld e, a + ld hl, MAPOBJECT_X_COORD add hl, bc ld a, [hl] add 1 sub d jr c, .next + cp MAPOBJECT_SCREEN_WIDTH jr nc, .next + ld hl, MAPOBJECT_Y_COORD add hl, bc ld a, [hl] add 1 sub e jr c, .next + cp MAPOBJECT_SCREEN_HEIGHT jr nc, .next + push bc call CopyObjectStruct pop bc - jp c, Function81c9 + jp c, .ret .next ld hl, OBJECT_LENGTH @@ -3460,21 +2076,21 @@ Function8177: ; 8177 ret ; 81c9 -Function81c9: ; 81c9 +.ret: ; 81c9 ret ; 81ca Function81ca:: ; 81ca nop - ld a, [wd151] + ld a, [wPlayerStepDirection] cp $ff ret z - ld hl, Table81d6 + ld hl, .jumptable rst JumpTable ret ; 81d6 -Table81d6: ; 81d6 +.jumptable: ; 81d6 dw Function81e5 dw Function81de dw Function8232 @@ -3598,49 +2214,50 @@ Function823e: ; 823e ; 8286 -Function8286: ; 8286 - ld a, [wc2f0] +CopyTempObjectToObjectStruct: ; 8286 + ld a, [wTempObjectCopyMapObjectIndex] ld hl, OBJECT_MAP_OBJECT_INDEX add hl, de ld [hl], a - ld a, [wc2f4] - call Function1a61 - ld a, [wc2f3] + ld a, [wTempObjectCopyMovement] + call CopySpriteMovementData + + ld a, [wTempObjectCopyPalette] ld hl, OBJECT_PALETTE add hl, de or [hl] ld [hl], a - ld a, [wc2f7] - call Function82d5 + ld a, [wTempObjectCopyY] + call .InitYCoord - ld a, [wc2f6] - call Function82f1 + ld a, [wTempObjectCopyX] + call .InitXCoord - ld a, [wc2f1] + ld a, [wTempObjectCopySprite] ld hl, OBJECT_SPRITE add hl, de ld [hl], a - ld a, [wc2f2] + ld a, [wTempObjectCopySpriteVTile] ld hl, OBJECT_SPRITE_TILE add hl, de ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, de - ld [hl], $0 + ld [hl], STEP_TYPE_00 ld hl, OBJECT_FACING_STEP add hl, de - ld [hl], $ff + ld [hl], STANDING - ld a, [wc2f8] - call Function830d + ld a, [wTempObjectCopyRadius] + call .InitRadius - ld a, [wc2f5] - ld hl, OBJECT_32 + ld a, [wTempObjectCopyRange] + ld hl, OBJECT_RANGE add hl, de ld [hl], a @@ -3648,13 +2265,15 @@ Function8286: ; 8286 ret ; 82d5 -Function82d5: ; 82d5 - ld hl, OBJECT_21 +.InitYCoord: ; 82d5 + ld hl, OBJECT_INIT_Y add hl, de ld [hl], a - ld hl, OBJECT_MAP_Y + + ld hl, OBJECT_NEXT_MAP_Y add hl, de ld [hl], a + ld hl, YCoord sub [hl] and $f @@ -3667,11 +2286,11 @@ Function82d5: ; 82d5 ret ; 82f1 -Function82f1: ; 82f1 - ld hl, OBJECT_20 +.InitXCoord: ; 82f1 + ld hl, OBJECT_INIT_X add hl, de ld [hl], a - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, de ld [hl], a ld hl, XCoord @@ -3686,7 +2305,7 @@ Function82f1: ; 82f1 ret ; 830d -Function830d: ; 830d +.InitRadius: ; 830d ld h, a inc a and $f @@ -3695,7 +2314,7 @@ Function830d: ; 830d add $10 and $f0 or l - ld hl, OBJECT_22 + ld hl, OBJECT_RADIUS add hl, de ld [hl], a ret @@ -3745,19 +2364,19 @@ TrainerWalkToPlayer: ; 831e call GetObjectStruct ; get last talked coords, load to bc - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld c, [hl] ld b, a ; get player coords, load to de - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, de ld a, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, de ld e, [hl] ld d, a @@ -3811,15 +2430,15 @@ FollowNotExact:: ; 839e ret c ; Person 2 is now in bc, person 1 is now in de - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld c, [hl] ld b, a - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, de ld a, [hl] cp b @@ -3833,7 +2452,7 @@ FollowNotExact:: ; 839e jr .continue .same_x - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, de ld a, [hl] cp c @@ -3846,7 +2465,7 @@ FollowNotExact:: ; 839e dec c .continue - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, de ld [hl], b ld a, b @@ -3859,7 +2478,7 @@ FollowNotExact:: ; 839e ld hl, OBJECT_SPRITE_X add hl, de ld [hl], a - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, de ld [hl], c ld a, c @@ -3873,15 +2492,15 @@ FollowNotExact:: ; 839e add hl, de ld [hl], a ld a, [hObjectStructIndexBuffer] - ld hl, OBJECT_32 + ld hl, OBJECT_RANGE add hl, de ld [hl], a ld hl, OBJECT_MOVEMENTTYPE add hl, de ld [hl], SPRITEMOVEDATA_FOLLOWNOTEXACT - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, de - ld [hl], $0 + ld [hl], STEP_TYPE_00 ret ; 8417 @@ -3916,10 +2535,10 @@ GetRelativeFacing:: ; 8417 ; load the coordinates of object d into bc ld a, d call GetObjectStruct - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld c, [hl] ld b, a @@ -3927,10 +2546,10 @@ GetRelativeFacing:: ; 8417 ; load the coordinates of object e into de ld a, e call GetObjectStruct - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] pop bc @@ -4010,15 +2629,15 @@ Function848a: ; 848a Function849d: ; 849d ld a, [wObjectFollow_Leader] call GetObjectStruct - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] ld a, [wObjectFollow_Follower] call GetObjectStruct - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, d cp [hl] @@ -4034,7 +2653,7 @@ Function849d: ; 849d ret .check_y - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, e cp [hl] @@ -4502,7 +3121,7 @@ endr ld a, [hl] ld [bc], a - callba Functionf8b9 + callba RestoreAllPP ret ; c699 @@ -4811,7 +3430,7 @@ CutDownTreeOrGrass: ; c810 ld e, a callba OWCutAnimation call BufferScreen - call Function2914 + call GetMovementPermissions call UpdateSprites call DelayFrame call LoadStandardFont @@ -4847,42 +3466,42 @@ CheckOverworldTileArrays: ; c840 CutTreeBlockPointers: ; c862 ; Which tileset are we in? - dbw $01, .one - dbw $02, .two - dbw $03, .three - dbw $19, .twentyfive - dbw $1f, .thirtyone + dbw TILESET_JOHTO_1, .one + dbw TILESET_JOHTO_2, .two + dbw TILESET_KANTO, .three + dbw TILESET_PARK, .twentyfive + dbw TILESET_ILEX_FOREST, .thirtyone db -1 ; c872 .one: ; Johto OW ; Which meta tile are we facing, which should we replace it with, and does it affect encounters? - db $03, $02, $01 - db $5b, $3c, $00 - db $5f, $3d, $00 - db $63, $3f, $00 - db $67, $3e, $00 + db $03, $02, $01 ; grass + db $5b, $3c, $00 ; tree + db $5f, $3d, $00 ; tree + db $63, $3f, $00 ; tree + db $67, $3e, $00 ; tree db -1 ; c882 .two: ; Goldenrod area - db $03, $02, $01 + db $03, $02, $01 ; grass db -1 ; c886 .three: ; Kanto OW - db $0b, $0a, $01 - db $32, $6d, $00 - db $33, $6c, $00 - db $34, $6f, $00 - db $35, $4c, $00 - db $60, $6e, $00 + db $0b, $0a, $01 ; grass + db $32, $6d, $00 ; tree + db $33, $6c, $00 ; tree + db $34, $6f, $00 ; tree + db $35, $4c, $00 ; tree + db $60, $6e, $00 ; tree db -1 ; c899 .twentyfive: ; National Park - db $13, $03, $01 - db $03, $04, $01 + db $13, $03, $01 ; grass + db $03, $04, $01 ; grass db -1 ; c8a0 @@ -4892,7 +3511,7 @@ CutTreeBlockPointers: ; c862 ; c8a4 WhirlpoolBlockPointers: ; c8a4 - dbw $01, .one + dbw TILESET_JOHTO_1, .one db -1 ; c8a8 @@ -5278,15 +3897,15 @@ FlyFunction: ; ca3b farscall Script_AbortBugContest special WarpToSpawnPoint callasm DelayLoadingNewSprites - writecode VAR_MOVEMENT, $0 + writecode VAR_MOVEMENT, PLAYER_NORMAL newloadmap MAPSETUP_FLY callasm Function8cb33 special WaitSFX - callasm Functioncacb + callasm .ReturnFromFly end ; 0xcacb -Functioncacb: ; cacb +.ReturnFromFly: ; cacb callba Function561d call DelayFrame call ReplaceKrisSprite @@ -5356,7 +3975,7 @@ Script_UsedWaterfall: ; 0xcb20 CheckContinueWaterfall: ; cb38 xor a ld [ScriptVar], a - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] call CheckWaterfallTile ret z callba MobileFn_1060c1 @@ -5543,26 +4162,25 @@ UsedDigOrEscapeRopeScript: ; 0xcc3c closetext loadmovesprites playsound SFX_WARP_TO - applymovement PLAYER, MovementData_0xcc59 + applymovement PLAYER, .DigOut farscall Script_AbortBugContest special WarpToSpawnPoint - writecode VAR_MOVEMENT, $0 + writecode VAR_MOVEMENT, PLAYER_NORMAL newloadmap MAPSETUP_DOOR playsound SFX_WARP_FROM - applymovement PLAYER, MovementData_0xcc5d + applymovement PLAYER, .DigReturn end ; 0xcc59 -MovementData_0xcc59: ; 0xcc59 - step_wait5 - turn_away_down +.DigOut: ; 0xcc59 + step_dig 32 hide_person step_end ; 0xcc5d -MovementData_0xcc5d: ; 0xcc5d - return_dig $58 - turn_away_down +.DigReturn: ; 0xcc5d + show_person + return_dig 32 step_end ; 0xcc61 @@ -5641,22 +4259,22 @@ Script_UsedTeleport: ; 0xccbb reloadmappart loadmovesprites playsound SFX_WARP_TO - applymovement PLAYER, MovementData_0xcce1 + applymovement PLAYER, .TeleportFrom farscall Script_AbortBugContest special WarpToSpawnPoint - writecode VAR_MOVEMENT, $0 + writecode VAR_MOVEMENT, PLAYER_NORMAL newloadmap MAPSETUP_TELEPORT playsound SFX_WARP_FROM - applymovement PLAYER, MovementData_0xcce3 + applymovement PLAYER, .TeleportTo end ; 0xcce1 -MovementData_0xcce1: ; cce1 +.TeleportFrom: ; cce1 teleport_from step_end ; cce3 -MovementData_0xcce3: ; cce3 +.TeleportTo: ; cce3 teleport_to step_end ; cce5 @@ -5925,7 +4543,7 @@ DisappearWhirlpool: ; ce1d ld e, a callba PlayWhirlpoolSound call BufferScreen - call Function2914 + call GetMovementPermissions ret ; ce3e @@ -6300,7 +4918,7 @@ Script_NotEvenANibble2: ; 0xd027 writetext UnknownText_0xd0a9 Script_NotEvenANibble_FallThrough: ; 0xd02d - loademote EMOTE_08 + loademote EMOTE_SHADOW callasm PutTheRodAway loadmovesprites end @@ -6309,17 +4927,17 @@ Script_NotEvenANibble_FallThrough: ; 0xd02d Script_GotABite: ; 0xd035 scall Script_FishCastRod callasm Fishing_CheckFacingUp - iffalse .FacingUp - applymovement PLAYER, MovementData_0xd062 + iffalse .NotFacingUp + applymovement PLAYER, .Movement_FacingUp jump .FightTheHookedPokemon ; 0xd046 -.FacingUp: ; 0xd046 - applymovement PLAYER, MovementData_0xd05c +.NotFacingUp: ; 0xd046 + applymovement PLAYER, .Movement_NotFacingUp .FightTheHookedPokemon: ; 0xd04a pause 40 - applymovement PLAYER, MovementData_0xd069 + applymovement PLAYER, .Movement_RestoreRod writetext UnknownText_0xd0a4 callasm PutTheRodAway loadmovesprites @@ -6329,7 +4947,7 @@ Script_GotABite: ; 0xd035 end ; 0xd05c -MovementData_0xd05c: ; d05c +.Movement_NotFacingUp: ; d05c fish_got_bite fish_got_bite fish_got_bite @@ -6338,7 +4956,7 @@ MovementData_0xd05c: ; d05c step_end ; d062 -MovementData_0xd062: ; d062 +.Movement_FacingUp: ; d062 fish_got_bite fish_got_bite fish_got_bite @@ -6348,7 +4966,7 @@ MovementData_0xd062: ; d062 step_end ; d069 -MovementData_0xd069: ; d069 +.Movement_RestoreRod: ; d069 hide_emote fish_cast_rod step_end @@ -6357,7 +4975,7 @@ MovementData_0xd069: ; d069 Fishing_CheckFacingUp: ; d06c ld a, [PlayerDirection] and $c - cp $4 + cp OW_UP ld a, $1 jr z, .up xor a @@ -6371,7 +4989,7 @@ Script_FishCastRod: ; 0xd07c reloadmappart loadvar hBGMapMode, $0 special UpdateTimePals - loademote EMOTE_09 + loademote EMOTE_ROD callasm LoadFishingGFX loademote EMOTE_SHOCK applymovement PLAYER, MovementData_0xd093 @@ -6505,7 +5123,7 @@ BikeFunction: ; d0b3 Script_GetOnBike: ; 0xd13e reloadmappart special UpdateTimePals - writecode VAR_MOVEMENT, $1 + writecode VAR_MOVEMENT, PLAYER_BIKE writetext UnknownText_0xd17c closetext loadmovesprites @@ -6514,7 +5132,7 @@ Script_GetOnBike: ; 0xd13e ; 0xd14e Script_GetOnBike_Register: ; 0xd14e - writecode VAR_MOVEMENT, $1 + writecode VAR_MOVEMENT, PLAYER_BIKE loadmovesprites special ReplaceKrisSprite end @@ -6527,11 +5145,11 @@ Functiond156: ; unreferenced Script_GetOffBike: ; 0xd158 reloadmappart special UpdateTimePals - writecode VAR_MOVEMENT, $0 + writecode VAR_MOVEMENT, PLAYER_NORMAL writetext UnknownText_0xd181 closetext -UnknownScript_0xd163: +FinishGettingOffBike: loadmovesprites special ReplaceKrisSprite special PlayMapMusic @@ -6539,8 +5157,8 @@ UnknownScript_0xd163: ; 0xd16b Script_GetOffBike_Register: ; 0xd16b - writecode VAR_MOVEMENT, $0 - jump UnknownScript_0xd163 + writecode VAR_MOVEMENT, PLAYER_NORMAL + jump FinishGettingOffBike ; 0xd171 UnknownScript_0xd171: ; 0xd171 @@ -7092,11 +5710,11 @@ TossTMHM: ; d3d8 ld [hl], a ld [wItemQuantityBuffer], a jr nz, .yup - ld a, [wd0e2] + ld a, [wTMHMPocketScrollPosition] and a jr z, .yup dec a - ld [wd0e2], a + ld [wTMHMPocketScrollPosition], a .yup scf @@ -7266,7 +5884,7 @@ GetItemPrice: ; d486 Functiond497:: ; d497 (3:5497) - ld a, [wd150] + ld a, [wPlayerStepFlags] and a ret z bit 7, a @@ -7286,9 +5904,9 @@ Functiond497:: ; d497 (3:5497) jr .asm_d4b8 .asm_d4b8 call Functiond4e5 - ld a, [wd14e] + ld a, [wPlayerStepVectorX] ld d, a - ld a, [wd14f] + ld a, [wPlayerStepVectorY] ld e, a ld a, [wd14c] sub d @@ -7299,9 +5917,9 @@ Functiond497:: ; d497 (3:5497) ret Functiond4d2:: ; d4d2 (3:54d2) - ld a, [wd14e] + ld a, [wPlayerStepVectorX] ld d, a - ld a, [wd14f] + ld a, [wPlayerStepVectorY] ld e, a ld a, [hSCX] add d @@ -7323,31 +5941,31 @@ Functiond4e5: ; d4e5 (3:54e5) ret Jumptable_d4f2: ; d4f2 (3:54f2) - dw Function2914 + dw GetMovementPermissions dw BufferScreen - dw Functiond509 - dw Functiond510 - dw Functiond508 - dw Functiond508 - dw Functiond508 - dw Functiond508 - dw Functiond508 - dw Functiond508 - dw Functiond508 + dw .mobile + dw .fail2 + dw .fail1 + dw .fail1 + dw .fail1 + dw .fail1 + dw .fail1 + dw .fail1 + dw .fail1 -Functiond508: ; d508 (3:5508) +.fail1: ; d508 (3:5508) ret -Functiond509: ; d509 (3:5509) +.mobile: ; d509 (3:5509) callba MobileFn_10602e ret -Functiond510: ; d510 (3:5510) +.fail2: ; d510 (3:5510) ret Functiond511: ; d511 (3:5511) - ld a, [wd151] + ld a, [wPlayerStepDirection] and a jr nz, .asm_d51c ld hl, YCoord @@ -7373,7 +5991,7 @@ Functiond511: ; d511 (3:5511) ret Functiond536: ; d536 (3:5536) - ld a, [wd151] + ld a, [wPlayerStepDirection] and a jr z, .asm_d549 cp $1 @@ -7383,46 +6001,50 @@ Functiond536: ; d536 (3:5536) cp $3 jr z, .asm_d567 ret + .asm_d549 call Functiond571 call LoadMapPart - call Function2748 + call ScrollMapUp ret + .asm_d553 call Functiond5a2 call LoadMapPart - call Function272a + call ScrollMapDown ret + .asm_d55d call Functiond5d5 call LoadMapPart - call Function2771 + call ScrollMapLeft ret + .asm_d567 call Functiond5fe call LoadMapPart - call Function278f + call ScrollMapRight ret Functiond571: ; d571 (3:5571) - ld a, [wd152] + ld a, [wBGMapAnchor] add $40 - ld [wd152], a - jr nc, .asm_d586 - ld a, [wd153] + ld [wBGMapAnchor], a + jr nc, .not_overflowed + ld a, [wBGMapAnchor + 1] inc a and $3 - or $98 - ld [wd153], a -.asm_d586 + or VBGMap0 / $100 + ld [wBGMapAnchor + 1], a +.not_overflowed ld hl, wd196 inc [hl] ld a, [hl] - cp $2 - jr nz, .asm_d594 + cp $2 ; was 1 + jr nz, .skip ld [hl], $0 call Functiond595 -.asm_d594 +.skip ret Functiond595: ; d595 (3:5595) @@ -7436,24 +6058,24 @@ Functiond595: ; d595 (3:5595) ret Functiond5a2: ; d5a2 (3:55a2) - ld a, [wd152] + ld a, [wBGMapAnchor] sub $40 - ld [wd152], a - jr nc, .asm_d5b7 - ld a, [wd153] + ld [wBGMapAnchor], a + jr nc, .not_underflowed + ld a, [wBGMapAnchor + 1] dec a and $3 - or $98 - ld [wd153], a -.asm_d5b7 + or VBGMap0 / $100 + ld [wBGMapAnchor + 1], a +.not_underflowed ld hl, wd196 dec [hl] ld a, [hl] - cp $ff - jr nz, .asm_d5c5 + cp $ff ; was 0 + jr nz, .skip ld [hl], $1 call Functiond5c6 -.asm_d5c5 +.skip ret Functiond5c6: ; d5c6 (3:55c6) @@ -7469,7 +6091,7 @@ Functiond5c6: ; d5c6 (3:55c6) ret Functiond5d5: ; d5d5 (3:55d5) - ld a, [wd152] + ld a, [wBGMapAnchor] ld e, a and $e0 ld d, a @@ -7477,7 +6099,7 @@ Functiond5d5: ; d5d5 (3:55d5) sub $2 and $1f or d - ld [wd152], a + ld [wBGMapAnchor], a ld hl, wd197 dec [hl] ld a, [hl] @@ -7498,7 +6120,7 @@ Functiond5f4: ; d5f4 (3:55f4) ret Functiond5fe: ; d5fe (3:55fe) - ld a, [wd152] + ld a, [wBGMapAnchor] ld e, a and $e0 ld d, a @@ -7506,7 +6128,7 @@ Functiond5fe: ; d5fe (3:55fe) add $2 and $1f or d - ld [wd152], a + ld [wBGMapAnchor], a ld hl, wd197 inc [hl] ld a, [hl] @@ -8277,7 +6899,7 @@ endr ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes predef GetUnownLetter - callab Functionfba18 + callab UpdateUnownDex .done scf ; When this function returns, the carry flag indicates success vs failure. @@ -8316,7 +6938,7 @@ FillPP: ; da6d ret ; da96 -Functionda96: ; da96 +AddTempmonToParty: ; da96 ld hl, PartyCount ld a, [hl] cp PARTY_LENGTH @@ -8331,6 +6953,7 @@ Functionda96: ; da96 ld a, [CurPartySpecies] ld [hli], a ld [hl], $ff + ld hl, PartyMon1Species ld a, [PartyCount] dec a @@ -8340,6 +6963,7 @@ Functionda96: ; da96 ld d, h ld hl, TempMonSpecies call CopyBytes + ld hl, PartyMonOT ld a, [PartyCount] dec a @@ -8351,6 +6975,7 @@ Functionda96: ; da96 call SkipNames ld bc, NAME_LENGTH call CopyBytes + ld hl, PartyMonNicknames ld a, [PartyCount] dec a @@ -8366,7 +6991,7 @@ Functionda96: ; da96 ld a, [CurPartySpecies] ld [wNamedObjectIndexBuffer], a cp EGG - jr z, .owned + jr z, .egg dec a call SetSeenAndCaughtMon ld hl, PartyMon1Happiness @@ -8375,7 +7000,7 @@ Functionda96: ; da96 ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld [hl], BASE_HAPPINESS -.owned +.egg ld a, [CurPartySpecies] cp UNOWN @@ -8386,7 +7011,7 @@ Functionda96: ; da96 ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes predef GetUnownLetter - callab Functionfba18 + callab UpdateUnownDex ld a, [wdef4] and a jr nz, .done @@ -8980,7 +7605,7 @@ SentPkmnIntoBox: ; de6e jr nz, .asm_df20 ld hl, sBoxMon1DVs predef GetUnownLetter - callab Functionfba18 + callab UpdateUnownDex .asm_df20 ld hl, sBoxMon1Moves @@ -9063,39 +7688,51 @@ GiveEgg:: ; df8c callab GetPreEvolution ld a, [CurPartySpecies] dec a + +; TryAddMonToParty sets Seen and Caught flags +; when it is successful. This routine will make +; sure that we aren't newly setting flags. push af call CheckCaughtMon pop af push bc call CheckSeenMon push bc + call TryAddMonToParty + +; If we haven't caught this Pokemon before receiving +; the Egg, reset the flag that was just set by +; TryAddMonToParty. pop bc ld a, c and a - jr nz, .asm_dfc3 + jr nz, .skip_caught_flag ld a, [CurPartySpecies] dec a ld c, a ld d, $0 ld hl, PokedexCaught - ld b, $0 + ld b, RESET_FLAG predef FlagPredef -.asm_dfc3 +.skip_caught_flag +; If we haven't seen this Pokemon before receiving +; the Egg, reset the flag that was just set by +; TryAddMonToParty. pop bc ld a, c and a - jr nz, .asm_dfd9 + jr nz, .skip_seen_flag ld a, [CurPartySpecies] dec a ld c, a ld d, $0 ld hl, PokedexSeen - ld b, $0 + ld b, RESET_FLAG predef FlagPredef -.asm_dfd9 +.skip_seen_flag pop af ld [CurPartySpecies], a ld a, [PartyCount] @@ -9263,14 +7900,14 @@ Functione039: ; e039 ld a, [wLinkMode] and a ret nz - ld a, BANK(sPartyScratch1) + ld a, BANK(sPartyMail) call GetSRAMBank ld hl, PartyCount ld a, [CurPartyMon] cp [hl] jr z, .asm_e131 - ld hl, sPartyScratch1 - ld bc, SCRATCHMON_STRUCT_LENGTH + ld hl, sPartyMail + ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl add hl, bc @@ -9280,11 +7917,11 @@ Functione039: ; e039 .asm_e11a push bc push hl - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call CopyBytes pop hl push hl - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH add hl, bc pop de pop bc @@ -9663,7 +8300,7 @@ endr ld [hli], a ld [hl], 01001 % $100 pop bc - callba SetPartymonCaughtData + callba SetGiftPartyMonCaughtData jr .skip_nickname .asm_e35e @@ -9687,7 +8324,7 @@ endr call Random ld [hl], a call CloseSRAM - callba SetBoxMonCaughtData + callba SetGiftBoxMonCaughtData jr .skip_nickname .asm_e390 @@ -9698,11 +8335,11 @@ endr ld a, b and a jr z, .asm_e3a0 - callba Function4db83 + callba SetBoxMonCaughtData jr .asm_e3a6 .asm_e3a0 - callba Function4db49 + callba SetCaughtData .asm_e3a6 callba GiveANickname_YesNo @@ -9755,35 +8392,35 @@ InitNickname: ; e3de ld de, StringBuffer1 call InitName ld a, $4 ; XXX could this be in bank 4 in pokered? - ld hl, Function2b4d + ld hl, ExitAllMenus rst FarCall ret ; e3fd -Functione3fd: ; e3fd - call Functione40a +_BillsPC: ; e3fd + call .CheckCanUsePC ret c - call Functione41c - call Functione443 - jp Functione43f + call .LogIn + call .UseBillsPC + jp .LogOut -Functione40a: ; e40a (3:640a) +.CheckCanUsePC: ; e40a (3:640a) ld a, [PartyCount] and a ret nz - ld hl, UnknownText_0xe417 + ld hl, .Text_GottaHavePokemon call MenuTextBoxBackup scf ret ; e417 (3:6417) -UnknownText_0xe417: ; 0xe417 +.Text_GottaHavePokemon: ; 0xe417 ; You gotta have #MON to call! text_jump UnknownText_0x1c1006 db "@" ; 0xe41c -Functione41c: ; e41c (3:641c) +.LogIn: ; e41c (3:641c) xor a ld [hBGMapMode], a call LoadStandardMenuDataHeader @@ -9792,7 +8429,7 @@ Functione41c: ; e41c (3:641c) ld a, [hl] push af set NO_TEXT_SCROLL, [hl] - ld hl, UnknownText_0xe43a + ld hl, .Text_What call PrintText pop af ld [Options], a @@ -9800,17 +8437,17 @@ Functione41c: ; e41c (3:641c) ret ; e43a (3:643a) -UnknownText_0xe43a: ; 0xe43a +.Text_What: ; 0xe43a ; What? text_jump UnknownText_0x1c1024 db "@" ; 0xe43f -Functione43f: ; e43f (3:643f) - call Function2b3c +.LogOut: ; e43f (3:643f) + call ReturnToCallingMenu ret -Functione443: ; e443 (3:6443) +.UseBillsPC: ; e443 (3:6443) ld hl, .MenuDataHeader call LoadMenuDataHeader ld a, $1 @@ -9820,7 +8457,7 @@ Functione443: ; e443 (3:6443) xor a ld [wcf76], a ld [hBGMapMode], a - call Function1e5d + call DoNthMenu jr c, .cancel ld a, [wMenuCursorBuffer] push af @@ -9883,14 +8520,14 @@ BillsPC_SeeYa: ; e4cb BillsPC_MovePKMNMenu: ; e4cd call LoadStandardMenuDataHeader - callba Function44781 + callba IsAnyMonHoldingMail jr nc, .no_mail - ld hl, UnknownText_0xe4f9 + ld hl, .Text_MonHoldingMail call PrintText jr .quit .no_mail - callba Function14b34 + callba StartMovePkmnWOMail_SaveGame jr c, .quit callba _MovePKMNWithoutMail call ReturnToMapFromSubmenu @@ -9902,7 +8539,7 @@ BillsPC_MovePKMNMenu: ; e4cd ret ; e4f9 -UnknownText_0xe4f9: ; 0xe4f9 +.Text_MonHoldingMail: ; 0xe4f9 ; There is a #MON holding MAIL. Please remove the MAIL. text_jump UnknownText_0x1c102b db "@" @@ -9921,32 +8558,32 @@ BillsPC_DepositMenu: ; e4fe (3:64fe) Functione512: ; unused ld a, [PartyCount] and a - jr z, .asm_e51e + jr z, .no_pkmn cp 2 - jr c, .asm_e526 + jr c, .only_one_pkmn and a ret -.asm_e51e - ld hl, UnknownText_0xe52e +.no_pkmn + ld hl, .Text_NoPKMN call MenuTextBoxBackup scf ret -.asm_e526 - ld hl, UnknownText_0xe533 +.only_one_pkmn + ld hl, .Text_ItsYourLastPKMN call MenuTextBoxBackup scf ret ; e52e -UnknownText_0xe52e: ; 0xe52e +.Text_NoPKMN: ; 0xe52e ; You don't have a single #MON! text_jump UnknownText_0x1c1062 db "@" ; 0xe533 -UnknownText_0xe533: ; 0xe533 +.Text_ItsYourLastPKMN: ; 0xe533 ; You can't deposit your last #MON! text_jump UnknownText_0x1c1080 db "@" @@ -10373,506 +9010,10 @@ UnknownText_0xfa06: ; 0xfa06 SECTION "bank4", ROMX, BANK[$4] INCLUDE "engine/pack.asm" - INCLUDE "engine/time.asm" - INCLUDE "engine/tmhm.asm" - INCLUDE "engine/namingscreen.asm" - -Function11e75: ; 11e75 (4:5e75) - ld hl, wc6d0 - ld [hl], e - inc hl - ld [hl], d - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - call Function11e9a - call DelayFrame -.asm_11e8e - call Function11fc0 - jr nc, .asm_11e8e - pop af - ld [hInMenu], a - pop af - ld [hMapAnims], a - ret - -Function11e9a: ; 11e9a (4:5e9a) - call ClearBGPalettes - call DisableLCD - call Function11c51 - ld de, VTiles0 tile $00 - ld hl, GFX_11ef4 - ld bc, $80 - ld a, BANK(GFX_11ef4) - call FarCopyBytes - xor a - ld hl, wc300 - ld [hli], a - ld [hl], a - ld de, $1810 - ld a, $0 - call Function3b2a - ld hl, $2 - add hl, bc - ld [hl], $0 - call Function11f84 - ld a, $e3 - ld [rLCDC], a - call Function11f74 - ld b, $8 - call GetSGBLayout - call WaitBGMap - call WaitTop - ld a, %11100100 - call DmgToCgbBGPals - ld a, %11100100 - call Functioncf8 - call Function11be0 - ld hl, wc6d0 - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $10 - add hl, de - ld [hl], $4e - ret -; 11ef4 (4:5ef4) - -GFX_11ef4: ; 11ef4 -INCBIN "gfx/unknown/011ef4.2bpp" -; 11f74 - -Function11f74: ; 11f74 (4:5f74) - ld a, $21 - ld [wc6d3], a - ret -; 11f7a (4:5f7a) - -String_11f7a: ; dummied out - db "メールを かいてね@" -; 11f84 - -Function11f84: ; 11f84 (4:5f84) - call WaitTop - hlcoord 0, 0 - ld bc, 6 * SCREEN_WIDTH - ld a, $60 - call ByteFill - hlcoord 0, 6 - ld bc, 12 * SCREEN_WIDTH - ld a, " " - call ByteFill - hlcoord 1, 1 - lb bc, 4, SCREEN_WIDTH - 2 - call ClearBox - ld de, String_121dd - -Function11fa9: ; 11fa9 (4:5fa9) - hlcoord 1, 7 - ld b, 6 -.next - ld c, SCREEN_WIDTH - 1 -.loop - ld a, [de] - ld [hli], a - inc de - dec c - jr nz, .loop - push de - ld de, 21 - add hl, de - pop de - dec b - jr nz, .next - ret - -Function11fc0: ; 11fc0 (4:5fc0) - call JoyTextDelay - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_11fdb - call Function12008 - callba Function8cf62 - call Function11feb - call DelayFrame - and a - ret -.asm_11fdb - callab Function8cf53 - call ClearSprites - xor a - ld [hSCX], a - ld [hSCY], a - scf - ret - -Function11feb: ; 11feb (4:5feb) - xor a - ld [hBGMapMode], a - hlcoord 1, 1 - lb bc, 4, 18 - call ClearBox - ld hl, wc6d0 - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 2, 2 - call PlaceString - ld a, $1 - ld [hBGMapMode], a - ret - -Function12008: ; 12008 (4:6008) - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_12017 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Jumptable_12017: ; 12017 (4:6017) - dw Function1201b - dw Function1203a - - -Function1201b: ; 1201b (4:601b) - lb de, $48, $10 - ld a, $9 - call Function3b2a - ld a, c - ld [wc6d5], a - ld a, b - ld [wc6d6], a - ld hl, $1 - add hl, bc - ld a, [hl] - ld hl, $e - add hl, bc - ld [hl], a - ld hl, wJumptableIndex - inc [hl] - ret - -Function1203a: ; 1203a (4:603a) - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and A_BUTTON - jr nz, .a - ld a, [hl] - and B_BUTTON - jr nz, .b - ld a, [hl] - and START - jr nz, .start - ld a, [hl] - and SELECT - jr nz, .select - ret - -.a - call Function12185 - cp $1 - jr z, .select - cp $2 - jr z, .b - cp $3 - jr z, .asm_120a1 - call Function11c11 - call Function121ac - jr c, .start - ld hl, wc6d2 - ld a, [hl] - cp $10 - ret nz - inc [hl] - call Function11bd0 - ld [hl], $f2 - dec hl - ld [hl], $4e - ret - -.start - ld hl, wc6d5 - ld c, [hl] - inc hl - ld b, [hl] - ld hl, $c - add hl, bc - ld [hl], $9 - ld hl, $d - add hl, bc - ld [hl], $5 - ret - -.b - call Function11bbc - ld hl, wc6d2 - ld a, [hl] - cp $10 - ret nz - dec [hl] - call Function11bd0 - ld [hl], $f2 - inc hl - ld [hl], $4e - ret - -.asm_120a1 - call Function11bf7 - ld hl, wJumptableIndex - set 7, [hl] - ret - -.select - ld hl, wcf64 - ld a, [hl] - xor $1 - ld [hl], a - jr nz, .asm_120ba - ld de, String_121dd - call Function11fa9 - ret -.asm_120ba - ld de, String_1224f - call Function11fa9 - ret - -Function120c1: ; 120c1 (4:60c1) - call Function1210c - ld hl, $d - add hl, bc - ld a, [hl] - ld e, a - swap e - ld hl, $7 - add hl, bc - ld [hl], e - cp $5 - ld de, Unknown_120f8 - ld a, $0 - jr nz, .asm_120df - ld de, Unknown_12102 - ld a, $1 -.asm_120df - ld hl, $e - add hl, bc - add [hl] - ld hl, $1 - add hl, bc - ld [hl], a - ld hl, $c - add hl, bc - ld l, [hl] - ld h, $0 - add hl, de - ld a, [hl] - ld hl, $6 - add hl, bc - ld [hl], a - ret -; 120f8 (4:60f8) - -Unknown_120f8: ; 120f8 - db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90 -Unknown_12102: ; 12102 - db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60 -; 1210c - -Function1210c: ; 1210c (4:610c) - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .up - ld a, [hl] - and D_DOWN - jr nz, .down - ld a, [hl] - and D_LEFT - jr nz, .left - ld a, [hl] - and D_RIGHT - jr nz, .right - ret -.right - call Function1218b - and a - jr nz, .asm_12138 - ld hl, $c - add hl, bc - ld a, [hl] - cp $9 - jr nc, .asm_12135 - inc [hl] - ret -.asm_12135 - ld [hl], $0 - ret -.asm_12138 - cp $3 - jr nz, .asm_1213d - xor a -.asm_1213d - ld e, a - add a - add e - ld hl, $c - add hl, bc - ld [hl], a - ret -.left - call Function1218b - and a - jr nz, .asm_12159 - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_12156 - dec [hl] - ret -.asm_12156 - ld [hl], $9 - ret -.asm_12159 - cp $1 - jr nz, .asm_1215f - ld a, $4 -.asm_1215f -rept 2 - dec a -endr - ld e, a - add a - add e - ld hl, $c - add hl, bc - ld [hl], a - ret -.down - ld hl, $d - add hl, bc - ld a, [hl] - cp $5 - jr nc, .asm_12175 - inc [hl] - ret -.asm_12175 - ld [hl], $0 - ret -.up - ld hl, $d - add hl, bc - ld a, [hl] - and a - jr z, .asm_12182 - dec [hl] - ret -.asm_12182 - ld [hl], $5 - ret - -Function12185: ; 12185 (4:6185) - ld hl, wc6d5 - ld c, [hl] - inc hl - ld b, [hl] - -Function1218b: ; 1218b (4:618b) - ld hl, $d - add hl, bc - ld a, [hl] - cp $5 - jr nz, .asm_121aa - ld hl, $c - add hl, bc - ld a, [hl] - cp $3 - jr c, .asm_121a4 - cp $6 - jr c, .asm_121a7 - ld a, $3 - ret -.asm_121a4 - ld a, $1 - ret -.asm_121a7 - ld a, $2 - ret -.asm_121aa - xor a - ret - -Function121ac: ; 121ac (4:61ac) - ld a, [wc6d7] - jp Function11b17 -; 121b2 (4:61b2) - -Function121b2: ; unreferenced - ld a, [wc6d2] - and a - ret z - cp $11 - jr nz, .asm_121c3 - push hl - ld hl, wc6d2 -rept 2 - dec [hl] -endr - jr .asm_121c8 - -.asm_121c3 - push hl - ld hl, wc6d2 - dec [hl] - -.asm_121c8 - call Function11bd0 - ld c, [hl] - pop hl -.asm_121cd - ld a, [hli] - cp $ff - jp z, Function11b27 - cp c - jr z, .asm_121d9 - inc hl - jr .asm_121cd - -.asm_121d9 - ld a, [hl] - jp Function11b23 -; 121dd - -String_121dd: ; 122dd - db "A B C D E F G H I J" - db "K L M N O P Q R S T" - db "U V W X Y Z , ? !" - db "1 2 3 4 5 6 7 8 9 0" - db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×" - db "lower DEL END " -; 1224f - -String_1224f: ; 1224f - db "a b c d e f g h i j" - db "k l m n o p q r s t" - db "u v w x y z . - /" - db "'d 'l 'm 'r 's 't 'v & ( )" - db "<``> <''> [ ] ' : ; " - db "UPPER DEL END " -; 122c1 +INCLUDE "engine/compose_mail.asm" Script_AbortBugContest: ; 0x122c1 checkflag ENGINE_BUG_CONTEST_TIMER @@ -11185,7 +9326,7 @@ Unknown_1404e: ; Unreferenced ; 14056 -Function14056: ; 14056 +StageRTCTimeForSave: ; 14056 call UpdateTime ld hl, wRTC ld a, [CurDay] @@ -11199,7 +9340,7 @@ Function14056: ; 14056 ret ; 1406a -Function1406a: ; 1406a +SaveRTC: ; 1406a ld a, $a ld [MBC3SRamEnable], a call LatchClock @@ -11207,10 +9348,10 @@ Function1406a: ; 1406a ld a, $c ld [MBC3SRamBank], a res 7, [hl] - ld a, BANK(s0_ac60) + ld a, BANK(sRTCStatusFlags) ld [MBC3SRamBank], a xor a - ld [s0_ac60], a + ld [sRTCStatusFlags], a call CloseSRAM ret ; 14089 @@ -11224,7 +9365,7 @@ StartClock:: ; 14089 jr nc, .skip_set ; bit 5: Day count exceeds 139 ; bit 6: Day count exceeds 255 - call Function6d3 ; set flag on s0_ac60 + call RecordRTCStatus ; set flag on sRTCStatusFlags .skip_set call StartRTC @@ -11243,12 +9384,12 @@ Function1409b: ; 1409b .set_bit_7 ; Day count exceeds 16383 ld a, %10000000 - call Function6d3 ; set bit 7 on s0_ac60 + call RecordRTCStatus ; set bit 7 on sRTCStatusFlags ret ; 140ae Function140ae: ; 140ae - call Function6e3 + call CheckRTCStatus ld c, a and %11000000 ; Day count exceeded 255 or 16383 jr nz, .time_overflow @@ -11295,76 +9436,76 @@ Function140ed:: ; 140ed ld a, [StringBuffer2 + 3] sub [hl] dec hl - jr nc, .asm_14102 + jr nc, .okay_secs add 60 -.asm_14102 +.okay_secs ld [de], a dec de ld a, [StringBuffer2 + 2] sbc [hl] dec hl - jr nc, .asm_1410d + jr nc, .okay_mins add 60 -.asm_1410d +.okay_mins ld [de], a dec de ld a, [StringBuffer2 + 1] sbc [hl] dec hl - jr nc, .asm_14118 + jr nc, .okay_hrs add 24 -.asm_14118 +.okay_hrs ld [de], a dec de ld a, [StringBuffer2] sbc [hl] dec hl - jr nc, .asm_14128 + jr nc, .okay_days add 140 ld c, 7 call SimpleDivide -.asm_14128 +.okay_days ld [de], a ret ; 1412a -INCLUDE "engine/sprites.asm" +INCLUDE "engine/overworld.asm" Function1499a:: ; 1499a - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] cp $60 - jr z, .asm_149ad + jr z, .warp cp $68 - jr z, .asm_149ad + jr z, .warp and $f0 cp $70 - jr z, .asm_149ad + jr z, .warp and a ret -.asm_149ad +.warp scf ret ; 149af Function149af:: ; 149af - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] cp $70 - jr z, .asm_149c4 + jr z, .not_warp cp $76 - jr z, .asm_149c4 + jr z, .not_warp cp $78 - jr z, .asm_149c4 + jr z, .not_warp cp $7e - jr z, .asm_149c4 + jr z, .not_warp scf ret -.asm_149c4 +.not_warp xor a ret ; 149c6 @@ -11372,7 +9513,7 @@ Function149af:: ; 149af CheckWarpCollision: ; 149c6 ld de, 1 ld hl, .blocks - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] call IsInArray ret ; 149d3 @@ -11391,7 +9532,7 @@ CheckWarpCollision: ; 149c6 ; 149dd CheckGrassCollision:: ; 149dd - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] ld hl, .blocks ld de, 1 call IsInArray @@ -11431,7 +9572,7 @@ CheckCutCollision: ; 149f5 ; 14a07 Function14a07:: ; 14a07 - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] ld de, $1f cp $71 ; door ret z @@ -11448,1998 +9589,19 @@ INCLUDE "engine/spawn_points.asm" INCLUDE "engine/map_setup.asm" -PokemonCenterPC: ; 1559a - call PC_CheckPartyForPokemon - ret c - call PC_PlayBootSound - ld hl, UnknownText_0x15a27 - call PC_DisplayText - ld hl, UnknownText_0x15a2c - call PC_DisplayTextWaitMenu - ld hl, .TopMenu - call LoadMenuDataHeader -.loop - xor a - ld [hBGMapMode], a - call Function1563e - ld [wcf76], a - call Function1e5d - jr c, .shutdown - ld a, [MenuSelection] - ld hl, .JumpTable - call Function1fa7 - jr nc, .loop - -.shutdown - call Function156b8 - call ExitMenu - call WriteBackup - ret -; 155d6 - -.TopMenu: ; 0x155d6 - db $48 ; flags - db 00, 00 ; start coords - db 12, 15 ; end coords - dw .MenuData2 - db 1 ; default option -; 0x155de - -.MenuData2: ; 0x155de - db $a0 ; flags - db 0 ; items - dw .WhichPC - dw Function1f8d - dw .JumpTable -; 0x155e6 - -.JumpTable: ; 155e6 - dw Function15679, .String_PlayersPC - dw Function15668, .String_BillsPC - dw Function15689, .String_OaksPC - dw Function1569a, .String_HallOfFame - dw Function156ab, .String_TurnOff -; 155fa - -.String_PlayersPC: db "<PLAYER>'s PC@" -.String_BillsPC: db "BILL's PC@" -.String_OaksPC: db "PROF.OAK's PC@" -.String_HallOfFame: db "HALL OF FAME@" -.String_TurnOff: db "TURN OFF@" -; 1562c - -.WhichPC: ; 1562c - ; before pokedex - db 3 ; items - db 1, 0, 4 ; bill's, player's, turn off - db -1 - - ; before Hall Of Fame - db 4 ; items - db 1, 0, 2, 4 ; bill's, player's, oak's, turn off - db -1 - - ; postgame - db 5 ; items - db 1, 0, 2, 3, 4 ; bill's, player's, oak's, hall of fame, turn off - db -1 -; 1563e - -Function1563e: ; 1563e - call CheckReceivedDex - jr nz, .asm_15646 - ld a, $0 - ret - -.asm_15646 - ld a, [wd95e] - and a - ld a, $1 - ret z - ld a, $2 - ret -; 15650 - -PC_CheckPartyForPokemon: ; 15650 - ld a, [PartyCount] - and a - ret nz - ld de, SFX_CHOOSE_PC_OPTION - call PlaySFX - ld hl, UnknownText_0x15663 - call PC_DisplayText - scf - ret -; 15663 - -UnknownText_0x15663: ; 0x15663 - ; Bzzzzt! You must have a #MON to use this! - text_jump UnknownText_0x1c1328 - db "@" -; 0x15668 - -Function15668: ; 15668 - call Function156c2 - ld hl, UnknownText_0x15a31 - call PC_DisplayText - callba Functione3fd - and a - ret -; 15679 (5:5679) - -Function15679: ; 15679 - call Function156c2 - ld hl, UnknownText_0x15a36 - call PC_DisplayText - ld b, $0 - call Function15704 - and a - ret -; 15689 - -Function15689: ; 15689 - call Function156c2 - ld hl, UnknownText_0x15a3b - call PC_DisplayText - callba ProfOaksPC - and a - ret -; 1569a - -Function1569a: ; 1569a - call Function156c2 - call FadeToMenu - callba Function86650 - call Function2b3c - and a - ret -; 156ab - -Function156ab: ; 156ab - ld hl, UnknownText_0x15a40 - call PrintText - scf - ret -; 156b3 - -PC_PlayBootSound: ; 156b3 - ld de, SFX_BOOT_PC - jr Function156d0 - -Function156b8: ; 156b8 - ld de, SFX_SHUT_DOWN_PC - call Function156d0 - call WaitSFX - ret - -Function156c2: ; 156c2 - ld de, SFX_CHOOSE_PC_OPTION - jr Function156d0 - -Function156c7: ; 156c7 - ld de, SFX_SWITCH_POKEMON - call Function156d0 - ld de, SFX_SWITCH_POKEMON - -Function156d0: ; 156d0 - push de - call WaitSFX - pop de - call PlaySFX - ret -; 156d9 - -Function156d9: ; 156d9 - call PC_PlayBootSound - ld hl, UnknownText_0x156ff - call PC_DisplayText - ld b, $1 - call Function15704 - and a - jr nz, .asm_156f9 - call OverworldTextModeSwitch - call Function321c - call UpdateSprites - call Function156b8 - ld c, $0 - ret - -.asm_156f9 - call ClearBGPalettes - ld c, $1 - ret -; 156ff - -UnknownText_0x156ff: ; 0x156ff - ; turned on the PC. - text_jump UnknownText_0x1c1353 - db "@" -; 0x15704 - -Function15704: ; 15704 - ld a, b - ld [wcf76], a - ld hl, UnknownText_0x157cc - call PC_DisplayTextWaitMenu - call Function15715 - call ExitMenu - ret -; 15715 - -Function15715: ; 15715 - xor a - ld [wd0d7], a - ld [wd0dd], a - ld hl, KrissPCMenuData - call LoadMenuDataHeader -.asm_15722 - call UpdateTimePals - call Function1e5d - jr c, .asm_15731 - call Function1fa7 - jr nc, .asm_15722 - jr .asm_15732 - -.asm_15731 - xor a - -.asm_15732 - call ExitMenu - ret -; 15736 - -KrissPCMenuData: ; 0x15736 - db %01000000 - db 0, 0 ; top left corner coords (y, x) - db 12, 15 ; bottom right corner coords (y, x) - dw .KrissPCMenuData2 - db 1 ; default selected option - -.KrissPCMenuData2 - db %10100000 ; bit7 - db 0 ; # items? - dw .KrissPCMenuList1 - dw Function1f8d - dw .KrissPCMenuPointers - -.KrissPCMenuPointers ; 0x15746 - dw KrisWithdrawItemMenu, .WithdrawItem - dw KrisDepositItemMenu, .DepositItem - dw KrisTossItemMenu, .TossItem - dw KrisMailBoxMenu, .MailBox - dw KrisDecorationMenu, .Decoration - dw KrisLogOffMenu, .LogOff - dw KrisLogOffMenu, .TurnOff - -.WithdrawItem db "WITHDRAW ITEM@" -.DepositItem db "DEPOSIT ITEM@" -.TossItem db "TOSS ITEM@" -.MailBox db "MAIL BOX@" -.Decoration db "DECORATION@" -.TurnOff db "TURN OFF@" -.LogOff db "LOG OFF@" - -WITHDRAW_ITEM EQU 0 -DEPOSIT_ITEM EQU 1 -TOSS_ITEM EQU 2 -MAIL_BOX EQU 3 -DECORATION EQU 4 -TURN_OFF EQU 5 -LOG_OFF EQU 6 - -.KrissPCMenuList1 - db 5 - db WITHDRAW_ITEM - db DEPOSIT_ITEM - db TOSS_ITEM - db MAIL_BOX - db TURN_OFF - db -1 - -.KrissPCMenuList2 - db 6 - db WITHDRAW_ITEM - db DEPOSIT_ITEM - db TOSS_ITEM - db MAIL_BOX - db DECORATION - db LOG_OFF - db -1 - -PC_DisplayTextWaitMenu: ; 157bb - ld a, [Options] - push af - set NO_TEXT_SCROLL, a - ld [Options], a - call MenuTextBox - pop af - ld [Options], a - ret -; 157cc - -UnknownText_0x157cc: ; 0x157cc - ; What do you want to do? - text_jump UnknownText_0x1c1368 - db "@" -; 0x157d1 - -KrisWithdrawItemMenu: ; 0x157d1 - call LoadStandardMenuDataHeader - callba ClearPCItemScreen -.asm_157da - call Function15985 - jr c, .asm_157e4 - call Function157e9 - jr .asm_157da - -.asm_157e4 - call Function2b3c - xor a - ret -; 0x157e9 - -Function157e9: ; 0x157e9 - ; check if the item has a quantity - callba _CheckTossableItem - ld a, [wItemAttributeParamBuffer] - and a - jr z, .askquantity - - ; items without quantity are always ×1 - ld a, 1 - ld [wItemQuantityChangeBuffer], a - jr .withdraw - -.askquantity - ld hl, .HowManyText - call MenuTextBox - callba Function24fbf - call ExitMenu - call ExitMenu - jr c, .done - -.withdraw - ld a, [wItemQuantityChangeBuffer] - ld [Buffer1], a ; quantity - ld a, [wd107] - ld [Buffer2], a - ld hl, NumItems - call ReceiveItem - jr nc, .PackFull - ld a, [Buffer1] - ld [wItemQuantityChangeBuffer], a - ld a, [Buffer2] - ld [wd107], a - ld hl, PCItems - call TossItem - predef PartyMonItemName - ld hl, .WithdrewText - call MenuTextBox - xor a - ld [hBGMapMode], a - call ExitMenu - ret - -.PackFull - ld hl, .NoRoomText - call MenuTextBoxBackup - ret - -.done - ret -; 0x15850 - -.HowManyText ; 0x15850 - text_jump _KrissPCHowManyWithdrawText - db "@" - -.WithdrewText ; 0x15855 - text_jump _KrissPCWithdrewItemsText - db "@" - -.NoRoomText ; 0x1585a - text_jump _KrissPCNoRoomWithdrawText - db "@" - - -KrisTossItemMenu: ; 0x1585f - call LoadStandardMenuDataHeader - callba ClearPCItemScreen -.asm_15868 - call Function15985 - jr c, .asm_15878 - ld de, PCItems - callba Function129f4 - jr .asm_15868 - -.asm_15878 - call Function2b3c - xor a - ret -; 0x1587d - - -KrisDecorationMenu: ; 0x1587d - callba _KrisDecorationMenu - ld a, c - and a - ret z - scf - ret -; 0x15888 - - -KrisLogOffMenu: ; 0x15888 - xor a - scf - ret -; 0x1588b - - -KrisDepositItemMenu: ; 0x1588b - call Function158b8 - jr c, .asm_158b6 - call DisableSpriteUpdates - call LoadStandardMenuDataHeader - callba Function106a5 -.asm_1589c - callba Function106be - ld a, [wcf66] - and a - jr z, .asm_158b3 - call Function158cc - callba CheckRegisteredItem - jr .asm_1589c - -.asm_158b3 - call Function2b3c - -.asm_158b6 - xor a - ret -; 0x158b8 - -Function158b8: ; 0x158b8 - callba Function129d5 - ret nc - ld hl, UnknownText_0x158c7 - call MenuTextBoxBackup - scf - ret -; 0x158c7 - -UnknownText_0x158c7: ; 0x158c7 - ; No items here! - text_jump UnknownText_0x1c13df - db "@" -; 0x158cc - - -Function158cc: ; 0x158cc - ld a, [wc2ce] - push af - ld a, $0 - ld [wc2ce], a - callba CheckItemMenu - ld a, [wItemAttributeParamBuffer] - ld hl, .jumptable - rst JumpTable - pop af - ld [wc2ce], a - ret -; 0x158e7 - -.jumptable: ; 0x158e7 - dw .maybe_use - dw .no_use - dw .no_use - dw .no_use - dw .maybe_use - dw .maybe_use - dw .maybe_use - -.no_use: - ret - -.maybe_use: - ld a, [Buffer1] - push af - ld a, [Buffer2] - push af - call Function1590a - pop af - ld [Buffer2], a - pop af - ld [Buffer1], a - ret -; 0x1590a - -Function1590a: ; 0x1590a - callba _CheckTossableItem - ld a, [wItemAttributeParamBuffer] - and a - jr z, .asm_1591d - ld a, $1 - ld [wItemQuantityChangeBuffer], a - jr .asm_15933 - -.asm_1591d - ld hl, .HowManyText - call MenuTextBox - callba Function24fbf - push af - call ExitMenu - call ExitMenu - pop af - jr c, .asm_1596c - -.asm_15933 - ld a, [wItemQuantityChangeBuffer] - ld [Buffer1], a - ld a, [wd107] - ld [Buffer2], a - ld hl, PCItems - call ReceiveItem - jr nc, .asm_15965 - ld a, [Buffer1] - ld [wItemQuantityChangeBuffer], a - ld a, [Buffer2] - ld [wd107], a - ld hl, NumItems - call TossItem - predef PartyMonItemName - ld hl, .DepositText - call PrintText - ret - -.asm_15965 - ld hl, .NoRoomText - call PrintText - ret - -.asm_1596c - and a - ret -; 0x1596e - - -.HowManyText ; 0x1596e - text_jump _KrissPCHowManyDepositText - db "@" - -.DepositText ; 0x15973 - text_jump _KrissPCDepositItemsText - db "@" - -.NoRoomText ; 0x15978 - text_jump _KrissPCNoRoomDepositText - db "@" - - -KrisMailBoxMenu: ; 0x1597d - callba _KrisMailBoxMenu - xor a - ret -; 0x15985 - - -Function15985: ; 0x15985 - xor a - ld [wd0e3], a -.asm_15989 - ld a, [wc2ce] - push af - ld a, $0 - ld [wc2ce], a - ld hl, MenuData15a08 - call CopyMenuDataHeader - hlcoord 0, 0 - ld b, $a - ld c, $12 - call TextBox - ld a, [wd0d7] - ld [wMenuCursorBuffer], a - ld a, [wd0dd] - ld [wd0e4], a - call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0dd], a - ld a, [MenuSelection2] - ld [wd0d7], a - pop af - ld [wc2ce], a - ld a, [wd0e3] - and a - jr nz, .asm_159d8 - ld a, [wcf73] - cp $2 - jr z, .asm_15a06 - cp $1 - jr z, .asm_159fb - cp $4 - jr z, .asm_159f2 - jr .asm_159f8 - -.asm_159d8 - ld a, [wcf73] - cp $2 - jr z, .asm_159e9 - cp $1 - jr z, .asm_159ef - cp $4 - jr z, .asm_159ef - jr .asm_159f8 - -.asm_159e9 - xor a - ld [wd0e3], a - jr .asm_159f8 - -.asm_159ef - call Function156c7 - -.asm_159f2 - callba Function2490c - -.asm_159f8 - jp .asm_15989 - -.asm_159fb - callba Function24706 - call Function1bee - and a - ret - -.asm_15a06 - scf - ret -; 0x15a08 - -MenuData15a08: ; 0x15a08 - db %01000000 - db 1, 4 ; start coords - db 10, 18 ; end coords - dw .MenuData2 - db 1 ; default option - -.MenuData2 - db %10110000 - db 4, 8 ; rows/cols? - db 2 ; horizontal spacing? - dbw 0, PCItems - dba PlaceMenuItemName - dba PlaceMenuItemQuantity - dba Function244c3 - -PC_DisplayText: ; 15a20 - call MenuTextBox - call ExitMenu - ret -; 15a27 - - -UnknownText_0x15a27: ; 0x15a27 - ; turned on the PC. - text_jump UnknownText_0x1c144d - db "@" -; 0x15a2c - -UnknownText_0x15a2c: ; 0x15a2c - ; Access whose PC? - text_jump UnknownText_0x1c1462 - db "@" -; 0x15a31 - -UnknownText_0x15a31: ; 0x15a31 - ; BILL's PC accessed. #MON Storage System opened. - text_jump UnknownText_0x1c1474 - db "@" -; 0x15a36 - -UnknownText_0x15a36: ; 0x15a36 - ; Accessed own PC. Item Storage System opened. - text_jump UnknownText_0x1c14a4 - db "@" -; 0x15a3b - -UnknownText_0x15a3b: ; 0x15a3b - ; PROF.OAK's PC accessed. #DEX Rating System opened. - text_jump UnknownText_0x1c14d2 - db "@" -; 0x15a40 - -UnknownText_0x15a40: ; 0x15a40 - ; … Link closed… - text_jump UnknownText_0x1c1505 - db "@" -; 0x15a45 - +INCLUDE "engine/pokecenter_pc.asm" INCLUDE "engine/mart.asm" -GiveMoney:: ; 15fd7 - ld a, $3 - call AddMoney - ld bc, MaxMoney - ld a, $3 - call CompareMoney - jr z, .asm_15ff5 - jr c, .asm_15ff5 - ld hl, MaxMoney - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - scf - ret - -.asm_15ff5 - and a - ret -; 15ff7 - -MaxMoney: ; 15ff7 - dt 999999 -; 15ffa - - -TakeMoney:: ; 15ffa - ld a, 3 - call SubtractMoney - jr nc, .asm_16009 - xor a - ld [de], a - inc de - ld [de], a - inc de - ld [de], a - scf - ret - -.asm_16009 - and a - ret -; 1600b - -CompareMoney:: ; 1600b - ld a, $3 -CompareFunds: ; 1600d - push hl - push de - push bc - ld h, b - ld l, c - ld c, $0 - ld b, a -.loop1 - dec a - jr z, .done - inc de - inc hl - jr .loop1 - -.done - and a -.loop2 - ld a, [de] - sbc [hl] - jr z, .okay - inc c - -.okay - dec de - dec hl - dec b - jr nz, .loop2 - jr c, .set_carry - ld a, c - and a - jr .skip_carry - -.set_carry - ld a, $1 - and a - scf - -.skip_carry - pop bc - pop de - pop hl - ret -; 16035 - -SubtractMoney: ; 16035 - ld a, 3 -SubtractFunds: ; 16037 - push hl - push de - push bc - ld h, b - ld l, c - ld b, a - ld c, 0 -.loop - dec a - jr z, .done - inc de - inc hl - jr .loop - -.done - and a -.loop2 - ld a, [de] - sbc [hl] - ld [de], a - dec de - dec hl - dec b - jr nz, .loop2 - pop bc - pop de - pop hl - ret -; 16053 - -AddMoney: ; 16053 - ld a, $3 -AddFunds: ; 16055 - push hl - push de - push bc - ld h, b - ld l, c - ld b, a -.loop1 - dec a - jr z, .done - inc de - inc hl - jr .loop1 - -.done - and a -.loop2 - ld a, [de] - adc [hl] - ld [de], a - dec de - dec hl - dec b - jr nz, .loop2 - pop bc - pop de - pop hl - ret -; 1606f - -GiveCoins:: ; 1606f - ld a, 2 - ld de, Coins - call AddFunds - ld a, 2 - ld bc, .maxcoins - call CompareFunds - jr c, .not_maxed - ld hl, .maxcoins - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - scf - ret - -.not_maxed - and a - ret -; 1608d - -.maxcoins: ; 1608d - bigdw 9999 -; 1608f - - -TakeCoins:: ; 1608f - ld a, 2 - ld de, Coins - call SubtractFunds - jr nc, .asm_1609f - xor a - ld [de], a - inc de - ld [de], a - scf - ret - -.asm_1609f - and a - ret -; 160a1 - -CheckCoins:: ; 160a1 - ld a, $2 - ld de, Coins - jp CompareFunds -; 160a9 - +INCLUDE "engine/money.asm" INCLUDE "items/marts.asm" INCLUDE "event/mom.asm" -Special_DayCareMan: ; 166d6 - ld hl, wDaycareMan - bit 0, [hl] - jr nz, .asm_166fe - ld hl, wDaycareMan - ld a, $0 - call Function1678f - jr c, .asm_16724 - call Function16798 - jr c, .asm_16721 - callba Functionde2a - ld hl, wDaycareMan - set 0, [hl] - call Function167f6 - call Function16a3b - ret - -.asm_166fe - callba Functione698 - ld hl, wBreedMon1Nick - call Function1686d - call Function16807 - jr c, .asm_16721 - callba Functiondd21 - call Function16850 - ld hl, wDaycareMan - res 0, [hl] - res 5, [hl] - jr .asm_16724 - -.asm_16721 - call Function1689b - -.asm_16724 - ld a, $13 - call Function1689b - ret -; 1672a - -Special_DayCareLady: ; 1672a - ld hl, wDaycareLady - bit 0, [hl] - jr nz, .asm_16752 - ld hl, wDaycareLady - ld a, $2 - call Function16781 - jr c, .asm_1677b - call Function16798 - jr c, .asm_16778 - callba Functionde37 - ld hl, wDaycareLady - set 0, [hl] - call Function167f6 - call Function16a3b - ret - -.asm_16752 - callba Functione6b3 - ld hl, wBreedMon2Nick - call Function1686d - call Function16807 - jr c, .asm_16778 - callba Functiondd42 - call Function16850 - ld hl, wDaycareLady - res 0, [hl] - ld hl, wDaycareMan - res 5, [hl] - jr .asm_1677b - -.asm_16778 - call Function1689b - -.asm_1677b - ld a, $13 - call Function1689b - ret -; 16781 - -Function16781: ; 16781 - bit 7, [hl] - jr nz, .asm_16788 - set 7, [hl] - inc a - -.asm_16788 - call Function1689b - call YesNoBox - ret -; 1678f - -Function1678f: ; 1678f - set 7, [hl] - call Function1689b - call YesNoBox - ret -; 16798 - -Function16798: ; 16798 - ld a, [PartyCount] - cp 2 - jr c, .asm_167e5 - ld a, 4 - call Function1689b - ld b, 6 - callba Function5001d - jr c, .asm_167dd - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_167e1 - callba CheckCurPartyMonFainted - jr c, .asm_167e9 - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - ld a, [CurPartyMon] - call AddNTimes - ld d, [hl] - callba ItemIsMail - jr c, .asm_167ed - ld hl, PartyMonNicknames - ld a, [CurPartyMon] - call GetNick - and a - ret - -.asm_167dd - ld a, $12 - scf - ret - -.asm_167e1 - ld a, $6 - scf - ret - -.asm_167e5 - ld a, $7 - scf - ret - -.asm_167e9 - ld a, $8 - scf - ret - -.asm_167ed - ld a, $a - scf - ret -; 167f1 - -UnknownText_0x167f1: ; 0x167f1 - ; - text_jump UnknownText_0x1bdaa7 - db "@" -; 0x167f6 - -Function167f6: ; 167f6 - ld a, $5 - call Function1689b - ld a, [CurPartySpecies] - call PlayCry - ld a, $9 - call Function1689b - ret -; 16807 - -Function16807: ; 16807 - ld a, [StringBuffer2 + 1] - and a - jr nz, .asm_16819 - ld a, $f - call Function1689b - call YesNoBox - jr c, .asm_16844 - jr .asm_1682d - -.asm_16819 - ld a, $b - call Function1689b - call YesNoBox - jr c, .asm_16844 - ld a, $c - call Function1689b - call YesNoBox - jr c, .asm_16844 - -.asm_1682d - ld de, Money - ld bc, StringBuffer2 + 2 - callba CompareMoney - jr c, .asm_16848 - ld a, [PartyCount] - cp $6 - jr nc, .asm_1684c - and a - ret - -.asm_16844 - ld a, $12 - scf - ret - -.asm_16848 - ld a, $11 - scf - ret - -.asm_1684c - ld a, $10 - scf - ret -; 16850 - -Function16850: ; 16850 - ld bc, StringBuffer2 + 2 - ld de, Money - callba TakeMoney - ld a, $d - call Function1689b - ld a, [CurPartySpecies] - call PlayCry - ld a, $e - call Function1689b - ret -; 1686d - -Function1686d: ; 1686d - ld a, b - ld [StringBuffer2], a - ld a, d - ld [StringBuffer2 + 1], a - ld de, StringBuffer1 - ld bc, NAME_LENGTH - call CopyBytes - ld hl, 0 - ld bc, $64 - ld a, [StringBuffer2 + 1] - call AddNTimes - ld de, $64 - add hl, de - xor a - ld [StringBuffer2 + 2], a - ld a, h - ld [StringBuffer2 + 3], a - ld a, l - ld [StringBuffer2 + 4], a - ret -; 1689b - -Function1689b: ; 1689b - ld e, a - ld d, 0 - ld hl, TextTable_168aa -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - call PrintText - ret -; 168aa - -TextTable_168aa: ; 168aa - dw UnknownText_0x168d2 - dw UnknownText_0x168d7 - dw UnknownText_0x168dc - dw UnknownText_0x168e1 - dw UnknownText_0x168e6 - dw UnknownText_0x168ff - dw UnknownText_0x168f0 - dw UnknownText_0x168eb - dw UnknownText_0x168fa - dw UnknownText_0x16904 - dw UnknownText_0x168f5 - dw UnknownText_0x16909 - dw UnknownText_0x1690e - dw UnknownText_0x16913 - dw UnknownText_0x16918 - dw UnknownText_0x1691d - dw UnknownText_0x16922 - dw UnknownText_0x16927 - dw UnknownText_0x1692c - dw UnknownText_0x16931 -; 168d2 - -UnknownText_0x168d2: ; 0x168d2 - ; I'm the DAY-CARE MAN. Want me to raise a #MON? - text_jump UnknownText_0x1bdaa9 - db "@" -; 0x168d7 - -UnknownText_0x168d7: ; 0x168d7 - ; I'm the DAY-CARE MAN. Do you know about EGGS? I was raising #MON with my wife, you see. We were shocked to find an EGG! How incredible is that? So, want me to raise a #MON? - text_jump UnknownText_0x1bdad8 - db "@" -; 0x168dc - -UnknownText_0x168dc: ; 0x168dc - ; I'm the DAY-CARE LADY. Should I raise a #MON for you? - text_jump UnknownText_0x1bdb85 - db "@" -; 0x168e1 - -UnknownText_0x168e1: ; 0x168e1 - ; I'm the DAY-CARE LADY. Do you know about EGGS? My husband and I were raising some #MON, you see. We were shocked to find an EGG! How incredible could that be? Should I raise a #MON for you? - text_jump UnknownText_0x1bdbbb - db "@" -; 0x168e6 - -UnknownText_0x168e6: ; 0x168e6 - ; What should I raise for you? - text_jump UnknownText_0x1bdc79 - db "@" -; 0x168eb - -UnknownText_0x168eb: ; 0x168eb - ; Oh? But you have just one #MON. - text_jump UnknownText_0x1bdc97 - db "@" -; 0x168f0 - -UnknownText_0x168f0: ; 0x168f0 - ; Sorry, but I can't accept an EGG. - text_jump UnknownText_0x1bdcb8 - db "@" -; 0x168f5 - -UnknownText_0x168f5: ; 0x168f5 - ; Remove MAIL before you come see me. - text_jump UnknownText_0x1bdcda - db "@" -; 0x168fa - -UnknownText_0x168fa: ; 0x168fa - ; If you give me that, what will you battle with? - text_jump UnknownText_0x1bdcff - db "@" -; 0x168ff - -UnknownText_0x168ff: ; 0x168ff - ; OK. I'll raise your @ . - text_jump UnknownText_0x1bdd30 - db "@" -; 0x16904 - -UnknownText_0x16904: ; 0x16904 - ; Come back for it later. - text_jump UnknownText_0x1bdd4b - db "@" -; 0x16909 - -UnknownText_0x16909: ; 0x16909 - ; Are we geniuses or what? Want to see your @ ? - text_jump UnknownText_0x1bdd64 - db "@" -; 0x1690e - -UnknownText_0x1690e: ; 0x1690e - ; Your @ has grown a lot. By level, it's grown by @ . If you want your #MON back, it will cost ¥@ . - text_jump UnknownText_0x1bdd96 - db "@" -; 0x16913 - -UnknownText_0x16913: ; 0x16913 - ; Perfect! Here's your #MON. - text_jump UnknownText_0x1bde04 - db "@" -; 0x16918 - -UnknownText_0x16918: ; 0x16918 - ; got back @ . - text_jump UnknownText_0x1bde1f - db "@" -; 0x1691d - -UnknownText_0x1691d: ; 0x1691d - ; Huh? Back already? Your @ needs a little more time with us. If you want your #MON back, it will cost ¥100. - text_jump UnknownText_0x1bde32 - db "@" -; 0x16922 - -UnknownText_0x16922: ; 0x16922 - ; You have no room for it. - text_jump UnknownText_0x1bdea2 - db "@" -; 0x16927 - -UnknownText_0x16927: ; 0x16927 - ; You don't have enough money. - text_jump UnknownText_0x1bdebc - db "@" -; 0x1692c - -UnknownText_0x1692c: ; 0x1692c - ; Oh, fine then. - text_jump UnknownText_0x1bded9 - db "@" -; 0x16931 - -UnknownText_0x16931: ; 0x16931 - ; Come again. - text_jump UnknownText_0x1bdee9 - db "@" -; 0x16936 - -Special_DayCareManOutside: ; 16936 - ld hl, wDaycareMan - bit 6, [hl] - jr nz, Function16949 - ld hl, UnknownText_0x16944 - call PrintText - ret - -UnknownText_0x16944: ; 0x16944 - ; Not yet… - text_jump UnknownText_0x1bdef6 - db "@" -; 0x16949 - -Function16949: ; 16949 - ld hl, UnknownText_0x16993 - call PrintText - call YesNoBox - jr c, .asm_1697c - ld a, [PartyCount] - cp PARTY_LENGTH - jr nc, .asm_16987 - call Function169ac - ld hl, wDaycareMan - res 6, [hl] - call Function16a3b - ld hl, UnknownText_0x16998 - call PrintText - ld de, SFX_GET_EGG_FROM_DAYCARE_LADY - call PlaySFX - ld c, 120 - call DelayFrames - ld hl, UnknownText_0x1699d - jr .asm_1697f - -.asm_1697c - ld hl, UnknownText_0x169a2 - -.asm_1697f - call PrintText - xor a - ld [ScriptVar], a - ret - -.asm_16987 - ld hl, UnknownText_0x169a7 - call PrintText - ld a, $1 - ld [ScriptVar], a - ret -; 16993 - -UnknownText_0x16993: ; 0x16993 - ; Ah, it's you! We were raising your #MON, and my goodness, were we surprised! Your #MON had an EGG! We don't know how it got there, but your #MON had it. You want it? - text_jump UnknownText_0x1bdf00 - db "@" -; 0x16998 - -UnknownText_0x16998: ; 0x16998 - ; received the EGG! - text_jump UnknownText_0x1bdfa5 - db "@" -; 0x1699d - -UnknownText_0x1699d: ; 0x1699d - ; Take good care of it. - text_jump UnknownText_0x1bdfba - db "@" -; 0x169a2 - -UnknownText_0x169a2: ; 0x169a2 - ; Well then, I'll keep it. Thanks! - text_jump UnknownText_0x1bdfd1 - db "@" -; 0x169a7 - -UnknownText_0x169a7: ; 0x169a7 - ; You have no room in your party. Come back later. - text_jump UnknownText_0x1bdff2 - db "@" -; 0x169ac - -Function169ac: ; 169ac - ld a, [wEggMonLevel] - ld [CurPartyLevel], a - ld hl, PartyCount - ld a, [hl] - cp PARTY_LENGTH - jr nc, .asm_16a2f - inc a - ld [hl], a - ld c, a - ld b, 0 - add hl, bc - ld a, EGG - ld [hli], a - ld a, [wEggMonSpecies] - ld [CurSpecies], a - ld [CurPartySpecies], a - ld a, $ff - ld [hl], a - ld hl, PartyMonNicknames - ld bc, PKMN_NAME_LENGTH - call Function16a31 - ld hl, wEggNick - call CopyBytes - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call Function16a31 - ld hl, wEggOT - call CopyBytes - ld hl, PartyMon1 - ld bc, PARTYMON_STRUCT_LENGTH - call Function16a31 - ld hl, wEggMon - ld bc, wEggMonEnd - wEggMon - call CopyBytes - call GetBaseData - ld a, [PartyCount] - dec a - ld hl, PartyMon1 - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld b, h - ld c, l - ld hl, MON_ID + 1 - add hl, bc - push hl - ld hl, MON_MAXHP - add hl, bc - ld d, h - ld e, l - pop hl - push bc - ld b, $0 - predef CalcPkmnStats - pop bc - ld hl, MON_HP - add hl, bc - xor a - ld [hli], a - ld [hl], a - and a - ret - -.asm_16a2f - scf - ret -; 16a31 - -Function16a31: ; 16a31 - ld a, [PartyCount] - dec a - call AddNTimes - ld d, h - ld e, l - ret -; 16a3b - -Function16a3b: ; 16a3b - ld a, [wDaycareLady] - bit 0, a - ret z - ld a, [wDaycareMan] - bit 0, a - ret z - callab Function16e1d - ld a, [wd265] - and a - ret z - inc a - ret z - ld hl, wDaycareMan - set 5, [hl] -.asm_16a59 - call Random - cp 150 - jr c, .asm_16a59 - ld [wStepsToEgg], a - jp Function16a66 -; 16a66 - -Function16a66: ; 16a66 - xor a - ld hl, wEggMon - ld bc, wEggMonEnd - wEggMon - call ByteFill - ld hl, wEggNick - ld bc, PKMN_NAME_LENGTH - call ByteFill - ld hl, wEggOT - ld bc, NAME_LENGTH - call ByteFill - ld a, [wBreedMon1DVs] - ld [TempMonDVs], a - ld a, [wBreedMon1DVs + 1] - ld [TempMonDVs + 1], a - ld a, [wBreedMon1Species] - ld [CurPartySpecies], a - ld a, $3 - ld [MonType], a - ld a, [wBreedMon1Species] - cp DITTO - ld a, $1 - jr z, .asm_16ab6 - ld a, [wBreedMon2Species] - cp DITTO - ld a, $0 - jr z, .asm_16ab6 - callba GetGender - ld a, $0 - jr z, .asm_16ab6 - inc a - -.asm_16ab6 - ld [wDittoInDaycare], a - and a - ld a, [wBreedMon1Species] - jr z, .asm_16ac2 - ld a, [wBreedMon2Species] - -.asm_16ac2 - ld [CurPartySpecies], a - callab GetPreEvolution - callab GetPreEvolution - ld a, EGG_LEVEL - ld [CurPartyLevel], a - - ld a, [CurPartySpecies] - cp NIDORAN_F - jr nz, .asm_16ae8 - call Random - cp $80 - ld a, NIDORAN_F - jr c, .asm_16ae8 - ld a, NIDORAN_M -.asm_16ae8 - ld [CurPartySpecies], a - ld [CurSpecies], a - ld [wEggMonSpecies], a - - call GetBaseData - ld hl, wEggNick - ld de, String_16be0 - call CopyName2 - ld hl, PlayerName - ld de, wEggOT - ld bc, NAME_LENGTH - call CopyBytes - xor a - ld [wEggMonItem], a - ld de, wEggMonMoves - xor a - ld [Buffer1], a - predef FillMoves - callba Function170bf - ld hl, wEggMonID - ld a, [PlayerID] - ld [hli], a - ld a, [PlayerID + 1] - ld [hl], a - ld a, [CurPartyLevel] - ld d, a - callab CalcExpAtLevel - ld hl, wEggMonExp - ld a, [hMultiplicand] - ld [hli], a - ld a, [$ffb5] - ld [hli], a - ld a, [$ffb6] - ld [hl], a - xor a - ld b, $a - ld hl, wEggMonStatExp -.asm_16b46 - ld [hli], a - dec b - jr nz, .asm_16b46 - ld hl, wEggMonDVs - call Random - ld [hli], a - ld [TempMonDVs], a - call Random - ld [hld], a - ld [TempMonDVs + 1], a - ld de, wBreedMon1DVs - ld a, [wBreedMon1Species] - cp DITTO - jr z, .asm_16b98 - ld de, wBreedMon2DVs - ld a, [wBreedMon2Species] - cp DITTO - jr z, .asm_16b98 - ld a, $3 - ld [MonType], a - push hl - callba GetGender - pop hl - ld de, wBreedMon1DVs - ld bc, wBreedMon2DVs - jr c, .asm_16bab - jr z, .asm_16b90 - ld a, [wDittoInDaycare] - and a - jr z, .asm_16b98 - ld d, b - ld e, c - jr .asm_16b98 - -.asm_16b90 - ld a, [wDittoInDaycare] - and a - jr nz, .asm_16b98 - ld d, b - ld e, c - -.asm_16b98 - ld a, [de] - inc de - and $f - ld b, a - ld a, [hl] - and $f0 - add b - ld [hli], a - ld a, [de] - and $7 - ld b, a - ld a, [hl] - and $f8 - add b - ld [hl], a - -.asm_16bab - ld hl, StringBuffer1 - ld de, wd050 - ld bc, NAME_LENGTH - call CopyBytes - ld hl, wEggMonMoves - ld de, wEggMonPP - predef FillPP - ld hl, wd050 - ld de, StringBuffer1 - ld bc, NAME_LENGTH - call CopyBytes - ld a, [BaseEggSteps] - ld hl, wEggMonHappiness - ld [hli], a - xor a -rept 2 - ld [hli], a -endr - ld [hl], a - ld a, [CurPartyLevel] - ld [wEggMonLevel], a - ret -; 16be0 - -String_16be0: ; 16be0 - db "EGG@" -; 16be4 - -Function16be4: ; 16be4 - ld a, [UnownDex] - and a - ret z - - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - ld a, [Options] - push af - set NO_TEXT_SCROLL, a - ld [Options], a - call ClearBGPalettes - call ClearTileMap - - ld de, UnownDexATile - ld hl, VTiles1 tile $6f - lb bc, BANK(UnownDexBTile), 1 - call Request1bpp - - ld de, UnownDexBTile - ld hl, VTiles1 tile $75 - lb bc, BANK(UnownDexBTile), 1 - call Request1bpp - - hlcoord 0, 0 - lb bc, 3, 18 - call TextBox - - hlcoord 0, 5 - lb bc, 7, 7 - call TextBox - - hlcoord 0, 14 - lb bc, 2, 18 - call TextBox - - hlcoord 1, 2 - ld de, AlphRuinsStampString - call PlaceString - - hlcoord 1, 16 - ld de, UnownDexDoWhatString - call PlaceString - - hlcoord 10, 6 - ld de, UnownDexMenuString - call PlaceString - - xor a - ld [wJumptableIndex], a - call Function16cc8 - call WaitBGMap - - ld a, UNOWN - ld [CurPartySpecies], a - xor a - ld [TempMonDVs], a - ld [TempMonDVs + 1], a - - ld b, $1c - call GetSGBLayout - call SetPalettes - -.joy_loop - call JoyTextDelay - - ld a, [hJoyPressed] - and B_BUTTON - jr nz, .pressed_b - - ld a, [hJoyPressed] - and A_BUTTON - jr nz, .pressed_a - - call Function16ca0 - call DelayFrame - jr .joy_loop - -.pressed_a - ld a, [wJumptableIndex] - push af - callba Function84560 - call RestartMapMusic - pop af - ld [wJumptableIndex], a - jr .joy_loop - -.pressed_b - pop af - ld [Options], a - pop af - ld [hInMenu], a - call ReturnToMapFromSubmenu - ret -; 16ca0 - -Function16ca0: ; 16ca0 - ld a, [hJoyLast] - and D_RIGHT - jr nz, .press_right - ld a, [hJoyLast] - and D_LEFT - jr nz, .press_left - ret - -.press_left - ld hl, wJumptableIndex - ld a, [hl] - and a - jr nz, .wrap_around_left - ld [hl], $1b - -.wrap_around_left - dec [hl] - jr .return - -.press_right - ld hl, wJumptableIndex - ld a, [hl] - cp $1a - jr c, .wrap_around_right - ld [hl], $ff - -.wrap_around_right - inc [hl] - -.return - call Function16cc8 - ret -; 16cc8 - -Function16cc8: ; 16cc8 - ld a, [wJumptableIndex] - cp 26 - jr z, Function16d20 - inc a - ld [UnownLetter], a - ld a, UNOWN - ld [CurPartySpecies], a - xor a - ld [wc2c6], a - ld de, VTiles2 - predef GetFrontpic - call Function16cff - hlcoord 1, 6 - xor a - ld [hFillBox], a - lb bc, 7, 7 - predef FillBox - ld de, VTiles2 tile $31 - callba Functione0000 - ret -; 16cff - -Function16cff: ; 16cff - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - - ld a, BANK(sScratch) - call GetSRAMBank - ld de, w6_d000 - ld hl, sScratch - ld a, [hROMBank] - ld b, a - ld c, $31 - call Get2bpp - call CloseSRAM - - pop af - ld [rSVBK], a - ret -; 16d20 - -Function16d20: ; 16d20 - hlcoord 1, 6 - lb bc, 7, 7 - call ClearBox - hlcoord 1, 9 - ld de, UnownDexVacantString - call PlaceString - xor a - call GetSRAMBank - ld hl, sScratch - ld bc, $31 tiles - xor a - call ByteFill - ld hl, VTiles2 tile $31 - ld de, sScratch - ld c, $31 - ld a, [hROMBank] - ld b, a - call Get2bpp - call CloseSRAM - ld c, 20 - call DelayFrames - ret -; 16d57 - -AlphRuinsStampString: - db " ALPH RUINS STAMP@" - -UnownDexDoWhatString: - db "Do what?@" - -UnownDexMenuString: - db "♂ PRINT" - next "♀ CANCEL" - next "← PREVIOUS" - next "→ NEXT" - db "@" - -UnownDexVacantString: - db "VACANT@" -; 16d9c - -UnownDexATile: ; 16d9c -INCBIN "gfx/unknown/016d9c.1bpp" -UnownDexBTile: ; 16da4 -INCBIN "gfx/unknown/016da4.1bpp" -; 16dac - -Function16dac: ; 16dac - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - hlcoord 7, 11 - ld a, $31 - ld [hFillBox], a - lb bc, 7, 7 - predef FillBox - ret -; 16dc7 - -PhotoStudio: ; 16dc7 - ld hl, .Text_AskWhichMon - call PrintText - callba SelectMonFromParty - jr c, .cancel - ld a, [CurPartySpecies] - cp EGG - jr z, .egg - - ld hl, .Text_HoldStill - call PrintText - call DisableSpriteUpdates - callba Function8461a - call Function2b74 - ld a, [$ffac] - and a - jr nz, .cancel - ld hl, .Text_Presto - jr .print_text +INCLUDE "event/daycare.asm" -.cancel - ld hl, .Text_NoPicture - jr .print_text - -.egg - ld hl, .Text_Egg - -.print_text - call PrintText - ret -; 16e04 - -.Text_AskWhichMon: ; 0x16e04 - ; Which #MON should I photo- graph? - text_jump UnknownText_0x1be024 - db "@" -; 0x16e09 - -.Text_HoldStill: ; 0x16e09 - ; All righty. Hold still for a bit. - text_jump UnknownText_0x1be047 - db "@" -; 0x16e0e - -.Text_Presto: ; 0x16e0e - ; Presto! All done. Come again, OK? - text_jump UnknownText_0x1be06a - db "@" -; 0x16e13 - -.Text_NoPicture: ; 0x16e13 - ; Oh, no picture? Come again, OK? - text_jump UnknownText_0x1c0000 - db "@" -; 0x16e18 - -.Text_Egg: ; 0x16e18 - ; An EGG? My talent is worth more… - text_jump UnknownText_0x1c0021 - db "@" -; 0x16e1d +INCLUDE "event/photo.asm" INCLUDE "engine/breeding/egg.asm" @@ -13739,7 +9901,7 @@ endr ; 244c3 -Function244c3: ; 0x244c3 +UpdateItemDescription: ; 0x244c3 ld a, [MenuSelection] ld [CurSpecies], a hlcoord 0, 12 @@ -13759,8 +9921,8 @@ Pokepic:: ; 244e3 call CopyMenuDataHeader call MenuBox call UpdateSprites - call Function321c - ld b, $12 + call ApplyTilemap + ld b, SCGB_12 call GetSGBLayout xor a ld [hBGMapMode], a @@ -13789,11 +9951,11 @@ PokepicYesOrNo:: ; 24528 call CopyMenuDataHeader call ClearMenuBoxInterior call WaitBGMap - call ClearSGB + call GetMemSGBLayout xor a ld [hBGMapMode], a call OverworldTextModeSwitch - call Function321c + call ApplyTilemap call UpdateSprites call LoadStandardFont ret @@ -13889,7 +10051,7 @@ Function245af:: ; 245af call Function24764 call Function247dd call Function245f1 - call Function321c + call ApplyTilemap xor a ld [hBGMapMode], a ret @@ -14054,7 +10216,7 @@ MenuJoyAction: ; 24609 ld hl, wcfa6 bit 7, [hl] jp z, xor_a - ld hl, wd0e4 + ld hl, wMenuScrollPosition ld a, [hl] and a jr z, .xor_dec_up @@ -14069,7 +10231,7 @@ MenuJoyAction: ; 24609 ld hl, wcfa6 bit 7, [hl] jp z, xor_a - ld hl, wd0e4 + ld hl, wMenuScrollPosition ld a, [wMenuData2Items] add [hl] ld b, a @@ -14084,7 +10246,7 @@ MenuJoyAction: ; 24609 ; 246fc Function246fc: ; 246fc - ld a, [wd0e4] + ld a, [wMenuScrollPosition] ld c, a ld a, [MenuSelection2] add c @@ -14114,10 +10276,10 @@ ClearObjectStructsa: ; 2471a ld a, [wcf95] call GetFarByte ld [wd144], a -; if ([wd144] + 1) < [wMenuData2Items] + [wd0e4]: [wd0e4] = max(([wd144] + 1) - [wMenuData2Items], 0) +; if ([wd144] + 1) < [wMenuData2Items] + [wMenuScrollPosition]: [wMenuScrollPosition] = max(([wd144] + 1) - [wMenuData2Items], 0) ld a, [wMenuData2Items] ld c, a - ld a, [wd0e4] + ld a, [wMenuScrollPosition] add c ld c, a ld a, [wd144] @@ -14133,10 +10295,10 @@ ClearObjectStructsa: ; 2471a xor a .store - ld [wd0e4], a + ld [wMenuScrollPosition], a .skip - ld a, [wd0e4] + ld a, [wMenuScrollPosition] ld c, a ld a, [wMenuCursorBuffer] add c @@ -14149,7 +10311,7 @@ ClearObjectStructsa: ; 2471a .asm_2475a xor a - ld [wd0e4], a + ld [wMenuScrollPosition], a ld a, $1 ld [wMenuCursorBuffer], a @@ -14251,7 +10413,7 @@ Function247f0: ; 247f0 ld a, [wMenuData2Flags] bit 4, a jr z, .asm_2480d - ld a, [wd0e4] + ld a, [wMenuScrollPosition] and a jr z, .asm_2480d ld a, [wMenuBorderTopCoord] @@ -14269,7 +10431,7 @@ Function247f0: ; 247f0 ld b, a ld c, $0 .asm_2481a - ld a, [wd0e4] + ld a, [wMenuScrollPosition] add c ld [wcf77], a ld a, c @@ -14346,7 +10508,7 @@ Function2488b: ; 2488b and a jr z, .asm_248b7 ld b, a - ld a, [wd0e4] + ld a, [wMenuScrollPosition] cp b jr nc, .asm_248b7 ld c, a @@ -14396,7 +10558,7 @@ Function248d5: ; 248d5 push de push hl ld e, a - ld a, [wd0e4] + ld a, [wMenuScrollPosition] add e ld e, a ld d, $0 @@ -14726,17 +10888,17 @@ PlaceMenuItemQuantity: ; 0x24ac3 ret ; 0x24ae8 -Function24ae8: ; 24ae8 +PlaceMoneyTopRightOW: ; 24ae8 ld hl, MenuDataHeader_0x24b15 call CopyMenuDataHeader jr Function24b01 -Function24af0: ; 24af0 +PlaceMoneyBottomLeftOW: ; 24af0 ld hl, MenuDataHeader_0x24b1d call CopyMenuDataHeader jr Function24b01 -Function24af8: ; 24af8 +PlaceMoneyTopRightMenu: ; 24af8 ld hl, MenuDataHeader_0x24b15 ld de, $b call Function1e2e @@ -15374,12 +11536,12 @@ MenuData_0x24f34: ; 0x24f34 dn 2, 2 ; rows, columns db 6 ; spacing dba Strings24f3d - dbw $09, 0 + dbw BANK(MenuData_0x24f34), 0 ; 0x24f3d Strings24f3d: ; 0x24f3d db "FIGHT@" - db $4a, "@" + db "<PKMN>@" db "PACK@" db "RUN@" ; 24f4e @@ -15485,95 +11647,95 @@ Function24fe1: ; 24fe1 Function24ff9: ; 24ff9 ld a, $1 ld [wItemQuantityChangeBuffer], a -.asm_24ffe - call Function25072 - call Function2500e - jr nc, .asm_24ffe - cp $ff - jr nz, .asm_2500c +.loop + call Function25072 ; update display + call Function2500e ; joy action + jr nc, .loop + cp -1 + jr nz, .nope scf ret -.asm_2500c +.nope and a ret ; 2500e Function2500e: ; 2500e - call Function354b - bit 1, c - jr nz, .asm_2502b - bit 0, c - jr nz, .asm_2502f - bit 7, c - jr nz, .asm_25033 - bit 6, c - jr nz, .asm_2503f - bit 5, c - jr nz, .asm_2504d - bit 4, c - jr nz, .asm_2505f + call Function354b ; get joypad + bit B_BUTTON_F, c + jr nz, .b + bit A_BUTTON_F, c + jr nz, .a + bit D_DOWN_F, c + jr nz, .down + bit D_UP_F, c + jr nz, .up + bit D_LEFT_F, c + jr nz, .left + bit D_RIGHT_F, c + jr nz, .right and a ret -.asm_2502b - ld a, $ff +.b + ld a, -1 scf ret -.asm_2502f - ld a, $0 +.a + ld a, 0 scf ret -.asm_25033 +.down ld hl, wItemQuantityChangeBuffer dec [hl] - jr nz, .asm_2503d + jr nz, .finish_down ld a, [wItemQuantityBuffer] ld [hl], a -.asm_2503d +.finish_down and a ret -.asm_2503f +.up ld hl, wItemQuantityChangeBuffer inc [hl] ld a, [wItemQuantityBuffer] cp [hl] - jr nc, .asm_2504b + jr nc, .finish_up ld [hl], $1 -.asm_2504b +.finish_up and a ret -.asm_2504d +.left ld a, [wItemQuantityChangeBuffer] sub $a - jr c, .asm_25058 - jr z, .asm_25058 - jr .asm_2505a + jr c, .load_1 + jr z, .load_1 + jr .finish_left -.asm_25058 +.load_1 ld a, $1 -.asm_2505a +.finish_left ld [wItemQuantityChangeBuffer], a and a ret -.asm_2505f +.right ld a, [wItemQuantityChangeBuffer] add $a ld b, a ld a, [wItemQuantityBuffer] cp b - jr nc, .asm_2506c + jr nc, .finish_right ld b, a -.asm_2506c +.finish_right ld a, b ld [wItemQuantityChangeBuffer], a and a @@ -15690,610 +11852,7 @@ MenuDataHeader_0x250fd: ; 0x250fd db 0 ; default option ; 0x25105 -Function25105: ; 25105 - ld a, [VramState] - push af - xor a - ld [VramState], a - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - call Function2513b -.asm_25117 - call UpdateTime - call JoyTextDelay - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_25132 - ld a, [hJoyLast] - and B_BUTTON - jr nz, .asm_25132 - call Function2518e - call DelayFrame - jr .asm_25117 -.asm_25132 - pop af - ld [Options], a - pop af - ld [VramState], a - ret - -Function2513b: ; 2513b (9:513b) - call ClearBGPalettes - call ClearSprites - call ClearTileMap - call DisableLCD - callba Function8833e - ld hl, CardRightCornerGFX - ld de, VTiles2 tile $1c - ld bc, $10 - ld a, BANK(CardRightCornerGFX) - call FarCopyBytes - ld hl, CardStatusGFX - ld de, VTiles2 tile $29 - ld bc, $60 + $500 - ld a, BANK(CardStatusGFX) - call FarCopyBytes - call Function25299 - hlcoord 0, 8 - ld d, $6 - call Function253b0 - call EnableLCD - call WaitBGMap - ld b, $15 - call GetSGBLayout - call SetPalettes - call WaitBGMap - ld hl, wJumptableIndex - xor a -rept 3 - ld [hli], a -endr - ld [hl], a - ret - -Function2518e: ; 2518e (9:518e) - ld a, [wJumptableIndex] - ld e, a - ld d, $0 - ld hl, Jumptable_2519d -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Jumptable_2519d: ; 2519d (9:519d) - dw Function251b6 - dw Function251d7 - dw Function251f4 - dw Function25221 - dw Function2524c - dw Function25279 - dw Function251b0 - - -Function251ab: ; 251ab (9:51ab) - ld hl, wJumptableIndex - inc [hl] - ret - -Function251b0: ; 251b0 (9:51b0) - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function251b6: ; 251b6 (9:51b6) - call ClearSprites - hlcoord 0, 8 - ld d, $6 - call Function253b0 - call WaitBGMap - ld de, CardStatusGFX - ld hl, VTiles2 tile $29 - lb bc, BANK(CardStatusGFX), $6 + $50 - call Request2bpp - call Function2530a - call Function251ab - ret - -Function251d7: ; 251d7 (9:51d7) - call Function25415 - ld hl, hJoyLast - ld a, [hl] - and D_RIGHT | A_BUTTON - jr nz, .asm_251e3 - ret -.asm_251e3 - ld a, $2 - ld [wJumptableIndex], a - ret -; 251e9 (9:51e9) - -Function251e9: ; 251e9 - ld a, [KantoBadges] - and a - ret z - ld a, $4 - ld [wJumptableIndex], a - ret -; 251f4 - -Function251f4: ; 251f4 (9:51f4) - call ClearSprites - hlcoord 0, 8 - ld d, $6 - call Function253b0 - call WaitBGMap - ld de, LeaderGFX - ld hl, VTiles2 tile $29 - lb bc, BANK(LeaderGFX), $56 - call Request2bpp - ld de, BadgeGFX - ld hl, VTiles0 tile $00 - lb bc, BANK(BadgeGFX), $2c - call Request2bpp - call Function2536c - call Function251ab - ret - -Function25221: ; 25221 (9:5221) - ld hl, Unknown_254c9 - call Function25438 - ld hl, hJoyLast - ld a, [hl] - and A_BUTTON - jr nz, Function25246 - ld a, [hl] - and D_LEFT - jr nz, .asm_25235 - ret -.asm_25235 - ld a, $0 - ld [wJumptableIndex], a - ret -; 2523b (9:523b) - -Function2523b: ; 2523b - ld a, [KantoBadges] - and a - ret z - ld a, $4 - ld [wJumptableIndex], a - ret -; 25246 - -Function25246: ; 25246 - ld a, $6 - ld [wJumptableIndex], a - ret - -Function2524c: ; 2524c (9:524c) - call ClearSprites - hlcoord 0, 8 - ld d, $6 - call Function253b0 - call WaitBGMap - ld de, LeaderGFX2 - ld hl, VTiles2 tile $29 - lb bc, BANK(LeaderGFX2), $56 - call Request2bpp - ld de, BadgeGFX2 - ld hl, VTiles0 tile $00 - lb bc, BANK(BadgeGFX2), $2c - call Request2bpp - call Function2536c - call Function251ab - ret - -Function25279: ; 25279 (9:5279) - ld hl, Unknown_254c9 - call Function25438 - ld hl, hJoyLast - ld a, [hl] - and D_LEFT - jr nz, .asm_2528d - ld a, [hl] - and D_RIGHT - jr nz, .asm_25293 - ret -.asm_2528d - ld a, $2 - ld [wJumptableIndex], a - ret -.asm_25293 - ld a, $0 - ld [wJumptableIndex], a - ret - -Function25299: ; 25299 (9:5299) - hlcoord 0, 0 - ld d, $5 - call Function253b0 - hlcoord 2, 2 - ld de, String_252ec - call PlaceString - hlcoord 2, 4 - ld de, Tilemap_252f9 - call Function253a8 - hlcoord 7, 2 - ld de, PlayerName - call PlaceString - hlcoord 5, 4 - ld de, PlayerID - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - hlcoord 7, 6 - ld de, Money - lb bc, PRINTNUM_MONEY | 3, 6 - call PrintNum - hlcoord 1, 3 - ld de, Tilemap_252fc - call Function253a8 - hlcoord 14, 1 - lb bc, 5, 7 - xor a - ld [hFillBox], a - predef FillBox - ret -; 252ec (9:52ec) - -String_252ec: ; 252ec - db "NAME/" - next "" - next "MONEY@" - -Tilemap_252f9: ; 252f9 - db $27, $28, $ff ; ID NO - -Tilemap_252fc: ; 252fc - db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________> -; 2530a - -Function2530a: ; 2530a (9:530a) - hlcoord 2, 10 - ld de, String_2534c - call PlaceString - hlcoord 10, 15 - ld de, String_2535c - call PlaceString - ld hl, PokedexCaught - ld b, $20 - call CountSetBits - ld de, wd265 - hlcoord 15, 10 - lb bc, 1, 3 - call PrintNum - call Function25415 - hlcoord 2, 8 - ld de, Tilemap_25366 - call Function253a8 - ld a, [StatusFlags] ; pokedex - bit 0, a - ret nz - hlcoord 1, 9 - lb bc, 2, 17 - call ClearBox - ret -; 2534c (9:534c) - -String_2534c: ; 2534c - db "#DEX" - next "PLAY TIME" - db "@" - -String_2535b: ; 2535b - db "@" - -String_2535c: ; 2535c - db " BADGES▶@" - -Tilemap_25366: ; 25366 - db $29, $2a, $2b, $2c, $2d, $ff -; 2536c - -Function2536c: ; 2536c (9:536c) - hlcoord 2, 8 - ld de, Tilemap_253a2 - call Function253a8 - hlcoord 2, 10 - ld a, $29 - ld c, $4 -.asm_2537c - call Function253f4 -rept 4 - inc hl -endr - dec c - jr nz, .asm_2537c - hlcoord 2, 13 - ld a, $51 - ld c, $4 -.asm_2538d - call Function253f4 -rept 4 - inc hl -endr - dec c - jr nz, .asm_2538d - xor a - ld [wcf64], a - ld hl, Unknown_254c9 - call Function25448 - ret -; 253a2 (9:53a2) - -Tilemap_253a2: ; 253a2 - db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES" -; 253a8 - -Function253a8: ; 253a8 (9:53a8) - ld a, [de] - cp $ff - ret z - ld [hli], a - inc de - jr Function253a8 - -Function253b0: ; 253b0 (9:53b0) - ld e, $14 -.asm_253b2 - ld a, $23 - ld [hli], a - dec e - jr nz, .asm_253b2 - ld a, $23 - ld [hli], a - ld e, $11 - ld a, $7f -.asm_253bf - ld [hli], a - dec e - jr nz, .asm_253bf - ld a, $1c - ld [hli], a - ld a, $23 - ld [hli], a -.asm_253c9 - ld a, $23 - ld [hli], a - ld e, $12 - ld a, $7f -.asm_253d0 - ld [hli], a - dec e - jr nz, .asm_253d0 - ld a, $23 - ld [hli], a - dec d - jr nz, .asm_253c9 - ld a, $23 - ld [hli], a - ld a, $24 - ld [hli], a - ld e, $11 - ld a, $7f -.asm_253e4 - ld [hli], a - dec e - jr nz, .asm_253e4 - ld a, $23 - ld [hli], a - ld e, $14 -.asm_253ed - ld a, $23 - ld [hli], a - dec e - jr nz, .asm_253ed - ret - -Function253f4: ; 253f4 (9:53f4) - push de - push hl - ld [hli], a - inc a - ld [hli], a - inc a - ld [hli], a - inc a - ld [hli], a - inc a - ld de, $11 - add hl, de - ld [hli], a - inc a - ld [hli], a - inc a - ld [hli], a - inc a - ld de, $11 - add hl, de - ld [hli], a - inc a - ld [hli], a - inc a - ld [hli], a - inc a - pop hl - pop de - ret - -Function25415: ; 25415 (9:5415) - hlcoord 11, 12 - ld de, GameTimeHours - lb bc, 2, 4 - call PrintNum - inc hl - ld de, GameTimeMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - ld a, [hVBlankCounter] - and $1f - ret nz - hlcoord 15, 12 - ld a, [hl] - xor $51 - ld [hl], a - ret - -Function25438: ; 25438 (9:5438) - ld a, [hVBlankCounter] - and $7 - ret nz - ld a, [wcf64] - inc a - and $7 - ld [wcf64], a - jr Function25448 - -Function25448: ; 25448 (9:5448) - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [de] - ld c, a - ld de, Sprites - ld b, 8 -.asm_25453 - srl c - push bc - jr nc, .asm_25472 - push hl - ld a, [hli] - ld b, a - ld a, [hli] - ld c, a - ld a, [hli] - ld [wcf66], a - ld a, [wcf64] - add l - ld l, a - ld a, 0 - adc h - ld h, a - ld a, [hl] - ld [wcf65], a - call Function2547b - pop hl -.asm_25472 - ld bc, $b - add hl, bc - pop bc - dec b - jr nz, .asm_25453 - ret - -Function2547b: ; 2547b (9:547b) - ld a, [wcf65] - and $80 - jr nz, .asm_25487 - ld hl, Unknown_254a7 - jr .asm_2548a -.asm_25487 - ld hl, Unknown_254b8 -.asm_2548a - ld a, [hli] - cp $ff - ret z - add b - ld [de], a - inc de - ld a, [hli] - add c - ld [de], a - inc de - ld a, [wcf65] - and $7f - add [hl] - ld [de], a - inc hl - inc de - ld a, [wcf66] - add [hl] - ld [de], a - inc hl - inc de - jr .asm_2548a -; 254a7 (9:54a7) - -Unknown_254a7: ; 254a7 - db $00, $00, $00, $00 - db $00, $08, $01, $00 - db $08, $00, $02, $00 - db $08, $08, $03, $00 - db $ff - -Unknown_254b8: ; 254b8 - db $00, $00, $01, $20 - db $00, $08, $00, $20 - db $08, $00, $03, $20 - db $08, $08, $02, $20 - db $ff - -Unknown_254c9: ; 254c9 -; Template OAM data for each badge on the trainer card. -; Format: - ; y, x, palette - ; cycle 1: face tile, in1 tile, in2 tile, in3 tile - ; cycle 2: face tile, in1 tile, in2 tile, in3 tile - - dw JohtoBadges - - ; Zephyrbadge - db $68, $18, $00 - db $00, $20, $24, $20 | $80 - db $00, $20, $24, $20 | $80 - - ; Hivebadge - db $68, $38, $00 - db $04, $20, $24, $20 | $80 - db $04, $20, $24, $20 | $80 - - ; Plainbadge - db $68, $58, $00 - db $08, $20, $24, $20 | $80 - db $08, $20, $24, $20 | $80 - - ; Fogbadge - db $68, $78, $00 - db $0c, $20, $24, $20 | $80 - db $0c, $20, $24, $20 | $80 - - ; Mineralbadge - db $80, $38, $00 - db $10, $20, $24, $20 | $80 - db $10, $20, $24, $20 | $80 - - ; Stormbadge - db $80, $18, $00 - db $14, $20, $24, $20 | $80 - db $14, $20, $24, $20 | $80 - - ; Glacierbadge - db $80, $58, $00 - db $18, $20, $24, $20 | $80 - db $18, $20, $24, $20 | $80 - - ; Risingbadge - ; X-flips on alternate cycles. - db $80, $78, $00 - db $1c, $20, $24, $20 | $80 - db $1c | $80, $20, $24, $20 | $80 -; 25523 - -CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp" - -LeaderGFX: INCBIN "gfx/misc/leaders.w24.2bpp" -LeaderGFX2: INCBIN "gfx/misc/leaders.w24.2bpp" -BadgeGFX: INCBIN "gfx/misc/badges.2bpp" -BadgeGFX2: INCBIN "gfx/misc/badges.2bpp" - -CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp" - +INCLUDE "engine/trainer_card.asm" ProfOaksPC: ; 0x265d3 ld hl, OakPCText1 @@ -16575,1400 +12134,7 @@ OakPCText4: ; 0x2674c text_jump _OakPCText4 db "@" - -InitDecorations: ; 26751 (9:6751) - ld a, DECO_FEATHERY_BED - ld [Bed], a - ld a, DECO_TOWN_MAP - ld [Poster], a - ret - -_KrisDecorationMenu: ; 0x2675c - ld a, [wcf76] - push af - ld hl, MenuDataHeader_0x2679a - call LoadMenuDataHeader - xor a - ld [wd1ee], a - ld a, $1 - ld [wd1ef], a -.asm_2676f - ld a, [wd1ef] - ld [wMenuCursorBuffer], a - call Function26806 - call Function1e5d - ld a, [MenuSelection2] - ld [wd1ef], a - jr c, .asm_2678e - ld a, [MenuSelection] - ld hl, Unknown_267aa - call Function1fa7 - jr nc, .asm_2676f - -.asm_2678e - call ExitMenu - pop af - ld [wcf76], a - ld a, [wd1ee] - ld c, a - ret -; 0x2679a - -MenuDataHeader_0x2679a: ; 0x2679a - db $40 ; flags - db 00, 05 ; start coords - db 17, 19 ; end coords - dw MenuData2_0x267a2 - db 1 ; default option -; 0x267a2 - -MenuData2_0x267a2: ; 0x267a2 - db $a0 ; flags - db 0 ; items - dw wd002 - dw Function1f8d - dw Unknown_267aa -; 0x267aa - -Unknown_267aa: ; 267aa - dw Function268b5, .bed - dw Function268ca, .carpet - dw Function268df, .plant - dw Function268f3, .poster - dw Function26908, .game - dw Function2691d, .ornament - dw Function26945, .big_doll - dw Function26959, .exit - -.bed db "BED@" -.carpet db "CARPET@" -.plant db "PLANT@" -.poster db "POSTER@" -.game db "GAME CONSOLE@" -.ornament db "ORNAMENT@" -.big_doll db "BIG DOLL@" -.exit db "EXIT@" -; 26806 - -Function26806: ; 26806 - xor a - ld [wcf76], a - call Function26822 - call Function2683a - ld a, $7 - call Function26830 - ld hl, StringBuffer2 - ld de, wd002 - ld bc, $d - call CopyBytes - ret - -Function26822: ; 26822 (9:6822) - ld hl, StringBuffer2 - xor a - ld [hli], a - ld bc, ITEM_NAME_LENGTH - 1 - ld a, -1 - call ByteFill - ret - -Function26830: ; 26830 (9:6830) - ld hl, StringBuffer2 - inc [hl] - ld e, [hl] - ld d, 0 - add hl, de - ld [hl], a - ret - -Function2683a: ; 2683a (9:683a) - ld hl, Jumptable_26855 -.loop - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - or e - jr z, .done - push hl - call _de_ - pop hl - jr nc, .next - ld a, [hl] - push hl - call Function26830 - pop hl -.next - inc hl - jr .loop -.done - ret -; 26855 (9:6855) - -Jumptable_26855: ; 26855 - dwb Function268bd, 0 ; bed - dwb Function268d2, 1 ; carpet - dwb Function268e7, 2 ; plant - dwb Function268fb, 3 ; poster - dwb Function26910, 4 ; game console - dwb Function26925, 5 ; ornament - dwb Function2694d, 6 ; big doll - dw 0 ; end -; 2686c - -Function2686c: ; 2686c - xor a - ld hl, wd002 - ld [hli], a - ld a, -1 - ld bc, $10 - call ByteFill - ret -; 2687a - -CheckAllDecorationFlags: ; 2687a -.loop - ld a, [hli] - cp -1 - jr z, .done - push hl - push af - ld b, CHECK_FLAG - call DecorationFlagAction - ld a, c - and a - pop bc - ld a, b - call nz, Function26891 - pop hl - jr .loop - -.done - ret -; 26891 - -Function26891: ; 26891 - ld hl, wd002 - inc [hl] - ld e, [hl] - ld d, $0 - add hl, de - ld [hl], a - ret -; 2689b - -Function2689b: ; 2689b - push bc - push hl - call Function2686c - pop hl - call CheckAllDecorationFlags - pop bc - ld a, [wd002] - and a - ret z - ld a, c - call Function26891 - ld a, $0 - call Function26891 - scf - ret -; 268b5 - -Function268b5: ; 268b5 - call Function268bd - call Function2695b - xor a - ret -; 268bd - -Function268bd: ; 268bd - ld hl, Unknown_268c5 - ld c, 1 - jp Function2689b -; 268c5 - -Unknown_268c5: ; 268c5 - db 2, 3, 4, 5, $ff -; 268ca - -Function268ca: ; 268ca - call Function268d2 - call Function2695b - xor a - ret -; 268d2 - -Function268d2: ; 268d2 - ld hl, Unknown_268da - ld c, 6 - jp Function2689b -; 268da - -Unknown_268da: ; 268da - db 7, 8, 9, 10, $ff -; 268df - -Function268df: ; 268df - call Function268e7 - call Function2695b - xor a - ret -; 268e7 - -Function268e7: ; 268e7 - ld hl, Unknown_268ef - ld c, 11 - jp Function2689b -; 268ef - -Unknown_268ef: ; 268ef - db 12, 13, 14, $ff -; 268f3 - -Function268f3: ; 268f3 - call Function268fb - call Function2695b - xor a - ret -; 268fb - -Function268fb: ; 268fb - ld hl, Unknown_26903 - ld c, 15 - jp Function2689b -; 26903 - -Unknown_26903: ; 26903 - db 16, 17, 18, 19, $ff -; 26908 - -Function26908: ; 26908 - call Function26910 - call Function2695b - xor a - ret -; 26910 - -Function26910: ; 26910 - ld hl, Unknown_26918 - ld c, 20 - jp Function2689b -; 26918 - -Unknown_26918: ; 26918 - db 21, 22, 23, 24, $ff -; 2691d - -Function2691d: ; 2691d - call Function26925 - call Function2695b - xor a - ret -; 26925 - -Function26925: ; 26925 - ld hl, Unknown_2692d - ld c, 29 - jp Function2689b -; 2692d - -Unknown_2692d: ; 2692d - db 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 - db 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 - db 50, 51, 52, -1 -; 26945 - -Function26945: ; 26945 - call Function2694d - call Function2695b - xor a - ret -; 2694d - -Function2694d: ; 2694d - ld hl, Unknown_26955 - ld c, 25 - jp Function2689b -; 26955 - -Unknown_26955: ; 26955 - db 26, 27, 28, -1 -; 26959 - -Function26959: ; 26959 - scf - ret -; 2695b - -Function2695b: ; 2695b - ld a, [wd002] - and a - jr z, .empty - cp 8 - jr nc, .beyond_eight - xor a - ld [wcf76], a - ld hl, MenuDataHeader_0x269b5 - call LoadMenuDataHeader - call Function1e5d - jr c, .no_action_1 - call DoDecorationAction2 - -.no_action_1 - call ExitMenu - ret - -.beyond_eight - ld hl, wd002 - ld e, [hl] - dec [hl] - ld d, 0 - add hl, de - ld [hl], -1 - call LoadStandardMenuDataHeader - ld hl, MenuDataHeader_0x269c5 - call CopyMenuDataHeader - xor a - ld [hBGMapMode], a - call Function352f - xor a - ld [wd0e4], a - call HandleScrollingMenu - ld a, [wcf73] - cp 2 - jr z, .no_action_2 - call DoDecorationAction2 - -.no_action_2 - call ExitMenu - ret - -.empty - ld hl, UnknownText_0x269b0 - call MenuTextBoxBackup - ret -; 269b0 - -UnknownText_0x269b0: ; 0x269b0 - ; There's nothing to choose. - text_jump UnknownText_0x1bc471 - db "@" -; 0x269b5 - -MenuDataHeader_0x269b5: ; 0x269b5 - db $40 ; flags - db 00, 00 ; start coords - db 17, 19 ; end coords - dw MenuData2_0x269bd - db 1 ; default option -; 0x269bd - -MenuData2_0x269bd: ; 0x269bd - db $a0 ; flags - db 0 ; items - dw wd002 - dw DecorationMenuFunction - dw DecorationAttributes -; 0x269c5 - -MenuDataHeader_0x269c5: ; 0x269c5 - db $40 ; flags - db 01, 01 ; start coords - db 16, 18 ; end coords - dw MenuData2_0x269cd - db 1 ; default option -; 0x269cd - -MenuData2_0x269cd: ; 0x269cd - db $10 ; flags - db 8, 0 ; rows, columns - db 1 ; horizontal spacing - dbw 0, wd002 ; text pointer - dba DecorationMenuFunction - dbw 0, 0 - dbw 0, 0 -; 269dd - - -GetDecorationData: ; 269dd - ld hl, DecorationAttributes - ld bc, 6 - call AddNTimes - ret -; 269e7 - -GetDecorationName: ; 269e7 - push hl - call GetDecorationData - call GetDecoName - pop hl - call CopyName2 - ret -; 269f3 - -DecorationMenuFunction: ; 269f3 - ld a, [MenuSelection] - push de - call GetDecorationData - call GetDecoName - pop hl - call PlaceString - ret -; 26a02 - -DoDecorationAction2: ; 26a02 - ld a, [MenuSelection] - call GetDecorationData - ld de, 2 ; function 2 - add hl, de - ld a, [hl] - ld hl, .DecoActions - rst JumpTable - ret -; 26a12 - -.DecoActions: ; 26a12 - dw DecoAction_nothing - dw DecoAction_setupbed - dw DecoAction_putawaybed - dw DecoAction_setupcarpet - dw DecoAction_putawaycarpet - dw DecoAction_setupplant - dw DecoAction_putawayplant - dw DecoAction_setupposter - dw DecoAction_putawayposter - dw DecoAction_setupconsole - dw DecoAction_putawayconsole - dw DecoAction_setupbigdoll - dw DecoAction_putawaybigdoll - dw DecoAction_setupornament - dw DecoAction_putawayornament -; 26a30 - - -GetDecorationFlag: ; 26a30 - call GetDecorationData - ld de, 3 ; event flag - add hl, de - ld a, [hli] - ld d, [hl] - ld e, a - ret -; 26a3b - -DecorationFlagAction: ; 26a3b - push bc - call GetDecorationFlag - pop bc - call EventFlagAction - ret -; 26a44 - -GetDecorationSprite: ; 26a44 - ld a, c - call GetDecorationData - ld de, 5 ; sprite - add hl, de - ld a, [hl] - ld c, a - ret -; 26a4f - -decoration: MACRO - ; type, name, command, event flag, tile/sprite - db \1, \2, \3 - dw \4 - db \5 -ENDM - -DecorationAttributes: ; 26a4f - decoration DECO_PLANT, $00, $0, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BED, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_BED, FEATHERY_BED, SET_UP_BED, EVENT_DECO_BED_1, $1b - decoration DECO_BED, PINK_BED, SET_UP_BED, EVENT_DECO_BED_2, $1c - decoration DECO_BED, POLKADOT_BED, SET_UP_BED, EVENT_DECO_BED_3, $1d - decoration DECO_BED, PIKACHU_BED, SET_UP_BED, EVENT_DECO_BED_4, $1e - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CARPET, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_CARPET, RED_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_1, $08 - decoration DECO_CARPET, BLUE_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_2, $0b - decoration DECO_CARPET, YELLOW_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_3, $0e - decoration DECO_CARPET, GREEN_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_4, $11 - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_PLANT, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_PLANT, MAGNAPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_1, $20 - decoration DECO_PLANT, TROPICPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_2, $21 - decoration DECO_PLANT, JUMBOPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_3, $22 - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_POSTER, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_PLANT, TOWN_MAP_D, SET_UP_POSTER, EVENT_DECO_PLANT_4, $1f - decoration DECO_POSTER, PIKACHU, SET_UP_POSTER, EVENT_DECO_POSTER_1, $23 - decoration DECO_POSTER, CLEFAIRY, SET_UP_POSTER, EVENT_DECO_POSTER_2, $24 - decoration DECO_POSTER, JIGGLYPUFF, SET_UP_POSTER, EVENT_DECO_POSTER_3, $25 - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CONSOLE, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_PLANT, FAMICOM, SET_UP_CONSOLE, EVENT_DECO_FAMICOM, SPRITE_FAMICOM - decoration DECO_PLANT, SUPER_NES, SET_UP_CONSOLE, EVENT_DECO_SNES, SPRITE_SNES - decoration DECO_PLANT, NINTENDO_64, SET_UP_CONSOLE, EVENT_DECO_N64, SPRITE_N64 - decoration DECO_PLANT, VIRTUAL_BOY, SET_UP_CONSOLE, EVENT_DECO_VIRTUAL_BOY, SPRITE_VIRTUAL_BOY - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BIG_DOLL, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_BIGDOLL, SNORLAX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_SNORLAX_DOLL, SPRITE_BIG_SNORLAX - decoration DECO_BIGDOLL, ONIX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_ONIX_DOLL, SPRITE_BIG_ONIX - decoration DECO_BIGDOLL, LAPRAS, SET_UP_BIG_DOLL, EVENT_DECO_BIG_LAPRAS_DOLL, SPRITE_BIG_LAPRAS - decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_DOLL, EVENT_GAVE_KURT_APRICORNS, $00 - decoration DECO_DOLL, PIKACHU, SET_UP_DOLL, EVENT_DECO_PIKACHU_DOLL, SPRITE_PIKACHU - decoration DECO_PLANT, SURF_PIKA_DOLL, SET_UP_DOLL, EVENT_DECO_SURFING_PIKACHU_DOLL, SPRITE_SURFING_PIKACHU - decoration DECO_DOLL, CLEFAIRY, SET_UP_DOLL, EVENT_DECO_CLEFAIRY_DOLL, SPRITE_CLEFAIRY - decoration DECO_DOLL, JIGGLYPUFF, SET_UP_DOLL, EVENT_DECO_JIGGLYPUFF_DOLL, SPRITE_JIGGLYPUFF - decoration DECO_DOLL, BULBASAUR, SET_UP_DOLL, EVENT_DECO_BULBASAUR_DOLL, SPRITE_BULBASAUR - decoration DECO_DOLL, CHARMANDER, SET_UP_DOLL, EVENT_DECO_CHARMANDER_DOLL, SPRITE_CHARMANDER - decoration DECO_DOLL, SQUIRTLE, SET_UP_DOLL, EVENT_DECO_SQUIRTLE_DOLL, SPRITE_SQUIRTLE - decoration DECO_DOLL, POLIWAG, SET_UP_DOLL, EVENT_DECO_POLIWAG_DOLL, SPRITE_POLIWAG - decoration DECO_DOLL, DIGLETT, SET_UP_DOLL, EVENT_DECO_DIGLETT_DOLL, SPRITE_DIGLETT - decoration DECO_DOLL, STARYU, SET_UP_DOLL, EVENT_DECO_STARMIE_DOLL, SPRITE_STARMIE - decoration DECO_DOLL, MAGIKARP, SET_UP_DOLL, EVENT_DECO_MAGIKARP_DOLL, SPRITE_MAGIKARP - decoration DECO_DOLL, ODDISH, SET_UP_DOLL, EVENT_DECO_ODDISH_DOLL, SPRITE_ODDISH - decoration DECO_DOLL, GENGAR, SET_UP_DOLL, EVENT_DECO_GENGAR_DOLL, SPRITE_GENGAR - decoration DECO_DOLL, SHELLDER, SET_UP_DOLL, EVENT_DECO_SHELLDER_DOLL, SPRITE_SHELLDER - decoration DECO_DOLL, GRIMER, SET_UP_DOLL, EVENT_DECO_GRIMER_DOLL, SPRITE_GRIMER - decoration DECO_DOLL, VOLTORB, SET_UP_DOLL, EVENT_DECO_VOLTORB_DOLL, SPRITE_VOLTORB - decoration DECO_DOLL, WEEDLE, SET_UP_DOLL, EVENT_DECO_WEEDLE_DOLL, SPRITE_WEEDLE - decoration DECO_DOLL, UNOWN, SET_UP_DOLL, EVENT_DECO_UNOWN_DOLL, SPRITE_UNOWN - decoration DECO_DOLL, GEODUDE, SET_UP_DOLL, EVENT_DECO_GEODUDE_DOLL, SPRITE_GEODUDE - decoration DECO_DOLL, MACHOP, SET_UP_DOLL, EVENT_DECO_MACHOP_DOLL, SPRITE_MACHOP - decoration DECO_DOLL, TENTACOOL, SET_UP_DOLL, EVENT_DECO_TENTACOOL_DOLL, SPRITE_TENTACOOL - decoration DECO_PLANT, GOLD_TROPHY, SET_UP_DOLL, EVENT_DECO_GOLD_TROPHY, SPRITE_GOLD_TROPHY - decoration DECO_PLANT, SILVER_TROPHY, SET_UP_DOLL, EVENT_DECO_SILVER_TROPHY, SPRITE_SILVER_TROPHY -; 26b8d - - -DecorationNames: ; 26b8d - db "CANCEL@" - db "PUT IT AWAY@" - db "MAGNAPLANT@" - db "TROPICPLANT@" - db "JUMBOPLANT@" - db "TOWN MAP@" - db "NES@" - db "SUPER NES@" - db "NINTENDO 64@" - db "VIRTUAL BOY@" - db "GOLD TROPHY@" - db "SILVER TROPHY@" - db "SURF PIKACHU DOLL@" - db " BED@" - db " CARPET@" - db " POSTER@" - db " DOLL@" - db "BIG @" - db "FEATHERY@" - db "PIKACHU@" - db "PINK@" - db "POLKADOT@" - db "RED@" - db "BLUE@" - db "YELLOW@" - db "GREEN@" -; 26c72 - -GetDecoName: ; 26c72 - ld a, [hli] - ld e, [hl] - ld bc, StringBuffer2 - push bc - ld hl, .NameFunctions - rst JumpTable - pop de - ret -; 26c7e - -.NameFunctions: ; 26c7e - dw .invalid - dw .plant - dw .bed - dw .carpet - dw .poster - dw .doll - dw .bigdoll -; 26c8c - - -.invalid: ; 26c8c - ret -; 26c8d - -.plant: ; 26c8d - ld a, e - jr .getdeconame - -.bed: ; 26c90 - call .plant - ld a, _BED - jr .getdeconame - -.carpet: ; 26c97 - call .plant - ld a, _CARPET - jr .getdeconame - -.poster: ; 26c9e - ld a, e - call .getpokename - ld a, _POSTER - jr .getdeconame - -.doll: ; 26ca6 - ld a, e - call .getpokename - ld a, _DOLL - jr .getdeconame - -.bigdoll: ; 26cae - push de - ld a, BIG_ - call .getdeconame - pop de - ld a, e - jr .getpokename - -.unused: ; 26cb8 - push de - call .getdeconame - pop de - ld a, e - jr .getdeconame - -.getpokename: ; 26cc0 - push bc - ld [wd265], a - call GetPokemonName - pop bc - jr .copy - -.getdeconame: ; 26cca - call ._getdeconame - jr .copy - -._getdeconame: ; 26ccf - push bc - ld hl, DecorationNames - call GetNthString - ld d, h - ld e, l - pop bc - ret - -.copy: ; 26cda - ld h, b - ld l, c - call CopyName2 - dec hl - ld b, h - ld c, l - ret -; 26ce3 - -DecoAction_nothing: ; 26ce3 - scf - ret -; 26ce5 - -DecoAction_setupbed: ; 26ce5 - ld hl, Bed - jp DecoAction_TrySetItUp -; 26ceb - -DecoAction_putawaybed: ; 26ceb - ld hl, Bed - jp DecoAction_TryPutItAway -; 26cf1 - -DecoAction_setupcarpet: ; 26cf1 - ld hl, Carpet - jp DecoAction_TrySetItUp -; 26cf7 - -DecoAction_putawaycarpet: ; 26cf7 - ld hl, Carpet - jp DecoAction_TryPutItAway -; 26cfd - -DecoAction_setupplant: ; 26cfd - ld hl, Plant - jp DecoAction_TrySetItUp -; 26d03 - -DecoAction_putawayplant: ; 26d03 - ld hl, Plant - jp DecoAction_TryPutItAway -; 26d09 - -DecoAction_setupposter: ; 26d09 - ld hl, Poster - jp DecoAction_TrySetItUp -; 26d0f - -DecoAction_putawayposter: ; 26d0f - ld hl, Poster - jp DecoAction_TryPutItAway -; 26d15 - -DecoAction_setupconsole: ; 26d15 - ld hl, Console - jp DecoAction_TrySetItUp -; 26d1b - -DecoAction_putawayconsole: ; 26d1b - ld hl, Console - jp DecoAction_TryPutItAway -; 26d21 - -DecoAction_setupbigdoll: ; 26d21 - ld hl, BigDoll - jp DecoAction_TrySetItUp -; 26d27 - -DecoAction_putawaybigdoll: ; 26d27 - ld hl, BigDoll - jp DecoAction_TryPutItAway -; 26d2d - -DecoAction_TrySetItUp: ; 26d2d - ld a, [hl] - ld [Buffer1], a - push hl - call DecoAction_SetItUp - jr c, .failed - ld a, 1 - ld [wd1ee], a - pop hl - ld a, [MenuSelection] - ld [hl], a - xor a - ret - -.failed - pop hl - xor a - ret -; 26d46 - -DecoAction_SetItUp: ; 26d46 -; See if there's anything of the same type already out - ld a, [Buffer1] - and a - jr z, .nothingthere -; See if that item is already out - ld b, a - ld a, [MenuSelection] - cp b - jr z, .alreadythere -; Put away the item that's already out, and set up the new one - ld a, [MenuSelection] - ld hl, StringBuffer4 - call GetDecorationName - ld a, [Buffer1] - ld hl, StringBuffer3 - call GetDecorationName - ld hl, UnknownText_0x26ee0 - call MenuTextBoxBackup - xor a - ret - -.nothingthere - ld a, [MenuSelection] - ld hl, StringBuffer3 - call GetDecorationName - ld hl, UnknownText_0x26edb - call MenuTextBoxBackup - xor a - ret - -.alreadythere - ld hl, UnknownText_0x26ee5 - call MenuTextBoxBackup - scf - ret -; 26d86 - -DecoAction_TryPutItAway: ; 26d86 -; If there is no item of that type already set, there is nothing to put away. - ld a, [hl] - ld [Buffer1], a - xor a - ld [hl], a - ld a, [Buffer1] - and a - jr z, .nothingthere -; Put it away. - ld a, $1 - ld [wd1ee], a - ld a, [Buffer1] - ld [MenuSelection], a - ld hl, StringBuffer3 - call GetDecorationName - ld hl, UnknownText_0x26ed1 - call MenuTextBoxBackup - xor a - ret - -.nothingthere - ld hl, UnknownText_0x26ed6 - call MenuTextBoxBackup - xor a - ret -; 26db3 - -DecoAction_setupornament: ; 26db3 - ld hl, UnknownText_0x26e41 - call DecoAction_AskWhichSide - jr c, .cancel - call DecoAction_SetItUp_Ornament - jr c, .cancel - ld a, $1 - ld [wd1ee], a - jr DecoAction_FinishUp_Ornament - -.cancel - xor a - ret - -DecoAction_putawayornament: ; 26dc9 - ld hl, UnknownText_0x26e6b - call DecoAction_AskWhichSide - jr nc, .incave - xor a - ret - -.incave - call DecoAction_PutItAway_Ornament - -DecoAction_FinishUp_Ornament: ; 26dd6 - call QueryWhichSide - ld a, [wd1ec] - ld [hl], a - ld a, [wd1ed] - ld [de], a - xor a - ret -; 26de3 - -DecoAction_SetItUp_Ornament: ; 26de3 - ld a, [wd1ec] - and a - jr z, .nothingthere - ld b, a - ld a, [MenuSelection] - cp b - jr z, .failed - ld a, b - ld hl, StringBuffer3 - call GetDecorationName - ld a, [MenuSelection] - ld hl, StringBuffer4 - call GetDecorationName - ld a, [MenuSelection] - ld [wd1ec], a - call .getwhichside - ld hl, UnknownText_0x26ee0 - call MenuTextBoxBackup - xor a - ret - -.nothingthere - ld a, [MenuSelection] - ld [wd1ec], a - call .getwhichside - ld a, [MenuSelection] - ld hl, StringBuffer3 - call GetDecorationName - ld hl, UnknownText_0x26edb - call MenuTextBoxBackup - xor a - ret - -.failed - ld hl, UnknownText_0x26ee5 - call MenuTextBoxBackup - scf - ret -; 26e33 - -.getwhichside: ; 26e33 - ld a, [MenuSelection] - ld b, a - ld a, [wd1ed] - cp b - ret nz - xor a - ld [wd1ed], a - ret -; 26e41 - -UnknownText_0x26e41: ; 0x26e41 - ; Which side do you want to put it on? - text_jump UnknownText_0x1bc48c - db "@" -; 0x26e46 - -DecoAction_PutItAway_Ornament: ; 26e46 - ld a, [wd1ec] - and a - jr z, .nothingthere - ld hl, StringBuffer3 - call GetDecorationName - ld a, $1 - ld [wd1ee], a - xor a - ld [wd1ec], a - ld hl, UnknownText_0x26ed1 - call MenuTextBoxBackup - xor a - ret - -.nothingthere - ld hl, UnknownText_0x26ed6 - call MenuTextBoxBackup - xor a - ret -; 26e6b - -UnknownText_0x26e6b: ; 0x26e6b - ; Which side do you want to put away? - text_jump UnknownText_0x1bc4b2 - db "@" -; 0x26e70 - -DecoAction_AskWhichSide: ; 26e70 - call MenuTextBox - ld hl, MenuDataHeader_0x26eab - call GetMenu2 - call ExitMenu - call CopyMenuData2 - jr c, .nope - ld a, [MenuSelection2] - cp 3 - jr z, .nope - ld [Buffer2], a - call QueryWhichSide - ld a, [hl] - ld [wd1ec], a - ld a, [de] - ld [wd1ed], a - xor a - ret - -.nope - scf - ret -; 26e9a - -QueryWhichSide: ; 26e9a - ld hl, RightOrnament - ld de, LeftOrnament - ld a, [Buffer2] - cp 1 - ret z - push hl - ld h, d - ld l, e - pop de - ret -; 26eab - -MenuDataHeader_0x26eab: ; 0x26eab - db $40 ; flags - db 00, 00 ; start coords - db 07, 13 ; end coords - dw MenuData2_0x26eb3 - db 1 ; default option -; 0x26eb3 - -MenuData2_0x26eb3: ; 0x26eb3 - db $80 ; flags - db 3 ; items - db "RIGHT SIDE@" - db "LEFT SIDE@" - db "CANCEL@" -; 0x26ed1 - -UnknownText_0x26ed1: ; 0x26ed1 - ; Put away the @ . - text_jump UnknownText_0x1bc4d7 - db "@" -; 0x26ed6 - -UnknownText_0x26ed6: ; 0x26ed6 - ; There's nothing to put away. - text_jump UnknownText_0x1bc4ec - db "@" -; 0x26edb - -UnknownText_0x26edb: ; 0x26edb - ; Set up the @ . - text_jump UnknownText_0x1bc509 - db "@" -; 0x26ee0 - -UnknownText_0x26ee0: ; 0x26ee0 - ; Put away the @ and set up the @ . - text_jump UnknownText_0x1bc51c - db "@" -; 0x26ee5 - -UnknownText_0x26ee5: ; 0x26ee5 - ; That's already set up. - text_jump UnknownText_0x1bc546 - db "@" -; 0x26eea - -GetDecorationName_c_de: ; 26eea - ld a, c - ld h, d - ld l, e - call GetDecorationName - ret -; 26ef1 - -DecorationFlagAction_c: ; 26ef1 - ld a, c - jp DecorationFlagAction -; 26ef5 - - -GetDecorationName_c: ; 26ef5 (9:6ef5) - ld a, c - call GetDecorationID - ld hl, StringBuffer1 - push hl - call GetDecorationName - pop de - ret - - -SetSpecificDecorationFlag: ; 26f02 - ld a, c - call GetDecorationID - ld b, SET_FLAG - call DecorationFlagAction - ret -; 26f0c - -GetDecorationID: ; 26f0c - push hl - push de - ld e, a - ld d, 0 - ld hl, DecorationIDs - add hl, de - ld a, [hl] - pop de - pop hl - ret -; 26f19 - -SetAllDecorationFlags: ; 26f19 - ld hl, DecorationIDs -.loop - ld a, [hli] - cp -1 - jr z, .done - push hl - ld b, SET_FLAG - call DecorationFlagAction - pop hl - jr .loop - -.done - ret -; 26f2b - -DecorationIDs: ; 26f2b - db DECO_FEATHERY_BED ; 2 - db DECO_PINK_BED ; 3 - db DECO_POLKADOT_BED ; 4 - db DECO_PIKACHU_BED ; 5 - - db DECO_RED_CARPET ; 7 - db DECO_BLUE_CARPET ; 8 - db DECO_YELLOW_CARPET ; 9 - db DECO_GREEN_CARPET ; a - - db DECO_MAGNAPLANT ; c - db DECO_TROPICPLANT ; d - db DECO_JUMBOPLANT ; e - - db DECO_TOWN_MAP ; 10 - db DECO_PIKACHU_POSTER ; 11 - db DECO_CLEFAIRY_POSTER ; 12 - db DECO_JIGGLYPUFF_POSTER ; 13 - - db DECO_FAMICOM ; 15 - db DECO_SNES ; 16 - db DECO_N64 ; 17 - db DECO_VIRTUAL_BOY ; 18 - - db DECO_PIKACHU_DOLL ; 1e - db DECO_SURF_PIKACHU_DOLL ; 1f - db DECO_CLEFAIRY_DOLL ; 20 - db DECO_JIGGLYPUFF_DOLL ; 21 - db DECO_BULBASAUR_DOLL ; 22 - db DECO_CHARMANDER_DOLL ; 23 - db DECO_SQUIRTLE_DOLL ; 24 - db DECO_POLIWAG_DOLL ; 25 - db DECO_DIGLETT_DOLL ; 26 - db DECO_STARMIE_DOLL ; 27 - db DECO_MAGIKARP_DOLL ; 28 - db DECO_ODDISH_DOLL ; 29 - db DECO_GENGAR_DOLL ; 2a - db DECO_SHELLDER_DOLL ; 2b - db DECO_GRIMER_DOLL ; 2c - db DECO_VOLTORB_DOLL ; 2d - db DECO_WEEDLE_DOLL ; 2e - db DECO_UNOWN_DOLL ; 2f - db DECO_GEODUDE_DOLL ; 30 - db DECO_MACHOP_DOLL ; 31 - db DECO_TENTACOOL_DOLL ; 32 - db DECO_BIG_SNORLAX_DOLL ; 1a - db DECO_BIG_ONIX_DOLL ; 1b - db DECO_BIG_LAPRAS_DOLL ; 1c - db DECO_GOLD_TROPHY_DOLL ; 33 - db DECO_SILVER_TROPHY_DOLL ; 34 - db -1 -; 26f59 - -DescribeDecoration:: ; 26f59 - ld a, b - ld hl, JumpTable_DecorationDesc - rst JumpTable - ret -; 26f5f - -JumpTable_DecorationDesc: ; 26f5f - dw DecorationDesc_Poster - dw DecorationDesc_LeftOrnament - dw DecorationDesc_RightOrnament - dw DecorationDesc_GiantDoll - dw DecorationDesc_Console -; 26f69 - -DecorationDesc_Poster: ; 26f69 - ld a, [Poster] - ld hl, DecorationDesc_PosterPointers - ld de, 3 - call IsInArray - jr c, .nope - ld de, DecorationDesc_NullPoster - ld b, BANK(DecorationDesc_NullPoster) - ret - -.nope - ld b, BANK(DecorationDesc_TownMapPoster) - inc hl - ld a, [hli] - ld d, [hl] - ld e, a - ret -; 26f84 - -DecorationDesc_PosterPointers: ; 26f84 - dbw DECO_TOWN_MAP, DecorationDesc_TownMapPoster - dbw DECO_PIKACHU_POSTER, DecorationDesc_PikachuPoster - dbw DECO_CLEFAIRY_POSTER, DecorationDesc_ClefairyPoster - dbw DECO_JIGGLYPUFF_POSTER, DecorationDesc_JigglypuffPoster - db -1 -; 26f91 - -DecorationDesc_TownMapPoster: ; 0x26f91 - loadfont - writetext UnknownText_0x26f9b - closetext - special Special_TownMap - loadmovesprites - end -; 0x26f9b - -UnknownText_0x26f9b: ; 0x26f9b - ; It's the TOWN MAP. - text_jump UnknownText_0x1bc55d - db "@" -; 0x26fa0 - -DecorationDesc_PikachuPoster: ; 0x26fa0 - jumptext UnknownText_0x26fa3 -; 0x26fa3 - -UnknownText_0x26fa3: ; 0x26fa3 - ; It's a poster of a cute PIKACHU. - text_jump UnknownText_0x1bc570 - db "@" -; 0x26fa8 - -DecorationDesc_ClefairyPoster: ; 0x26fa8 - jumptext UnknownText_0x26fab -; 0x26fab - -UnknownText_0x26fab: ; 0x26fab - ; It's a poster of a cute CLEFAIRY. - text_jump UnknownText_0x1bc591 - db "@" -; 0x26fb0 - -DecorationDesc_JigglypuffPoster: ; 0x26fb0 - jumptext UnknownText_0x26fb3 -; 0x26fb3 - -UnknownText_0x26fb3: ; 0x26fb3 - ; It's a poster of a cute JIGGLYPUFF. - text_jump UnknownText_0x1bc5b3 - db "@" -; 0x26fb8 - -DecorationDesc_NullPoster: ; 26fb8 - end -; 26fb9 - -DecorationDesc_LeftOrnament: ; 26fb9 - ld a, [LeftOrnament] - jr DecorationDesc_OrnamentOrConsole - -DecorationDesc_RightOrnament: ; 26fbe - ld a, [RightOrnament] - jr DecorationDesc_OrnamentOrConsole - -DecorationDesc_Console: ; 26fc3 - ld a, [Console] - jr DecorationDesc_OrnamentOrConsole - -DecorationDesc_OrnamentOrConsole: ; 26fc8 - ld c, a - ld de, StringBuffer3 - call GetDecorationName_c_de - ld b, BANK(Unknown_26fd5) - ld de, Unknown_26fd5 - ret -; 26fd5 - -Unknown_26fd5: ; 26fd5 - dbw $53, UnknownText_0x26fd8 -; 26fd8 - -UnknownText_0x26fd8: ; 0x26fd8 - ; It's an adorable @ . - text_jump UnknownText_0x1bc5d7 - db "@" -; 0x26fdd - -DecorationDesc_GiantDoll: ; 26fdd - ld b, BANK(Unknown_26fe3) - ld de, Unknown_26fe3 - ret -; 26fe3 - -Unknown_26fe3: ; 26fe3 - dbw $53, UnknownText_0x26fe6 -; 26fe6 - -UnknownText_0x26fe6: ; 0x26fe6 - ; A giant doll! It's fluffy and cuddly. - text_jump UnknownText_0x1bc5ef - db "@" -; 0x26feb - -ToggleMaptileDecorations: ; 26feb - lb de, 0, 4 - ld a, [Bed] - call SetDecorationTile - lb de, 7, 4 - ld a, [Plant] - call SetDecorationTile - lb de, 6, 0 - ld a, [Poster] - call SetDecorationTile - call SetPosterVisibility - lb de, 0, 0 - call PadCoords_de - ld a, [Carpet] - and a - ret z - call _GetDecorationSprite - ld [hl], a - push af - lb de, 0, 2 - call PadCoords_de - pop af - inc a - ld [hli], a - inc a - ld [hli], a - dec a - ld [hl], a - ret -; 27027 - -SetPosterVisibility: ; 27027 - ld b, SET_FLAG - ld a, [Poster] - and a - jr nz, .ok - ld b, RESET_FLAG - -.ok - ld de, EVENT_KRISS_ROOM_POSTER - jp EventFlagAction -; 27037 - -SetDecorationTile: ; 27037 - push af - call PadCoords_de - pop af - and a - ret z - call _GetDecorationSprite - ld [hl], a - ret -; 27043 - -ToggleDecorationsVisibility: ; 27043 - ld de, EVENT_KRISS_HOUSE_2F_CONSOLE - ld hl, VariableSprites + SPRITE_CONSOLE - SPRITE_VARS - ld a, [Console] - call ToggleDecorationVisibility - ld de, EVENT_KRISS_HOUSE_2F_DOLL_1 - ld hl, VariableSprites + SPRITE_DOLL_1 - SPRITE_VARS - ld a, [LeftOrnament] - call ToggleDecorationVisibility - ld de, EVENT_KRISS_HOUSE_2F_DOLL_2 - ld hl, VariableSprites + SPRITE_DOLL_2 - SPRITE_VARS - ld a, [RightOrnament] - call ToggleDecorationVisibility - ld de, EVENT_KRISS_HOUSE_2F_BIG_DOLL - ld hl, VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS - ld a, [BigDoll] - call ToggleDecorationVisibility - ret -; 27074 - -ToggleDecorationVisibility: ; 27074 - and a - jr z, .hide - call _GetDecorationSprite - ld [hl], a - ld b, RESET_FLAG - jp EventFlagAction - -.hide - ld b, SET_FLAG - jp EventFlagAction -; 27085 - -_GetDecorationSprite: ; 27085 - ld c, a - push de - push hl - callba GetDecorationSprite - pop hl - pop de - ld a, c - ret -; 27092 +INCLUDE "engine/decorations.asm" PadCoords_de: ; 27092 ld a, d @@ -18006,7 +12172,7 @@ LevelUpHappinessMod: ; 2709e INCLUDE "trainers/dvs.asm" -Function2715c: ; 2715c +_ReturnToBattle_UseBall: ; 2715c call ClearBGPalettes call ClearTileMap ld a, [BattleType] @@ -18021,7 +12187,7 @@ Function2715c: ; 2715c .continue callba GetMonFrontpic callba _LoadBattleFontsHPBar - call ClearSGB + call GetMemSGBLayout call WriteBackup call LoadStandardMenuDataHeader call WaitBGMap @@ -18132,7 +12298,7 @@ Function29fe4: ; unreferenced ld a, $0 call GetSRAMBank ld d, $0 - ld b, $2 + ld b, CHECK_FLAG predef FlagPredef call CloseSRAM ld a, c @@ -18140,1064 +12306,7 @@ Function29fe4: ; unreferenced ret ; 29ff8 -LoadWildMonData: ; 29ff8 - call _GrassWildmonLookup - jr c, .copy - ld hl, wd25a - xor a - ld [hli], a - ld [hli], a - ld [hl], a - jr .done_copy -.copy - inc hl - inc hl - ld de, wd25a - ld bc, $3 - call CopyBytes -.done_copy - call _WaterWildmonLookup - ld a, $0 - jr nc, .no_copy - inc hl - inc hl - ld a, [hl] -.no_copy - ld [wd25d], a - ret - -Function2a01f: ; 2a01f - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - ld a, e - and a - jr nz, .kanto - decoord 0, 0 - ld hl, JohtoGrassWildMons - call Function2a052 - ld hl, JohtoWaterWildMons - call Function2a06e - call Function2a0b7 - call Function2a0cf - ret - -.kanto - decoord 0, 0 - ld hl, KantoGrassWildMons - call Function2a052 - ld hl, KantoWaterWildMons - jp Function2a06e -; 2a052 - -Function2a052: ; 2a052 -.loop - ld a, [hl] - cp $ff - ret z - push hl - ld a, [hli] - ld b, a - ld a, [hli] - ld c, a -rept 3 - inc hl -endr - ld a, $15 - call Function2a088 - jr nc, .next - ld [de], a - inc de - -.next - pop hl - ld bc, $2f - add hl, bc - jr .loop -; 2a06e - -Function2a06e: ; 2a06e -.loop - ld a, [hl] - cp $ff - ret z - push hl - ld a, [hli] - ld b, a - ld a, [hli] - ld c, a - inc hl - ld a, $3 - call Function2a088 - jr nc, .next - ld [de], a - inc de - -.next - pop hl - ld bc, 9 - add hl, bc - jr .loop -; 2a088 - -Function2a088: ; 2a088 - inc hl -.loop - push af - ld a, [wd265] - cp [hl] - jr z, .found -rept 2 - inc hl -endr - pop af - dec a - jr nz, .loop - and a - ret - -.found - pop af - jp Function2a09c -; 2a09c - -Function2a09c: ; 2a09c - push de - call GetWorldMapLocation - ld c, a - hlcoord 0, 0 - ld de, SCREEN_WIDTH * SCREEN_HEIGHT -.loop - ld a, [hli] - cp c - jr z, .found - dec de - ld a, e - or d - jr nz, .loop - ld a, c - pop de - scf - ret - -.found - pop de - and a - ret -; 2a0b7 - -Function2a0b7: ; 2a0b7 - ld a, [wRoamMon1Species] - ld b, a - ld a, [wd265] - cp b - ret nz - ld a, [wRoamMon1MapGroup] - ld b, a - ld a, [wRoamMon1MapNumber] - ld c, a - call Function2a09c - ret nc - ld [de], a - inc de - ret -; 2a0cf - -Function2a0cf: ; 2a0cf - ld a, [wRoamMon2Species] - ld b, a - ld a, [wd265] - cp b - ret nz - ld a, [wRoamMon2MapGroup] - ld b, a - ld a, [wRoamMon2MapNumber] - ld c, a - call Function2a09c - ret nc - ld [de], a - inc de - ret -; 2a0e7 - -TryWildEncounter:: ; 2a0e7 -; Try to trigger a wild encounter. - call .EncounterRate - jr nc, .no_battle - call ChooseWildEncounter - jr nz, .no_battle - call CheckRepelEffect - jr nc, .no_battle - xor a - ret - -.no_battle - xor a ; BATTLETYPE_NORMAL - ld [TempWildMonSpecies], a - ld [BattleType], a - ld a, 1 - and a - ret -; 2a103 - -.EncounterRate: ; 2a103 - call GetMapEncounterRate - call ApplyMusicEffectOnEncounterRate - call ApplyCleanseTagEffectOnEncounterRate - call Random - cp b - ret -; 2a111 - -GetMapEncounterRate: ; 2a111 - ld hl, wd25a - call CheckOnWater - ld a, 3 - jr z, .ok - ld a, [TimeOfDay] -.ok - ld c, a - ld b, 0 - add hl, bc - ld b, [hl] - ret -; 2a124 - -ApplyMusicEffectOnEncounterRate:: ; 2a124 -; Pokemon March and Ruins of Alph signal double encounter rate. -; Pokemon Lullaby halves encounter rate. - ld a, [wMapMusic] - cp MUSIC_POKEMON_MARCH - jr z, .double - cp MUSIC_RUINS_OF_ALPH_RADIO - jr z, .double - cp MUSIC_POKEMON_LULLABY - ret nz - srl b - ret - -.double - sla b - ret -; 2a138 - -ApplyCleanseTagEffectOnEncounterRate:: ; 2a138 -; Cleanse Tag halves encounter rate. - ld hl, PartyMon1Item - ld de, PARTYMON_STRUCT_LENGTH - ld a, [PartyCount] - ld c, a -.loop - ld a, [hl] - cp CLEANSE_TAG - jr z, .cleansetag - add hl, de - dec c - jr nz, .loop - ret - -.cleansetag - srl b - ret -; 2a14f - -ChooseWildEncounter: ; 2a14f - call LoadWildMonDataPointer - jp nc, .nowildbattle - call CheckEncounterRoamMon - jp c, .startwildbattle - -rept 3 - inc hl -endr - call CheckOnWater - ld de, .WaterMonTable - jr z, .watermon -rept 2 - inc hl -endr - ld a, [TimeOfDay] - ld bc, $e - call AddNTimes - ld de, .GrassMonTable - -.watermon -; hl contains the pointer to the wild mon data, let's save that to the stack - push hl -.randomloop - call Random - cp 100 - jr nc, .randomloop - inc a ; 1 <= a <= 100 - ld b, a - ld h, d - ld l, e -; This next loop chooses which mon to load up. -.prob_bracket_loop - ld a, [hli] - cp b - jr nc, .got_it - inc hl - jr .prob_bracket_loop - -.got_it - ld c, [hl] - ld b, 0 - pop hl - add hl, bc ; this selects our mon - ld a, [hli] - ld b, a -; If the Pokemon is encountered by surfing, we need to give the levels some variety. - call CheckOnWater - jr nz, .ok -; Check if we buff the wild mon, and by how much. - call Random - cp 35 percent - jr c, .ok - inc b - cp 65 percent - jr c, .ok - inc b - cp 85 percent - jr c, .ok - inc b - cp 95 percent - jr c, .ok - inc b -; Store the level -.ok - ld a, b - ld [CurPartyLevel], a - ld b, [hl] - ; ld a, b - call ValidateTempWildMonSpecies - jr c, .nowildbattle - - ld a, b ; This is in the wrong place. - cp UNOWN - jr nz, .done - - ld a, [UnlockedUnowns] - and a - jr z, .nowildbattle - -.done - jr .loadwildmon - -.nowildbattle - ld a, 1 - and a - ret - -.loadwildmon - ld a, b - ld [TempWildMonSpecies], a - -.startwildbattle - xor a - ret -; 2a1cb - -.GrassMonTable: ; 2a1cb - db 30, $0 ; 30% chance - db 60, $2 ; 30% chance - db 80, $4 ; 20% chance - db 90, $6 ; 10% chance - db 95, $8 ; 5% chance - db 99, $a ; 4% chance - db 100, $c ; 1% chance -; 2a1d9 - -.WaterMonTable: ; 2a1d9 - db 60, $0 ; 60% chance - db 90, $2 ; 30% chance - db 100, $4 ; 10% chance -; 2a1df - -CheckRepelEffect:: ; 2a1df -; If there is no active Repel, there's no need to be here. - ld a, [wRepelEffect] - and a - jr z, .encounter -; Get the first Pokemon in your party that isn't fainted. - ld hl, PartyMon1HP - ld bc, PARTYMON_STRUCT_LENGTH - 1 -.loop - ld a, [hli] - or [hl] - jr nz, .ok - add hl, bc - jr .loop - -.ok -; to PartyMonLevel -rept 4 - dec hl -endr - - ld a, [CurPartyLevel] - cp [hl] - jr nc, .encounter - and a - ret - -.encounter - scf - ret -; 2a200 - -LoadWildMonDataPointer: ; 2a200 - call CheckOnWater - jr z, _WaterWildmonLookup - -_GrassWildmonLookup: ; 2a205 - ld hl, SwarmGrassWildMons - ld bc, GRASS_WILDDATA_LENGTH - call _SwarmWildmonCheck - ret c - ld hl, JohtoGrassWildMons - ld de, KantoGrassWildMons - call _JohtoWildmonCheck - ld bc, GRASS_WILDDATA_LENGTH - jr _NormalWildmonOK - -_WaterWildmonLookup: ; 2a21d - ld hl, SwarmWaterWildMons - ld bc, WATER_WILDDATA_LENGTH - call _SwarmWildmonCheck - ret c - ld hl, JohtoWaterWildMons - ld de, KantoWaterWildMons - call _JohtoWildmonCheck - ld bc, WATER_WILDDATA_LENGTH - jr _NormalWildmonOK - -_JohtoWildmonCheck - call IsInJohto - and a - ret z - ld h, d - ld l, e - ret - -_SwarmWildmonCheck - call CopyCurrMapDE - push hl - ld hl, SwarmFlags - bit 2, [hl] - pop hl - jr z, .CheckYanma - ld a, [wdfcc] - cp d - jr nz, .CheckYanma - ld a, [wdfcd] - cp e - jr nz, .CheckYanma - call LookUpWildmonsForMapDE - jr nc, _NoSwarmWildmon - scf - ret - -.CheckYanma - push hl - ld hl, SwarmFlags - bit 3, [hl] - pop hl - jr z, _NoSwarmWildmon - ld a, [wdc5a] - cp d - jr nz, _NoSwarmWildmon - ld a, [wdc5b] - cp e - jr nz, _NoSwarmWildmon - call LookUpWildmonsForMapDE - jr nc, _NoSwarmWildmon - scf - ret - -_NoSwarmWildmon - and a - ret - -_NormalWildmonOK - call CopyCurrMapDE - jr LookUpWildmonsForMapDE -; 2a27f - -CopyCurrMapDE: ; 2a27f - ld a, [MapGroup] - ld d, a - ld a, [MapNumber] - ld e, a - ret -; 2a288 - -LookUpWildmonsForMapDE: ; 2a288 - push hl - ld a, [hl] - inc a - jr z, .nope - ld a, d - cp [hl] - jr nz, .next - inc hl - ld a, e - cp [hl] - jr z, .yup - -.next - pop hl - add hl, bc - jr LookUpWildmonsForMapDE - -.nope - pop hl - and a - ret - -.yup - pop hl - scf - ret -; 2a2a0 - - -InitRoamMons: ; 2a2a0 -; initialize wRoamMon structs - -; species - ld a, RAIKOU - ld [wRoamMon1Species], a - ld a, ENTEI - ld [wRoamMon2Species], a -; ld a, SUICUNE -; ld [wRoamMon3Species], a - -; level - ld a, 40 - ld [wRoamMon1Level], a - ld [wRoamMon2Level], a -; ld [wRoamMon3Level], a - -; raikou starting map - ld a, GROUP_ROUTE_42 - ld [wRoamMon1MapGroup], a - ld a, MAP_ROUTE_42 - ld [wRoamMon1MapNumber], a - -; entei starting map - ld a, GROUP_ROUTE_37 - ld [wRoamMon2MapGroup], a - ld a, MAP_ROUTE_37 - ld [wRoamMon2MapNumber], a - -; suicune starting map -; ld a, GROUP_ROUTE_38 -; ld [wRoamMon3MapGroup], a -; ld a, MAP_ROUTE_38 -; ld [wRoamMon3MapNumber], a - -; hp - xor a ; generate new stats - ld [wRoamMon1HP], a - ld [wRoamMon2HP], a -; ld [wRoamMon3HP], a - - ret -; 2a2ce - - -CheckEncounterRoamMon: ; 2a2ce - push hl -; Don't trigger an encounter if we're on water. - call CheckOnWater - jr z, .DontEncounterRoamMon -; Load the current map group and number to de - call CopyCurrMapDE -; Randomly select a beast. - call Random - cp 100 ; 25/64 chance - jr nc, .DontEncounterRoamMon - and %00000011 ; Of that, a 3/4 chance. Running total: 75/256, or around 29.3%. - jr z, .DontEncounterRoamMon - dec a ; 1/3 chance that it's Entei, 1/3 chance that it's Raikou -; Compare its current location with yours - ld hl, wRoamMon1MapGroup - ld c, a - ld b, 0 - ld a, 7 ; length of the RoamMon struct - call AddNTimes - ld a, d - cp [hl] - jr nz, .DontEncounterRoamMon - inc hl - ld a, e - cp [hl] - jr nz, .DontEncounterRoamMon -; We've decided to take on a beast, so stage its information for battle. -rept 3 - dec hl -endr - ld a, [hli] - ld [TempWildMonSpecies], a - ld a, [hl] - ld [CurPartyLevel], a - ld a, BATTLETYPE_ROAMING - ld [BattleType], a - - pop hl - scf - ret - -.DontEncounterRoamMon - pop hl - and a - ret -; 2a30d - - -UpdateRoamMons: ; 2a30d - ld a, [wRoamMon1MapGroup] - cp GROUP_N_A - jr z, .SkipRaikou - ld b, a - ld a, [wRoamMon1MapNumber] - ld c, a - call .Update - ld a, b - ld [wRoamMon1MapGroup], a - ld a, c - ld [wRoamMon1MapNumber], a - -.SkipRaikou - ld a, [wRoamMon2MapGroup] - cp GROUP_N_A - jr z, .SkipEntei - ld b, a - ld a, [wRoamMon2MapNumber] - ld c, a - call .Update - ld a, b - ld [wRoamMon2MapGroup], a - ld a, c - ld [wRoamMon2MapNumber], a - -.SkipEntei - ld a, [wRoamMon3MapGroup] - cp GROUP_N_A - jr z, .SkipSuicune - ld b, a - ld a, [wRoamMon3MapNumber] - ld c, a - call .Update - ld a, b - ld [wRoamMon3MapGroup], a - ld a, c - ld [wRoamMon3MapNumber], a - -.SkipSuicune - jp _BackUpMapIndices -; 2a355 - - -.Update: ; 2a355 - ld hl, RoamMaps -.loop -; Are we at the end of the table? - ld a, [hl] - cp -1 - ret z -; Is this the correct entry? - ld a, b - cp [hl] - jr nz, .next - inc hl - ld a, c - cp [hl] - jr z, .yes -; We don't have the correct entry yet, so let's continue. A 0 terminates each entry. -.next - ld a, [hli] - and a - jr nz, .next - jr .loop - -; We have the correct entry now, so let's choose a random map from it. -.yes - inc hl - ld d, h - ld e, l -.update_loop - ld h, d - ld l, e -; Choose which map to warp to. - call Random - and $1f ; 1/8n chance it moves to a completely random map, where n is the number of roaming connections from the current map. - jr z, JumpRoamMon - and 3 - cp [hl] - jr nc, .update_loop ; invalid index, try again - inc hl - ld c, a - ld b, $0 -rept 2 - add hl, bc -endr - ld a, [wdfe7] - cp [hl] - jr nz, .done - inc hl - ld a, [wdfe6] - cp [hl] - jr z, .update_loop - dec hl - -.done - ld a, [hli] - ld b, a - ld c, [hl] - ret - -JumpRoamMons: ; 2a394 - ld a, [wRoamMon1MapGroup] - cp GROUP_N_A - jr z, .SkipRaikou - call JumpRoamMon - ld a, b - ld [wRoamMon1MapGroup], a - ld a, c - ld [wRoamMon1MapNumber], a -.SkipRaikou - - ld a, [wRoamMon2MapGroup] - cp GROUP_N_A - jr z, .SkipEntei - call JumpRoamMon - ld a, b - ld [wRoamMon2MapGroup], a - ld a, c - ld [wRoamMon2MapNumber], a -.SkipEntei - - ld a, [wRoamMon3MapGroup] - cp GROUP_N_A - jr z, .SkipSuicune - call JumpRoamMon - ld a, b - ld [wRoamMon3MapGroup], a - ld a, c - ld [wRoamMon3MapNumber], a -.SkipSuicune - - jp _BackUpMapIndices - -JumpRoamMon: ; 2a3cd -.loop - ld hl, RoamMaps -.innerloop1 ; This loop is completely unnecessary. - call Random ; Choose a random number - and $f ; Take the lower nybble only. This gives a number between 0 and 15. - cp $10 ; If the number is greater than or equal to 16, loop back and try again. - jr nc, .innerloop1 ; I'm sure you can guess why this check is bogus. - inc a - ld b, a -.innerloop2 ; Loop to get hl to the address of the chosen roam map. - dec b - jr z, .ok -.innerloop3 ; Loop to skip the current roam map, which is terminated by a 0. - ld a, [hli] - and a - jr nz, .innerloop3 - jr .innerloop2 -; Check to see if the selected map is the one the player is currently in. If so, try again. -.ok - ld a, [MapGroup] - cp [hl] - jr nz, .done - inc hl - ld a, [MapNumber] - cp [hl] - jr z, .loop - dec hl -; Return the map group and number in bc. -.done - ld a, [hli] - ld b, a - ld c, [hl] - ret -; 2a3f6 - -_BackUpMapIndices: ; 2a3f6 - ld a, [wdfe4] - ld [wdfe6], a - ld a, [wdfe5] - ld [wdfe7], a - ld a, [MapNumber] - ld [wdfe4], a - ld a, [MapGroup] - ld [wdfe5], a - ret -; 2a40f - -RoamMaps: ; 2a40f -; Maps that roaming monsters can be on, -; and possible maps they can jump to. -; Notably missing are Route 40 and -; Route 41, which are water routes. - roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46 - roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31 - roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36 - roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33 - roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34 - roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35 - roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36 - roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37 - roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42 - roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42 - roam_map ROUTE_39, 1, ROUTE_38 - roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38 - roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44 - roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45 - roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46 - roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29 - db -1 -; 2a4a0 - -ValidateTempWildMonSpecies: ; 2a4a0 -; Due to a development oversight, this function is called with the wild Pokemon's level, not its species, in a. - and a - jr z, .nowildmon ; = 0 - cp NUM_POKEMON + 1 ; 252 - jr nc, .nowildmon ; >= 252 - and a ; 1 <= Species <= 251 - ret - -.nowildmon - scf - ret -; 2a4ab - -RandomPhoneRareWildMon: ; 2a4ab -; Related to the phone? - callba GetCallerLocation - ld d, b - ld e, c - ld hl, JohtoGrassWildMons - ld bc, GRASS_WILDDATA_LENGTH - call LookUpWildmonsForMapDE - jr c, .GetGrassmon - ld hl, KantoGrassWildMons - call LookUpWildmonsForMapDE - jr nc, .done - -.GetGrassmon - push hl - ld bc, 5 + 4 * 2 ; Location of the level of the 5th wild Pokemon in that map - add hl, bc - ld a, [TimeOfDay] - ld bc, 7 * 2 - call AddNTimes -.randloop1 - call Random - and $3 - jr z, .randloop1 - dec a - ld c, a - ld b, $0 -rept 2 - add hl, bc -endr -; We now have the pointer to one of the last (rarest) three wild Pokemon found in that area. - inc hl - ld c, [hl] ; Contains the species index of this rare Pokemon - pop hl - ld de, 5 + 0 * 2 - add hl, de - inc hl ; Species index of the most common Pokemon on that route - ld b, 4 -.loop2 - ld a, [hli] - cp c ; Compare this most common Pokemon with the rare one stored in c. - jr z, .done - inc hl - dec b - jr nz, .loop2 -; This Pokemon truly is rare. - push bc - dec c - ld a, c - call CheckSeenMon - pop bc - jr nz, .done -; Since we haven't seen it, have the caller tell us about it. - ld de, StringBuffer1 - call CopyName1 - ld a, c - ld [wd265], a - call GetPokemonName - ld hl, UnknownText_0x2a51a - call PrintText - xor a - ld [ScriptVar], a - ret - -.done - ld a, $1 - ld [ScriptVar], a - ret -; 2a51a - -UnknownText_0x2a51a: ; 0x2a51a - ; I just saw some rare @ in @ . I'll call you if I see another rare #MON, OK? - text_jump UnknownText_0x1bd34b - db "@" -; 0x2a51f - -RandomPhoneWildMon: ; 2a51f - callba GetCallerLocation - ld d, b - ld e, c - ld hl, JohtoGrassWildMons - ld bc, GRASS_WILDDATA_LENGTH - call LookUpWildmonsForMapDE - jr c, .ok - ld hl, KantoGrassWildMons - call LookUpWildmonsForMapDE - -.ok - ld bc, 5 + 0 * 2 - add hl, bc - ld a, [TimeOfDay] - inc a - ld bc, 7 * 2 -.loop - dec a - jr z, .done - add hl, bc - jr .loop - -.done - call Random - and $3 - ld c, a - ld b, $0 -rept 2 - add hl, bc -endr - inc hl - ld a, [hl] - ld [wd265], a - call GetPokemonName - ld hl, StringBuffer1 - ld de, StringBuffer4 - ld bc, PKMN_NAME_LENGTH - jp CopyBytes -; 2a567 - -RandomPhoneMon: ; 2a567 -; Get a random monster owned by the trainer who's calling. - callba GetCallerLocation - ld hl, TrainerGroups - ld a, d - dec a - ld c, a - ld b, 0 -rept 2 - add hl, bc -endr - ld a, BANK(TrainerGroups) - call GetFarHalfword - -.skip_trainer - dec e - jr z, .skipped -.skip - ld a, BANK(Trainers) - call GetFarByte - inc hl - cp -1 - jr nz, .skip - jr .skip_trainer -.skipped - -.skip_name - ld a, BANK(Trainers) - call GetFarByte - inc hl - cp "@" - jr nz, .skip_name - - ld a, BANK(Trainers) - call GetFarByte - inc hl - ld bc, 2 - cp 0 - jr z, .got_mon_length - ld bc, 2 + NUM_MOVES - cp 1 - jr z, .got_mon_length - ld bc, 2 + 1 - cp 2 - jr z, .got_mon_length - ld bc, 2 + 1 + NUM_MOVES -.got_mon_length - - ld e, 0 - push hl -.count_mon - inc e - add hl, bc - ld a, BANK(Trainers) - call GetFarByte - cp -1 - jr nz, .count_mon - pop hl - -.rand - call Random - and 7 - cp e - jr nc, .rand - - inc a -.get_mon - dec a - jr z, .got_mon - add hl, bc - jr .get_mon -.got_mon - - inc hl ; species - ld a, BANK(Trainers) - call GetFarByte - ld [wd265], a - call GetPokemonName - ld hl, StringBuffer1 - ld de, StringBuffer4 - ld bc, PKMN_NAME_LENGTH - jp CopyBytes -; 2a5e9 - - -JohtoGrassWildMons: ; 0x2a5e9 -INCLUDE "data/wild/johto_grass.asm" - -JohtoWaterWildMons: ; 0x2b11d -INCLUDE "data/wild/johto_water.asm" - -KantoGrassWildMons: ; 0x2b274 -INCLUDE "data/wild/kanto_grass.asm" - -KantoWaterWildMons: ; 0x2b7f7 -INCLUDE "data/wild/kanto_water.asm" - -SwarmGrassWildMons: ; 0x2b8d0 -INCLUDE "data/wild/swarm_grass.asm" - -SwarmWaterWildMons: ; 0x2b92f -INCLUDE "data/wild/swarm_water.asm" - +INCLUDE "engine/wildmons.asm" DetermineLinkBattleResult: ; 2b930 callba UpdateEnemyMonInParty @@ -19641,7 +12750,7 @@ _ShowLinkBattleParticipants: ; 2c1b2 ld [hli], a ld [hl], $6a callba Function2c10d ; no need to callba - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call SetPalettes ld a, $e4 @@ -19967,12 +13076,12 @@ Function2c642: ; 2c642 (b:4642) call Function2c6ac ld [de], a inc de - ld a, BANK(s0_abe4) + ld a, BANK(sBackupMysteryGiftItem) call GetSRAMBank - ld a, [s0_abe4] + ld a, [sBackupMysteryGiftItem] ld [de], a inc de - ld a, [s0_abe4 + 1] + ld a, [sBackupMysteryGiftItem + 1] ld [de], a ld a, $14 ld [wca00], a @@ -20119,7 +13228,7 @@ Unknown_2c74a: ; 2c74a db DECO_BIG_SNORLAX_DOLL db DECO_BIG_ONIX_DOLL db DECO_BIG_LAPRAS_DOLL - db DECO_1D + db DECO_DOLLS db DECO_PIKACHU_DOLL db DECO_SURF_PIKACHU_DOLL db DECO_CLEFAIRY_DOLL @@ -20133,22 +13242,22 @@ Unknown_2c74a: ; 2c74a db DECO_DIGLETT_DOLL db DECO_BLUE_CARPET db DECO_YELLOW_CARPET - db DECO_0F + db DECO_POSTERS db DECO_PIKACHU_POSTER db DECO_N64 - db DECO_19 - db DECO_01 + db DECO_BIG_DOLLS + db DECO_BEDS db DECO_FEATHERY_BED db DECO_POLKADOT_BED db DECO_PIKACHU_BED - db DECO_06 + db DECO_CARPETS db DECO_RED_CARPET db DECO_GREEN_CARPET db DECO_CLEFAIRY_POSTER db DECO_ODDISH_DOLL db DECO_MAGNAPLANT db DECO_GENGAR_DOLL - db DECO_14 + db DECO_CONSOLES db DECO_PINK_BED db DECO_SQUIRTLE_DOLL db DECO_STARMIE_DOLL @@ -20235,9 +13344,9 @@ Function2c7fb: ; 2c7fb call ClearBGPalettes Function2c80a: ; 2c80a - callba Function5004f - callba Function50405 - callba Function503e0 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX ld a, $3 ld [PartyMenuActionText], a .loopback @@ -20431,7 +13540,7 @@ Function2c974: ; 2c974 (b:4974) ld a, [MenuSelection2] dec a ld b, a - ld a, [wd0e2] + ld a, [wTMHMPocketScrollPosition] add b ld b, a ld a, [wd265] @@ -20475,7 +13584,7 @@ Function2c9b1: ; 2c9b1 (b:49b1) ld a, b bit 7, a jr nz, .skip - ld hl, wd0e2 + ld hl, wTMHMPocketScrollPosition ld a, [hl] and a jp z, Function2c915 @@ -20496,7 +13605,7 @@ Function2c9b1: ; 2c9b1 (b:49b1) jr z, .loop dec b jr nz, .loop - ld hl, wd0e2 + ld hl, wTMHMPocketScrollPosition inc [hl] call Function2c9e2 jp Function2c946 @@ -20628,7 +13737,7 @@ String_2caae: ; 2caae Function2cab5: ; 2cab5 (b:4ab5) ld hl, TMsHMs - ld a, [wd0e2] + ld a, [wTMHMPocketScrollPosition] ld b, a inc b ld c, 0 @@ -20711,11 +13820,11 @@ Function2cb0c: ; 2cb0c (b:4b0c) dec a ld [hl], a ret nz - ld a, [wd0e2] + ld a, [wTMHMPocketScrollPosition] and a ret z dec a - ld [wd0e2], a + ld [wTMHMPocketScrollPosition], a ret Function2cb2a: ; 2cb2a (b:4b2a) @@ -21077,7 +14186,7 @@ rept 3 endr ld [hl], a - ld [wd0e4], a + ld [wMenuScrollPosition], a ld [CriticalHit], a ld [BattleMonSpecies], a ld [wBattleParticipantsNotFainted], a @@ -21259,7 +14368,7 @@ Function3957b: ; 3957b ld a, [hli] ld [de], a ld a, [hl] - ld [wc652], a + ld [wEnemyTrainerBaseReward], a ret ; 3959c @@ -21340,7 +14449,7 @@ endr jp [hl] .done - jp Function3991b + jp ComputeTrainerReward .cal2 ld a, BANK(sMysteryGiftTrainer) @@ -21576,18 +14685,18 @@ TrainerType4: ; 3989d jr .loop ; 3991b -Function3991b: ; 3991b (e:591b) - ld hl, hMultiplicand - 1 +ComputeTrainerReward: ; 3991b (e:591b) + ld hl, hProduct xor a rept 3 ld [hli], a endr - ld a, [wc652] ; base reward + ld a, [wEnemyTrainerBaseReward] ld [hli], a ld a, [CurPartyLevel] ld [hl], a call Multiply - ld hl, wc686 + ld hl, wBattleReward xor a ld [hli], a ld a, [hProduct + 2] @@ -21620,9 +14729,9 @@ GetTrainerName:: ; 3994c call CloseSRAM jr z, .not_cal2 - ld a, BANK(s0_abfe) + ld a, BANK(sMysteryGiftPartnerName) call GetSRAMBank - ld hl, s0_abfe + ld hl, sMysteryGiftPartnerName call CopyTrainerName jp CloseSRAM @@ -21752,690 +14861,7 @@ Function41af7: ; 41af7 INCLUDE "battle/moves/moves.asm" - -Function421d8: ; 421d8 - ld hl, EvolvableFlags - xor a - ld [hl], a - ld a, [CurPartyMon] - ld c, a - ld b, $1 - call Function42577 - -Function421e6: ; 421e6 - xor a - ld [wd268], a - dec a - ld [CurPartyMon], a - push hl - push bc - push de - ld hl, PartyCount - - push hl - -Function421f5: ; 421f5 - ld hl, CurPartyMon - inc [hl] - - pop hl - - inc hl - ld a, [hl] - cp $ff - jp z, Function423ff - - ld [Buffer1], a - - push hl - ld a, [CurPartyMon] - ld c, a - ld hl, EvolvableFlags - ld b, 2 - call Function42577 - ld a, c - and a - jp z, Function421f5 - - ld a, [Buffer1] - dec a - ld b, 0 - ld c, a - ld hl, EvosAttacksPointers -rept 2 - add hl, bc -endr - ld a, [hli] - ld h, [hl] - ld l, a - - push hl - xor a - ld [MonType], a - predef CopyPkmnToTempMon - pop hl - -.asm_42230 - ld a, [hli] - and a - jr z, Function421f5 - - ld b, a - - cp EVOLVE_TRADE - jr z, .trade - - ld a, [wLinkMode] - and a - jp nz, .asm_423f9 - - ld a, b - cp EVOLVE_ITEM - jp z, .item - - ld a, [wd1e9] - and a - jp nz, .asm_423f9 - - ld a, b - cp EVOLVE_LEVEL - jp z, .level - - cp EVOLVE_HAPPINESS - jr z, .happiness - - -; EVOLVE_STAT - ld a, [TempMonLevel] - cp [hl] - jp c, .asm_423f8 - - call Function42461 - jp z, .asm_423f8 - - push hl - ld de, TempMonAttack - ld hl, TempMonDefense - ld c, 2 - call StringCmp - ld a, ATK_EQ_DEF - jr z, .asm_4227a - ld a, ATK_LT_DEF - jr c, .asm_4227a - ld a, ATK_GT_DEF -.asm_4227a - pop hl - - inc hl - cp [hl] - jp nz, .asm_423f9 - - inc hl - jr .asm_422fd - - -.happiness - ld a, [TempMonHappiness] - cp 220 - jp c, .asm_423f9 - - call Function42461 - jp z, .asm_423f9 - - ld a, [hli] - cp TR_ANYTIME - jr z, .asm_422fd - cp TR_MORNDAY - jr z, .asm_422a4 - -; TR_NITE - ld a, [TimeOfDay] - cp NITE - jp nz, .asm_423fa - jr .asm_422fd - -.asm_422a4 - ld a, [TimeOfDay] - cp NITE - jp z, .asm_423fa - jr .asm_422fd - - -.trade - ld a, [wLinkMode] - and a - jp z, .asm_423f9 - - call Function42461 - jp z, .asm_423f9 - - ld a, [hli] - ld b, a - inc a - jr z, .asm_422fd - - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jp z, .asm_423fa - - ld a, [TempMonItem] - cp b - jp nz, .asm_423fa - - xor a - ld [TempMonItem], a - jr .asm_422fd - - -.item - ld a, [hli] - ld b, a - ld a, [CurItem] - cp b - jp nz, .asm_423fa - - ld a, [wd1e9] - and a - jp z, .asm_423fa - ld a, [wLinkMode] - and a - jp nz, .asm_423fa - jr .asm_422fd - - -.level - ld a, [hli] - ld b, a - ld a, [TempMonLevel] - cp b - jp c, .asm_423fa - call Function42461 - jp z, .asm_423fa - -.asm_422fd - ld a, [TempMonLevel] - ld [CurPartyLevel], a - ld a, $1 - ld [wd268], a - - push hl - - ld a, [hl] - ld [Buffer2], a - ld a, [CurPartyMon] - ld hl, PartyMonNicknames - call GetNick - call CopyName1 - ld hl, UnknownText_0x42482 - call PrintText - - ld c, 50 - call DelayFrames - - xor a - ld [hBGMapMode], a - hlcoord 0, 0 - lb bc, 12, 20 - call ClearBox - - ld a, $1 - ld [hBGMapMode], a - call ClearSprites - - callba EvolutionAnimation - - push af - call ClearSprites - pop af - jp c, Function42454 - - ld hl, UnknownText_0x42473 - call PrintText - - pop hl - - ld a, [hl] - ld [CurSpecies], a - ld [TempMonSpecies], a - ld [Buffer2], a - ld [wd265], a - call GetPokemonName - - push hl - ld hl, UnknownText_0x42478 - call PrintTextBoxText - callba MobileFn_106094 - - ld de, MUSIC_NONE - call PlayMusic - ld de, SFX_CAUGHT_MON - call PlaySFX - call WaitSFX - - ld c, 40 - call DelayFrames - - call ClearTileMap - call Function42414 - call GetBaseData - - ld hl, TempMonExp + 2 - ld de, TempMonMaxHP - ld b, $1 - predef CalcPkmnStats - - ld a, [CurPartyMon] - ld hl, PartyMons - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld e, l - ld d, h - ld bc, MON_MAXHP - add hl, bc - ld a, [hli] - ld b, a - ld c, [hl] - ld hl, TempMonMaxHP + 1 - ld a, [hld] - sub c - ld c, a - ld a, [hl] - sbc b - ld b, a - ld hl, TempMonHP + 1 - ld a, [hl] - add c - ld [hld], a - ld a, [hl] - adc b - ld [hl], a - - ld hl, TempMonSpecies - ld bc, PARTYMON_STRUCT_LENGTH - call CopyBytes - - ld a, [CurSpecies] - ld [wd265], a - xor a - ld [MonType], a - call LearnLevelMoves - ld a, [wd265] - dec a - call SetSeenAndCaughtMon - - ld a, [wd265] - cp UNOWN - jr nz, .asm_423ec - - ld hl, TempMonDVs - predef GetUnownLetter - callab Functionfba18 - -.asm_423ec - pop de - pop hl - ld a, [TempMonSpecies] - ld [hl], a - push hl - ld l, e - ld h, d - jp Function421f5 -; 423f8 - -.asm_423f8 - inc hl -.asm_423f9 - inc hl -.asm_423fa - inc hl - jp .asm_42230 -; 423fe - -Function423fe: ; 423fe - pop hl - -Function423ff: ; 423ff - pop de - pop bc - pop hl - ld a, [wLinkMode] - and a - ret nz - ld a, [wBattleMode] - and a - ret nz - ld a, [wd268] - and a - call nz, RestartMapMusic - ret -; 42414 - -Function42414: ; 42414 - ld a, [CurSpecies] - push af - ld a, [BaseDexNo] - ld [wd265], a - call GetPokemonName - pop af - ld [CurSpecies], a - ld hl, StringBuffer1 - ld de, StringBuffer2 -.asm_4242b - ld a, [de] - inc de - cp [hl] - inc hl - ret nz - cp "@" - jr nz, .asm_4242b - ld a, [CurPartyMon] - ld bc, PKMN_NAME_LENGTH - ld hl, PartyMonNicknames - call AddNTimes - push hl - ld a, [CurSpecies] - ld [wd265], a - call GetPokemonName - ld hl, StringBuffer1 - pop de - ld bc, PKMN_NAME_LENGTH - jp CopyBytes -; 42454 - -Function42454: ; 42454 - ld hl, UnknownText_0x4247d - call PrintText - call ClearTileMap - pop hl - jp Function421f5 -; 42461 - -Function42461: ; 42461 - push hl - ld a, [CurPartyMon] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld a, [hl] - cp EVERSTONE - pop hl - ret -; 42473 - -UnknownText_0x42473: ; 0x42473 - ; Congratulations! Your @ @ - text_jump UnknownText_0x1c4b92 - db "@" -; 0x42478 - -UnknownText_0x42478: ; 0x42478 - ; evolved into @ ! - text_jump UnknownText_0x1c4baf - db "@" -; 0x4247d - -UnknownText_0x4247d: ; 0x4247d - ; Huh? @ stopped evolving! - text_jump UnknownText_0x1c4bc5 - db "@" -; 0x42482 - -UnknownText_0x42482: ; 0x42482 - ; What? @ is evolving! - text_jump UnknownText_0x1c4be3 - db "@" -; 0x42487 - - -LearnLevelMoves: ; 42487 - ld a, [wd265] - ld [CurPartySpecies], a - dec a - ld b, 0 - ld c, a - ld hl, EvosAttacksPointers -rept 2 - add hl, bc -endr - ld a, [hli] - ld h, [hl] - ld l, a - -.skip_evos - ld a, [hli] - and a - jr nz, .skip_evos - -.find_move - ld a, [hli] - and a - jr z, .done - - ld b, a - ld a, [CurPartyLevel] - cp b - ld a, [hli] - jr nz, .find_move - - push hl - ld d, a - ld hl, PartyMon1Moves - ld a, [CurPartyMon] - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - - ld b, NUM_MOVES -.check_move - ld a, [hli] - cp d - jr z, .has_move - dec b - jr nz, .check_move - jr .learn -.has_move - - pop hl - jr .find_move - -.learn - ld a, d - ld [wd262], a - ld [wd265], a - call GetMoveName - call CopyName1 - predef LearnMove - pop hl - jr .find_move - -.done - ld a, [CurPartySpecies] - ld [wd265], a - ret -; 424e1 - - -FillMoves: ; 424e1 -; Fill in moves at de for CurPartySpecies at CurPartyLevel - - push hl - push de - push bc - ld hl, EvosAttacksPointers - ld b, 0 - ld a, [CurPartySpecies] - dec a - add a - rl b - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a -.GoToAttacks - ld a, [hli] - and a - jr nz, .GoToAttacks - jr .GetLevel - -.NextMove - pop de -.GetMove - inc hl -.GetLevel - ld a, [hli] - and a - jp z, .done - ld b, a - ld a, [CurPartyLevel] - cp b - jp c, .done - ld a, [Buffer1] - and a - jr z, .CheckMove - ld a, [wd002] - cp b - jr nc, .GetMove - -.CheckMove - push de - ld c, NUM_MOVES -.CheckRepeat - ld a, [de] - inc de - cp [hl] - jr z, .NextMove - dec c - jr nz, .CheckRepeat - pop de - push de - ld c, NUM_MOVES -.CheckSlot - ld a, [de] - and a - jr z, .LearnMove - inc de - dec c - jr nz, .CheckSlot - pop de - push de - push hl - ld h, d - ld l, e - call ShiftMoves - ld a, [Buffer1] - and a - jr z, .ShiftedMove - push de - ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES - 1) - add hl, bc - ld d, h - ld e, l - call ShiftMoves - pop de - -.ShiftedMove - pop hl - -.LearnMove - ld a, [hl] - ld [de], a - ld a, [Buffer1] - and a - jr z, .NextMove - push hl - ld a, [hl] - ld hl, MON_PP - MON_MOVES - add hl, de - push hl - dec a - ld hl, Moves + MOVE_PP - ld bc, MOVE_LENGTH - call AddNTimes - ld a, BANK(Moves) - call GetFarByte - pop hl - ld [hl], a - pop hl - jr .NextMove - -.done - pop bc - pop de - pop hl - ret -; 4256e - -ShiftMoves: ; 4256e - ld c, NUM_MOVES - 1 -.loop - inc de - ld a, [de] - ld [hli], a - dec c - jr nz, .loop - ret -; 42577 - - -Function42577: ; 42577 - push de - ld d, $0 - predef FlagPredef - pop de - ret -; 42581 - -GetPreEvolution: ; 42581 -; Find the first mon to evolve into CurPartySpecies. - -; Return carry and the new species in CurPartySpecies -; if a pre-evolution is found. - - ld c, 0 -.loop ; For each Pokemon... - ld hl, EvosAttacksPointers - ld b, 0 -rept 2 - add hl, bc -endr - ld a, [hli] - ld h, [hl] - ld l, a -.loop2 ; For each evolution... - ld a, [hli] - and a - jr z, .no_evolve ; If we jump, this Pokemon does not evolve into CurPartySpecies. - cp EVOLVE_STAT ; This evolution type has the extra parameter of stat comparison. - jr nz, .not_tyrogue - inc hl - -.not_tyrogue - inc hl - ld a, [CurPartySpecies] - cp [hl] - jr z, .found_preevo - inc hl - ld a, [hl] - and a - jr nz, .loop2 - -.no_evolve - inc c - ld a, c - cp NUM_POKEMON - jr c, .loop - and a - ret - -.found_preevo - inc c - ld a, c - ld [CurPartySpecies], a - scf - ret -; 425b1 - - +INCLUDE "engine/evolve.asm" SECTION "bank11", ROMX, BANK[$11] @@ -22955,590 +15381,7 @@ endr PokedexDataPointerTable: ; 0x44378 INCLUDE "data/pokedex/entry_pointers.asm" - -Function4456e: ; 4456e - ld a, MON_ITEM - call GetPartyParamLocation - ld d, [hl] - callba ItemIsMail - jr nc, .asm_445be - call Function44648 - cp $a - jr nc, .asm_445be - ld bc, SCRATCHMON_STRUCT_LENGTH - ld hl, s0_a835 - call AddNTimes - ld d, h - ld e, l - ld a, [CurPartyMon] - ld bc, SCRATCHMON_STRUCT_LENGTH - ld hl, sPartyScratch1 - call AddNTimes - push hl - ld a, BANK(s0_a834) - call GetSRAMBank - ld bc, SCRATCHMON_STRUCT_LENGTH - call CopyBytes - pop hl - xor a - ld bc, SCRATCHMON_STRUCT_LENGTH - call ByteFill - ld a, MON_ITEM - call GetPartyParamLocation - ld [hl], $0 - ld hl, s0_a834 - inc [hl] - call CloseSRAM - xor a - ret - -.asm_445be - scf - ret -; 445c0 - -Function445c0: ; 445c0 (11:45c0) - ld a, BANK(s0_a834) - call GetSRAMBank - ld a, b - push bc - ld hl, s0_a835 - ld bc, SCRATCHMON_STRUCT_LENGTH - call AddNTimes - push hl - add hl, bc - pop de - pop bc -.loop - ld a, b - cp $9 - jr z, .done - push bc - ld bc, SCRATCHMON_STRUCT_LENGTH - call CopyBytes - pop bc - inc b - jr .loop -.done - ld h, d - ld l, e - xor a - ld bc, SCRATCHMON_STRUCT_LENGTH - call ByteFill - ld hl, s0_a834 - dec [hl] - jp CloseSRAM -; 445f4 (11:45f4) - -ReadMailMessage: ; 445f4 - ld a, b - ld hl, s0_a835 - ld bc, SCRATCHMON_STRUCT_LENGTH - call AddNTimes - ld d, h - ld e, l - callba ReadAnyMail - ret - -Function44607: ; 44607 - ld a, BANK(s0_a834) - call GetSRAMBank - push bc - ld a, b - ld bc, SCRATCHMON_STRUCT_LENGTH - ld hl, s0_a835 - call AddNTimes - push hl - ld a, [CurPartyMon] - ld bc, SCRATCHMON_STRUCT_LENGTH - ld hl, sPartyScratch1 - call AddNTimes - ld d, h - ld e, l - pop hl - push hl - ld bc, SCRATCHMON_STRUCT_LENGTH - call CopyBytes - pop hl - ld de, PARTYMON_STRUCT_LENGTH - MON_MOVES - add hl, de - ld d, [hl] - ld a, [CurPartyMon] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld [hl], d - call CloseSRAM - pop bc - jp Function445c0 -; 44648 (11:4648) - -Function44648: ; 44648 - ld a, BANK(s0_a834) - call GetSRAMBank - ld a, [s0_a834] - ld c, a - jp CloseSRAM -; 44654 - -Function44654:: ; 44654 - push bc - push de - callba SelectMonFromParty - ld a, $2 - jr c, .asm_446c6 - ld a, [CurPartyMon] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld d, [hl] - callba ItemIsMail - ld a, $3 - jr nc, .asm_446c6 - ld a, BANK(sPartyScratch1) - call GetSRAMBank - ld a, [CurPartyMon] - ld hl, sPartyScratch1 - ld bc, SCRATCHMON_STRUCT_LENGTH - call AddNTimes - ld d, h - ld e, l - pop hl - pop bc - - ld a, $20 - ld [wd265], a -.asm_44691 - ld a, [de] - ld c, a - ld a, b - call GetFarByte - cp "@" - jr z, .asm_446ab - cp c - ld a, $0 - jr nz, .asm_446c1 - inc hl - inc de - ld a, [wd265] - dec a - ld [wd265], a - jr nz, .asm_44691 - -.asm_446ab - callba CheckCurPartyMonFainted - ld a, $4 - jr c, .asm_446c1 - xor a - ld [wPokemonWithdrawDepositParameter], a - callba Functione039 - ld a, $1 - -.asm_446c1 - call CloseSRAM - jr .asm_446c8 - -.asm_446c6 - pop de - pop bc - -.asm_446c8 - ld [ScriptVar], a - ret -; 446cc - -GivePokeItem:: ; 446cc - ld a, [PartyCount] - dec a - push af - push bc - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - pop bc - ld [hl], b - pop af - push bc - push af - ld hl, sPartyScratch1 - ld bc, $2f - call AddNTimes - ld d, h - ld e, l - ld hl, wd002 - ld bc, $21 - ld a, BANK(sPartyScratch1) - call GetSRAMBank - call CopyBytes - pop af - push af - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call AddNTimes - ld bc, $a - call CopyBytes - pop af - ld hl, PartyMon1ID - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - inc de - ld a, [CurPartySpecies] - ld [de], a - inc de - pop bc - ld a, b - ld [de], a - jp CloseSRAM -; 44725 - - -BackupScratchmons: ; 44725 - ld a, BANK(sPartyScratch1) - call GetSRAMBank - ld hl, sPartyScratch1 - ld de, sPartyScratch2 - ld bc, 6 * SCRATCHMON_STRUCT_LENGTH - call CopyBytes - ld hl, s0_a834 - ld de, s0_aa0b - ld bc, 1 + 10 * SCRATCHMON_STRUCT_LENGTH - call CopyBytes - jp CloseSRAM -; 44745 - -RestoreScratchmons: ; 44745 (11:4745) - ld a, BANK(sPartyScratch1) - call GetSRAMBank - ld hl, sPartyScratch2 - ld de, sPartyScratch1 - ld bc, 6 * SCRATCHMON_STRUCT_LENGTH - call CopyBytes - ld hl, s0_aa0b - ld de, s0_a834 - ld bc, 1 + 10 * SCRATCHMON_STRUCT_LENGTH - call CopyBytes - jp CloseSRAM - -DeleteScratchmons: ; 44765 (11:4765) - ld a, BANK(sPartyScratch1) - call GetSRAMBank - xor a - ld hl, sPartyScratch1 - ld bc, 6 * SCRATCHMON_STRUCT_LENGTH - call ByteFill - xor a - ld hl, s0_a834 - ld bc, 1 + 10 * SCRATCHMON_STRUCT_LENGTH - call ByteFill - jp CloseSRAM -; 44781 (11:4781) - - -Function44781: ; 44781 - ld a, [PartyCount] - and a - jr z, .asm_4479e - ld e, a - ld hl, PartyMon1Item -.asm_4478b - ld d, [hl] - push hl - push de - callba ItemIsMail - pop de - pop hl - ret c - ld bc, PARTYMON_STRUCT_LENGTH - add hl, bc - dec e - jr nz, .asm_4478b - -.asm_4479e - and a - ret -; 447a0 - -_KrisMailBoxMenu: ; 0x447a0 - call InitMail - jr z, .nomail - call LoadStandardMenuDataHeader - call Function44806 - jp WriteBackup - -.nomail - ld hl, .EmptyMailboxText - jp MenuTextBoxBackup -; 0x447b4 - -.EmptyMailboxText ; 0x447b4 - text_jump _EmptyMailboxText - db "@" - -InitMail: ; 0x447b9 -; initialize wd0f2 and beyond with incrementing values, one per mail -; set z if no mail - ld a, BANK(s0_a834) - call GetSRAMBank - ld a, [s0_a834] - call CloseSRAM - ld hl, wd0f2 - ld [hli], a - and a - - jr z, .done ; if no mail, we're done - - ; load values in memory with incrementing values starting at wd0f2 - ld b, a - ld a, $1 -.loop - ld [hli], a - inc a - dec b - jr nz, .loop -.done - ld [hl], $ff ; terminate - - ld a, [wd0f2] - and a - ret -; 0x447da - -Function447da: ; 0x447da - dec a - ld hl, s0_a835 + MON_HP - 1 - ld bc, SCRATCHMON_STRUCT_LENGTH - call AddNTimes - ld a, BANK(s0_a834) - call GetSRAMBank - ld de, StringBuffer2 - push de - ld bc, NAME_LENGTH - 1 - call CopyBytes - ld a, "@" - ld [de], a - call CloseSRAM - pop de - ret -; 0x447fb - -Function447fb: ; 0x447fb - push de - ld a, [MenuSelection] - call Function447da - pop hl - jp PlaceString -; 0x44806 - -Function44806: ; 0x44806 - xor a - ld [OBPals + 8 * 6], a - ld a, $1 - ld [wd0f1], a -.asm_4480f - call InitMail - ld hl, MenuData4494c - call CopyMenuDataHeader - xor a - ld [hBGMapMode], a - call Function352f - call UpdateSprites - ld a, [wd0f1] - ld [wMenuCursorBuffer], a - ld a, [OBPals + 8 * 6] - ld [wd0e4], a - call HandleScrollingMenu - ld a, [wd0e4] - ld [OBPals + 8 * 6], a - ld a, [MenuSelection2] - ld [wd0f1], a - ld a, [wcf73] - cp $2 - jr z, .asm_44848 - call Function4484a - jr .asm_4480f - -.asm_44848 - xor a - ret -; 0x4484a - -Function4484a: ; 0x4484a - ld hl, MenuData44964 - call LoadMenuDataHeader - call InterpretMenu2 - call ExitMenu - jr c, .asm_44860 - ld a, [MenuSelection2] - dec a - ld hl, .JumpTable - rst JumpTable - -.asm_44860 - ret -; 0x44861 - -.JumpTable - dw .ReadMail - dw .PutInPack - dw .AttachMail - dw .Cancel - -.ReadMail ; 0x44869 - call FadeToMenu - ld a, [MenuSelection] - dec a - ld b, a - call ReadMailMessage - jp Function2b3c -; 0x44877 - -.PutInPack ; 0x44877 - ld hl, .MessageLostText - call MenuTextBox - call YesNoBox - call ExitMenu - ret c - ld a, [MenuSelection] - dec a - call .Function448bb - ld a, $1 - ld [wItemQuantityChangeBuffer], a - ld hl, NumItems - call ReceiveItem - jr c, .asm_4489e - ld hl, .PackFullText - jp MenuTextBoxBackup - -.asm_4489e - ld a, [MenuSelection] - dec a - ld b, a - call Function445c0 - ld hl, .PutAwayText - jp MenuTextBoxBackup -; 0x448ac - -.PutAwayText ; 0x448ac - text_jump ClearedMailPutAwayText - db "@" - -.PackFullText ; 0x448b1 - text_jump MailPackFullText - db "@" - -.MessageLostText ; 0x448b6 - text_jump MailMessageLostText - db "@" - -.Function448bb: ; 0x448bb - push af - ld a, BANK(s0_a834) - call GetSRAMBank - pop af - ld hl, s0_a835 + $2e - ld bc, $2f - call AddNTimes - ld a, [hl] - ld [CurItem], a - jp CloseSRAM -; 0x448d2 - -.AttachMail ; 0x448d2 - call FadeToMenu - xor a - ld [PartyMenuActionText], a - call ClearBGPalettes -.asm_448dc - callba Function5004f - callba Function50405 - callba Function503e0 - callba WritePartyMenuTilemap - callba PrintPartyMenuText - call WaitBGMap - call SetPalettes - call DelayFrame - callba PartyMenuSelect - jr c, .asm_44939 - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_44923 - ld a, MON_ITEM - call GetPartyParamLocation - ld a, [hl] - and a - jr z, .asm_4492b - ld hl, .HoldingMailText - call PrintText - jr .asm_448dc - -.asm_44923 - ld hl, .EggText - call PrintText - jr .asm_448dc - -.asm_4492b - ld a, [MenuSelection] - dec a - ld b, a - call Function44607 - ld hl, .MailMovedText - call PrintText - -.asm_44939 - jp Function2b3c -; 0x4493c - -.HoldingMailText ; 0x4493c - text_jump MailAlreadyHoldingItemText - db "@" - -.EggText ; 0x44941 - text_jump MailEggText - db "@" - -.MailMovedText ; 0x44946 - text_jump MailMovedFromBoxText - db "@" - -.Cancel - ret - -MenuData4494c: ; 0x4494c - db %01000000 ; flags - db 1, 8 ; start coords - db $a, $12 ; end coords - dw .MenuData2 - db 1 ; default option - -.MenuData2 - db %00010000 ; flags - db 4, 0 ; rows/columns? - db 1 ; horizontal spacing? - dbw 0,wd0f2 ; text pointer - dba Function447fb - dbw 0,0 - dbw 0,0 - -MenuData44964: ; 0x44964 - db %01000000 ; flags - db 0, 0 ; start coords - db 9, $d ; end coords - dw .MenuData2 - db 1 ; default option - -.MenuData2 - db %10000000 ; flags - db 4 ; items - db "READ MAIL@" - db "PUT IN PACK@" - db "ATTACH MAIL@" - db "CANCEL@" - +INCLUDE "engine/mail.asm" SECTION "bank12", ROMX, BANK[$12] @@ -23554,7 +15397,7 @@ Function48000: ; 48000 ld [wd478], a ld [wd002], a ld [wd003], a - ; could have done "ld a, [wd479] \ and -4", saved four operations + ; could have done "ld a, [wd479] \ and %11111100", saved four operations ld a, [wd479] res 0, a ld [wd479], a @@ -23564,1836 +15407,7 @@ Function48000: ; 48000 ret ; 4802f - -Function4802f: ; 4802f (12:402f) - xor a - set 6, a - ld [wd002], a - ld hl, wd003 - set 0, [hl] - ld a, c - and a - call z, Function48000 - call ClearBGPalettes - call Function48d3d - ld a, [wd479] - bit 1, a - jr z, .asm_4805a - ld a, [wd003] - set 0, a - set 1, a - set 2, a - set 3, a - ld [wd003], a -.asm_4805a - call Function486bf - call LoadFontsExtra - ld de, GFX_488c3 - ld hl, VTiles2 tile $10 - lb bc, BANK(GFX_488c3), 1 - call Request1bpp - ld de, GFX_488cb - ld hl, VTiles2 tile $11 - lb bc, BANK(GFX_488cb), 1 - call Request1bpp - call Function4a3a7 - call ClearBGPalettes - ld a, [wd002] - bit 6, a - jr z, .asm_4808a - call Function48689 - jr .asm_480d7 -.asm_4808a - ld a, $5 - ld [MusicFade], a - ld a, MUSIC_MOBILE_ADAPTER_MENU % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_MOBILE_ADAPTER_MENU / $100 - ld [MusicFadeIDHi], a - ld c, 20 - call DelayFrames - ld b, $1 - call Function4930f - call ClearBGPalettes - hlcoord 0, 0 - ld b, $2 - ld c, $14 - call ClearBox - hlcoord 0, 1 - ld a, $c - ld [hl], a - ld bc, $13 - add hl, bc - ld [hl], a - ld de, MobileProfileString - hlcoord 1, 1 - call PlaceString - hlcoord 0, 2 - ld b, $a - ld c, $12 - call Function48cdc - hlcoord 2, 4 - ld de, String_48482 - call PlaceString -.asm_480d7 - hlcoord 2, 6 - ld de, String_48489 - call PlaceString - hlcoord 2, 8 - ld de, String_4848d - call PlaceString - hlcoord 2, 10 - ld de, String_48495 - call PlaceString - hlcoord 2, 12 - ld de, String_4849e - call PlaceString - ld a, [wd002] - bit 6, a - jr nz, .asm_48113 - ld a, [PlayerGender] - ld hl, Strings_484fb - call GetNthString - ld d, h - ld e, l - hlcoord 11, 4 - call PlaceString -.asm_48113 - hlcoord 11, 6 - call Function487ec - ld a, [wd474] - dec a - ld hl, Prefectures - call GetNthString - ld d, h - ld e, l - hlcoord 11, 8 - call PlaceString - hlcoord 11, 10 - call Function489ea - hlcoord 0, 14 - ld b, $2 - ld c, $12 - call TextBox - hlcoord 1, 16 - ld de, String_48275 - call PlaceString - call Function48187 - call Function3200 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr asm_4815f - -Function48157: ; 48157 (12:4157) - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -asm_4815f: ; 4815f (12:415f) - bit 0, a - jp nz, Function4820d - ld b, a - ld a, [wd002] - bit 6, a - jr z, .asm_48177 - ld hl, wd479 - bit 1, [hl] - jr z, .asm_48177 - bit 1, b - jr nz, .asm_4817a -.asm_48177 - jp Function48272 -.asm_4817a - call ClearBGPalettes - call Function48d30 - pop bc - call ClearTileMap - ld a, $ff - ret - -Function48187: ; 48187 (12:4187) - ld a, [wd479] - bit 1, a - jr nz, .asm_481f1 - ld a, [wd003] - ld d, a - call Function48725 - jr c, .asm_481a2 - lb bc, 1, 4 - hlcoord 2, 12 - call ClearBox - jr .asm_481ad -.asm_481a2 - push de - hlcoord 2, 12 - ld de, String_4849e - call PlaceString - pop de -.asm_481ad - ld a, [wd002] - bit 6, a - jr nz, .asm_481c1 - bit 0, d - jr nz, .asm_481c1 - lb bc, 1, 8 - hlcoord 11, 4 - call ClearBox -.asm_481c1 - bit 1, d - jr nz, .asm_481ce - lb bc, 1, 8 - hlcoord 11, 6 - call ClearBox -.asm_481ce - bit 2, d - jr nz, .asm_481db - lb bc, 2, 8 - hlcoord 11, 7 - call ClearBox -.asm_481db - bit 3, d - jr nz, .asm_481f1 - ld a, [wd479] - bit 0, a - jr nz, .asm_481f8 - lb bc, 1, 8 - hlcoord 11, 10 - call ClearBox - jr .asm_48201 -.asm_481f1 - ld a, [wd479] - bit 0, a - jr nz, .asm_48201 -.asm_481f8 - hlcoord 11, 10 - ld de, String_48202 - call PlaceString -.asm_48201 - ret -; 48202 (12:4202) - -String_48202: ; 48202 - db "Tell Later@" -; 4820d - -Function4820d: ; 4820d (12:420d) - call Function1bee - ld hl, MenuSelection2 - ld a, [hl] - push af - ld a, [wd002] - bit 6, a - jr z, .asm_4821f - pop af - inc a - push af -.asm_4821f - pop af - cp $1 - jr z, asm_4828d - cp $2 - jp z, Function4876f - cp $3 - jp z, Function48304 - cp $4 - jp z, Function488d3 - ld a, $2 - call Function1ff8 - ld a, [wd002] - bit 6, a - jr z, .asm_4825c - jr .asm_4825c -; 48241 (12:4241) - - hlcoord 1, 15 - ld b, $2 - ld c, $12 - call ClearBox - ld de, String_484a1 - hlcoord 1, 16 - call PlaceString - call WaitBGMap - ld c, 48 - call DelayFrames - -.asm_4825c - call ClearBGPalettes - call Function48d30 - pop bc - call ClearTileMap - ld b, $8 - call GetSGBLayout - ld hl, wd479 - set 1, [hl] - xor a - ret - -Function48272: ; 48272 (12:4272) - jp Function4840c -; 48275 (12:4275) - -String_48275: ; 48275 - db "Personal Info@" -; 48283 - -Function48283: ; 48283 (12:4283) - lb bc, 2, 18 - hlcoord 1, 15 - call ClearBox - ret - -asm_4828d: ; 4828d (12:428d) - call Function48283 - hlcoord 1, 16 - ld de, String_484b1 - call PlaceString - ld hl, MenuDataHeader_0x484f1 - call LoadMenuDataHeader - call Function4873c - hlcoord 11, 2 - ld b, $4 - ld c, $7 - call Function48cdc - hlcoord 13, 4 - ld de, String_484fb - call PlaceString - hlcoord 13, 6 - ld de, String_484ff - call PlaceString - call WaitBGMap - ld a, [PlayerGender] - inc a - ld [wMenuCursorBuffer], a - call Function1bc9 - call PlayClickSFX - call ExitMenu - bit 0, a - jp z, Function4840c - ld hl, MenuSelection2 - ld a, [hl] - ld hl, Strings_484fb - cp $1 - jr z, .asm_482ed -.asm_482e1 - ld a, [hli] - cp $50 - jr nz, .asm_482e1 - ld a, $1 - ld [PlayerGender], a - jr .asm_482f1 -.asm_482ed - xor a - ld [PlayerGender], a -.asm_482f1 - ld d, h - ld e, l - hlcoord 11, 4 - call PlaceString - ld a, [wd003] - set 0, a - ld [wd003], a - jp Function4840c - -Function48304: ; 48304 (12:4304) - call Function48283 - hlcoord 1, 16 - ld de, String_484cf - call PlaceString - ld hl, MenuDataHeader_0x48504 - call LoadMenuDataHeader - ld hl, MenuDataHeader_0x48513 - call LoadMenuDataHeader - hlcoord 10, 0 - ld b, $c - ld c, $8 - call Function48cdc - ld a, [wMenuCursorBuffer] - ld b, a - ld a, [wd0e4] - ld c, a - push bc - ld a, [wd474] - dec a - cp $29 - jr c, .asm_4833f - sub $29 - inc a - ld [wMenuCursorBuffer], a - ld a, $29 -.asm_4833f - ld [wd0e4], a - callba Function104148 -.asm_48348 - call HandleScrollingMenu - ld de, $629 - call Function48383 - jr c, .asm_48348 - ld d, a - pop bc - ld a, b - ld [wMenuCursorBuffer], a - ld a, c - ld [wd0e4], a - ld a, d - push af - call ExitMenu - call ExitMenu - pop af - ld a, [hJoyPressed] - bit 0, a - jr z, .asm_48377 - call Function483bb - ld a, [wd003] - set 2, a - ld [wd003], a -.asm_48377 - call Function48187 - callba Function104148 - jp Function4840c - -Function48383: ; 48383 (12:4383) - push bc - push af - bit 5, a - jr nz, .asm_48390 - bit 4, a - jr nz, .asm_4839f - and a - jr .asm_483b7 -.asm_48390 - ld a, [wd0e4] - sub d - ld [wd0e4], a - jr nc, .asm_483af - xor a - ld [wd0e4], a - jr .asm_483af -.asm_4839f - ld a, [wd0e4] - add d - ld [wd0e4], a - cp e - jr c, .asm_483af - ld a, e - ld [wd0e4], a - jr .asm_483af -.asm_483af - ld hl, MenuSelection2 - ld a, [hl] - ld [wMenuCursorBuffer], a - scf -.asm_483b7 - pop bc - ld a, b - pop bc - ret - -Function483bb: ; 483bb (12:43bb) - ld hl, wcf77 - ld a, [hl] - inc a - ld [wd474], a - dec a - ld b, a - ld hl, Prefectures -.asm_483c8 - and a - jr z, .asm_483d5 -.asm_483cb - ld a, [hli] - cp "@" - jr nz, .asm_483cb - ld a, b - dec a - ld b, a - jr .asm_483c8 -.asm_483d5 - ld d, h - ld e, l - ld b, $2 - ld c, $8 - hlcoord 11, 7 - call ClearBox - hlcoord 11, 8 - call PlaceString - ret -; 483e8 (12:43e8) - -Function483e8: ; 483e8 - push de - ld hl, Prefectures - ld a, [MenuSelection] - cp $ff - jr nz, .asm_483f8 - ld hl, Wakayama ; last string - jr .asm_48405 - -.asm_483f8 - ld d, a - and a - jr z, .asm_48405 -.asm_483fc - ld a, [hli] - cp "@" - jr nz, .asm_483fc - ld a, d - dec a - jr .asm_483f8 - -.asm_48405 - ld d, h - ld e, l - pop hl - call PlaceString - ret -; 4840c - -Function4840c: ; 4840c (12:440c) - call Function48187 - call Function48283 - hlcoord 1, 16 - ld de, String_48275 - call PlaceString - call Function486bf - pop bc - ld hl, MenuSelection2 - ld [hl], b - ld a, [wd002] - bit 6, a - jr nz, .asm_48437 - ld b, $9 - ld c, $1 - hlcoord 1, 4 - call ClearBox - jp Function48157 -.asm_48437 - ld b, $7 - ld c, $1 - hlcoord 1, 6 - call ClearBox - jp Function48157 - -Function48444: ; 48444 (12:4444) - push bc - push af - push de - push hl - ld hl, Unknown_4845d -.asm_4844b - and a - jr z, .asm_48453 -rept 2 - inc hl -endr - dec a - jr .asm_4844b -.asm_48453 - ld d, h - ld e, l - pop hl - call PlaceString - pop de - pop af - pop bc - ret -; 4845d (12:445d) - -Unknown_4845d: ; 4845d -; 4845d - db "0@" - db "1@" - db "2@" - db "3@" - db "4@" - db "5@" - db "6@" - db "7@" - db "8@" - db "9@" -; 48471 - -MobileProfileString: db " Mobile Profile@" -String_48482: db "Gender@" -String_48489: db "Age@" -String_4848d: db "Address@" -String_48495: db "Zip Code@" -String_4849e: db "OK@" -String_484a1: db "Profile Changed@" -String_484b1: db "Boy or girl?@" -String_484be: db "How old are you?@" -String_484cf: db "Where do you live?@" -String_484e2: db "Your zip code?@" -; 484f1 - -MenuDataHeader_0x484f1: ; 0x484f1 - db $40 ; flags - db 02, 11 ; start coords - db 07, 19 ; end coords - dw MenuData2_0x484f9 - db 1 ; default option -; 0x484f9 - -MenuData2_0x484f9: ; 0x484f9 - db $a0 ; flags - db 2 ; items -Strings_484fb: -String_484fb: db "Boy@" -String_484ff: db "Girl@" -; 0x48504 - -MenuDataHeader_0x48504: ; 0x48504 - db $40 ; flags - db 00, 10 ; start coords - db 17, 19 ; end coords - -MenuDataHeader_0x48509: ; 0x48509 - db $40 ; flags - db 05, 10 ; start coords - db 07, 19 ; end coords - -MenuDataHeader_0x4850e: ; 0x4850e - db $40 ; flags - db 09, 10 ; start coords - db 11, 19 ; end coords - -MenuDataHeader_0x48513: ; 0x48513 - db $40 ; flags - db 01, 11 ; start coords - db 12, 18 ; end coords - dw MenuData2_0x4851b - db 1 ; default option -; 0x4851b - -MenuData2_0x4851b: ; 0x4851b - db $1d ; flags - db 6 ; items - -Unknown_4851d: ; 4851d - db $00, $01, $12, $2b, $45, $12, $e8, $43, $00, $00, $00, $00, $00, $00, $2e, $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f, $10, $11, $12, $13, $14, $15, $16, $17, $18 - db $19, $1a, $1b, $1c, $1d, $1e, $1f, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c - db $2d, $ff - -Prefectures: -Aichi: db "あいちけん@" ; Aichi -Aomori: db "あおもりけん@" ; Aomori -Akita: db "あきたけん@" ; Akita -Ishikawa: db "いしかわけん@" ; Ishikawa -Ibaraki: db "いばらきけん@" ; Ibaraki -Iwate: db "いわてけん@" ; Iwate -Ehime: db "えひめけん@" ; Ehime -Oita: db "おおいたけん@" ; Oita -Osakafu: db "おおさかふ@" ; Osakafu -Okayama: db "おかやまけん@" ; Okayama -Okinawa: db "おきなわけん@" ; Okinawa -Kagawa: db "かがわけん@" ; Kagawa -Kagoshima: db "かごしまけん@" ; Kagoshima -Kanagawa: db "かながわけん@" ; Kanagawa -Gifu: db "ぎふけん@" ; Gifu -Kyotofu: db "きょうとふ@" ; Kyotofu -Kumamoto: db "くまもとけん@" ; Kumamoto -Gunma: db "ぐんまけん@" ; Gunma -Kochi: db "こうちけん@" ; Kochi -Saitama: db "さいたまけん@" ; Saitama -Saga: db "さがけん@" ; Saga -Shiga: db "しがけん@" ; Shiga -Shizuoka: db "しずおかけん@" ; Shizuoka -Shimane: db "しまねけん@" ; Shimane -Chiba: db "ちばけん@" ; Chiba -Tokyo: db "とうきょうと@" ; Tokyo -Tokushima: db "とくしまけん@" ; Tokushima -Tochigi: db "とちぎけん@" ; Tochigi -Tottori: db "とっとりけん@" ; Tottori -Toyama: db "とやまけん@" ; Toyama -Nagasaki: db "ながさきけん@" ; Nagasaki -Nagano: db "ながのけん@" ; Nagano -Naraken: db "ならけん@" ; Naraken -Niigata: db "にいがたけん@" ; Niigata -Hyogo: db "ひょうごけん@" ; Hyogo -Hiroshima: db "ひろしまけん@" ; Hiroshima -Fukui: db "ふくいけん@" ; Fukui -Fukuoka: db "ふくおかけん@" ; Fukuoka -Fukushima: db "ふくしまけん@" ; Fukushima -Hokkaido: db "ほっかいどう@" ; Hokkaido -Mie: db "みえけん@" ; Mie -Miyagi: db "みやぎけん@" ; Miyagi -Miyazaki: db "みやざきけん@" ; Miyazaki -Yamagata: db "やまがたけん@" ; Yamagata -Yamaguchi: db "やまぐちけん@" ; Yamaguchi -Yamanashi: db "やまなしけん@" ; Yamanashi -Wakayama: db "わかやまけん@" ; Wakayama -; 48689 - -Function48689: ; 48689 (12:4689) - ld c, 7 - call DelayFrames - ld b, $1 - call Function4930f - call ClearBGPalettes - hlcoord 0, 0 - ld b, $4 - ld c, $14 - call ClearBox - hlcoord 0, 2 - ld a, $c - ld [hl], a - ld bc, $13 - add hl, bc - ld [hl], a - ld de, MobileProfileString - hlcoord 1, 2 - call PlaceString - hlcoord 0, 4 - ld b, $8 - ld c, $12 - call Function48cdc - ret - -Function486bf: ; 486bf (12:46bf) - ld hl, wcfa1 - ld a, [wd002] - bit 6, a - jr nz, .asm_486ce - ld a, $4 - ld [hli], a - jr .asm_486d1 -.asm_486ce - ld a, $6 - ld [hli], a -.asm_486d1 - ld a, $1 - ld [hli], a - ld a, [wd002] - bit 6, a - jr nz, .asm_486e7 - call Function48725 - ld a, $4 - jr nc, .asm_486e4 - ld a, $5 -.asm_486e4 - ld [hli], a - jr .asm_486fb -.asm_486e7 - ld a, [wd479] - bit 1, a - jr nz, .asm_486f8 - call Function48725 - jr c, .asm_486f8 - ld a, $3 - ld [hli], a - jr .asm_486fb -.asm_486f8 - ld a, $4 - ld [hli], a -.asm_486fb - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - push af - ld a, [wd002] - bit 6, a - jr z, .asm_4871a - pop af - add $2 - push af -.asm_4871a - pop af - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - xor a -rept 3 - ld [hli], a -endr - ret - -Function48725: ; 48725 (12:4725) - ld a, [wd003] - bit 0, a - jr z, .asm_4873a - bit 1, a - jr z, .asm_4873a - bit 2, a - jr z, .asm_4873a - bit 3, a - jr z, .asm_4873a - scf - ret -.asm_4873a - and a - ret - -Function4873c: ; 4873c (12:473c) - ld hl, wcfa1 - ld a, $4 - ld [hli], a - ld a, $c - ld [hli], a - ld a, $2 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $2 - ld [hli], a - ld a, [PlayerGender] - and a - jr z, .asm_48764 - ld a, $2 - jr .asm_48766 -.asm_48764 - ld a, $1 -.asm_48766 - ld [hli], a - ld a, $1 - ld [hli], a - xor a -rept 3 - ld [hli], a -endr - ret - -Function4876f: ; 4876f (12:476f) - call Function48283 - hlcoord 1, 16 - ld de, String_484be - call PlaceString - ld hl, MenuDataHeader_0x48509 - call LoadMenuDataHeader - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - hlcoord 10, 5 - ld b, $1 - ld c, $8 - call Function48cdc - call WaitBGMap - ld a, [wd473] - and a - jr z, .asm_487ab - cp $64 - jr z, .asm_487b2 - hlcoord 12, 5 - ld [hl], $10 - hlcoord 12, 7 - ld [hl], $11 - jr .asm_487b7 -.asm_487ab - hlcoord 12, 5 - ld [hl], $10 - jr .asm_487b7 -.asm_487b2 - hlcoord 12, 7 - ld [hl], $11 -.asm_487b7 - hlcoord 11, 6 - call Function487ec - ld c, 10 - call DelayFrames - ld a, [wd473] - push af -.asm_487c6 - call JoyTextDelay - call Function4880e - jr nc, .asm_487c6 - ld a, $1 - call Function1ff8 - pop bc - jr nz, .asm_487da - ld a, b - ld [wd473], a -.asm_487da - ld a, [wd473] - call ExitMenu - hlcoord 11, 6 - call Function487ec - pop af - ld [hInMenu], a - jp Function4840c - -Function487ec: ; 487ec (12:47ec) - push hl - ld de, wd473 - call Function487ff - pop hl -rept 4 - inc hl -endr - ld de, String_4880d - call PlaceString - ret - -Function487ff: ; 487ff (12:47ff) - push hl - ld a, " " - ld [hli], a - ld [hl], a - pop hl - ld b, PRINTNUM_LEADINGZEROS | 1 - ld c, 3 - call PrintNum - ret -; 4880d (12:480d) - -String_4880d: ; 4880d - db "@" -; 4880e - -Function4880e: ; 4880e (12:480e) - ld a, [hJoyPressed] - and A_BUTTON - jp nz, Function488b9 - ld a, [hJoyPressed] - and B_BUTTON - jp nz, Function488b4 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_48843 - ld a, [hl] - and D_DOWN - jr nz, .asm_48838 - ld a, [hl] - and D_LEFT - jr nz, .asm_4884f - ld a, [hl] - and D_RIGHT - jr nz, .asm_4885f - call DelayFrame - and a - ret -.asm_48838 - ld hl, wd473 - ld a, [hl] - and a - jr z, .asm_48840 - dec a -.asm_48840 - ld [hl], a - jr .asm_4886f -.asm_48843 - ld hl, wd473 - ld a, [hl] - cp $64 - jr nc, .asm_4884c - inc a -.asm_4884c - ld [hl], a - jr .asm_4886f -.asm_4884f - ld a, [wd473] - cp $5b - jr c, .asm_48858 - ld a, $5a -.asm_48858 - add $a - ld [wd473], a - jr .asm_4886f -.asm_4885f - ld a, [wd473] - cp $a - jr nc, .asm_48868 - ld a, $a -.asm_48868 - sub $a - ld [wd473], a - jr .asm_4886f -.asm_4886f - ld a, [wd473] - and a - jr z, .asm_48887 - cp $64 - jr z, .asm_48898 - jr z, .asm_488a7 - hlcoord 12, 5 - ld [hl], $10 - hlcoord 12, 7 - ld [hl], $11 - jr .asm_488a7 -.asm_48887 - hlcoord 10, 5 - ld b, $1 - ld c, $8 - call Function48cdc - hlcoord 12, 5 - ld [hl], $10 - jr .asm_488a7 -.asm_48898 - hlcoord 10, 5 - ld b, $1 - ld c, $8 - call Function48cdc - hlcoord 12, 7 - ld [hl], $11 -.asm_488a7 - hlcoord 11, 6 - call Function487ec - call WaitBGMap - ld a, $1 - and a - ret - -Function488b4: ; 488b4 (12:48b4) - ld a, $0 - and a - scf - ret - -Function488b9: ; 488b9 (12:48b9) - ld a, [wd003] - set 1, a - ld [wd003], a - scf - ret -; 488c3 (12:48c3) - -GFX_488c3: ; 488c3 -INCBIN "gfx/unknown/0488c3.2bpp" - -GFX_488cb: ; 488cb -INCBIN "gfx/unknown/0488cb.2bpp" - -Function488d3: ; 488d3 (12:48d3) - call Function48283 - hlcoord 1, 16 - ld de, String_484e2 - call PlaceString - call Function48a3a - jp c, Function4840c - ld hl, MenuDataHeader_0x4850e - call LoadMenuDataHeader - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - hlcoord 10, 9 - ld b, $1 - ld c, $8 - call Function48cdc - ld a, [wd475] - and $f - ld d, $0 - hlcoord 11, 10 - call Function489ea - call WaitBGMap - ld a, [wd475] - ld b, a - ld a, [wd476] - ld c, a - ld a, [wd477] - ld d, a - ld a, [wd478] - ld e, a - push de - push bc - ld d, $0 - ld b, $0 - -asm_48922: ; 48922 (12:4922) - push bc - call JoyTextDelay - ld a, [hJoyDown] - and a - jp z, Function4896e - bit 0, a - jp nz, Function4896e - bit 1, a - jp nz, Function4896e - ld a, [wd002] - and %11001111 - res 7, a - ld [wd002], a - pop bc - inc b - ld a, b - cp $5 - push bc - jr c, .asm_4894c - pop bc - ld b, $4 - push bc -.asm_4894c - pop bc - push bc - ld a, b - cp $4 - jr nz, asm_48972 - ld c, 10 - call DelayFrames - jr asm_48972 -; 4895a (12:495a) - -Function4895a: ; 4895a - ld a, [hJoyPressed] - and a - jr z, .asm_48965 - pop bc - ld b, $1 - push bc - jr asm_48972 - -.asm_48965 - ld a, [hJoyLast] - and a - jr z, asm_48972 - - pop bc - ld b, $1 - push bc - -Function4896e: ; 4896e (12:496e) - pop bc - ld b, $0 - push bc - -asm_48972: ; 48972 (12:4972) - call Function48ab5 - push af - cp $f0 - jr z, .asm_48994 - cp $f - jr nz, .asm_48988 - ld a, [wd002] - set 7, a - and $cf - ld [wd002], a -.asm_48988 - hlcoord 11, 10 - ld b, $0 - ld c, d - add hl, bc - ld b, $3 - call Function48c11 -.asm_48994 - call WaitBGMap - pop af - pop bc - jr nc, asm_48922 - jr nz, .asm_489b1 - pop bc - ld a, b - ld [wd475], a - ld a, c - ld [wd476], a - pop bc - ld a, b - ld [wd477], a - ld a, c - ld [wd478], a - jr .asm_489c5 -.asm_489b1 - push af - ld a, [wd479] - set 0, a - ld [wd479], a - ld a, [wd003] - set 3, a - ld [wd003], a - pop af - pop bc - pop bc -.asm_489c5 - push af - push bc - push de - push hl - ld a, $1 - call Function1ff8 - pop hl - pop de - pop bc - pop af - call ExitMenu - hlcoord 11, 10 - call Function489ea - hlcoord 11, 9 - lb bc, 1, 8 - call ClearBox - pop af - ld [hInMenu], a - jp Function4840c - -Function489ea: ; 489ea (12:49ea) - push de - ld a, [wd475] - and $f - call Function48444 - ld a, [wd476] - and $f0 - swap a - inc hl - call Function48444 - ld a, [wd476] - and $f - inc hl - call Function48444 - inc hl - ld de, String_48a38 - call PlaceString - ld a, [wd477] - and $f0 - swap a - inc hl - call Function48444 - ld a, [wd477] - and $f - inc hl - call Function48444 - ld a, [wd478] - and $f0 - swap a - inc hl - call Function48444 - ld a, [wd478] - and $f - inc hl - call Function48444 - pop de - ret -; 48a38 (12:4a38) - -String_48a38: ; 48a38 - db "-@" -; 48a3a - -Function48a3a: ; 48a3a (12:4a3a) - ld hl, MenuDataHeader_0x48a9c - call LoadMenuDataHeader - call Function4873c - ld a, $a - ld [wcfa1], a - ld a, $b - ld [wcfa2], a - ld a, $1 - ld [MenuSelection2], a - hlcoord 10, 8 - ld b, $4 - ld c, $8 - call Function48cdc - hlcoord 12, 10 - ld de, String_48aa1 - call PlaceString - call Function1bc9 - push af - call PlayClickSFX - call ExitMenu - pop af - bit 1, a - jp nz, Function48a9a - ld a, [MenuSelection2] - cp $1 - jr z, .asm_48a98 - ld a, [wd003] - set 3, a - ld [wd003], a - ld a, [wd479] - res 0, a - ld [wd479], a - xor a - ld bc, $4 - ld hl, wd475 - call ByteFill - jr Function48a9a -.asm_48a98 - and a - ret - -Function48a9a: ; 48a9a (12:4a9a) - scf - ret -; 48a9c (12:4a9c) - -MenuDataHeader_0x48a9c: ; 0x48a9c - db $40 ; flags - db 08, 10 ; start coords - db 13, 19 ; end coord - -String_48aa1: ; 48aa1 - db "Tell Now" - next "Tell Later@" -; 48ab5 - - -Function48ab5: ; 48ab5 (12:4ab5) - ld a, [hJoyPressed] - and A_BUTTON - jp nz, Function48c0f - ld a, [hJoyPressed] - and B_BUTTON - jp nz, Function48c0d - ld a, d - and a - jr z, .asm_48adf - cp $1 - jr z, .asm_48ae7 - cp $2 - jr z, .asm_48af1 - cp $3 - jr z, .asm_48af9 - cp $4 - jr z, .asm_48b03 - cp $5 - jr z, .asm_48b0b - cp $6 - jr .asm_48b15 -.asm_48adf - ld hl, wd475 - ld a, [hl] - and $f - jr .asm_48b1d -.asm_48ae7 - ld hl, wd476 - ld a, [hl] - swap a - or $f0 - jr .asm_48b1d -.asm_48af1 - ld hl, wd476 - ld a, [hl] - and $f - jr .asm_48b1d -.asm_48af9 - ld hl, wd477 - ld a, [hl] - swap a - or $f0 - jr .asm_48b1d -.asm_48b03 - ld hl, wd477 - ld a, [hl] - and $f - jr .asm_48b1d -.asm_48b0b - ld hl, wd478 - ld a, [hl] - swap a - or $f0 - jr .asm_48b1d -.asm_48b15 - ld hl, wd478 - ld a, [hl] - and $f - jr .asm_48b1d -.asm_48b1d - push hl - push af - ld e, $0 - hlcoord 11, 10 - ld a, d -.asm_48b25 - and a - jr z, .asm_48b2c - inc e - dec a - jr .asm_48b25 -.asm_48b2c - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_48b8d - ld a, [hl] - and D_DOWN - jr nz, .asm_48b55 - ld a, [hl] - and D_LEFT - jp nz, Function48bd7 - ld a, [hl] - and D_RIGHT - jr nz, .asm_48b9d - hlcoord 11, 10 - call Function489ea - ld a, [wd002] - bit 7, a - jr nz, .asm_48b51 -.asm_48b51 - pop bc - pop bc - and a - ret -.asm_48b55 - pop af - ld b, a - and $f - and a - ld a, b - jr nz, .asm_48b61 - and $f0 - add $a -.asm_48b61 - dec a -.asm_48b62 - push de - push af - hlcoord 10, 9 - ld b, $1 - ld c, $8 - call Function48cdc - pop af - pop de - hlcoord 11, 10 - ld b, a - ld a, d - cp $3 - jr c, .asm_48b7a - inc hl -.asm_48b7a - ld a, b - pop hl - bit 7, a - jr z, .asm_48b85 - call Function48c4d - jr .asm_48b88 -.asm_48b85 - call Function48c5a -.asm_48b88 - ld a, $f0 - jp Function48c00 -.asm_48b8d - pop af - ld b, a - and $f - cp $9 - ld a, b - jr c, .asm_48b9a - and $f0 - add $ff -.asm_48b9a - inc a - jr .asm_48b62 -.asm_48b9d - push de - hlcoord 10, 9 - ld b, $1 - ld c, $8 - call Function48cdc - pop de - ld a, d - cp $6 - jr nc, .asm_48baf - inc d -.asm_48baf - pop af - pop hl - ld b, a - ld a, d - cp $6 - ld a, b - jr z, .asm_48bc4 - bit 7, a - jr nz, .asm_48bc4 - inc hl - ld a, [hl] - swap a - and $f - jr asm_48bc7 -.asm_48bc4 - ld a, [hl] - and $f - -asm_48bc7: ; 48bc7 (12:4bc7) - hlcoord 11, 10 - push af - ld a, d - cp $3 - pop bc - ld a, b - jr c, .asm_48bd3 - inc hl -.asm_48bd3 - ld a, $f - jr Function48c00 - -Function48bd7: ; 48bd7 (12:4bd7) - push de - hlcoord 10, 9 - ld b, $1 - ld c, $8 - call Function48cdc - pop de - ld a, d - and a - pop af - pop hl - ld b, a - ld a, d - and a - ld a, b - jr z, .asm_48bf3 - bit 7, a - jr z, .asm_48bf8 - dec d - dec hl -.asm_48bf3 - ld a, [hl] - and $f - jr asm_48bc7 -.asm_48bf8 - dec d - ld a, [hl] - swap a - and $f - jr asm_48bc7 - -Function48c00: ; 48c00 (12:4c00) - push af - hlcoord 11, 10 - call Function489ea - ld a, $1 - and a - pop bc - ld a, b - ret - -Function48c0d: ; 48c0d (12:4c0d) - xor a - and a - -Function48c0f: ; 48c0f (12:4c0f) - scf - ret - -Function48c11: ; 48c11 (12:4c11) - ld a, [wd002] - bit 7, a - jr z, .asm_48c20 - ld a, d - cp $3 - jr c, .asm_48c1e - inc hl -.asm_48c1e - ld [hl], $7f -.asm_48c20 - ld a, [wd002] - swap a - and $3 - inc a - cp b - jr nz, .asm_48c40 - ld a, [wd002] - bit 7, a - jr z, .asm_48c3a - res 7, a - ld [wd002], a - xor a - jr .asm_48c40 -.asm_48c3a - set 7, a - ld [wd002], a - xor a -.asm_48c40 - swap a - ld b, a - ld a, [wd002] - and $cf - or b - ld [wd002], a - ret - -Function48c4d: ; 48c4d (12:4c4d) - swap a - and $f0 - push af - ld a, [hl] - and $f - ld [hl], a - pop af - or [hl] - ld [hl], a - ret - -Function48c5a: ; 48c5a (12:4c5a) - push af - ld a, [hl] - and $f0 - ld [hl], a - pop af - or [hl] - ld [hl], a - ret - -Function48c63: ; 48c63 - ld a, "@" - ld [de], a - ld a, c - cp $30 - jr nc, .asm_48c8c - and a - jr z, .asm_48c8c - dec c - push de - ld h, d - ld l, e - ld a, "@" - ld b, 7 -.asm_48c76 - ld [hli], a - dec b - jr nz, .asm_48c76 - ld hl, Prefectures - ld a, c - call GetNthString -.asm_48c81 - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - cp "@" - jr nz, .asm_48c81 - and a - pop de - ret - -.asm_48c8c - scf - ret -; 48c8e - -Function48c8e: ; 48c8e - ld hl, wd02a - ld d, h - ld e, l - callba Function48c63 - hlcoord 10, 7 - call PlaceString - call WaitBGMap - ret -; 48ca3 - -Function48ca3: ; 48ca3 - push af - push bc - push de - push hl - ld b, 0 - ld c, 0 - ld d, 0 -.asm_48cad - cp 100 - jr c, .asm_48cb6 - sub 100 - inc b - jr .asm_48cad - -.asm_48cb6 - cp 10 - jr c, .asm_48cbf - sub 10 - inc c - jr .asm_48cb6 - -.asm_48cbf - cp 1 - jr c, .asm_48cc7 - dec a - inc d - jr .asm_48cbf - -.asm_48cc7 - ld a, b - call Function48444 - inc hl - ld a, c - call Function48444 - inc hl - ld a, d - call Function48444 - pop hl - pop de - pop bc - pop af - ret -; 48cda - -Function48cda: ; 48cda (12:4cda) - ld h, d - ld l, e - -Function48cdc: ; 48cdc (12:4cdc) - push bc - push hl - call Function48cfd - pop hl - pop bc - ld de, AttrMap - TileMap - add hl, de -rept 2 - inc b -endr -rept 2 - inc c -endr - ld a, $0 -.asm_48ced - push bc - push hl -.asm_48cef - ld [hli], a - dec c - jr nz, .asm_48cef - pop hl - ld de, $14 - add hl, de - pop bc - dec b - jr nz, .asm_48ced - ret - -Function48cfd: ; 48cfd (12:4cfd) - push hl - ld a, $4 - ld [hli], a - inc a - call Function48d2a - inc a - ld [hl], a - pop hl - ld de, $14 - add hl, de -.asm_48d0c - push hl - ld a, $7 - ld [hli], a - ld a, $7f - call Function48d2a - ld [hl], $8 - pop hl - ld de, $14 - add hl, de - dec b - jr nz, .asm_48d0c - ld a, $9 - ld [hli], a - ld a, $a - call Function48d2a - ld [hl], $b - ret - -Function48d2a: ; 48d2a (12:4d2a) - ld d, c -.asm_48d2b - ld [hli], a - dec d - jr nz, .asm_48d2b - ret - -Function48d30: ; 48d30 (12:4d30) - ld hl, wd475 - call Function48d4a - ld hl, wd477 - call Function48d4a - ret - -Function48d3d: ; 48d3d (12:4d3d) - ld hl, wd475 - call Function48d94 - ld hl, wd477 - call Function48d94 - ret - -Function48d4a: ; 48d4a (12:4d4a) - inc hl - ld a, [hl] - ld b, a - and $f - ld c, a - srl b - srl b - srl b - srl b - push bc - ld c, 10 - ld a, b - call SimpleMultiply - pop bc - add c - ld [hld], a - xor a - ld [hMultiplicand + 0], a - ld [hMultiplicand + 1], a - ld a, [hl] - srl a - srl a - srl a - srl a - ld c, 10 - call SimpleMultiply - ld b, a - ld a, [hli] - and $f - add b - ld [hMultiplicand + 2], a - ld a, 100 - ld [hMultiplier], a - call Multiply - ld a, [hProduct + 2] - ld b, a - ld a, [hProduct + 3] - ld c, a - ld e, [hl] - add e - ld c, a - ld a, b - adc $0 - ld b, a - ld a, c - ld [hld], a - ld [hl], b - ret - -Function48d94: ; 48d94 (12:4d94) - xor a - ld [hDividend + 0], a - ld [hDividend + 1], a - ld a, [hli] - ld [hDividend + 0], a - ld a, [hl] - ld [hDividend + 1], a - ld a, 100 - ld [hDivisor], a - ld b, 2 - call Divide - ld a, [hDivisor] - ld c, $a - call SimpleDivide - sla b - sla b - sla b - sla b - or b - ld [hld], a - ld a, [hQuotient + 2] - ld c, 10 - call SimpleDivide - sla b - sla b - sla b - sla b - or b - ld [hl], a - ret +INCLUDE "misc/mobile_12.asm" InitGender: ; 48dcb (12:4dcb) call Function48e14 @@ -25461,7 +15475,7 @@ Function48e14: ; 48e14 (12:4e14) Function48e47: ; 48e47 (12:4e47) ld hl, Palette_48e5c - ld de, wMapPals + ld de, UnknBGPals ld bc, $8 ld a, $5 call FarCopyWRAM @@ -25513,12 +15527,12 @@ PackFGFX: ; 48e9b INCBIN "gfx/misc/pack_f.2bpp" ; 4925b -Function4925b: ; 4925b +Special_MoveTutor: ; 4925b call FadeToMenu call ClearBGPalettes call ClearScreen call DelayFrame - ld b, $14 + ld b, SCGB_14 call GetSGBLayout xor a ld [wItemAttributeParamBuffer], a @@ -25547,7 +15561,7 @@ Function4925b: ; 4925b ld [ScriptVar], a .asm_492a1 - call Function2b3c + call ReturnToCallingMenu ret ; 492a5 @@ -25625,17 +15639,17 @@ MenuDataHeader_0x4930a: ; 0x4930a Function4930f: ; 4930f (mobile) ld a, b - cp $ff - jr nz, .asm_49317 + cp SCGB_RAM + jr nz, .not_ram ld a, [SGBPredef] -.asm_49317 +.not_ram push af callba Function9673 pop af ld l, a ld h, 0 add hl, hl - ld de, Jumptable_49330 + ld de, .jumptable add hl, de ld a, [hli] ld h, [hl] @@ -25647,7 +15661,7 @@ Function4930f: ; 4930f (mobile) ret ; 49330 (12:5330) -Jumptable_49330: ; 49330 +.jumptable: ; 49330 dw Function4936e dw Function4942f dw Function49706 @@ -25679,15 +15693,15 @@ Function49346: ; 49346 (12:5346) ret Function49351: ; 49351 (12:5351) - ld de, wMapPals + ld de, UnknBGPals ld hl, Palette_493e1 ld bc, $28 - ld a, $5 ; BANK(wMapPals) + ld a, $5 ; BANK(UnknBGPals) call FarCopyWRAM - ld de, wMapPals + $38 + ld de, UnknBGPals + $38 ld hl, Palette_49418 ld bc, $8 - ld a, $5 ; BANK(wMapPals) + ld a, $5 ; BANK(UnknBGPals) call FarCopyWRAM ret @@ -25767,7 +15781,7 @@ Palette_493e1: ; 493e1 Function49409:: ; 49409 ld hl, Palette_49418 - ld de, wMapPals + 8 * 7 + ld de, UnknBGPals + 8 * 7 ld bc, 8 ld a, $5 call FarCopyWRAM @@ -25783,19 +15797,19 @@ Palette_49418: ; 49418 Function49420:: ; 49420 (12:5420) ld hl, MansionPalette4 - ld de, wMapPals + $30 + ld de, UnknBGPals + $30 ld bc, $8 - ld a, $5 ; BANK(wMapPals) + ld a, $5 ; BANK(UnknBGPals) call FarCopyWRAM ret ; 4942f (12:542f) Function4942f: ; 4942f call Function49351 - ld de, wMapPals + $38 + ld de, UnknBGPals + $38 ld hl, Palette_49478 ld bc, $8 - ld a, $5 ; BANK(wMapPals) + ld a, $5 ; BANK(UnknBGPals) call FarCopyWRAM call Function49346 hlcoord 0, 0, AttrMap @@ -25858,7 +15872,7 @@ Function49496: ; 49496 LoadSpecialMapPalette: ; 494ac ld a, [wTileset] - cp TILESET_GOLDENROD_POKECOM_CENTER_2F_MOBILE + cp TILESET_POKECOM_CENTER jr z, .pokecom_2f cp TILESET_BATTLE_TOWER jr z, .battle_tower @@ -25913,7 +15927,7 @@ LoadSpecialMapPalette: ; 494ac LoadPokeComPalette: ; 494f2 ld a, $5 - ld de, wMapPals + ld de, UnknBGPals ld hl, PokeComPalette ld bc, 8 palettes call FarCopyWRAM @@ -25926,7 +15940,7 @@ INCLUDE "tilesets/pokecom.pal" LoadBattleTowerPalette: ; 49541 ld a, $5 - ld de, wMapPals + ld de, UnknBGPals ld hl, BattleTowerPalette ld bc, 8 palettes call FarCopyWRAM @@ -25939,7 +15953,7 @@ INCLUDE "tilesets/battle_tower.pal" LoadIcePathPalette: ; 49590 ld a, $5 - ld de, wMapPals + ld de, UnknBGPals ld hl, IcePathPalette ld bc, 8 palettes call FarCopyWRAM @@ -25952,7 +15966,7 @@ INCLUDE "tilesets/ice_path.pal" LoadHousePalette: ; 495df ld a, $5 - ld de, wMapPals + ld de, UnknBGPals ld hl, HousePalette ld bc, 8 palettes call FarCopyWRAM @@ -25965,7 +15979,7 @@ INCLUDE "tilesets/house.pal" LoadRadioTowerPalette: ; 4962e ld a, $5 - ld de, wMapPals + ld de, UnknBGPals ld hl, RadioTowerPalette ld bc, 8 palettes call FarCopyWRAM @@ -26028,22 +16042,22 @@ MansionPalette4: ; 496bd LoadMansionPalette: ; 496c5 ld a, $5 - ld de, wMapPals + ld de, UnknBGPals ld hl, MansionPalette1 ld bc, 8 palettes call FarCopyWRAM ld a, $5 - ld de, wMapPals + 4 palettes + ld de, UnknBGPals + 4 palettes ld hl, MansionPalette2 ld bc, 1 palettes call FarCopyWRAM ld a, $5 - ld de, wMapPals + 3 palettes + ld de, UnknBGPals + 3 palettes ld hl, MansionPalette3 ld bc, 1 palettes call FarCopyWRAM ld a, $5 - ld de, wMapPals + 6 palettes + ld de, UnknBGPals + 6 palettes ld hl, MansionPalette4 ld bc, 1 palettes call FarCopyWRAM @@ -26059,7 +16073,7 @@ MansionPalette2: ; 496fe Function49706: ; 49706 ld hl, Palette_49732 - ld de, wMapPals + ld de, UnknBGPals ld bc, 1 palettes ld a, $5 call FarCopyWRAM @@ -26067,7 +16081,7 @@ Function49706: ; 49706 call Function49346 callba Function96b3 ld hl, Palette_4973a - ld de, Unkn2Pals + ld de, UnknOBPals ld bc, 1 palettes ld a, $5 call FarCopyWRAM @@ -26090,7 +16104,7 @@ Palette_4973a: ; 4973a Function49742: ; 49742 ld hl, Palette_49757 - ld de, wMapPals + ld de, UnknBGPals ld bc, $40 ld a, $5 call FarCopyWRAM @@ -26194,7 +16208,7 @@ endr Function49811: ; 49811 ld hl, Palette_49826 - ld de, wMapPals + $10 + ld de, UnknBGPals + $10 ld bc, $30 ld a, $5 call FarCopyWRAM @@ -26249,1606 +16263,8 @@ Unknown_4985a: ; unreferenced db $a8, $00, $b5, $b0, $de, $e8, $fc, $1c db $ba, $66, $f7, $0e, $ba, $5e, $43, $bd -Special_CelebiShrineEvent: ; 4989a - call DelayFrame - ld a, [VramState] - push af - xor a - ld [VramState], a - call LoadCelebiGFX - ld de, $750 - ld a, $2c - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $84 - ld hl, $2 - add hl, bc - ld [hl], $1f - ld hl, $f - add hl, bc - ld a, $80 - ld [hl], a - ld a, $a0 - ld [wcf64], a - ld d, $0 -.loop - ld a, [wJumptableIndex] - bit 7, a - jr nz, .done - push bc - call Function49bae - inc d - push de - ld a, $90 - ld [wc3b5], a - callba Function8cf7a - call Function49935 - ld c, 2 - call DelayFrames - pop de - pop bc - jr .loop - -.done - pop af - ld [VramState], a - call Function498f9 - call Function49bf3 - ret -; 498f9 - -Function498f9: ; 498f9 - ld hl, Sprites + 2 - xor a - ld c, $4 -.loop - ld [hli], a -rept 3 - inc hl -endr - inc a - dec c - jr nz, .loop - ld hl, Sprites + $10 - ld bc, $90 - xor a - call ByteFill - ret -; 49912 - -LoadCelebiGFX: ; 49912 - callba Function8cf53 - ld de, SpecialCelebiLeafGFX - ld hl, VTiles1 - lb bc, BANK(SpecialCelebiLeafGFX), 4 - call Request2bpp - ld de, SpecialCelebiGFX - ld hl, VTiles1 tile $04 - lb bc, BANK(SpecialCelebiGFX), $10 - call Request2bpp - xor a - ld [wJumptableIndex], a - ret -; 49935 - -Function49935: ; 49935 - ld hl, wcf64 - ld a, [hl] - and a - jr z, .asm_4993e - dec [hl] - ret - -.asm_4993e - ld hl, wJumptableIndex - set 7, [hl] - ret -; 49944 - -Function49944: ; 49944 - ld hl, wcf65 - ld a, [hl] - inc [hl] - and $7 - ret nz - ld a, [hl] - and $18 - sla a - add $40 - ld d, a - ld e, $0 - ld a, $18 - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $80 - ret -; 49962 - -SpecialCelebiLeafGFX: ; 49962 -INCBIN "gfx/special/celebi/leaf.2bpp" -SpecialCelebiGFX: ; 499a2 -INCBIN "gfx/special/celebi/1.2bpp" -INCBIN "gfx/special/celebi/2.2bpp" -INCBIN "gfx/special/celebi/3.2bpp" -INCBIN "gfx/special/celebi/4.2bpp" - - -Function49aa2: ; 49aa2 (12:5aa2) - ld hl, $6 - add hl, bc - ld a, [hl] - push af - ld hl, $5 - add hl, bc - ld a, [hl] - cp $52 - jp nc, Function49b30 - ld hl, $5 - add hl, bc - inc [hl] - ld hl, $f - add hl, bc - ld a, [hl] - ld d, a - cp $3a - jr c, .asm_49ac6 - jr z, .asm_49ac6 - sub $3 - ld [hl], a -.asm_49ac6 - ld hl, $e - add hl, bc - ld a, [hl] - inc [hl] - call Function49b3b - ld hl, $6 - add hl, bc - ld [hl], a - ld d, a - ld hl, $4 - add hl, bc - add [hl] - cp $5c - jr nc, .asm_49ae2 - cp $44 - jr nc, .asm_49b0d -.asm_49ae2 - pop af - push af - cp d - jr nc, .asm_49af2 - ld hl, $4 - add hl, bc - add [hl] - cp $50 - jr c, .asm_49b05 - jr .asm_49afb -.asm_49af2 - ld hl, $4 - add hl, bc - add [hl] - cp $50 - jr nc, .asm_49b05 -.asm_49afb - ld hl, $5 - add hl, bc - ld a, [hl] - sub $2 - ld [hl], a - jr .asm_49b0d -.asm_49b05 - ld hl, $5 - add hl, bc - ld a, [hl] - add $1 - ld [hl], a -.asm_49b0d - pop af - ld hl, $4 - add hl, bc - add [hl] - cp $50 - jr c, .asm_49b26 - cp $e6 - jr nc, .asm_49b26 - ld hl, $1 - add hl, bc - ld a, $41 - call Function3b3c - jr .asm_49b2f -.asm_49b26 - ld hl, $1 - add hl, bc - ld a, $40 - call Function3b3c -.asm_49b2f - ret - -Function49b30: ; 49b30 (12:5b30) - pop af - ld hl, $1 - add hl, bc - ld a, $40 - call Function3b3c - ret - -Function49b3b: ; 49b3b (12:5b3b) - add $10 - and $3f - cp $20 - jr nc, .asm_49b48 - call Function49b52 - ld a, h - ret -.asm_49b48 - and $1f - call Function49b52 - ld a, h - xor $ff - inc a - ret - -Function49b52: ; 49b52 (12:5b52) - ld e, a - ld a, d - ld d, $0 - ld hl, Unknown_49b6e -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - ld hl, 0 -.asm_49b61 - srl a - jr nc, .asm_49b66 - add hl, de -.asm_49b66 - sla e - rl d - and a - jr nz, .asm_49b61 - ret -; 49b6e (12:5b6e) - -Unknown_49b6e: ; 49b6e - sine_wave $100 -; 49bae - -Function49bae: ; 49bae - push hl - push bc - push de - ld a, d - ld d, $3 - ld e, d - cp $0 - jr z, .asm_49bd0 - cp d - jr z, .asm_49bd4 - call Function49bed - cp d - jr z, .asm_49bd8 - call Function49bed - cp d - jr z, .asm_49bdc - call Function49bed - cp d - jr c, .asm_49be9 - jr .asm_49be5 - -.asm_49bd0 - ld a, $84 - jr .asm_49bde - -.asm_49bd4 - ld a, $88 - jr .asm_49bde - -.asm_49bd8 - ld a, $8c - jr .asm_49bde - -.asm_49bdc - ld a, $90 - -.asm_49bde - ld hl, $3 - add hl, bc - ld [hl], a - jr .asm_49be9 - -.asm_49be5 - pop de - ld d, $ff - push de - -.asm_49be9 - pop de - pop bc - pop hl - ret -; 49bed - -Function49bed: ; 49bed - push af - ld a, d - add e - ld d, a - pop af - ret -; 49bf3 - -Function49bf3: ; 49bf3 - ld a, BATTLETYPE_CELEBI - ld [BattleType], a - ret -; 49bf9 - -Function49bf9: ; 49bf9 - ld a, [wBattleResult] - bit 6, a - jr z, .asm_49c07 - ld a, $1 - ld [ScriptVar], a - jr .asm_49c0b - -.asm_49c07 - xor a - ld [ScriptVar], a - -.asm_49c0b - ret -; 49c0c - -GFX_49c0c: ; 49c0c -INCBIN "gfx/unknown/049c0c.2bpp" -; 49cdc - -MainMenu: ; 49cdc - xor a - ld [wc2d7], a - call Function49ed0 - ld b, $8 - call GetSGBLayout - call SetPalettes - ld hl, GameTimerPause - res 0, [hl] - call Function49da4 - ld [wcf76], a - call Function49e09 - ld hl, MenuDataHeader_0x49d14 - call LoadMenuDataHeader - call Function49de4 - call WriteBackup - jr c, .quit - call ClearTileMap - ld a, [MenuSelection] - ld hl, Jumptable_49d60 - rst JumpTable - jr MainMenu - -.quit - ret -; 49d14 - -MenuDataHeader_0x49d14: ; 49d14 - db $40 ; flags - db 00, 00 ; start coords - db 07, 16 ; end coords - dw MenuData2_0x49d1c - db 1 ; default option -; 49d1c - -MenuData2_0x49d1c: ; 49d1c - db $80 ; flags - db 0 ; items - dw MainMenuItems - dw Function1f79 - dw MainMenuText -; 49d20 - -MainMenuText: ; 49d24 - db "CONTINUE@" - db "NEW GAME@" - db "OPTION@" - db "MYSTERY GIFT@" - db "MOBILE@" - db "MOBILE STUDIUM@" - -Jumptable_49d60: ; 0x49d60 - dw MainMenu_Continue - dw MainMenu_NewGame - dw MainMenu_Options - dw MainMenu_MysteryGift - dw MainMenu_Mobile - dw MainMenu_MobileStudium -; 0x49d6c - -CONTINUE EQU 0 -NEW_GAME EQU 1 -OPTION EQU 2 -MYSTERY_GIFT EQU 3 -MOBILE EQU 4 -MOBILE_STUDIUM EQU 5 - -MainMenuItems: - -NewGameMenu: ; 0x49d6c - db 2 - db NEW_GAME - db OPTION - db $ff - -ContinueMenu: ; 0x49d70 - db 3 - db CONTINUE - db NEW_GAME - db OPTION - db $ff - -MobileMysteryMenu: ; 0x49d75 - db 5 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db MOBILE - db $ff - -MobileMenu: ; 0x49d7c - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MOBILE - db $ff - -MobileStudiumMenu: ; 0x49d82 - db 5 - db CONTINUE - db NEW_GAME - db OPTION - db MOBILE - db MOBILE_STUDIUM - db $ff - -MysteryMobileStudiumMenu: ; 0x49d89 - db 6 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db MOBILE - db MOBILE_STUDIUM - db $ff - -MysteryMenu: ; 0x49d91 - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db $ff - -MysteryStudiumMenu: ; 0x49d97 - db 5 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db MOBILE_STUDIUM - db $ff - -StudiumMenu: ; 0x49d9e - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MOBILE_STUDIUM - db $ff - - -Function49da4: ; 49da4 - nop - nop - nop - ld a, [wcfcd] - and a - jr nz, .next - ld a, $0 - ret - -.next - ld a, [hCGB] - cp $1 - ld a, $1 - ret nz - ld a, BANK(s0_abe5) - call GetSRAMBank - ld a, [s0_abe5] - cp $ff - call CloseSRAM - jr nz, .done - ld a, [StatusFlags] - bit 7, a - ld a, $1 - jr z, .ok - jr .ok - -.ok - jr .ok2 - -.ok2 - ld a, $1 - ret - -.done - ld a, [StatusFlags] - bit 7, a - jr z, .ok3 - jr .ok3 - -.ok3 - jr .ok4 - -.ok4 - ld a, $6 - ret -; 49de4 - -Function49de4: ; 49de4 - call SetUpMenu -.asm_49de7 - call Function49e09 - ld a, [wcfa5] - set 5, a - ld [wcfa5], a - call Function1f1a - ld a, [wcf73] - cp $2 - jr z, .asm_49e07 - cp $1 - jr z, .asm_49e02 - jr .asm_49de7 - -.asm_49e02 - call PlayClickSFX - and a - ret - -.asm_49e07 - scf - ret -; 49e09 - -Function49e09: ; 49e09 - ld a, [wcfcd] - and a - ret z - xor a - ld [hBGMapMode], a - call Function49e27 - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - call Function49e3d - pop af - ld [Options], a - ld a, $1 - ld [hBGMapMode], a - ret -; 49e27 - - -Function49e27: ; 49e27 - call Function6e3 - and $80 - jr nz, .asm_49e39 - hlcoord 0, 14 - ld b, $2 - ld c, $12 - call TextBox - ret - -.asm_49e39 - call SpeechTextBox - ret -; 49e3d - - -Function49e3d: ; 49e3d - ld a, [wcfcd] - and a - ret z - call Function6e3 - and $80 - jp nz, Function49e75 - call UpdateTime - call GetWeekday - ld b, a - decoord 1, 15 - call Function49e91 - decoord 4, 16 - ld a, [hHours] - ld c, a - callba PrintHour - ld [hl], ":" - inc hl - ld de, hMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - ret -; 49e70 - -; 49e70 - db "min.@" -; 49e75 - -Function49e75: ; 49e75 - hlcoord 1, 14 - ld de, .TimeNotSet - call PlaceString - ret -; 49e7f - -.TimeNotSet ; 49e7f - db "TIME NOT SET@" -; 49e8c - -UnknownText_0x49e8c: ; 49e8c - text_jump UnknownText_0x1c5182 - db "@" -; 49e91 - -Function49e91: ; 49e91 - push de - ld hl, .Days - ld a, b - call GetNthString - ld d, h - ld e, l - pop hl - call PlaceString - ld h, b - ld l, c - ld de, .Day - call PlaceString - ret -; 49ea8 - -.Days - db "SUN@" - db "MON@" - db "TUES@" - db "WEDNES@" - db "THURS@" - db "FRI@" - db "SATUR@" -.Day - db "DAY@" -; 49ed0 - -Function49ed0: ; 49ed0 - xor a - ld [hMapAnims], a - call ClearTileMap - call LoadFontsExtra - call LoadStandardFont - call ResetTextRelatedRAM - ret -; 49ee0 - - -MainMenu_NewGame: ; 49ee0 - callba NewGame - ret -; 49ee7 - -MainMenu_Options: ; 49ee7 - callba OptionsMenu - ret -; 49eee - -MainMenu_Continue: ; 49eee - callba Continue - ret -; 49ef5 - -MainMenu_MysteryGift: ; 49ef5 - callba MysteryGift - ret -; 49efc - -MainMenu_Mobile: ; 49efc - call ClearBGPalettes - ld a, MUSIC_MOBILE_ADAPTER_MENU - ld [wMapMusic], a - ld de, MUSIC_MOBILE_ADAPTER_MENU - call Function4a6c5 -Function49f0a: ; 49f0a - call ClearBGPalettes - call Function4a3a7 - call Function4a492 - call ClearBGPalettes -Function49f16: ; 49f16 - call Function4a071 - ld c, 12 - call DelayFrames - hlcoord 4, 0 - ld b, $a - ld c, $a - call Function48cdc - hlcoord 6, 2 - ld de, MobileString1 - call PlaceString - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - xor a - ld de, String_0x49fe9 - hlcoord 1, 14 - call PlaceString - call Function3200 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr .asm_49f5d - -.asm_49f55 - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -.asm_49f5d - bit 0, a - jr nz, .asm_49f67 - bit 1, a - jr nz, .asm_49f84 - jr .asm_49f97 - -.asm_49f67 - ld hl, MenuSelection2 - ld a, [hl] - cp $1 - jp z, Function4a098 - cp $2 - jp z, Function4a0b9 - cp $3 - jp z, Function4a0c2 - cp $4 - jp z, Function4a100 - ld a, $1 - call Function1ff8 - -.asm_49f84 - pop bc - call ClearBGPalettes - call ClearTileMap - ld a, MUSIC_MAIN_MENU - ld [wMapMusic], a - ld de, MUSIC_MAIN_MENU - call Function4a6c5 - ret - -.asm_49f97 - ld hl, MenuSelection2 - ld a, [hl] - dec a - ld hl, MobileStrings2 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - jp .asm_49fb7 - -.asm_49fb7 - call Function4a071 - pop bc - ld hl, MenuSelection2 - ld [hl], b - ld b, $a - ld c, $1 - hlcoord 5, 1 - call ClearBox - jp .asm_49f55 -; 49fcc - - -MobileString1: ; 49fcc - db "めいしフ,ルダー" - next "あいさつ" - next "プロフィール" - next "せ", $1e, "い" - next "もどる" - db "@" -; 49fe9 - - -MobileStrings2: - -String_0x49fe9: ; 49fe9 - db "めいし¯つくったり" - next "ほぞんしておける フ,ルダーです@" -; 4a004 - -String_0x4a004: ; 4a004 - db "モバイルたいせんや じぶんのめいしで" - next "つかう あいさつ¯つくります@" -; 4a026 - -String_0x4a026: ; 4a026 - db "あなた%じゅうしょや ねんれいの" - next "せ", $1e, "い¯かえられます@" -; 4a042 - -String_0x4a042: ; 4a042 - db "モバイルセンター", $1d, "せつぞくするとき" - next "ひつような こと¯きめます@" -; 4a062 - -String_0x4a062: ; 4a062 - db "まえ%がめん ", $1d, "もどります" - next "@" -; 4a071 - - - -Function4a071: ; 4a071 (12:6071) - ld hl, wcfa1 - ld a, $2 - ld [hli], a - ld a, $5 - ld [hli], a - ld a, $5 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - ret - -Function4a098: ; 4a098 (12:6098) - ld a, $2 - call Function1ff8 - call Function1bee - call WaitBGMap - call LoadStandardMenuDataHeader - callba Function89de0 - call Call_ExitMenu - call Function49351 - call Function4a485 - pop bc - jp Function49f16 - -Function4a0b9: ; 4a0b9 (12:60b9) - ld a, $2 - call Function1ff8 - pop bc - jp Function4a4c4 - -Function4a0c2: ; 4a0c2 (12:60c2) - ld a, $2 - call Function1ff8 - ld a, BANK(sPlayerData) - call GetSRAMBank - ld hl, sPlayerData + PlayerName - wPlayerData - ld de, PlayerName - ld bc, $6 - call CopyBytes - call CloseSRAM - callba Function150b9 - ld c, 2 - call DelayFrames - ld c, $1 - call Function4802f - push af - call ClearBGPalettes - pop af - and a - jr nz, .asm_4a0f9 - callba Function1509a -.asm_4a0f9 - ld c, 5 - call DelayFrames - jr asm_4a111 - -Function4a100: ; 4a100 (12:6100) - ld a, $2 - call Function1ff8 - call ClearBGPalettes - call Function4a13b - call ClearBGPalettes - call ClearTileMap - -asm_4a111: ; 4a111 (12:6111) - pop bc - call LoadFontsExtra - jp Function49f0a - -Function4a118: ; 4a118 (12:6118) - ld hl, wcfa1 - ld a, $1 - ld [hli], a - ld a, $d - ld [hli], a - ld a, $3 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - ret - -Function4a13b: ; 4a13b (12:613b) - call Function4a3a7 - call Function4a492 - call Function4a373 - ld c, 10 - call DelayFrames - -Function4a149: ; 4a149 (12:6149) - hlcoord 1, 2 - ld b, $6 - ld c, $10 - call Function48cdc - hlcoord 3, 4 - ld de, String_4a1ef - call PlaceString - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - ld a, [MenuSelection2] - dec a - ld hl, Strings_4a23d - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - callba Function104148 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr asm_4a19d - -Function4a195: ; 4a195 (12:6195) - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -asm_4a19d: ; 4a19d (12:619d) - bit 0, a - jr nz, .asm_4a1a7 - bit 1, a - jr nz, .asm_4a1ba - jr .asm_4a1bc -.asm_4a1a7 - ld hl, MenuSelection2 - ld a, [hl] - cp $1 - jp z, Function4a20e - cp $2 - jp z, Function4a221 - ld a, $1 - call Function1ff8 -.asm_4a1ba - pop bc - ret -.asm_4a1bc - ld hl, MenuSelection2 - ld a, [hl] - dec a - ld hl, Strings_4a23d - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - jr .asm_4a1db -.asm_4a1db - call Function4a373 - pop bc - ld hl, MenuSelection2 - ld [hl], b - lb bc, 6, 1 - hlcoord 2, 3 - call ClearBox - jp Function4a195 -; 4a1ef (12:61ef) - -String_4a1ef: ; 4a1ef - db "モバイルセンター¯えらぶ" - next "ログインパスワード¯いれる" - next "もどる@" -; 4a20e - -Function4a20e: ; 4a20e (12:620e) - ld a, $1 - call Function1ff8 - callba Function1719c8 - call ClearBGPalettes - call DelayFrame - jr Function4a239 - -Function4a221: ; 4a221 (12:6221) - ld a, $1 - call Function1ff8 - call Function4a28a - jr c, Function4a239 - call Function4a373 - ld a, $2 - ld [MenuSelection2], a - jr .asm_4a235 -.asm_4a235 - pop bc - jp Function4a149 - -Function4a239: ; 4a239 (12:6239) - pop bc - jp Function4a13b -; 4a23d (12:623d) - -Strings_4a23d: ; 4a23d - db "いつも せつぞく¯する" - next "モバイルセンター¯えらびます@" - - db "モバイルセンター", $1d, "せつぞくするとき" - next "つかうパスワード¯ほぞんできます@" - - db "まえ%がめん ", $1d, "もどります@" - - db "@" -; 4a28a - -Function4a28a: ; 4a28a (12:628a) - hlcoord 2, 3 - lb bc, 6, 1 - ld a, " " - call Function4a6d8 - call Function1bee - call WaitBGMap - call LoadStandardMenuDataHeader - ld a, $5 - call GetSRAMBank - ld a, [$aa4b] - call CloseSRAM - and a - jr z, .asm_4a2df - hlcoord 12, 0 - ld b, $5 - ld c, $6 - call Function48cdc - hlcoord 14, 1 - ld de, String_4a34b - call PlaceString - callba Function104148 - call Function4a118 - call Function1bd3 - push af - call PlayClickSFX - pop af - bit 1, a - jr nz, .asm_4a33b - ld a, [MenuSelection2] - cp $2 - jr z, .asm_4a2f0 - cp $3 - jr z, .asm_4a33b -.asm_4a2df - callba Function11765d - call ClearBGPalettes - call Call_ExitMenu - call LoadFontsExtra - scf - ret -.asm_4a2f0 - call Function1bee - ld hl, UnknownText_0x4a358 - call PrintText - hlcoord 14, 7 - ld b, $3 - ld c, $4 - call TextBox - callba Function104148 - ld hl, MenuDataHeader_0x4a362 - call LoadMenuDataHeader - call InterpretMenu2 - bit 1, a - jr nz, .asm_4a338 - ld a, [MenuSelection2] - cp $2 - jr z, .asm_4a338 - ld a, $5 - call GetSRAMBank - ld hl, $aa4b - xor a - ld bc, $11 - call ByteFill - call CloseSRAM - ld hl, UnknownText_0x4a35d - call PrintText - call JoyWaitAorB -.asm_4a338 - call ExitMenu -.asm_4a33b - call Call_ExitMenu - callba Function104148 - xor a - ret -; 4a346 (12:6346) - -MenuDataHeader_0x4a346: ; 0x4a346 - db $40 ; flags - db 00, 12 ; start coords - db 06, 19 ; end coords - -String_4a34b: ; 4a34b - db "いれなおす" - next "けす" - next "もどる@" -; 4a358 - -UnknownText_0x4a358: ; 0x4a358 - ; Delete the saved LOG-IN PASSWORD? - text_jump UnknownText_0x1c5196 - db "@" -; 0x4a35d - -UnknownText_0x4a35d: ; 0x4a35d - ; Deleted the LOG-IN PASSWORD. - text_jump UnknownText_0x1c51b9 - db "@" -; 0x4a362 - -MenuDataHeader_0x4a362: ; 0x4a362 - db $40 ; flags - db 07, 14 ; start coords - db 11, 19 ; end coords - dw MenuData2_0x4a36a - db 2 ; default option -; 0x4a36a - -MenuData2_0x4a36a: ; 0x4a36a - db $e0 ; flags - db 2 ; items - db "はい@" - db "いいえ@" -; 0x4a373 - -Function4a373: ; 4a373 (12:6373) - ld hl, wcfa1 - ld a, $4 - ld [hli], a - ld a, $2 - ld [hli], a - ld a, $3 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - ret -; 4a39a (12:639a) - -Function4a39a: ; 4a39a - call Function4a485 - call Function4a492 - call Function4a3aa - call SetPalettes - ret -; 4a3a7 - -Function4a3a7: ; 4a3a7 (12:63a7) - call Function4a485 -Function4a3aa: ; 4a3aa - hlcoord 0, 0 - lb bc, 3, 1 - xor a - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 1, 1 - xor a - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 4, 1 - ld a, $2 - call Function4a6d8 - lb bc, 1, 1 - ld a, $3 - call Function4a6d8 - lb bc, 1, 1 - ld a, " " - call Function4a6d8 - hlcoord 1, 0 - ld a, $1 - lb bc, 3, 18 - call Function4a6d8 - lb bc, 1, 18 - ld a, $0 - call Function4a6d8 - lb bc, 1, 18 - ld a, $1 - call Function4a6d8 - lb bc, 1, 18 - ld a, $2 - call Function4a6d8 - lb bc, 11, 18 - ld a, " " - call Function4a6d8 - hlcoord 19, 0 - lb bc, 3, 1 - ld a, $0 - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 1, 1 - xor a - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 4, 1 - ld a, $2 - call Function4a6d8 - lb bc, 1, 1 - ld a, $3 - call Function4a6d8 - lb bc, 1, 1 - ld a, " " - call Function4a6d8 - ret -; 4a449 (12:6449) - -Function4a449: ; 4a449 - ld bc, 3 * SCREEN_WIDTH - ld a, $0 - hlcoord 0, 0 - call ByteFill - ld bc, 2 * SCREEN_WIDTH - ld a, $1 - call ByteFill - ld bc, 2 * SCREEN_WIDTH - ld a, $0 - call ByteFill - ld bc, 2 * SCREEN_WIDTH - ld a, $1 - call ByteFill - ld bc, SCREEN_WIDTH - ld a, $2 - call ByteFill - ld bc, SCREEN_WIDTH - ld a, $3 - call ByteFill - ld bc, SCREEN_WIDTH - ld a, " " - call ByteFill - ret -; 4a485 - -Function4a485: ; 4a485 (12:6485) - ld de, GFX_49c0c - ld hl, VTiles2 tile $00 - lb bc, BANK(GFX_49c0c), $d - call Get2bpp - ret - -Function4a492: ; 4a492 (12:6492) - call Function4936e - ret - - -MainMenu_MobileStudium: ; 4a496 - ld a, [StartDay] - ld b, a - ld a, [StartHour] - ld c, a - ld a, [StartMinute] - ld d, a - ld a, [StartSecond] - ld e, a - push bc - push de - callba MobileStudium - call ClearBGPalettes - pop de - pop bc - ld a, b - ld [StartDay], a - ld a, c - ld [StartHour], a - ld a, d - ld [StartMinute], a - ld a, e - ld [StartSecond], a - ret -; 4a4c4 - - -Function4a4c4: ; 4a4c4 (12:64c4) - call ClearBGPalettes - call Function4a3a7 - call Function4a492 - call Function4a680 - call ClearBGPalettes - ld c, 20 - call DelayFrames - hlcoord 2, 0 - ld b, $a - ld c, $e - call Function48cdc - hlcoord 4, 2 - ld de, String_4a5c5 - call PlaceString - hlcoord 4, 4 - ld de, String_4a5cd - call PlaceString - hlcoord 4, 6 - ld de, String_4a5da - call PlaceString - hlcoord 4, 8 - ld de, String_4a5e6 - call PlaceString - hlcoord 4, 10 - ld de, String_4a5f2 - call PlaceString - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - xor a - ld hl, Strings_4a5f6 - ld d, h - ld e, l - hlcoord 1, 14 - call PlaceString - ld a, $1 - ld hl, Strings_4a5f6 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 16 - call PlaceString - call Function3200 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr asm_4a54d - -Function4a545: ; 4a545 (12:6545) - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -asm_4a54d: ; 4a54d (12:654d) - bit 0, a - jr nz, .asm_4a557 - bit 1, a - jr nz, .asm_4a574 - jr .asm_4a57e -.asm_4a557 - ld hl, MenuSelection2 - ld a, [hl] - cp $1 - jp z, Function4a6ab - cp $2 - jp z, Function4a6ab - cp $3 - jp z, Function4a6ab - cp $4 - jp z, Function4a6ab - ld a, $1 - call Function1ff8 -.asm_4a574 - pop bc - call ClearBGPalettes - call ClearTileMap - jp Function49f0a -.asm_4a57e - ld hl, MenuSelection2 - ld a, [hl] - dec a - add a - push af - ld hl, Strings_4a5f6 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - pop af - inc a - ld hl, Strings_4a5f6 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 16 - call PlaceString - jp Function4a5b0 - -Function4a5b0: ; 4a5b0 (12:65b0) - call Function4a680 - pop bc - ld hl, MenuSelection2 - ld [hl], b - ld b, $a - ld c, $1 - hlcoord 3, 1 - call ClearBox - jp Function4a545 -; 4a5c5 (12:65c5) - -String_4a5c5: ; 4a5c5 - db "じこしょうかい@" -String_4a5cd: ; 4a5cd - db "たいせん ", $4a, "はじまるとき@" -String_4a5da: ; 4a5da - db "たいせん ", $1d, "かったとき@" -String_4a5e6: ; 4a5e6 - db "たいせん ", $1d, "まけたとき@" -String_4a5f2: ; 4a5f2 - db "もどる@" -; 4a5f6 - -Strings_4a5f6: ; 4a5f6 - db "めいし や ニュース ", $1d, "のせる@" - db "あなた%あいさつです@" - db "モバイル たいせん", $4a, "はじまるとき@" - db "あいて", $1d, "みえる あいさつです@" - db "モバイル たいせんで かったとき@" - db "あいて", $1d, "みえる あいさつです@" - db "モバイル たいせんで まけたとき@" - db "あいて", $1d, "みえる あいさつです@" - db "まえ%がめん ", $1d, "もどります@" - db "@" -; 4a680 - -Function4a680: ; 4a680 (12:6680) - ld hl, wcfa1 - ld a, $2 - ld [hli], a - ld a, $3 - ld [hli], a - ld a, $5 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - xor a -rept 3 - ld [hli], a -endr - ret - -Function4a6ab: ; 4a6ab (12:66ab) - ld a, $2 - call Function1ff8 - call ClearBGPalettes - ld b, $8 - call GetSGBLayout - callba Function11c1ab - pop bc - call LoadFontsExtra - jp Function4a4c4 - -Function4a6c5: ; 4a6c5 (12:66c5) - ld a, $5 - ld [MusicFade], a - ld a, e - ld [MusicFadeIDLo], a - ld a, d - ld [MusicFadeIDHi], a - ld c, 22 - call DelayFrames - ret - -Function4a6d8: ; 4a6d8 (12:66d8) - push bc - push hl -.asm_4a6da - ld [hli], a - dec c - jr nz, .asm_4a6da - pop hl - ld bc, $14 - add hl, bc - pop bc - dec b - jr nz, Function4a6d8 - ret - +INCLUDE "event/celebi.asm" +INCLUDE "engine/main_menu.asm" SpecialBeastsCheck: ; 0x4a6e8 ; Check if the player owns all three legendary beasts. @@ -28290,24 +16706,24 @@ Function4a91e: ; 4a91e ; 4a927 -Function4a927: ; 4a927 +FindItemInPCOrBag: ; 4a927 ld a, [ScriptVar] ld [CurItem], a ld hl, PCItems call CheckItem - jr c, .asm_4a948 + jr c, .found ld a, [ScriptVar] ld [CurItem], a ld hl, NumItems call CheckItem - jr c, .asm_4a948 + jr c, .found xor a ld [ScriptVar], a ret -.asm_4a948 +.found ld a, 1 ld [ScriptVar], a ret @@ -28322,7 +16738,7 @@ Function4a94e: ; 4a94e xor a ld [wd018], a ld [wd019], a - ld b, $14 + ld b, SCGB_14 call GetSGBLayout call SetPalettes call Function4aa22 @@ -28349,7 +16765,7 @@ Function4a94e: ; 4a94e jr c, .asm_4a974 .asm_4a990 - call Function2b3c + call ReturnToCallingMenu ld hl, wd002 ld a, -1 ld bc, 3 @@ -28362,7 +16778,7 @@ Function4a94e: ; 4a94e jr c, .asm_4a9b0 call Function4a9d7 jr c, .asm_4a974 - call Function2b3c + call ReturnToCallingMenu and a .asm_4a9af @@ -28442,8 +16858,8 @@ Function4aa22: ; 4aa22 call ClearBGPalettes Function4aa25: ; 4aa25 - callba Function5004f - callba Function50405 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel call Function4aad3 Function4aa34: ; 4aa34 @@ -28494,7 +16910,7 @@ Function4aa7a: ; 4aa7a push hl cp -1 jr z, .done - ld hl, wc314 + ld hl, wSpriteAnimationStructs inc a ld d, a .inner_loop @@ -29025,22 +17441,22 @@ Function4adb2: ; 4adb2 Function4adc2: ; 4adc2 ld a, [wd002] cp $ff - jr nz, .asm_4ade5 + jr nz, .skip ld a, [wd003] cp $ff - jr nz, .asm_4addd + jr nz, .skip2 ld a, [wd004] ld [wd002], a ld a, $ff ld [wd004], a - jr .asm_4ade5 + jr .skip -.asm_4addd +.skip2 ld [wd002], a ld a, $ff ld [wd003], a -.asm_4ade5 +.skip ld a, [wd003] cp $ff ret nz @@ -29067,18 +17483,18 @@ Function4adf7: ; 4adf7 ret ; 4ae12 -Function4ae12: ; 4ae12 - call Function4ae1f +AskRememberPassword: ; 4ae12 + call .DoMenu ld a, $0 - jr c, .asm_4ae1b + jr c, .okay ld a, $1 -.asm_4ae1b +.okay ld [ScriptVar], a ret ; 4ae1f -Function4ae1f: ; 4ae1f +.DoMenu: ; 4ae1f lb bc, 14, 7 push bc ld hl, YesNoMenuDataHeader @@ -29097,23 +17513,23 @@ Function4ae1f: ; 4ae1f push af ld c, 15 call DelayFrames - call Function4ae5e + call Buena_ExitMenu pop af - jr c, .asm_4ae57 + jr c, .refused ld a, [MenuSelection2] cp $2 - jr z, .asm_4ae57 + jr z, .refused and a ret -.asm_4ae57 +.refused ld a, $2 ld [MenuSelection2], a scf ret ; 4ae5e -Function4ae5e: ; 4ae5e +Buena_ExitMenu: ; 4ae5e ld a, [hOAMUpdate] push af call ExitMenu @@ -29123,7 +17539,7 @@ Function4ae5e: ; 4ae5e call DelayFrame ld a, $1 ld [hOAMUpdate], a - call Function321c + call ApplyTilemap pop af ld [hOAMUpdate], a ret @@ -29187,6 +17603,8 @@ ScrollBGMapPalettes:: ; 4c03f push hl srl a jr c, .UpperNybble + +; .LowerNybble ld hl, TilesetPalettes add [hl] ld l, a @@ -29290,7 +17708,7 @@ EmptyAllSRAMBanks: ; 4cf1f ; 4cf45 -Function4cf45: ; 4cf45 (13:4f45) +SaveMenu_LoadEDTile: ; 4cf45 (13:4f45) ld a, [hCGB] and a jp z, WaitBGMap @@ -29369,7 +17787,7 @@ endr ret -Function4cffe:: ; 4cffe +CheckSave:: ; 4cffe ld a, BANK(s1_a008) call GetSRAMBank ld a, [s1_a008] @@ -29434,11 +17852,11 @@ endr ret ; 4d188 -Function4d188: ; 4d188 +PhoneRing_LoadEDTile: ; 4d188 ld a, [hCGB] and a jp z, WaitBGMap - ld a, [wc2ce] + ld a, [wSpriteUpdatesEnabled] cp $0 jp z, WaitBGMap @@ -29460,11 +17878,11 @@ Function4d188: ; 4d188 ld a, 1 ; BANK(VBGMap2) ld [rVBK], a hlcoord 0, 0, AttrMap - call Function4d1cb + call .LoadEDTile ld a, 0 ; BANK(VBGMap0) ld [rVBK], a hlcoord 0, 0 - call Function4d1cb + call .LoadEDTile .wait2 ld a, [rLY] cp $8f @@ -29478,7 +17896,7 @@ Function4d188: ; 4d188 ret ; 4d1cb -Function4d1cb: ; 4d1cb +.LoadEDTile: ; 4d1cb ld [hSPBuffer], sp ld sp, hl ld a, [hBGMapAddress + 1] @@ -29626,7 +18044,7 @@ Function4d3ab: ; 4d3ab _ResetClock: ; 4d3b1 callba Function8000 - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call LoadStandardFont call LoadFontsExtra @@ -29643,10 +18061,10 @@ _ResetClock: ; 4d3b1 ret z call ClockResetPassword jr c, .wrongpassword - ld a, BANK(s0_ac60) + ld a, BANK(sRTCStatusFlags) call GetSRAMBank ld a, $80 - ld [s0_ac60], a + ld [sRTCStatusFlags], a call CloseSRAM ld hl, .text_okay call PrintText @@ -29865,7 +18283,7 @@ ClockResetPassword: ; 4d41e ld c, $2 call .ComponentFromNumber ld hl, sPlayerData + (PlayerName - wPlayerData) - ld c, $5 + ld c, $5 ; PLAYER_NAME_LENGTH_J call .ComponentFromString ld hl, sPlayerData + (Money - wPlayerData) ld c, $3 @@ -29902,7 +18320,7 @@ ClockResetPassword: ; 4d41e Function4d54c: ; 4d54c callba Function8000 - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call LoadStandardFont call LoadFontsExtra @@ -30030,7 +18448,7 @@ Function4d7fd: ; 4d7fd ld [CurSpecies], a call GetBaseData pop de - predef Function5108b + predef FrontpicPredef ret ; 4d81e @@ -30045,7 +18463,7 @@ Function4d81e: ; 4d81e ld [TempMonDVs], a ld a, [wPlayerWrapCount] ld [TempMonDVs + 1], a - ld b, $1a + ld b, SCGB_1A call GetSGBLayout ld a, $e4 call DmgToCgbBGPals @@ -30390,7 +18808,7 @@ CheckPartyFullAfterContest: ; 4d9e5 call GetPartyLocation ld a, [hl] ld [CurPartyLevel], a - call Function4db49 + call SetCaughtData ld a, [PartyCount] dec a ld hl, PartyMon1CaughtLocation @@ -30418,11 +18836,11 @@ CheckPartyFullAfterContest: ; 4d9e5 xor a ld [CurPartyMon], a ld hl, wContestMon - ld de, wd018 + ld de, wd018_Mon ld bc, BOXMON_STRUCT_LENGTH call CopyBytes ld hl, PlayerName - ld de, wd00d + ld de, wd00d_MonOT ld bc, NAME_LENGTH call CopyBytes callab Function51322 @@ -30434,9 +18852,9 @@ CheckPartyFullAfterContest: ; 4d9e5 jr c, .Box_SkipNickname ld a, BOXMON ld [MonType], a - ld de, wd050 + ld de, wd050_MonNick callab InitNickname - ld hl, wd050 + ld hl, wd050_MonNick .Box_SkipNickname ld a, BANK(sBoxMonNicknames) @@ -30452,7 +18870,7 @@ CheckPartyFullAfterContest: ; 4d9e5 ld a, [sBoxMon1Level] ld [CurPartyLevel], a call CloseSRAM - call Function4db83 + call SetBoxMonCaughtData ld a, BANK(sBoxMon1CaughtLocation) call GetSRAMBank ld hl, sBoxMon1CaughtLocation @@ -30489,12 +18907,12 @@ TextJump_GiveANickname: ; 0x4db44 ; 0x4db49 -Function4db49: ; 4db49 +SetCaughtData: ; 4db49 ld a, [PartyCount] dec a ld hl, PartyMon1CaughtLevel call GetPartyLocation -Function4db53: ; 4db53 +SetBoxmonOrEggmonCaughtData: ; 4db53 ld a, [TimeOfDay] inc a rrca @@ -30528,34 +18946,34 @@ Function4db53: ; 4db53 ret ; 4db83 -Function4db83: ; 4db83 +SetBoxMonCaughtData: ; 4db83 ld a, BANK(sBoxMon1CaughtLevel) call GetSRAMBank ld hl, sBoxMon1CaughtLevel - call Function4db53 + call SetBoxmonOrEggmonCaughtData call CloseSRAM ret ; 4db92 -SetBoxMonCaughtData: ; 4db92 +SetGiftBoxMonCaughtData: ; 4db92 push bc ld a, BANK(sBoxMon1CaughtLevel) call GetSRAMBank ld hl, sBoxMon1CaughtLevel pop bc - call SetPkmnCaughtData + call SetGiftMonCaughtData call CloseSRAM ret ; 4dba3 -SetPartymonCaughtData: ; 4dba3 +SetGiftPartyMonCaughtData: ; 4dba3 ld a, [PartyCount] dec a ld hl, PartyMon1CaughtLevel push bc call GetPartyLocation pop bc -SetPkmnCaughtData: ; 4dbaf +SetGiftMonCaughtData: ; 4dbaf xor a ld [hli], a ld a, $7e @@ -30566,7 +18984,7 @@ SetPkmnCaughtData: ; 4dbaf ; 4dbb8 -Function4dbb8: ; 4dbb8 (13:5bb8) +SetEggMonCaughtData: ; 4dbb8 (13:5bb8) ld a, [CurPartyMon] ld hl, PartyMon1CaughtLevel call GetPartyLocation @@ -30574,7 +18992,7 @@ Function4dbb8: ; 4dbb8 (13:5bb8) push af ld a, $1 ld [CurPartyLevel], a - call Function4db53 + call SetBoxmonOrEggmonCaughtData pop af ld [CurPartyLevel], a ret @@ -30723,1157 +19141,7 @@ RetroactivelyIgnoreEggs: ; 4dc67 ; 4dc7b -Function4dc7b: ; 4dc7b (13:5c7b) - ld a, [wLinkMode] - cp LINK_MOBILE - jr nz, StatsScreenInit - - ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd) - and a - jr z, StatsScreenInit - jr Function4dc8f - -StatsScreenInit: ; 4dc8a - ld hl, StatsScreenMain - jr StatsScreenInit_gotaddress - -Function4dc8f: ; 4dc8f - ld hl, StatsScreenBattle - jr StatsScreenInit_gotaddress - -StatsScreenInit_gotaddress: ; 4dc94 - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a ; disable overworld tile animations - ld a, [wc2c6] ; whether sprite is to be mirrorred - push af - ld a, [wJumptableIndex] - ld b, a - ld a, [wcf64] - ld c, a - - push bc - push hl - call ClearBGPalettes - call ClearTileMap - call UpdateSprites - callba Functionfb53e - pop hl - call _hl_ - call ClearBGPalettes - call ClearTileMap - pop bc - - ; restore old values - ld a, b - ld [wJumptableIndex], a - ld a, c - ld [wcf64], a - pop af - ld [wc2c6], a - pop af - ld [hMapAnims], a - ret -; 0x4dcd2 - -StatsScreenMain: ; 0x4dcd2 - xor a - ld [wJumptableIndex], a - ; stupid interns - ld [wcf64], a - ld a, [wcf64] - and $fc - or $1 - ld [wcf64], a -.loop ; 4dce3 - ld a, [wJumptableIndex] - and $7f - ld hl, StatsScreenPointerTable - rst JumpTable - call Function4dd3a ; check for keys? - ld a, [wJumptableIndex] - bit 7, a - jr z, .loop - ret -; 0x4dcf7 - -StatsScreenBattle: ; 4dcf7 - xor a - ld [wJumptableIndex], a - ; stupid interns - ld [wcf64], a - ld a, [wcf64] - and $fc - or $1 - ld [wcf64], a -.loop - callba Function100dd2 - ld a, [wJumptableIndex] - and $7f - ld hl, StatsScreenPointerTable - rst JumpTable - call Function4dd3a - callba Function100dfd - jr c, .exit - ld a, [wJumptableIndex] - bit 7, a - jr z, .loop - -.exit - ret -; 4dd2a - -StatsScreenPointerTable: ; 4dd2a - dw MonStatsInit ; regular pokémon - dw EggStatsInit ; egg - dw StatsScreenWaitCry - dw Function4ddac - dw Function4ddc6 - dw StatsScreenWaitCry - dw Function4ddd6 - dw Function4dd6c -; 4dd3a - - -Function4dd3a: ; 4dd3a (13:5d3a) - ld hl, wcf64 - bit 6, [hl] - jr nz, .asm_4dd49 - bit 5, [hl] - jr nz, .asm_4dd56 - call DelayFrame - ret -.asm_4dd49 - callba Functiond00b4 - jr nc, .asm_4dd56 - ld hl, wcf64 - res 6, [hl] -.asm_4dd56 - ld hl, wcf64 - res 5, [hl] - callba Function10402d - ret - -Function4dd62: ; 4dd62 (13:5d62) - ld a, [wJumptableIndex] - and $80 - or h - ld [wJumptableIndex], a - ret - -Function4dd6c: ; 4dd6c (13:5d6c) - ld hl, wJumptableIndex - set 7, [hl] - ret - -MonStatsInit: ; 4dd72 (13:5d72) - ld hl, wcf64 - res 6, [hl] - call ClearBGPalettes - call ClearTileMap - callba Function10402d - call Function4ddf2 - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_4dd9b - call Function4deea - ld hl, wcf64 - set 4, [hl] - ld h, $4 - call Function4dd62 - ret -.asm_4dd9b - ld h, $1 - call Function4dd62 - ret - -EggStatsInit: ; 4dda1 - call EggStatsScreen - ld a, [wJumptableIndex] - inc a - ld [wJumptableIndex], a - ret -; 0x4ddac - - -Function4ddac: ; 4ddac (13:5dac) - call Function4de2c - jr nc, .asm_4ddb7 - ld h, $0 - call Function4dd62 - ret -.asm_4ddb7 - bit 0, a - jr nz, .asm_4ddc0 - and $c3 - jp Function4de54 -.asm_4ddc0 - ld h, $7 - call Function4dd62 - ret - -Function4ddc6: ; 4ddc6 (13:5dc6) - call Function4dfb6 - ld hl, wcf64 - res 4, [hl] - ld a, [wJumptableIndex] - inc a - ld [wJumptableIndex], a - ret - -Function4ddd6: ; 4ddd6 (13:5dd6) - call Function4de2c - jr nc, .asm_4dde1 - ld h, $0 - call Function4dd62 - ret - -.asm_4dde1 - and $f3 - jp Function4de54 - -StatsScreenWaitCry: ; 4dde6 (13:5de6) - call IsSFXPlaying - ret nc - ld a, [wJumptableIndex] - inc a - ld [wJumptableIndex], a - ret - -Function4ddf2: ; 4ddf2 (13:5df2) - ld a, [MonType] - cp BREEDMON - jr nz, .asm_4de10 - ld a, [wd018] - ld [CurSpecies], a - call GetBaseData - ld hl, wd018 - ld de, TempMon - ld bc, PARTYMON_STRUCT_LENGTH - call CopyBytes - jr .asm_4de2a -.asm_4de10 - callba CopyPkmnToTempMon - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_4de2a - ld a, [MonType] - cp BOXMON - jr c, .asm_4de2a - callba Function50890 -.asm_4de2a - and a - ret - -Function4de2c: ; 4de2c (13:5e2c) - call GetJoypad - ld a, [MonType] - cp BREEDMON - jr nz, .notbreedmon - push hl - push de - push bc - callba Functione2f95 - pop bc - pop de - pop hl - ld a, [wcf73] - and $c0 - jr nz, .set_carry - ld a, [wcf73] - jr .clear_flags - -.notbreedmon - ld a, [hJoyPressed] -.clear_flags - and a - ret - -.set_carry - scf - ret - -Function4de54: ; 4de54 (13:5e54) - push af - ld a, [wcf64] - and $3 - ld c, a - pop af - bit 1, a - jp nz, Function4dee4 - bit 5, a - jr nz, .asm_4dec7 - bit 4, a - jr nz, .asm_4debd - bit 0, a - jr nz, .asm_4deb8 - bit 6, a - jr nz, .asm_4dea0 - bit 7, a - jr nz, .asm_4de77 - jr .asm_4dece -.asm_4de77 - ld a, [MonType] - cp BOXMON - jr nc, .asm_4dece - and a - ld a, [PartyCount] - jr z, .asm_4de87 - ld a, [OTPartyCount] -.asm_4de87 - ld b, a - ld a, [CurPartyMon] - inc a - cp b - jr z, .asm_4dece - ld [CurPartyMon], a - ld b, a - ld a, [MonType] - and a - jr nz, .asm_4dede - ld a, b - inc a - ld [wd0d8], a - jr .asm_4dede -.asm_4dea0 - ld a, [CurPartyMon] - and a - jr z, .asm_4dece - dec a - ld [CurPartyMon], a - ld b, a - ld a, [MonType] - and a - jr nz, .asm_4dede - ld a, b - inc a - ld [wd0d8], a - jr .asm_4dede -.asm_4deb8 - ld a, c - cp $3 - jr z, Function4dee4 -.asm_4debd - inc c - ld a, $3 - cp c - jr nc, .asm_4decf - ld c, $1 - jr .asm_4decf -.asm_4dec7 - dec c - jr nz, .asm_4decf - ld c, $3 - jr .asm_4decf -.asm_4dece - ret -.asm_4decf - ld a, [wcf64] - and $fc - or c - ld [wcf64], a - ld h, $4 - call Function4dd62 - ret -.asm_4dede - ld h, $0 - call Function4dd62 - ret - -Function4dee4: ; 4dee4 (13:5ee4) - ld h, $7 - call Function4dd62 - ret - -Function4deea: ; 4deea (13:5eea) - call Function4df45 - xor a - ld [hBGMapMode], a - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) - ld [wd265], a - ld [CurSpecies], a - hlcoord 8, 0 - ld [hl], "№" - inc hl - ld [hl], "." - inc hl - hlcoord 10, 0 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - ld de, wd265 - call PrintNum - hlcoord 14, 0 - call PrintLevel - ld hl, Unknown_4df77 - call Function4e528 - call Function4e505 - hlcoord 8, 2 - call PlaceString - hlcoord 18, 0 - call Function4df66 - hlcoord 9, 4 - ld a, "/" - ld [hli], a - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) - ld [wd265], a - call GetPokemonName - call PlaceString - call Function4df8f - call Function4df9b - call Function4dfa6 - ret - -Function4df45: ; 4df45 (13:5f45) - ld hl, TempMonHP - ld a, [hli] - ld b, a - ld c, [hl] - ld hl, TempMonMaxHP - ld a, [hli] - ld d, a - ld e, [hl] - callba DrawPartyMenuHPBar - ld hl, wcda1 - call SetHPPal - ld b, $3 - call GetSGBLayout - call DelayFrame - ret - -Function4df66: ; 4df66 (13:5f66) - push hl - callba GetGender - pop hl - ret c - ld a, "♂" - jr nz, .got_gender - ld a, "♀" -.got_gender - ld [hl], a - ret -; 4df77 (13:5f77) - -Unknown_4df77: ; 4df77 - dw PartyMonNicknames - dw OTPartyMonNicknames - dw sBoxMonNicknames - dw wd002 -; 4df7f - -Function4df7f: ; 4df7f - hlcoord 7, 0 - ld bc, SCREEN_WIDTH - ld d, SCREEN_HEIGHT -.loop - ld a, $31 - ld [hl], a - add hl, bc - dec d - jr nz, .loop - ret -; 4df8f - -Function4df8f: ; 4df8f (13:5f8f) - hlcoord 0, 7 - ld b, SCREEN_WIDTH - ld a, "_" -.loop - ld [hli], a - dec b - jr nz, .loop - ret - -Function4df9b: ; 4df9b (13:5f9b) - hlcoord 12, 6 - ld [hl], "◀" - hlcoord 19, 6 - ld [hl], "▶" - ret - -Function4dfa6: ; 4dfa6 (13:5fa6) - ld bc, TempMonDVs - callba CheckShininess - ret nc - hlcoord 19, 0 - ld [hl], "<SHINY>" - ret - -Function4dfb6: ; 4dfb6 (13:5fb6) - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) - ld [wd265], a - ld [CurSpecies], a - xor a - ld [hBGMapMode], a - call Function4dfda - call Function4e002 - call Function4dfed - ld hl, wcf64 - bit 4, [hl] - jr nz, .asm_4dfd6 - call SetPalettes - ret - -.asm_4dfd6 - call Function4e226 - ret - -Function4dfda: ; 4dfda (13:5fda) - ld a, [wcf64] - and $3 - ld c, a - call Function4e4cd - hlcoord 0, 8 - lb bc, 10, 20 - call ClearBox - ret - -Function4dfed: ; 4dfed (13:5fed) - ld a, [wcf64] - and $3 - ld c, a - callba Function8c8a - call DelayFrame - ld hl, wcf64 - set 5, [hl] - ret - -Function4e002: ; 4e002 (13:6002) - ld a, [wcf64] - and $3 - dec a - ld hl, Jumptable_4e00d - rst JumpTable - ret - -Jumptable_4e00d: ; 4e00d (13:600d) - dw Function4e013 - dw Function4e147 - dw Function4e1ae - - -Function4e013: ; 4e013 (13:6013) - hlcoord 0, 9 - ld b, $0 - predef DrawPlayerHP - hlcoord 8, 9 - ld [hl], $41 - ld de, String_4e119 - hlcoord 0, 12 - call PlaceString - ld a, [TempMonPokerusStatus] - ld b, a - and $f - jr nz, .asm_4e055 - ld a, b - and $f0 - jr z, .asm_4e03d - hlcoord 8, 8 - ld [hl], $e8 -.asm_4e03d - ld a, [MonType] - cp $2 - jr z, .asm_4e060 - hlcoord 6, 13 - push hl - ld de, TempMonStatus - predef PlaceStatusString - pop hl - jr nz, .asm_4e066 - jr .asm_4e060 -.asm_4e055 - ld de, String_4e142 - hlcoord 1, 13 - call PlaceString - jr .asm_4e066 -.asm_4e060 - ld de, String_4e127 - call PlaceString -.asm_4e066 - hlcoord 1, 15 - predef PrintMonTypes - hlcoord 9, 8 - ld de, $14 - ld b, $a - ld a, $31 -.asm_4e078 - ld [hl], a - add hl, de - dec b - jr nz, .asm_4e078 - ld de, String_4e12b - hlcoord 10, 9 - call PlaceString - hlcoord 17, 14 - call Function4e0d3 - hlcoord 13, 10 - lb bc, 3, 7 - ld de, TempMonExp - call PrintNum - call Function4e0e7 - hlcoord 13, 13 - lb bc, 3, 7 - ld de, Buffer1 ; wd1ea (aliases: MagikarpLength) - call PrintNum - ld de, String_4e136 - hlcoord 10, 12 - call PlaceString - ld de, String_4e13f - hlcoord 14, 14 - call PlaceString - hlcoord 11, 16 - ld a, [TempMonLevel] - ld b, a - ld de, TempMonExp + 2 - predef FillInExpBar - hlcoord 10, 16 - ld [hl], $40 - hlcoord 19, 16 - ld [hl], $41 - ret - -Function4e0d3: ; 4e0d3 (13:60d3) - ld a, [TempMonLevel] - push af - cp MAX_LEVEL - jr z, .asm_4e0df - inc a - ld [TempMonLevel], a -.asm_4e0df - call PrintLevel - pop af - ld [TempMonLevel], a - ret - -Function4e0e7: ; 4e0e7 (13:60e7) - ld a, [TempMonLevel] - cp MAX_LEVEL - jr z, .asm_4e111 - inc a - ld d, a - callba CalcExpAtLevel -rept 2 - ld hl, TempMonExp + 2 -endr - ld a, [$ffb6] - sub [hl] - dec hl - ld [wd1ec], a - ld a, [$ffb5] - sbc [hl] - dec hl - ld [Buffer2], a ; wd1eb (aliases: MovementType) - ld a, [hQuotient] - sbc [hl] - ld [Buffer1], a ; wd1ea (aliases: MagikarpLength) - ret -.asm_4e111 - ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) - xor a -rept 2 - ld [hli], a -endr - ld [hl], a - ret -; 4e119 (13:6119) - -String_4e119: ; 4e119 - db "STATUS/" - next "TYPE/@" -; 4e127 - -String_4e127: ; 4e127 - db "OK @" -; 4e12b - -String_4e12b: ; 4e12b - db "EXP POINTS@" -; 4e136 - -String_4e136: ; 4e136 - db "LEVEL UP@" -; 4e13f - -String_4e13f: ; 4e13f - db "TO@" -; 4e142 - -String_4e142: ; 4e142 - db "#RUS@" -; 4e147 - -Function4e147: ; 4e147 (13:6147) - ld de, String_4e1a0 - hlcoord 0, 8 - call PlaceString - call Function4e189 - hlcoord 8, 8 - call PlaceString - ld de, String_4e1a9 - hlcoord 0, 10 - call PlaceString - ld hl, TempMonMoves - ld de, wListMoves_MoveIndicesBuffer - ld bc, NUM_MOVES - call CopyBytes - hlcoord 8, 10 - ld a, SCREEN_WIDTH * 2 - ld [Buffer1], a - predef ListMoves - hlcoord 12, 11 - ld a, $28 - ld [Buffer1], a - predef Function50c50 - ret - -Function4e189: ; 4e189 (13:6189) - ld de, String_4e1a5 - ld a, [TempMonItem] - and a - ret z - ld b, a - callba Function28771 - ld a, b - ld [wd265], a - call GetItemName - ret -; 4e1a0 (13:61a0) - -String_4e1a0: ; 4e1a0 - db "ITEM@" -; 4e1a5 - -String_4e1a5: ; 4e1a5 - db "---@" -; 4e1a9 - -String_4e1a9: ; 4e1a9 - db "MOVE@" -; 4e1ae - -Function4e1ae: ; 4e1ae (13:61ae) - call Function4e1cc - hlcoord 10, 8 - ld de, $14 - ld b, $a - ld a, $31 -.asm_4e1bb - ld [hl], a - add hl, de - dec b - jr nz, .asm_4e1bb - hlcoord 11, 8 - ld bc, $6 - predef PrintTempMonStats - ret - -Function4e1cc: ; 4e1cc (13:61cc) - ld de, IDNoString - hlcoord 0, 9 - call PlaceString - ld de, OTString - hlcoord 0, 12 - call PlaceString - hlcoord 2, 10 - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - ld de, TempMonID - call PrintNum - ld hl, Unknown_4e216 - call Function4e528 - call Function4e505 - callba CheckNickErrors - hlcoord 2, 13 - call PlaceString - ld a, [TempMonCaughtGender] - and a - jr z, .asm_4e215 - cp $7f - jr z, .asm_4e215 - and $80 - ld a, "♂" - jr z, .asm_4e211 - ld a, "♀" -.asm_4e211 - hlcoord 9, 13 - ld [hl], a -.asm_4e215 - ret -; 4e216 (13:6216) - -Unknown_4e216: ; 4e216 - dw PartyMonOT - dw OTPartyMonOT - dw sBoxMonOT - dw wd00d -; 4e21e - -IDNoString: ; 4e21e - db $73, "№.@" - -OTString: ; 4e222 - db "OT/@" -; 4e226 - - -Function4e226: ; 4e226 (13:6226) - ld hl, TempMonDVs - predef GetUnownLetter - call Function4e2ad - jr c, .asm_4e238 - and a - jr z, .asm_4e23f - jr .asm_4e246 -.asm_4e238 - call Function4e271 - call SetPalettes - ret -.asm_4e23f - call Function4e253 - call SetPalettes - ret -.asm_4e246 - call SetPalettes - call Function4e253 - ld a, [CurPartySpecies] - call PlayCry2 - ret - -Function4e253: ; 4e253 (13:6253) - ld hl, wcf64 - set 5, [hl] - ld a, [CurPartySpecies] - cp UNOWN - jr z, .asm_4e266 - hlcoord 0, 0 - call PrepMonFrontpic - ret -.asm_4e266 - xor a - ld [wc2c6], a - hlcoord 0, 0 - call _PrepMonFrontpic - ret - -Function4e271: ; 4e271 (13:6271) - ld a, [CurPartySpecies] - cp UNOWN - jr z, .asm_4e281 - ld a, $1 - ld [wc2c6], a - call Function4e289 - ret -.asm_4e281 - xor a - ld [wc2c6], a - call Function4e289 - ret - -Function4e289: ; 4e289 (13:6289) - ld a, [CurPartySpecies] - call IsAPokemon - ret c - call Function4e307 - ld de, VTiles2 tile $00 - predef Function5108b - hlcoord 0, 0 - ld d, $0 - ld e, $2 - predef LoadMonAnimation - ld hl, wcf64 - set 6, [hl] - ret - -Function4e2ad: ; 4e2ad (13:62ad) - ld a, [MonType] - ld hl, Jumptable_4e2b5 - rst JumpTable - ret - -Jumptable_4e2b5: ; 4e2b5 (13:62b5) - dw Function4e2bf - dw Function4e2cf - dw Function4e2d1 - dw Function4e2ed - dw Function4e301 - - -Function4e2bf: ; 4e2bf (13:62bf) - ld a, [CurPartyMon] - ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld b, h - ld c, l - jr Function4e2f2 - -Function4e2cf: ; 4e2cf (13:62cf) - xor a - ret - -Function4e2d1: ; 4e2d1 (13:62d1) - ld hl, sBoxMons - ld bc, $30 - ld a, [CurPartyMon] - call AddNTimes - ld b, h - ld c, l - ld a, $1 - call GetSRAMBank - call Function4e2f2 - push af - call CloseSRAM - pop af - ret - -Function4e2ed: ; 4e2ed (13:62ed) - ld bc, TempMonSpecies ; wd10e (aliases: TempMon) - jr Function4e2f2 - -Function4e2f2: ; 4e2f2 (13:62f2) - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_4e2fe - call CheckFaintedFrzSlp - jr c, Function4e305 -.asm_4e2fe - xor a - scf - ret - -Function4e301: ; 4e301 (13:6301) - ld a, $1 - and a - ret -Function4e305: ; 4e305 (13:6305) - xor a - ret - -Function4e307: ; 4e307 (13:6307) - nop - push hl - push de - push bc - push af - call DelayFrame - ld a, [rVBK] - push af - ld a, $1 - ld [rVBK], a - ld de, TextBoxSpaceGFX - lb bc, BANK(TextBoxSpaceGFX), 1 - ld hl, VTiles2 tile $7f - call Get2bpp - pop af - ld [rVBK], a - pop af - pop bc - pop de - pop hl - ret -; 4e32a (13:632a) - -Unknown_4e32a: ; 4e32a -; A blank tile? - ds 16 -; 4e33a - -EggStatsScreen: ; 4e33a - xor a - ld [hBGMapMode], a - ld hl, wcda1 - call SetHPPal - ld b, $3 - call GetSGBLayout - call Function4df8f - ld de, EggString - hlcoord 8, 1 - call PlaceString - ld de, IDNoString - hlcoord 8, 3 - call PlaceString - ld de, OTString - hlcoord 8, 5 - call PlaceString - ld de, FiveQMarkString - hlcoord 11, 3 - call PlaceString - ld de, FiveQMarkString - hlcoord 11, 5 - call PlaceString - ld a, [TempMonHappiness] ; egg status - ld de, EggSoonString - cp $6 - jr c, .picked - ld de, EggCloseString - cp $b - jr c, .picked - ld de, EggMoreTimeString - cp $29 - jr c, .picked - ld de, EggALotMoreTimeString -.picked - hlcoord 1, 9 - call PlaceString - ld hl, wcf64 - set 5, [hl] - call SetPalettes ; pals - call DelayFrame - hlcoord 0, 0 - call PrepMonFrontpic - callba Function10402d - call Function4e497 - - ld a, [TempMonHappiness] - cp 6 - ret nc - ld de, SFX_2_BOOPS - call PlaySFX - ret -; 0x4e3c0 - -EggString: ; 4e3c0 - db "EGG@" - -FiveQMarkString: ; 4e3c4 - db "?????@" - -EggSoonString: ; 0x4e3ca - db "It's making sounds" - next "inside. It's going" - next "to hatch soon!@" - -EggCloseString: ; 0x4e3fd - db "It moves around" - next "inside sometimes." - next "It must be close" - next "to hatching.@" - -EggMoreTimeString: ; 0x4e43d - db "Wonder what's" - next "inside? It needs" - next "more time, though.@" - -EggALotMoreTimeString: ; 0x4e46e - db "This EGG needs a" - next "lot more time to" - next "hatch.@" -; 0x4e497 - - -Function4e497: ; 4e497 (13:6497) - call Function4e2ad - ret nc - ld a, [TempMonHappiness] - ld e, $7 - cp $6 - jr c, .asm_4e4ab - ld e, $8 - cp $b - jr c, .asm_4e4ab - ret -.asm_4e4ab - push de - ld a, $1 - ld [wc2c6], a - call Function4e307 - ld de, VTiles2 tile $00 - predef Function5108b - pop de - hlcoord 0, 0 - ld d, $0 - predef LoadMonAnimation - ld hl, wcf64 - set 6, [hl] - ret - -Function4e4cd: ; 4e4cd (13:64cd) - hlcoord 13, 5 - ld a, $36 - call Function4e4f7 - hlcoord 15, 5 - ld a, $36 - call Function4e4f7 - hlcoord 17, 5 - ld a, $36 - call Function4e4f7 - ld a, c - cp $2 - ld a, $3a - hlcoord 13, 5 - jr c, Function4e4f7 - hlcoord 15, 5 - jr z, Function4e4f7 - hlcoord 17, 5 - -Function4e4f7: ; 4e4f7 (13:64f7) - push bc - ld [hli], a - inc a - ld [hld], a - ld bc, $14 - add hl, bc - inc a - ld [hli], a - inc a - ld [hl], a - pop bc - ret - -Function4e505: ; 4e505 (13:6505) - ld de, StringBuffer1 - ld bc, $b - jr .asm_4e50d -.asm_4e50d - ld a, [MonType] - cp BOXMON - jr nz, .asm_4e522 - ld a, BANK(sBoxMonNicknames) - call GetSRAMBank - push de - call CopyBytes - pop de - call CloseSRAM - ret -.asm_4e522 - push de - call CopyBytes - pop de - ret - -Function4e528: ; 4e528 (13:6528) - ld a, [MonType] - add a - ld c, a - ld b, 0 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [MonType] - cp $3 - ret z - ld a, [CurPartyMon] - jp SkipNames - - -CheckFaintedFrzSlp: ; 4e53f - ld hl, MON_HP - add hl, bc - ld a, [hli] - or [hl] - jr z, .fainted_frz_slp - ld hl, MON_STATUS - add hl, bc - ld a, [hl] - and (1 << FRZ) | SLP - jr nz, .fainted_frz_slp - and a - ret - -.fainted_frz_slp - scf - ret -; 4e554 - +INCLUDE "engine/stats_screen.asm" CatchTutorial:: ; 4e554 ld a, [BattleType] @@ -32195,7 +19463,7 @@ CopyPkmnToTempMon: ; 5084a Function5088b: ; 5088b - ld bc, wd018 + ld bc, wd018_Mon jr Function50893 ; 50890 @@ -33161,7 +20429,7 @@ _SwitchPartyMons: ld [Buffer2], a ; wd1eb (aliases: MovementType) cp b jr z, .skip - call .SwapPartymonViaSRAM + call .SwapMonAndMail ld a, [wd1ec] call .ClearSprite ld a, [Buffer2] ; wd1eb (aliases: MovementType) @@ -33192,7 +20460,7 @@ _SwitchPartyMons: call WaitPlaySFX ret -.SwapPartymonViaSRAM: ; 50f62 (14:4f62) +.SwapMonAndMail: ; 50f62 (14:4f62) push hl push de push bc @@ -33261,27 +20529,27 @@ _SwitchPartyMons: pop de ld hl, wd002 call .CopyName - ld hl, sPartyScratch1 + ld hl, sPartyMail ld a, [Buffer2] ; wd1eb (aliases: MovementType) - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl ld de, wd002 - ld bc, SCRATCHMON_STRUCT_LENGTH - ld a, BANK(sPartyScratch1) + ld bc, MAIL_STRUCT_LENGTH + ld a, BANK(sPartyMail) call GetSRAMBank call CopyBytes - ld hl, sPartyScratch1 + ld hl, sPartyMail ld a, [Buffer3] - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call AddNTimes pop de push hl - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call CopyBytes pop de ld hl, wd002 - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call CopyBytes call CloseSRAM pop bc @@ -33362,7 +20630,7 @@ GetFrontpic: ; 51077 ret ; 5108b -Function5108b: ; 5108b +FrontpicPredef: ; 5108b ld a, [CurPartySpecies] ld [CurSpecies], a call IsAPokemon @@ -33446,7 +20714,7 @@ Function51103: ; 51103 ld b, a call Get2bpp pop hl - ld de, 7 * 7 * $10 + ld de, 7 * 7 tiles add hl, de push hl ld a, $1 @@ -33454,17 +20722,17 @@ Function51103: ; 51103 call GetFarWRAMByte pop hl and $f - ld de, w6_d000 + $800 + 5 * 5 * $10 + ld de, w6_d800 + 5 * 5 tiles ld c, 5 * 5 cp 5 - jr z, .asm_5113b - ld de, w6_d000 + $800 + 6 * 6 * $10 + jr z, .got_dims + ld de, w6_d800 + 6 * 6 tiles ld c, 6 * 6 cp 6 - jr z, .asm_5113b - ld de, w6_d000 + $800 + 7 * 7 * $10 + jr z, .got_dims + ld de, w6_d800 + 7 * 7 tiles ld c, 7 * 7 -.asm_5113b +.got_dims push hl push bc @@ -33561,10 +20829,10 @@ FixPicBank: ; 511c5 ; This is a thing for some reason. push hl push bc - sub PICS_1 - $36 + sub PICS_1 - PICS_FIX ld c, a ld b, 0 - ld hl, Unknown_511d4 + ld hl, .PicsBanks add hl, bc ld a, [hl] pop bc @@ -33572,7 +20840,7 @@ FixPicBank: ; 511c5 ret ; 511d4 -Unknown_511d4: ; 511d4 +.PicsBanks: ; 511d4 db PICS_1 db PICS_2 db PICS_3 @@ -33698,28 +20966,28 @@ Function5127c: ; 5127c jr z, .asm_512a8 ld a, c cp 7 * 7 - ld de, 7 * 7 * $10 - jr z, .asm_51296 + ld de, 7 * 7 tiles + jr z, .got_dims cp 6 * 6 - ld de, 6 * 6 * $10 - jr z, .asm_51296 - ld de, 5 * 5 * $10 + ld de, 6 * 6 tiles + jr z, .got_dims + ld de, 5 * 5 tiles -.asm_51296 +.got_dims ld a, [hl] ld b, $0 ld c, $8 -.asm_5129b +.loop rra rl b dec c - jr nz, .asm_5129b + jr nz, .loop ld a, b ld [hli], a dec de ld a, e or d - jr nz, .asm_51296 + jr nz, .got_dims .asm_512a8 pop bc @@ -33833,13 +21101,13 @@ Function51322: ; 51322 ld [wd265], a ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH - ld de, wd018 + ld de, wd018_Mon call Function513e0 - ld hl, wd01a + ld hl, wd018_MonMoves ld de, TempMonMoves ld bc, NUM_MOVES call CopyBytes - ld hl, wd02f + ld hl, wd018_MonPP ld de, TempMonPP ld bc, NUM_MOVES call CopyBytes @@ -33871,7 +21139,7 @@ Function5138b: ; 5138b ld [wd265], a ld hl, PartyMons ld bc, PARTYMON_STRUCT_LENGTH - ld de, wd018 + ld de, wd018_Mon call Function513e0 ret ; 513cb @@ -33986,7 +21254,7 @@ SECTION "bank20", ROMX, BANK[$20] DoPlayerMovement:: ; 80000 call GetMovementInput - ld a, $3e ; standing + ld a, movement_step_sleep_1 ld [MovementAnimation], a xor a ld [wd041], a @@ -34032,7 +21300,7 @@ GetPlayerMovement: ; 8002d cp PLAYER_BIKE jr z, .Normal cp PLAYER_SLIP - jr z, .Board + jr z, .Ice .Normal call CheckForcedMovementInput @@ -34060,7 +21328,7 @@ GetPlayerMovement: ; 8002d ret c jr .NotMoving -.Board +.Ice call CheckForcedMovementInput call GetMovementAction call CheckTileMovement @@ -34088,7 +21356,7 @@ GetPlayerMovement: ; 8002d jr z, .Standing ; Walking into an edge warp won't bump. - ld a, [wd041] + ld a, [EngineBuffer4] and a jr nz, .CantMove call PlayBump @@ -34108,7 +21376,7 @@ CheckTileMovement: ; 800b7 ; Tiles such as waterfalls and warps move the player ; in a given direction, overriding input. - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] ld c, a call CheckWhirlpoolTile jr c, .asm_800c4 @@ -34261,21 +21529,21 @@ TryStep: ; 8016b jr z, TrySurfStep call CheckLandPermissions - jr c, .asm_801be + jr c, .bump call IsNPCInFront and a - jr z, .asm_801be + jr z, .bump cp 2 - jr z, .asm_801be + jr z, .bump - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] call CheckIceTile jr nc, .ice ; Downhill riding is slower when not moving down. call CheckRiding - jr nz, .asm_801ae + jr nz, .walk ld hl, BikeFlags bit 2, [hl] ; downhill @@ -34296,7 +21564,7 @@ TryStep: ; 8016b scf ret -.asm_801ae +.walk ld a, STEP_WALK call DoStep scf @@ -34312,7 +21580,7 @@ TryStep: ; 8016b xor a ret -.asm_801be +.bump xor a ret ; 801c0 @@ -34356,7 +21624,7 @@ TrySurfStep: ; 801c0 TryJumpLedge: ; 801f3 - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] ld e, a and $f0 cp $a0 ; ledge @@ -34408,15 +21676,15 @@ CheckEdgeWarp: ; 80226 ld d, 0 ld hl, .EdgeWarps add hl, de - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] cp [hl] - jr nz, .asm_80259 + jr nz, .nope ld a, 1 ld [wd041], a ld a, [WalkingDirection] cp STANDING - jr z, .asm_80259 + jr z, .nope ld e, a ld a, [PlayerDirection] @@ -34424,16 +21692,16 @@ CheckEdgeWarp: ; 80226 rrca and 3 cp e - jr nz, .asm_80259 - call WarpCheck ; CheckFallPit? - jr nc, .asm_80259 + jr nz, .nope + call WarpCheck + jr nc, .nope call StandInPlace scf ld a, 1 ret -.asm_80259 +.nope xor a ret @@ -34481,28 +21749,52 @@ endr dw .WalkInPlace .Slow - db $08, $09, $0a, $0b + slow_step_down + slow_step_up + slow_step_left + slow_step_right .Walk - db $0c, $0d, $0e, $0f + step_down + step_up + step_left + step_right .Bike - db $10, $11, $12, $13 + big_step_down + big_step_up + big_step_left + big_step_right .Ledge - db $30, $31, $32, $33 + jump_step_down + jump_step_up + jump_step_left + jump_step_right .Ice - db $1c, $1d, $1e, $1f + fast_slide_step_down + fast_slide_step_up + fast_slide_step_left + fast_slide_step_right .BackwardsLedge - db $31, $30, $33, $32 + jump_step_up + jump_step_down + jump_step_right + jump_step_left .Turn - db $04, $05, $06, $07 + half_step_down + half_step_up + half_step_left + half_step_right .WalkInPlace - db $80, $81, $82, $83 + db $80 + movement_turn_head_down + db $80 + movement_turn_head_up + db $80 + movement_turn_head_left + db $80 + movement_turn_head_right ; 802b3 StandInPlace: ; 802b3 ld a, 0 ld [wd04e], a - ld a, $3e ; standing + ld a, movement_step_sleep_1 ld [MovementAnimation], a xor a ret @@ -34512,7 +21804,7 @@ StandInPlace: ; 802b3 WalkInPlace: ; 802bf ld a, 0 ld [wd04e], a - ld a, $50 ; walking + ld a, movement_step_bump ld [MovementAnimation], a xor a ret @@ -34522,7 +21814,7 @@ WalkInPlace: ; 802bf CheckForcedMovementInput: ; 802cb ; When sliding on ice, input is forced to remain in the same direction. - call Function80404 + call CheckStandingOnIce ret nc ld a, [wd04e] @@ -34535,7 +21827,7 @@ CheckForcedMovementInput: ; 802cb ld hl, .data_802e8 add hl, de ld a, [CurInput] - and A_BUTTON | B_BUTTON | SELECT | START + and BUTTONS or [hl] ld [CurInput], a ret @@ -34592,7 +21884,7 @@ GetMovementAction: ; 802ec ; tile collision pointer .table1 db STANDING, FACE_CURRENT, 0, 0 - dw PlayerStandingTile + dw PlayerNextTile .table2 db RIGHT, FACE_RIGHT, 1, 0 dw TileRight @@ -34606,33 +21898,39 @@ GetMovementAction: ; 802ec IsNPCInFront: ; 80341 - +; Returns 0 if there is an NPC in front that you can't move +; Returns 1 if there is no NPC in front +; Returns 2 if there is a movable NPC in front ld a, 0 ld [hMapObjectIndexBuffer], a - ld a, [PlayerMapX] +; Load the next X coordinate into d + ld a, [PlayerNextMapX] ld d, a ld a, [WalkingX] add d ld d, a - ld a, [PlayerMapY] +; Load the next Y coordinate into e + ld a, [PlayerNextMapY] ld e, a ld a, [WalkingY] add e ld e, a +; Find an object struct with coordinates equal to d,e ld bc, ObjectStructs ; redundant - callba Function7041 - jr nc, .asm_80369 + callba IsNPCAtCoord + jr nc, .nope call Function8036f - jr c, .asm_8036c + jr c, .no_bump +; .bump xor a ret -.asm_80369 +.nope ld a, 1 ret -.asm_8036c +.no_bump ld a, 2 ret ; 8036f @@ -34641,27 +21939,27 @@ IsNPCInFront: ; 80341 Function8036f: ; 8036f ld hl, BikeFlags - bit 0, [hl] - jr z, .asm_8039c + bit 0, [hl] ; using strength + jr z, .nope - ld hl, $7 + ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld a, [hl] - cp $ff - jr nz, .asm_8039c + cp STANDING + jr nz, .nope - ld hl, $6 + ld hl, OBJECT_PALETTE add hl, bc bit 6, [hl] - jr z, .asm_8039c + jr z, .nope - ld hl, $5 + ld hl, OBJECT_FLAGS2 add hl, bc set 2, [hl] ld a, [WalkingDirection] ld d, a - ld hl, $20 + ld hl, OBJECT_RANGE add hl, bc ld a, [hl] and $fc @@ -34671,7 +21969,7 @@ Function8036f: ; 8036f scf ret -.asm_8039c +.nope xor a ret ; 8039e @@ -34792,24 +22090,24 @@ WaterToLandSprite: ; 803f9 ; 80404 -Function80404:: ; 80404 +CheckStandingOnIce:: ; 80404 ld a, [wd04e] cp 0 - jr z, .asm_80420 + jr z, .nope cp $f0 - jr z, .asm_80420 - ld a, [PlayerStandingTile] + jr z, .nope + ld a, [PlayerNextTile] call CheckIceTile - jr nc, .asm_8041e + jr nc, .yep ld a, [PlayerState] cp PLAYER_SLIP - jr nz, .asm_80420 + jr nz, .nope -.asm_8041e +.yep scf ret -.asm_80420 +.nope and a ret ; 80422 @@ -34817,9 +22115,10 @@ Function80404:: ; 80404 Function80422:: ; 80422 ld hl, wc2de - ld a, $3e ; standing + ld a, movement_step_sleep_1 cp [hl] ret z + ld [hl], a ld a, 0 ld [wd04e], a @@ -34828,3901 +22127,23 @@ Function80422:: ; 80422 -EngineFlagAction:: ; 80430 -; Do action b on engine flag de -; -; b = 0: reset flag -; = 1: set flag -; > 1: check flag, result in c -; -; Setting/resetting does not return a result. - - -; 16-bit flag ids are considered invalid, but it's nice -; to know that the infrastructure is there. - - ld a, d - cp 0 - jr z, .ceiling - jr c, .read ; cp 0 can't set carry! - jr .invalid - -; There are only $a2 engine flags, so -; anything beyond that is invalid too. - -.ceiling - ld a, e - cp NUM_ENGINE_FLAGS - jr c, .read - -; Invalid flags are treated as flag 00. - -.invalid - xor a - ld e, a - ld d, a - -; Get this flag's location. - -.read - ld hl, EngineFlags -; location -rept 2 - add hl, de -endr -; bit - add hl, de - -; location - ld e, [hl] - inc hl - ld d, [hl] - inc hl -; bit - ld c, [hl] - -; What are we doing with this flag? - - ld a, b - cp 1 - jr c, .reset ; b = 0 - jr z, .set ; b = 1 - -; Return the given flag in c. -.check - ld a, [de] - and c - ld c, a - ret - -; Set the given flag. -.set - ld a, [de] - or c - ld [de], a - ret - -; Reset the given flag. -.reset - ld a, c - cpl ; AND all bits except the one in question - ld c, a - ld a, [de] - and c - ld [de], a - ret -; 80462 - - -EngineFlags: ; 80462 INCLUDE "engine/engine_flags.asm" ; 80648 - - -_GetVarAction:: ; 80648 (20:4648) - ld a, c - cp NUM_VARS - jr c, .valid - xor a -.valid - ld c, a - ld b, 0 - ld hl, .VarActionTable -rept 3 - add hl, bc -endr - ld e, [hl] - inc hl - ld d, [hl] - inc hl - ld b, [hl] - ld a, b - and RETVAR_EXECUTE - jr nz, .call - ld a, b - and RETVAR_ADDR_DE - ret nz - ld a, [de] - jr .loadstringbuffer2 - -.call - call _de_ - ret - -.loadstringbuffer2: ; 8066c (20:466c) - ld de, StringBuffer2 - ld [de], a - ret -; 80671 (20:4671) - -.VarActionTable: ; 80671 -; $00: copy [de] to StringBuffer2 -; $40: return address in de -; $80: call function - dwb StringBuffer2, RETVAR_STRBUF2 - dwb PartyCount, RETVAR_STRBUF2 - dwb .BattleResult, RETVAR_EXECUTE - dwb BattleType, RETVAR_ADDR_DE - dwb TimeOfDay, RETVAR_STRBUF2 - dwb .CountCaughtMons, RETVAR_EXECUTE - dwb .CountSeenMons, RETVAR_EXECUTE - dwb .CountBadges, RETVAR_EXECUTE - dwb PlayerState, RETVAR_ADDR_DE - dwb .PlayerFacing, RETVAR_EXECUTE - dwb hHours, RETVAR_STRBUF2 - dwb .DayOfWeek, RETVAR_EXECUTE - dwb MapGroup, RETVAR_STRBUF2 - dwb MapNumber, RETVAR_STRBUF2 - dwb .UnownCaught, RETVAR_EXECUTE - dwb wPermission, RETVAR_STRBUF2 - dwb .BoxFreeSpace, RETVAR_EXECUTE - dwb wBugContestMinsRemaining, RETVAR_STRBUF2 - dwb XCoord, RETVAR_STRBUF2 - dwb YCoord, RETVAR_STRBUF2 - dwb wSpecialPhoneCallID, RETVAR_STRBUF2 - dwb wcf64, RETVAR_STRBUF2 - dwb wKurtApricornQuantity, RETVAR_STRBUF2 - dwb wCurrentCaller, RETVAR_ADDR_DE - dwb wBlueCardBalance, RETVAR_ADDR_DE - dwb wBuenasPassword, RETVAR_ADDR_DE - dwb wdc58, RETVAR_STRBUF2 - dwb NULL, RETVAR_STRBUF2 -; 806c5 - -.CountCaughtMons: ; 806c5 -; Caught mons. - ld hl, PokedexCaught - ld b, EndPokedexCaught - PokedexCaught - call CountSetBits - ld a, [wd265] - jp .loadstringbuffer2 -; 806d3 - -.CountSeenMons: ; 806d3 -; Seen mons. - ld hl, PokedexSeen - ld b, EndPokedexSeen - PokedexSeen - call CountSetBits - ld a, [wd265] - jp .loadstringbuffer2 -; 806e1 - -.CountBadges: ; 806e1 -; Number of owned badges. - ld hl, Badges - ld b, 2 - call CountSetBits - ld a, [wd265] - jp .loadstringbuffer2 -; 806ef - -.PlayerFacing: ; 806ef -; The direction the player is facing. - ld a, [PlayerDirection] - and $c - rrca - rrca - jp .loadstringbuffer2 -; 806f9 - -.DayOfWeek: ; 806f9 -; The day of the week. - call GetWeekday - jp .loadstringbuffer2 -; 806ff - -.UnownCaught: ; 806ff -; Number of unique Unown caught. - call .count - ld a, b - jp .loadstringbuffer2 - -.count - ld hl, UnownDex - ld b, 0 -.loop - ld a, [hli] - and a - ret z - inc b - ld a, b - cp 26 - jr c, .loop - ret -; 80715 - -.BoxFreeSpace: ; 80715 -; Remaining slots in the current box. - ld a, BANK(sBoxCount) - call GetSRAMBank - ld hl, sBoxCount - ld a, MONS_PER_BOX - sub [hl] - ld b, a - call CloseSRAM - ld a, b - jp .loadstringbuffer2 -; 80728 - -.BattleResult: ; 80728 - ld a, [wBattleResult] - and $3f - jp .loadstringbuffer2 -; 80730 - +INCLUDE "engine/variables.asm" BattleText:: INCLUDE "text/battle.asm" - -ColorTest: ; 818ac -; A debug menu to test monster and trainer palettes at runtime. - - ld a, [hCGB] - and a - jr nz, .asm_818b5 - ld a, [hSGB] - and a - ret z - -.asm_818b5 - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - call DisableLCD - call Function81948 - call Function8197c - call Function819a7 - call Function818f4 - call EnableLCD - ld de, MUSIC_NONE - call PlayMusic - xor a - ld [wJumptableIndex], a - ld [wcf66], a - ld [wd003], a -.asm_818de - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_818f0 - call Function81a74 - call Function81f5e - call DelayFrame - jr .asm_818de - -.asm_818f0 - pop af - ld [hInMenu], a - ret -; 818f4 - -Function818f4: ; 818f4 - ld a, [wd002] - and a - jr nz, Function81911 - ld hl, PokemonPalettes - -Function818fd: ; 818fd - ld de, OverworldMap - ld c, NUM_POKEMON + 1 -.asm_81902 - push bc - push hl - call Function81928 - pop hl - ld bc, 8 - add hl, bc - pop bc - dec c - jr nz, .asm_81902 - ret - -Function81911: ; 81911 - ld hl, TrainerPalettes - ld de, OverworldMap - ld c, NUM_TRAINER_CLASSES -.asm_81919 - push bc - push hl - call Function81928 - pop hl - ld bc, 4 - add hl, bc - pop bc - dec c - jr nz, .asm_81919 - ret -; 81928 - -Function81928: ; 81928 - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - inc hl - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - inc hl - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - inc hl - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - ret -; 81948 - -Function81948: ; 81948 - ld a, $1 - ld [rVBK], a - ld hl, VTiles0 - ld bc, sScratch - VTiles0 - xor a - call ByteFill - ld a, $0 - ld [rVBK], a - ld hl, VTiles0 - ld bc, sScratch - VTiles0 - xor a - call ByteFill - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - call ClearSprites - ret -; 8197c - -Function8197c: ; 8197c - ld hl, DebugColorTestGFX + $10 - ld de, VTiles2 tile $6a - ld bc, $160 - call CopyBytes - ld hl, DebugColorTestGFX - ld de, VTiles0 - ld bc, $10 - call CopyBytes - call LoadStandardFont - ld hl, VTiles1 - lb bc, 8, 0 -.asm_8199d - ld a, [hl] - xor $ff - ld [hli], a - dec bc - ld a, c - or b - jr nz, .asm_8199d - ret -; 819a7 - -Function819a7: ; 819a7 - ld a, [hCGB] - and a - ret z - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_819f4 - ld de, BGPals - ld bc, $80 - call CopyBytes - ld a, $80 - ld [rBGPI], a - ld hl, Palette_819f4 - ld c, $40 - xor a -.asm_819c8 - ld [rBGPD], a - dec c - jr nz, .asm_819c8 - ld a, $80 - ld [rOBPI], a - ld hl, Palette_81a34 - ld c, $40 -.asm_819d6 - ld a, [hli] - ld [rOBPD], a - dec c - jr nz, .asm_819d6 - ld a, $94 - ld [wc608], a - ld a, $52 - ld [wc608 + 1], a - ld a, $4a - ld [wc608 + 2], a - ld a, $29 - ld [wc608 + 3], a - pop af - ld [rSVBK], a - ret -; 819f4 - -Palette_819f4: ; 819f4 - ; white - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - ; red - RGB 31, 00, 00 - RGB 31, 00, 00 - RGB 31, 00, 00 - RGB 00, 00, 00 - - ; green - RGB 00, 31, 00 - RGB 00, 31, 00 - RGB 00, 31, 00 - RGB 00, 00, 00 - - ; blue - RGB 00, 00, 31 - RGB 00, 00, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - -Palette_81a34: ; 81a34 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - ; red - RGB 31, 31, 31 - RGB 31, 00, 00 - RGB 31, 00, 00 - RGB 00, 00, 00 - - ; green - RGB 31, 31, 31 - RGB 00, 31, 00 - RGB 00, 31, 00 - RGB 00, 00, 00 - - ; blue - RGB 31, 31, 31 - RGB 00, 00, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 -; 81a74 - -Function81a74: ; 81a74 - call JoyTextDelay - ld a, [wJumptableIndex] - cp $4 - jr nc, .asm_81a8b - ld hl, hJoyLast - ld a, [hl] - and SELECT - jr nz, .asm_81a9a - ld a, [hl] - and START - jr nz, .asm_81aab - -.asm_81a8b - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_81acf -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.asm_81a9a - call Function81eca - call Function81ac3 - ld e, a - ld a, [wcf66] - inc a - cp e - jr c, .asm_81aba - xor a - jr .asm_81aba - -.asm_81aab - call Function81eca - ld a, [wcf66] - dec a - cp $ff - jr nz, .asm_81aba - call Function81ac3 - dec a - -.asm_81aba - ld [wcf66], a - ld a, $0 - ld [wJumptableIndex], a - ret -; 81ac3 - -Function81ac3: ; 81ac3 -; Looping back around the pic set. - ld a, [wd002] - and a - jr nz, .asm_81acc - ld a, NUM_POKEMON ; CELEBI - ret - -.asm_81acc - ld a, NUM_TRAINER_CLASSES - 1 ; MYSTICALMAN - ret -; 81acf - -Jumptable_81acf: ; 81acf - dw Function81adb - dw Function81c18 - dw Function81c33 - dw Function81cc2 - dw Function81d8e - dw Function81daf -; 81adb - -Function81adb: ; 81adb - xor a - ld [hBGMapMode], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $6f - call ByteFill - hlcoord 1, 3 - lb bc, 7, 18 - ld a, $6c - call Bank20_FillBoxWithByte - hlcoord 11, 0 - lb bc, 2, 3 - ld a, $6d - call Bank20_FillBoxWithByte - hlcoord 16, 0 - lb bc, 2, 3 - ld a, $6e - call Bank20_FillBoxWithByte - call Function81bc0 - call Function81bf4 - ld a, [wcf66] - inc a - ld [CurPartySpecies], a - ld [wd265], a - hlcoord 0, 1 - ld de, wd265 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - ld a, [wd002] - and a - jr nz, .asm_81b7a - ld a, $1 - ld [UnownLetter], a - call GetPokemonName - hlcoord 4, 1 - call PlaceString - xor a - ld [wc2c6], a - hlcoord 12, 3 - call _PrepMonFrontpic - ld de, VTiles2 tile $31 - predef GetBackpic - ld a, $31 - ld [hFillBox], a - hlcoord 2, 4 - lb bc, 6, 6 - predef FillBox - ld a, [wd003] - and a - jr z, .asm_81b66 - ld de, String_81baf - jr .asm_81b69 - -.asm_81b66 - ld de, String_81bb4 - -.asm_81b69 - hlcoord 7, 17 - call PlaceString - hlcoord 0, 17 - ld de, String_81bb9 - call PlaceString - jr .asm_81ba9 - -.asm_81b7a - ld a, [wd265] - ld [TrainerClass], a - callab Function3957b - ld de, StringBuffer1 - hlcoord 4, 1 - call PlaceString - ld de, VTiles2 - callab GetTrainerPic - xor a - ld [TempEnemyMonSpecies], a - ld [hFillBox], a - hlcoord 2, 3 - lb bc, 7, 7 - predef FillBox - -.asm_81ba9 - ld a, $1 - ld [wJumptableIndex], a - ret -; 81baf - -String_81baf: db "レア", $6f, $6f, "@" ; rare (shiny) -String_81bb4: db "ノーマル@" ; normal -String_81bb9: db $7a, "きりかえ▶@" ; (A) switches -; 81bc0 - -Function81bc0: ; 81bc0 - decoord 0, 11, AttrMap - hlcoord 2, 11 - ld a, $1 - call Function81bde - decoord 0, 13, AttrMap - hlcoord 2, 13 - ld a, $2 - call Function81bde - decoord 0, 15, AttrMap - hlcoord 2, 15 - ld a, $3 - -Function81bde: ; 81bde - push af - ld a, $6a - ld [hli], a - ld bc, $f - ld a, $6b - call ByteFill - ld l, e - ld h, d - pop af - ld bc, $28 - call ByteFill - ret -; 81bf4 - -Function81bf4: ; 81bf4 - ld a, [wcf66] - inc a - ld l, a - ld h, $0 -rept 2 - add hl, hl -endr - ld de, OverworldMap - add hl, de - ld de, wc608 - ld bc, 4 - call CopyBytes - xor a - ld [wcf64], a - ld [wcf65], a - ld de, wc608 - call Function81ea5 - ret -; 81c18 - -Function81c18: ; 81c18 - ld a, [hCGB] - and a - jr z, .asm_81c2a - ld a, $2 - ld [hBGMapMode], a - call DelayFrame - call DelayFrame - call DelayFrame - -.asm_81c2a - call WaitBGMap - ld a, $2 - ld [wJumptableIndex], a - ret -; 81c33 - -Function81c33: ; 81c33 - ld a, [hCGB] - and a - jr z, .asm_81c69 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld de, wc608 - ld c, $1 - call Function81ee3 - hlcoord 10, 2 - ld de, wc608 - call Function81ca7 - hlcoord 15, 2 - ld de, wc608 + 2 - call Function81ca7 - ld a, $1 - ld [hCGBPalUpdate], a - ld a, $3 - ld [wJumptableIndex], a - pop af - ld [rSVBK], a - ret - -.asm_81c69 - ld hl, wcda9 - ld a, $1 - ld [hli], a - ld a, $ff - ld [hli], a - ld a, $7f - ld [hli], a - ld a, [wc608] - ld [hli], a - ld a, [wc608 + 1] - ld [hli], a - ld a, [wc608 + 2] - ld [hli], a - ld a, [wc608 + 3] - ld [hli], a - xor a -rept 2 - ld [hli], a -endr - ld [hl], a - ld hl, wcda9 - call Function81f0c - hlcoord 10, 2 - ld de, wc608 - call Function81ca7 - hlcoord 15, 2 - ld de, wc608 + 2 - call Function81ca7 - ld a, $3 - ld [wJumptableIndex], a - ret -; 81ca7 - -Function81ca7: ; 81ca7 -rept 3 - inc hl -endr - ld a, [de] - call Function81cbc - ld a, [de] - swap a - call Function81cbc - inc de - ld a, [de] - call Function81cbc - ld a, [de] - swap a - -Function81cbc: ; 81cbc - and $f - add $70 - ld [hld], a - ret -; 81cc2 - -Function81cc2: ; 81cc2 - ld a, [hJoyLast] - and B_BUTTON - jr nz, .asm_81cdf - ld a, [hJoyLast] - and A_BUTTON - jr nz, .asm_81ce5 - ld a, [wcf64] - and $3 - ld e, a - ld d, 0 - ld hl, Jumptable_81d02 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.asm_81cdf - ld a, $4 - ld [wJumptableIndex], a - ret - -.asm_81ce5 - ld a, [wd002] - and a - ret nz - ld a, [wd003] - xor $4 - ld [wd003], a - ld c, a - ld b, 0 - ld hl, PokemonPalettes - add hl, bc - call Function818fd - ld a, $0 - ld [wJumptableIndex], a - ret -; 81d02 - -Jumptable_81d02: ; 81d02 - dw Function81d0a - dw Function81d34 - dw Function81d46 - dw Function81d58 -; 81d0a - -Function81d0a: ; 81d0a - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function81d89 - ld a, [hl] - and D_LEFT - jr nz, .asm_81d1d - ld a, [hl] - and D_RIGHT - jr nz, .asm_81d28 - ret - -.asm_81d1d - xor a - ld [wcf65], a - ld de, wc608 - call Function81ea5 - ret - -.asm_81d28 - ld a, $1 - ld [wcf65], a - ld de, wc608 + 2 - call Function81ea5 - ret - -Function81d34: ; 81d34 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function81d89 - ld a, [hl] - and D_UP - jr nz, Function81d84 - ld hl, wc608 + 10 - jr Function81d63 - -Function81d46: ; 81d46 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function81d89 - ld a, [hl] - and D_UP - jr nz, Function81d84 - ld hl, wc608 + 11 - jr Function81d63 - -Function81d58: ; 81d58 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, Function81d84 - ld hl, wc608 + 12 - -Function81d63: ; 81d63 - ld a, [hJoyLast] - and D_RIGHT - jr nz, Function81d70 - ld a, [hJoyLast] - and D_LEFT - jr nz, Function81d77 - ret - -Function81d70: ; 81d70 - ld a, [hl] - cp $1f - ret nc - inc [hl] - jr Function81d7b - -Function81d77: ; 81d77 - ld a, [hl] - and a - ret z - dec [hl] - -Function81d7b: ; 81d7b - call Function81e67 - ld a, $2 - ld [wJumptableIndex], a - ret - -Function81d84: ; 81d84 - ld hl, wcf64 - dec [hl] - ret - -Function81d89: ; 81d89 - ld hl, wcf64 - inc [hl] - ret -; 81d8e - -Function81d8e: ; 81d8e - hlcoord 0, 10 - ld bc, $a0 - ld a, $6f - call ByteFill - hlcoord 2, 12 - ld de, String_81fcd - call PlaceString - xor a - ld [wd004], a - call Function81df4 - ld a, $5 - ld [wJumptableIndex], a - ret -; 81daf - -Function81daf: ; 81daf - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .asm_81dbb - call Function81dc7 - ret - -.asm_81dbb - ld a, $0 - ld [wJumptableIndex], a - ret -; 81dc1 - -Function81dc1: ; 81dc1 - ld hl, wJumptableIndex - set 7, [hl] - ret -; 81dc7 - -Function81dc7: ; 81dc7 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_81dd5 - ld a, [hl] - and D_DOWN - jr nz, .asm_81de2 - ret - -.asm_81dd5 - ld a, [wd004] - cp $3b - jr z, .asm_81ddf - inc a - jr .asm_81ded - -.asm_81ddf - xor a - jr .asm_81ded - -.asm_81de2 - ld a, [wd004] - and a - jr z, .asm_81deb - dec a - jr .asm_81ded - -.asm_81deb - ld a, $3b - -.asm_81ded - ld [wd004], a - call Function81df4 - ret -; 81df4 - -Function81df4: ; 81df4 - hlcoord 10, 11 - call Function81e5e - hlcoord 10, 12 - call Function81e5e - hlcoord 10, 13 - call Function81e5e - hlcoord 10, 14 - call Function81e5e - ld a, [wd004] - inc a - ld [wd265], a - predef GetTMHMMove - ld a, [wd265] - ld [wd262], a - call GetMoveName - hlcoord 10, 12 - call PlaceString - ld a, [wd004] - call Function81e55 - ld [CurItem], a - predef CanLearnTMHMMove - ld a, c - and a - ld de, String_81e46 - jr nz, .asm_81e3f - ld de, String_81e4d - -.asm_81e3f - hlcoord 10, 14 - call PlaceString - ret -; 81e46 - -String_81e46: db "おぼえられる@" ; can be taught -String_81e4d: db "おぼえられない@" ; cannot be taught -; 81e55 - -Function81e55: ; 81e55 - cp $32 - jr c, .asm_81e5b -rept 2 - inc a -endr - -.asm_81e5b - add $bf - ret -; 81e5e - -Function81e5e: ; 81e5e - ld bc, $a - ld a, $6f - call ByteFill - ret -; 81e67 - -Function81e67: ; 81e67 - ld a, [wc608 + 10] - and $1f - ld e, a - ld a, [wc608 + 11] - and $7 - sla a - swap a - or e - ld e, a - ld a, [wc608 + 11] - and $18 - sla a - swap a - ld d, a - ld a, [wc608 + 12] - and $1f - sla a - sla a - or d - ld d, a - ld a, [wcf65] - and a - jr z, .asm_81e9c - ld a, e - ld [wc608 + 2], a - ld a, d - ld [wc608 + 3], a - ret - -.asm_81e9c - ld a, e - ld [wc608], a - ld a, d - ld [wc608 + 1], a - ret -; 81ea5 - -Function81ea5: ; 81ea5 - ld a, [de] - and $1f - ld [wc608 + 10], a - ld a, [de] - and $e0 - swap a - srl a - ld b, a - inc de - ld a, [de] - and $3 - swap a - srl a - or b - ld [wc608 + 11], a - ld a, [de] - and $7c - srl a - srl a - ld [wc608 + 12], a - ret -; 81eca - -Function81eca: ; 81eca - ld a, [wcf66] - inc a - ld l, a - ld h, $0 -rept 2 - add hl, hl -endr - ld de, OverworldMap - add hl, de - ld e, l - ld d, h - ld hl, wc608 - ld bc, 4 - call CopyBytes - ret -; 81ee3 - -Function81ee3: ; 81ee3 -.asm_81ee3 - ld a, $ff - ld [hli], a - ld a, $7f - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - xor a -rept 2 - ld [hli], a -endr - dec c - jr nz, .asm_81ee3 - ret -; 81efc - -Bank20_FillBoxWithByte: ; 81efc -; For some reason, we have another copy of FillBoxWithByte here -.row - push bc - push hl -.col - ld [hli], a - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - ret -; 81f0c - -Function81f0c: ; 81f0c - ld a, [wcfbe] - push af - set 7, a - ld [wcfbe], a - call Function81f1d - pop af - ld [wcfbe], a - ret -; 81f1d - -Function81f1d: ; 81f1d - ld a, [hl] - and $7 - ret z - ld b, a -.asm_81f22 - push bc - xor a - ld [rJOYP], a - ld a, $30 - ld [rJOYP], a - ld b, $10 -.asm_81f2c - ld e, $8 - ld a, [hli] - ld d, a -.asm_81f30 - bit 0, d - ld a, $10 - jr nz, .asm_81f38 - ld a, $20 - -.asm_81f38 - ld [rJOYP], a - ld a, $30 - ld [rJOYP], a - rr d - dec e - jr nz, .asm_81f30 - dec b - jr nz, .asm_81f2c - ld a, $20 - ld [rJOYP], a - ld a, $30 - ld [rJOYP], a - ld de, 7000 -.asm_81f51 - nop - nop - nop - dec de - ld a, d - or e - jr nz, .asm_81f51 - pop bc - dec b - jr nz, .asm_81f22 - ret -; 81f5e - -Function81f5e: ; 81f5e - ld a, $6f - hlcoord 10, 0 - ld [hl], a - hlcoord 15, 0 - ld [hl], a - hlcoord 1, 11 - ld [hl], a - hlcoord 1, 13 - ld [hl], a - hlcoord 1, 15 - ld [hl], a - ld a, [wJumptableIndex] - cp $3 - jr nz, .asm_81fc9 - ld a, [wcf64] - and a - jr z, .asm_81f8d - dec a - hlcoord 1, 11 - ld bc, 2 * SCREEN_WIDTH - call AddNTimes - ld [hl], $ed - -.asm_81f8d - ld a, [wcf65] - and a - jr z, .asm_81f98 - hlcoord 15, 0 - jr .asm_81f9b - -.asm_81f98 - hlcoord 10, 0 - -.asm_81f9b - ld [hl], $ed - ld b, $70 - ld c, $5 - ld hl, Sprites - ld de, wc608 + 10 - call .asm_81fb7 - ld de, wc608 + 11 - call .asm_81fb7 - ld de, wc608 + 12 - call .asm_81fb7 - ret - -.asm_81fb7 - ld a, b - ld [hli], a - ld a, [de] -rept 2 - add a -endr - add $18 - ld [hli], a - xor a - ld [hli], a - ld a, c - ld [hli], a - ld a, $10 - add b - ld b, a - inc c - ret - -.asm_81fc9 - call ClearSprites - ret -; 81fcd - -String_81fcd: ; 81fcd - db "おわりますか?" ; Are you finished? - next "はい", $f2, $f2, $f2, $7a ; YES (A) - next "いいえ", $f2, $f2, $7b ; NO (B) - db "@" -; 81fe3 - -DebugColorTestGFX: -INCBIN "gfx/debug/color_test.2bpp" - - -TilesetColorTest: - ret - xor a - ld [wJumptableIndex], a - ld [wcf64], a - ld [wcf65], a - ld [wcf66], a - ld [hMapAnims], a - call ClearSprites - call OverworldTextModeSwitch - call Function3200 - xor a - ld [hBGMapMode], a - ld de, DebugColorTestGFX + $10 - ld hl, VTiles2 tile $6a - lb bc, BANK(DebugColorTestGFX), $16 - call Request2bpp - ld de, DebugColorTestGFX - ld hl, VTiles1 - lb bc, BANK(DebugColorTestGFX), 1 - call Request2bpp - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $6f - call ByteFill - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $7 - call ByteFill - ld de, $15 - ld a, $6c - call Function821d2 - ld de, $1a - ld a, $6d - call Function821d2 - ld de, $1f - ld a, $6e - call Function821d2 - ld de, $24 - ld a, $6f - call Function821d2 - call Function821f4 - call Function8220f - call Function3200 - ld [wJumptableIndex], a - ld a, $40 - ld [hWY], a - ret -; 821d2 - -Function821d2: ; 821d2 - hlcoord 0, 0 - call Function821de - -Function821d8: ; 821d8 - ld a, [wcf64] - hlcoord 0, 0, AttrMap - -Function821de: ; 821de - add hl, de -rept 4 - ld [hli], a -endr - ld bc, $10 - add hl, bc -rept 4 - ld [hli], a -endr - ld bc, $10 - add hl, bc -rept 4 - ld [hli], a -endr - ret -; 821f4 - -Function821f4: ; 821f4 - hlcoord 2, 4 - call Function82203 - hlcoord 2, 6 - call Function82203 - hlcoord 2, 8 - -Function82203: ; 82203 - ld a, $6a - ld [hli], a - ld bc, $10 - 1 - ld a, $6b - call ByteFill - ret -; 8220f - -Function8220f: ; 8220f - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, [wcf64] - ld l, a - ld h, $0 -rept 3 - add hl, hl -endr - ld de, wMapPals - add hl, de - ld de, wc608 - ld bc, 8 - call CopyBytes - ld de, wc608 - call Function81ea5 - pop af - ld [rSVBK], a - ret -; 82236 - - -Function82236: ; 82236 - ld hl, hJoyLast - ld a, [hl] - and SELECT - jr nz, .loop7 - ld a, [hl] - and B_BUTTON - jr nz, .asm_82299 - call Function822f0 - ret - -.loop7 - ld hl, wcf64 - ld a, [hl] - inc a - and $7 - cp $7 - jr nz, .asm_82253 - xor a - -.asm_82253 - ld [hl], a - ld de, $15 - call Function821d8 - ld de, $1a - call Function821d8 - ld de, $1f - call Function821d8 - ld de, $24 - call Function821d8 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld a, [wcf64] - ld bc, 8 - call AddNTimes - ld de, wc608 - ld bc, 8 - call CopyBytes - pop af - ld [rSVBK], a - ld a, $2 - ld [hBGMapMode], a - ld c, 3 - call DelayFrames - ld a, $1 - ld [hBGMapMode], a - ret - -.asm_82299 - call ClearSprites - ld a, [hWY] - xor $d0 - ld [hWY], a - ret -; 822a3 - -Function822a3: ; 822a3 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld a, [wcf64] - ld bc, 8 - call AddNTimes - ld e, l - ld d, h - ld hl, wc608 - ld bc, 8 - call CopyBytes - hlcoord 1, 0 - ld de, wc608 - call Function81ca7 - hlcoord 6, 0 - ld de, wc608 + 2 - call Function81ca7 - hlcoord 11, 0 - ld de, wc608 + 4 - call Function81ca7 - hlcoord 16, 0 - ld de, wc608 + 6 - call Function81ca7 - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - call DelayFrame - ret -; 822f0 - -Function822f0: ; 822f0 - ld a, [wcf65] - and 3 - ld e, a - ld d, 0 - ld hl, .jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 82301 - -.jumptable: ; 82301 - dw Function82309 - dw Function82339 - dw Function8234b - dw Function8235d -; 82309 - -Function82309: ; 82309 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function8238c - ld a, [hl] - and D_LEFT - jr nz, .asm_8231c - ld a, [hl] - and D_RIGHT - jr nz, .asm_82322 - ret - -.asm_8231c - ld a, [wcf66] - dec a - jr .asm_82326 - -.asm_82322 - ld a, [wcf66] - inc a - -.asm_82326 - and $3 - ld [wcf66], a - ld e, a - ld d, $0 - ld hl, wc608 -rept 2 - add hl, de -endr - ld e, l - ld d, h - call Function81ea5 - ret - -Function82339: ; 82338 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function8238c - ld a, [hl] - and D_UP - jr nz, Function82387 - ld hl, wc608 + 10 - jr Function82368 - -Function8234b: ; 8234b - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function8238c - ld a, [hl] - and D_UP - jr nz, Function82387 - ld hl, wc608 + 11 - jr Function82368 - -Function8235d: ; 8235d - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, Function82387 - ld hl, wc608 + 12 - -Function82368: ; 82368 - ld a, [hJoyLast] - and D_RIGHT - jr nz, .asm_82375 - ld a, [hJoyLast] - and D_LEFT - jr nz, .asm_8237c - ret - -.asm_82375 - ld a, [hl] - cp $1f - ret nc - inc [hl] - jr .asm_82380 - -.asm_8237c - ld a, [hl] - and a - ret z - dec [hl] - -.asm_82380 - call Function82391 - call Function822a3 - ret - -Function82387: ; 82387 - ld hl, wcf65 - dec [hl] - ret - -Function8238c: ; 8238c - ld hl, wcf65 - inc [hl] - ret -; 82391 - -Function82391: ; 82391 - ld a, [wc608 + 10] - and $1f - ld e, a - ld a, [wc608 + 11] - and $7 - sla a - swap a - or e - ld e, a - ld a, [wc608 + 11] - and $18 - sla a - swap a - ld d, a - ld a, [wc608 + 12] - and $1f - sla a - sla a - or d - ld d, a - ld a, [wcf66] - ld c, a - ld b, $0 - ld hl, wc608 -rept 2 - add hl, bc -endr - ld a, e - ld [hli], a - ld [hl], d - ret -; 823c6 - -Function823c6: ; 823c6 - ret - -Function823c7: ; 823c7 - ret -; 823c8 - +INCLUDE "engine/debug.asm" SECTION "bank21", ROMX, BANK[$21] -Function84000: ; 84000 - ld hl, OverworldMap - lb bc, 4, 12 - xor a - call Function842ab - xor a - ld [rSB], a - ld [rSC], a - ld [wc2d5], a - ld hl, wc2d4 - set 0, [hl] - ld a, [GBPrinter] - ld [wcbfb], a - xor a - ld [wJumptableIndex], a - ret -; 84022 - -Function84022: ; 84022 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_84031 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 84031 - - -Jumptable_84031: ; 84031 (21:4031) - dw Function84077 - dw Function84143 - dw Function84120 - dw Function84099 - dw Function84180 - dw Function8412e - dw Function840c5 - dw Function84180 - dw Function84120 - dw Function840de - dw Function84180 - dw Function84120 - dw Function841a1 - dw Function84063 - dw Function8406d - dw Function84120 - dw Function84103 - dw Function84071 - dw Function841b0 - dw Function841b3 - - -Function84059: ; 84059 (21:4059) - ld hl, wJumptableIndex - inc [hl] - ret - -Function8405e: ; 8405e (21:405e) - ld hl, wJumptableIndex - dec [hl] - ret - -Function84063: ; 84063 (21:4063) - xor a - ld [wca89], a - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function8406d: ; 8406d (21:406d) - call Function84059 - ret - -Function84071: ; 84071 (21:4071) - ld a, $1 - ld [wJumptableIndex], a - ret - -Function84077: ; 84077 (21:4077) - call Function841fb - ld hl, Unknown_842b7 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - ld a, [wcf65] - ld [wca81], a - call Function84059 - call Function841c3 - ld a, $1 - ld [wcbf8], a - ret - -Function84099: ; 84099 (21:4099) - call Function841fb - ld hl, wca81 - ld a, [hl] - and a - jr z, Function840c5 - ld hl, Unknown_842c3 - call Function841e2 - call Function84260 - ld a, $80 - ld [wca8e], a - ld a, $2 - ld [wca8f], a - call Function84219 - call Function84059 - call Function841c3 - ld a, $2 - ld [wcbf8], a - ret - -Function840c5: ; 840c5 (21:40c5) - ld a, $6 - ld [wJumptableIndex], a - ld hl, Unknown_842c9 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - call Function84059 - call Function841c3 - ret - -Function840de: ; 840de (21:40de) - call Function841fb - ld hl, Unknown_842bd - call Function841e2 - call Function84249 - ld a, $4 - ld [wca8e], a - ld a, $0 - ld [wca8f], a - call Function84219 - call Function84059 - call Function841c3 - ld a, $3 - ld [wcbf8], a - ret - -Function84103: ; 84103 (21:4103) - call Function841fb - ld hl, Unknown_842b7 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - ld a, [wcf65] - ld [wca81], a - call Function84059 - call Function841c3 - ret - -Function84120: ; 84120 (21:4120) - ld hl, wca8b - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - call Function84059 - ret - -Function8412e: ; 8412e (21:412e) - ld hl, wca8b - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - ld hl, wca81 - dec [hl] - call Function8405e - call Function8405e - ret - -Function84143: ; 84143 (21:4143) - ld a, [wc2d5] - and a - ret nz - ld a, [wca88] - cp $ff - jr nz, .printer_connected - ld a, [wca89] - cp $ff - jr z, .printer_error - -.printer_connected - ld a, [wca88] - cp $81 - jr nz, .printer_error - ld a, [wca89] - cp $0 - jr nz, .printer_error - ld hl, wc2d4 - set 1, [hl] - ld a, $5 - ld [wca8a], a - call Function84059 - ret - -.printer_error - ld a, $ff - ld [wca88], a - ld [wca89], a - ld a, $e - ld [wJumptableIndex], a - ret - -Function84180: ; 84180 (21:4180) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f0 - jr nz, .asm_8419b - ld a, [wca89] - and $1 - jr nz, .asm_84197 - call Function84059 - ret -.asm_84197 - call Function8405e - ret -.asm_8419b - ld a, $12 - ld [wJumptableIndex], a - ret - -Function841a1: ; 841a1 (21:41a1) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f3 - ret nz - call Function84059 - ret - -Function841b0: ; 841b0 (21:41b0) - call Function84059 - -Function841b3: ; 841b3 (21:41b3) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f0 - ret nz - xor a - ld [wJumptableIndex], a - ret - -Function841c3: ; 841c3 (21:41c3) - ld a, [wc2d5] - and a - jr nz, Function841c3 - xor a - ld [wca8c], a - ld [wca8d], a - ld a, $1 - ld [wc2d5], a - ld a, $88 - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Function841e2: ; 841e2 (21:41e2) - ld a, [hli] - ld [wca82], a - ld a, [hli] - ld [wca83], a - ld a, [hli] - ld [wca84], a - ld a, [hli] - ld [wca85], a - ld a, [hli] - ld [wca86], a - ld a, [hl] - ld [wca87], a - ret - -Function841fb: ; 841fb (21:41fb) - xor a - ld hl, wca82 -rept 3 - ld [hli], a -endr - ld [hl], a - ld hl, wca86 - ld [hli], a - ld [hl], a - xor a - ld [wca8e], a - ld [wca8f], a - ld hl, OverworldMap - ld bc, $280 - call Function842ab - ret - -Function84219: ; 84219 (21:4219) - ld hl, 0 - ld bc, $4 - ld de, wca82 - call Function8423c - ld a, [wca8e] - ld c, a - ld a, [wca8f] - ld b, a - ld de, OverworldMap - call Function8423c - ld a, l - ld [wca86], a - ld a, h - ld [wca87], a - ret - -Function8423c: ; 8423c (21:423c) - ld a, [de] - inc de - add l - jr nc, .asm_84242 - inc h -.asm_84242 - ld l, a - dec bc - ld a, c - or b - jr nz, Function8423c - ret - -Function84249: ; 84249 (21:4249) - ld a, $1 - ld [OverworldMap], a - ld a, [wcbfa] - ld [wc801], a - ld a, $e4 - ld [wc802], a - ld a, [wcbfb] - ld [wc803], a - ret - -Function84260: ; 84260 (21:4260) - ld a, [wca81] - xor $ff - ld d, a - ld a, [wcf65] - inc a - add d - ld hl, wca90 - ld de, $28 -.asm_84271 - and a - jr z, .asm_84278 - add hl, de - dec a - jr .asm_84271 -.asm_84278 - ld e, l - ld d, h - ld hl, OverworldMap - ld c, $28 -.asm_8427f - ld a, [de] - inc de - push bc - push de - push hl - swap a - ld d, a - and $f0 - ld e, a - ld a, d - and $f - ld d, a - and $8 - ld a, d - jr nz, .asm_84297 - or $90 - jr .asm_84299 -.asm_84297 - or $80 -.asm_84299 - ld d, a - lb bc, $21, 1 - call Request2bpp - pop hl - ld de, $10 - add hl, de - pop de - pop bc - dec c - jr nz, .asm_8427f - ret - -Function842ab: ; 842ab - push de - ld e, a -.asm_842ad - ld [hl], e - inc hl - dec bc - ld a, c - or b - jr nz, .asm_842ad - ld a, e - pop de - ret -; 842b7 - -Unknown_842b7: db 1, 0, $00, 0, 1, 0 -Unknown_842bd: db 2, 0, $04, 0, 0, 0 -Unknown_842c3: db 4, 0, $80, 2, 0, 0 -Unknown_842c9: db 4, 0, $00, 0, 4, 0 -Unknown_842cf: db 8, 0, $00, 0, 8, 0 ; unused -Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused -; 842db - - -Function842db:: ; 842db - ld a, [wc2d5] - add a - ld e, a - ld d, 0 - ld hl, Jumptable_842ea - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 842ea - - -Jumptable_842ea: ; 842ea (21:42ea) - dw Function8432f - dw Function84330 - dw Function84339 - dw Function84343 - dw Function8434d - dw Function84357 - dw Function84361 - dw Function8438b - dw Function84395 - dw Function8439f - dw Function843a8 - dw Function843b6 - dw Function84330 - dw Function843c0 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843c0 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843e6 - dw Function84330 - dw Function843d2 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843d2 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843b6 - - -Function8432a: ; 8432a (21:432a) - ld hl, wc2d5 - inc [hl] - ret - -Function8432f: ; 8432f (21:432f) - ret - -Function84330: ; 84330 (21:4330) - ld a, $33 - call Function843db - call Function8432a - ret - -Function84339: ; 84339 (21:4339) - ld a, [wca82] - call Function843db - call Function8432a - ret - -Function84343: ; 84343 (21:4343) - ld a, [wca83] - call Function843db - call Function8432a - ret - -Function8434d: ; 8434d (21:434d) - ld a, [wca84] - call Function843db - call Function8432a - ret - -Function84357: ; 84357 (21:4357) - ld a, [wca85] - call Function843db - call Function8432a - ret - -Function84361: ; 84361 (21:4361) - ld hl, wca8e - ld a, [hli] - ld d, [hl] - ld e, a - or d - jr z, .asm_84388 - dec de - ld [hl], d - dec hl - ld [hl], e - ld a, [wca8c] - ld e, a - ld a, [wca8d] - ld d, a - ld hl, OverworldMap - add hl, de - inc de - ld a, e - ld [wca8c], a - ld a, d - ld [wca8d], a - ld a, [hl] - call Function843db - ret -.asm_84388 - call Function8432a - -Function8438b: ; 8438b (21:438b) - ld a, [wca86] - call Function843db - call Function8432a - ret - -Function84395: ; 84395 (21:4395) - ld a, [wca87] - call Function843db - call Function8432a - ret - -Function8439f: ; 8439f (21:439f) - ld a, $0 - call Function843db - call Function8432a - ret - -Function843a8: ; 843a8 (21:43a8) - ld a, [rSB] - ld [wca88], a - ld a, $0 - call Function843db - call Function8432a - ret - -Function843b6: ; 843b6 (21:43b6) - ld a, [rSB] - ld [wca89], a - xor a - ld [wc2d5], a - ret - -Function843c0: ; 843c0 (21:43c0) - ld a, $f - call Function843db - call Function8432a - ret - -Function843c9: ; 843c9 (21:43c9) - ld a, $0 - call Function843db - call Function8432a - ret - -Function843d2: ; 843d2 (21:43d2) - ld a, $8 - call Function843db - call Function8432a - ret - -Function843db: ; 843db (21:43db) - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Function843e6: ; 843e6 (21:43e6) - ld a, [rSB] - ld [wca89], a - xor a - ld [wc2d5], a - ret - -Function843f0: ; 843f0 -.asm_843f0 - call JoyTextDelay - call Function846f6 - jr c, .asm_8440f - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_8440d - call Function84022 - call Function84757 - call Function84785 - call DelayFrame - jr .asm_843f0 - -.asm_8440d - and a - ret - -.asm_8440f - scf - ret -; 84411 - -Function84411: ; 84411 - xor a - ld [wc2d4], a - ld [wc2d5], a - ret -; 84419 - -Function84419: ; 84419 - push af - call Function84000 - pop af - ld [wcbfa], a - call Function84728 - ret -; 84425 - -Function84425: ; 84425 - call ReturnToMapFromSubmenu - call Function84753 - ret -; 8442c - -Function8442c: ; 8442c - ld a, [wcf65] - push af - ld hl, VTiles1 - ld de, FontInversed - lb bc, BANK(FontInversed), $80 - call Request1bpp - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - call Function84000 - ld a, $10 - ld [wcbfa], a - callba Function1dc1b0 - call ClearTileMap - ld a, $e4 - call DmgToCgbBGPals - call DelayFrame - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $8 - ld [wcf65], a - call Function84742 - call Function843f0 - jr c, .asm_8449d - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function84000 - ld a, $3 - ld [wcbfa], a - callba Function1dc213 - call Function84742 - ld a, $4 - ld [wcf65], a - call Function843f0 - -.asm_8449d - pop af - ld [hVBlank], a - call Function84411 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - ld c, $8 -.asm_844ae - call LowVolume - call DelayFrame - dec c - jr nz, .asm_844ae - pop af - ld [wcf65], a - ret -; 844bc - -Function844bc: ; 844bc (21:44bc) - ld a, [wcf65] - push af - ld a, $9 - ld [wcf65], a - ld a, e - ld [wd004], a - ld a, d - ld [StartFlypoint], a - ld a, b - ld [EndFlypoint], a - ld a, c - ld [MovementBuffer], a - xor a - ld [$ffac], a - ld [wd003], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - xor a - ld [hBGMapMode], a - call Function84817 - ld a, $10 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function8486f - ld a, $0 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function84893 - ld a, $0 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function848b7 - ld a, $3 - call Function84419 - call Function84559 -.asm_84545 - pop af - ld [hVBlank], a - call Function84411 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - pop af - ld [wcf65], a - ret - -Function84559: ; 84559 (21:4559) - call Function84742 - call Function843f0 - ret - -Function84560: ; 84560 - ld a, [wcf65] - push af - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - xor a - ld [hBGMapMode], a - call LoadTileMapToTempTileMap - callba Function16dac - ld a, $0 - call Function84419 - call Call_LoadTempTileMapToTileMap - call Function84742 - ld a, $9 - ld [wcf65], a -.asm_84597 - call JoyTextDelay - call Function846f6 - jr c, .asm_845c0 - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_845c0 - call Function84022 - ld a, [wJumptableIndex] - cp $2 - jr nc, .asm_845b5 - ld a, $3 - ld [wca81], a - -.asm_845b5 - call Function84757 - call Function84785 - call DelayFrame - jr .asm_84597 - -.asm_845c0 - pop af - ld [hVBlank], a - call Function84411 - call Call_LoadTempTileMapToTileMap - xor a - ld [rIF], a - pop af - ld [rIE], a - pop af - ld [wcf65], a - ret -; 845d4 - -Function845d4: ; 845d4 - call Function845db - call Function84425 - ret -; 845db - -Function845db: ; 845db - ld a, [wcf65] - push af - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - xor a - ld [hBGMapMode], a - ld a, $13 - call Function84419 - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $9 - ld [wcf65], a - call Function843f0 - pop af - ld [hVBlank], a - call Function84411 - call Function84735 - xor a - ld [rIF], a - pop af - ld [rIE], a - pop af - ld [wcf65], a - ret -; 8461a - -Function8461a: ; 8461a - ld a, [wcf65] - push af - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - xor a - ld [hBGMapMode], a - callba Function1dc381 - ld a, $10 - call Function84419 - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $8 - ld [wcf65], a - call Function84742 - call Function843f0 - jr c, .asm_84671 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - callba Function1dc47b - ld a, $3 - call Function84419 - ld a, $9 - ld [wcf65], a - call Function84742 - call Function843f0 - -.asm_84671 - pop af - ld [hVBlank], a - call Function84411 - call Function84735 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - pop af - ld [wcf65], a - ret -; 84688 - -Function84688: ; 84688 - ld a, [wcf65] - push af - callba Function1dd709 - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $10 - call Function84419 - call Function84742 - ld a, $9 - ld [wcf65], a - call Function843f0 - jr c, .asm_846e2 - call Function84411 - ld c, 12 - call DelayFrames - call LoadTileMapToTempTileMap - xor a - ld [hBGMapMode], a - callba Function1dd7ae - ld a, $3 - call Function84419 - call Call_LoadTempTileMapToTileMap - call Function84742 - ld a, $9 - ld [wcf65], a - call Function843f0 - -.asm_846e2 - pop af - ld [hVBlank], a - call Function84411 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - pop af - ld [wcf65], a - ret -; 846f6 - -Function846f6: ; 846f6 - ld a, [hJoyDown] - and B_BUTTON - jr nz, .asm_846fe - and a - ret - -.asm_846fe - ld a, [wca80] - cp $c - jr nz, .asm_84722 -.asm_84705 - ld a, [wc2d5] - and a - jr nz, .asm_84705 - ld a, $16 - ld [wc2d5], a - ld a, $88 - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a -.asm_8471c - ld a, [wc2d5] - and a - jr nz, .asm_8471c - -.asm_84722 - ld a, $1 - ld [$ffac], a - scf - ret -; 84728 - -Function84728: ; 84728 - hlcoord 0, 0 - ld de, wca90 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - call CopyBytes - ret -; 84735 - -Function84735: ; 84735 - ld hl, wca90 - decoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - call CopyBytes - ret -; 84742 - -Function84742: ; 84742 - xor a - ld [hJoyReleased], a - ld [hJoyPressed], a - ld [hJoyDown], a - ld [hJoyLast], a - ret -; 8474c - -Function8474c: ; 8474c - ld de, MUSIC_PRINTER - call PlayMusic2 - ret -; 84753 - -Function84753: ; 84753 - call RestartMapMusic - ret -; 84757 - -Function84757: ; 84757 - ld a, [wca88] - cp -1 - jr nz, .printer_connected - ld a, [wca89] - cp -1 - jr z, .error_2 - -.printer_connected - ld a, [wca89] - and %11100000 - ret z ; no error - - bit 7, a - jr nz, .error_1 - bit 6, a - jr nz, .error_4 - ld a, 6 ; error 3 - jr .load_text_index - -.error_4 - ld a, 7 ; error 4 - jr .load_text_index - -.error_1 - ld a, 4 ; error 1 - jr .load_text_index - -.error_2 - ld a, 5 ; error 2 - -.load_text_index - ld [wcbf8], a - ret -; 84785 - -Function84785: ; 84785 - ld a, [wcbf8] - and a - ret z - push af - xor a - ld [hBGMapMode], a - hlcoord 0, 5 - lb bc, 10, 18 - call TextBox - pop af - ld e, a - ld d, 0 - ld hl, PrinterStatusStringPointers -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 1, 7 - ld a, BANK(GBPrinterStrings) - call FarString - hlcoord 2, 15 - ld de, String_PressBToCancel - call PlaceString - ld a, $1 - ld [hBGMapMode], a - xor a - ld [wcbf8], a - ret -; 847bd - -Function847bd: ; 847bd - ld a, [wcbf8] - and a - ret z - push af - xor a - ld [hBGMapMode], a - hlcoord 2, 4 - lb bc, 13, 16 - call ClearBox - pop af - ld e, a - ld d, 0 - ld hl, PrinterStatusStringPointers -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 4, 7 - ld a, BANK(GBPrinterStrings) - call FarString - hlcoord 4, 15 - ld de, String_PressBToCancel - call PlaceString - ld a, $1 - ld [hBGMapMode], a - xor a - ld [wcbf8], a - ret -; 847f5 - -String_PressBToCancel: - db "Press B to Cancel@" -; 84807 - -PrinterStatusStringPointers: ; 84807 - dw String_1dc275 ; @ - dw String_1dc276 ; CHECKING LINK - dw String_1dc289 ; TRANSMITTING - dw String_1dc29c ; PRINTING - dw String_1dc2ad ; error 1 - dw String_1dc2e2 ; error 2 - dw String_1dc317 ; error 3 - dw String_1dc34c ; error 4 -; 84817 - -Function84817: ; 84817 (21:4817) - xor a - ld [wd002], a - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - hlcoord 0, 0 - ld bc, 9 * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function849e9 - call Function849d7 - hlcoord 4, 3 - ld de, String_84865 - call PlaceString - ld a, [wd007] - ld bc, BOX_NAME_LENGTH - ld hl, wBoxNames - call AddNTimes - ld d, h - ld e, l - hlcoord 6, 5 - call PlaceString - ld a, $1 - call Function849c6 - hlcoord 2, 9 - ld c, $3 - call Function848e7 - ret -; 84865 (21:4865) - -String_84865: - db "#MON LIST@" -; 8486f - -Function8486f: ; 8486f (21:486f) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - call Function849e9 - ld a, [wd003] - and a - ret nz - ld a, $4 - call Function849c6 - hlcoord 2, 0 - ld c, $6 - call Function848e7 - ret - -Function84893: ; 84893 (21:4893) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - call Function849e9 - ld a, [wd003] - and a - ret nz - ld a, $a - call Function849c6 - hlcoord 2, 0 - ld c, $6 - call Function848e7 - ret - -Function848b7: ; 848b7 (21:48b7) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - hlcoord 1, 15 - lb bc, 2, 18 - call ClearBox - call Function849e9 - call Function849fc - ld a, [wd003] - and a - ret nz - ld a, $10 - call Function849c6 - hlcoord 2, 0 - ld c, $5 - call Function848e7 - ret - -Function848e7: ; 848e7 (21:48e7) - ld a, [EndFlypoint] - call GetSRAMBank - -Function848ed: ; 848ed (21:48ed) - ld a, c - and a - jp z, Function84986 - dec c - ld a, [de] - cp $ff - jp z, Function84981 - ld [wd265], a - ld [CurPartySpecies], a - push bc - push hl - push de - push hl - ld bc, $10 - ld a, " " - call ByteFill - pop hl - push hl - call GetBasePokemonName - pop hl - push hl - call PlaceString - ld a, [CurPartySpecies] - cp $fd - pop hl - jr z, .ok2 - ld bc, $b - add hl, bc - call Function8498a - ld bc, $9 - add hl, bc - ld a, $f3 - ld [hli], a - push hl - ld bc, $e - ld a, " " - call ByteFill - pop hl - push hl - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - ld bc, $372 - add hl, bc - ld bc, $b - ld a, [wd002] - call AddNTimes - ld e, l - ld d, h - pop hl - push hl - call PlaceString - pop hl - ld bc, $b - add hl, bc - push hl - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - ld bc, $35 - add hl, bc - ld bc, $20 - ld a, [wd002] - call AddNTimes - ld a, [hl] - pop hl - call Function383d -.ok2 - ld hl, wd002 - inc [hl] - pop de - pop hl - ld bc, $3c - add hl, bc - pop bc - inc de - jp Function848ed - -Function84981: ; 84981 (21:4981) - ld a, $1 - ld [wd003], a - -Function84986: ; 84986 (21:4986) - call CloseSRAM - ret - -Function8498a: ; 8498a (21:498a) - push hl - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - ld bc, $2b - add hl, bc - ld bc, $20 - ld a, [wd002] - call AddNTimes - ld de, TempMonDVs - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - ld a, [wd002] - ld [CurPartyMon], a - ld a, $3 - ld [MonType], a - callba GetGender - ld a, $7f - jr c, .asm_849c3 - ld a, $ef - jr nz, .asm_849c3 - ld a, $f5 -.asm_849c3 - pop hl - ld [hli], a - ret - -Function849c6: ; 849c6 (21:49c6) - push hl - ld e, a - ld d, $0 - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - add hl, de - ld e, l - ld d, h - pop hl - ret - -Function849d7: ; 849d7 (21:49d7) - hlcoord 0, 0 - ld a, $79 - ld [hli], a - ld a, $7a - ld c, $12 -.asm_849e1 - ld [hli], a - dec c - jr nz, .asm_849e1 - ld a, $7b - ld [hl], a - ret - -Function849e9: ; 849e9 (21:49e9) - hlcoord 0, 0 - ld de, $13 - ld c, $12 -.asm_849f1 - ld a, $7c - ld [hl], a - add hl, de - ld a, $7c - ld [hli], a - dec c - jr nz, .asm_849f1 - ret - -Function849fc: ; 849fc (21:49fc) - hlcoord 0, 17 - ld a, $7d - ld [hli], a - ld a, $7a - ld c, $12 -.asm_84a06 - ld [hli], a - dec c - jr nz, .asm_84a06 - ld a, $7e - ld [hl], a - ret - -Function84a0e: ; 84a0e (21:4a0e) - hlcoord 2, 0 - ld c, $6 -.asm_84a13 - push bc - push hl - ld de, String84a25 - call PlaceString - pop hl - ld bc, $3c - add hl, bc - pop bc - dec c - jr nz, .asm_84a13 - ret -; 84a25 (21:4a25) - -String84a25: ; 84a25 - db " ------@" -; 84a2e - +INCLUDE "engine/printer.asm" INCLUDE "battle/anim_gfx.asm" - -HallOfFame:: ; 0x8640e - call Function8648e - ld a, [StatusFlags] - push af - ld a, 1 - ld [wc2cd], a - call DisableSpriteUpdates - ld a, SPAWN_LANCE - ld [wSpawnAfterChampion], a - - ; Enable the Pokégear map to cycle through all of Kanto - ld hl, StatusFlags - set 6, [hl] ; hall of fame - - callba Function14da0 - - ld hl, wd95e - ld a, [hl] - cp 200 - jr nc, .ok - inc [hl] -.ok - callba SaveGameData - call GetHallOfFameParty - callba AddHallOfFameEntry - - xor a - ld [wc2cd], a - call Function864c3 - pop af - ld b, a - callba Function109847 - ret -; 0x86455 - -RedCredits:: ; 86455 - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - ld a, $a - ld [MusicFade], a - callba FadeOutPalettes - xor a - ld [VramState], a - ld [hMapAnims], a - callba Function4e8c2 - ld c, 8 - call DelayFrames - call DisableSpriteUpdates - ld a, SPAWN_RED - ld [wSpawnAfterChampion], a - ld a, [StatusFlags] - ld b, a - callba Function109847 - ret -; 8648e - -Function8648e: ; 8648e - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - ld a, 10 - ld [MusicFade], a - callba FadeOutPalettes - xor a - ld [VramState], a - ld [hMapAnims], a - callba Function4e881 - ld c, 100 - jp DelayFrames -; 864b4 - -Function864b4: ; 864b4 - push de - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - pop de - call PlayMusic - ret -; 864c3 - -Function864c3: ; 864c3 - xor a - ld [wJumptableIndex], a - call Function8671c - jr c, .done - ld de, SCREEN_WIDTH - call Function864b4 - xor a - ld [wcf64], a -.loop - ld a, [wcf64] - cp 6 - jr nc, .done - ld hl, wc608 + 1 - ld bc, $10 - call AddNTimes - ld a, [hl] - cp -1 - jr z, .done - push hl - call Function865b5 - pop hl - call Function8650c - jr c, .done - ld hl, wcf64 - inc [hl] - jr .loop - -.done - call Function86810 - ld a, $4 - ld [MusicFade], a - call FadeToWhite - ld c, 8 - call DelayFrames - ret -; 8650c - -Function8650c: ; 8650c - call Function86748 - ld de, String_8652c - hlcoord 1, 2 - call PlaceString - call WaitBGMap - decoord 6, 5 - ld c, $6 - predef Functiond066e - ld c, 60 - call DelayFrames - and a - ret -; 8652c - -String_8652c: - db "New Hall of Famer!@" -; 8653f - - -GetHallOfFameParty: ; 8653f - ld hl, OverworldMap - ld bc, HOF_LENGTH - xor a - call ByteFill - ld a, [wd95e] - ld de, OverworldMap - ld [de], a - inc de - ld hl, PartySpecies - ld c, 0 -.next - ld a, [hli] - cp -1 - jr z, .done - cp EGG - jr nz, .mon - inc c - jr .next - -.mon - push hl - push de - push bc - - ld a, c - ld hl, PartyMons - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld c, l - ld b, h - - ld hl, MON_SPECIES - add hl, bc - ld a, [hl] - ld [de], a - inc de - - ld hl, MON_ID - add hl, bc - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - inc de - - ld hl, MON_DVS - add hl, bc - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - inc de - - ld hl, MON_LEVEL - add hl, bc - ld a, [hl] - ld [de], a - inc de - - pop bc - push bc - ld a, c - ld hl, PartyMonNicknames - ld bc, PKMN_NAME_LENGTH - call AddNTimes - ld bc, PKMN_NAME_LENGTH - 1 - call CopyBytes - - pop bc - inc c - pop de - ld hl, HOF_MON_LENGTH - add hl, de - ld e, l - ld d, h - pop hl - jr .next - -.done - ld a, $ff - ld [de], a - ret -; 865b5 - -Function865b5: ; 865b5 - push hl - call ClearBGPalettes - callba Function4e906 - pop hl - ld a, [hli] - ld [TempMonSpecies], a - ld [CurPartySpecies], a -rept 2 - inc hl -endr - ld a, [hli] - ld [TempMonDVs], a - ld a, [hli] - ld [TempMonDVs + 1], a - ld hl, TempMonDVs - predef GetUnownLetter - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - ld de, VTiles2 tile $31 - predef GetBackpic - ld a, $31 - ld [hFillBox], a - hlcoord 6, 6 - lb bc, 6, 6 - predef FillBox - ld a, $d0 - ld [hSCY], a - ld a, $90 - ld [hSCX], a - call WaitBGMap - xor a - ld [hBGMapMode], a - ld b, $1a - call GetSGBLayout - call SetPalettes - call Function86635 - xor a - ld [wc2c6], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - hlcoord 6, 5 - call _PrepMonFrontpic - call WaitBGMap - xor a - ld [hBGMapMode], a - ld [hSCY], a - call Function86643 - ret -; 86635 - -Function86635: ; 86635 -.asm_86635 - ld a, [hSCX] - cp $70 - ret z - add $4 - ld [hSCX], a - call DelayFrame - jr .asm_86635 -; 86643 - -Function86643: ; 86643 -.asm_86643 - ld a, [hSCX] - and a - ret z -rept 2 - dec a -endr - ld [hSCX], a - call DelayFrame - jr .asm_86643 -; 86650 - -Function86650: ; 86650 - call LoadFontsBattleExtra - xor a - ld [wJumptableIndex], a -.asm_86657 - call Function8671c - ret c - call Function86665 - ret c - ld hl, wJumptableIndex - inc [hl] - jr .asm_86657 -; 86665 - -Function86665: ; 86665 - xor a - ld [wcf64], a -.asm_86669 - call Function86692 - jr c, .asm_86690 -.asm_8666e - call JoyTextDelay - ld hl, hJoyLast - ld a, [hl] - and B_BUTTON - jr nz, .asm_8668e - ld a, [hl] - and A_BUTTON - jr nz, .asm_86688 - ld a, [hl] - and START - jr nz, .asm_86690 - call DelayFrame - jr .asm_8666e - -.asm_86688 - ld hl, wcf64 - inc [hl] - jr .asm_86669 - -.asm_8668e - scf - ret - -.asm_86690 - and a - ret -; 86692 - -Function86692: ; 86692 -; Print the number of times the player has entered the Hall of Fame. -; If that number is above 200, print "HOF Master!" instead. - ld a, [wcf64] - cp $6 - jr nc, .asm_866a7 - ld hl, wc608 + 1 - ld bc, $10 - call AddNTimes - ld a, [hl] - cp $ff - jr nz, .asm_866a9 - -.asm_866a7 - scf - ret - -.asm_866a9 - push hl - call ClearBGPalettes - pop hl - call Function86748 - ld a, [wc608] - cp 200 + 1 - jr c, .asm_866c6 - ld de, String_866fc - hlcoord 1, 2 - call PlaceString - hlcoord 13, 2 - jr .asm_866de - -.asm_866c6 - ld de, String_8670c - hlcoord 1, 2 - call PlaceString - hlcoord 2, 2 - ld de, wc608 - lb bc, 1, 3 - call PrintNum - hlcoord 11, 2 - -.asm_866de - ld de, String_866fb - call PlaceString - call WaitBGMap - ld b, $1a - call GetSGBLayout - call SetPalettes - decoord 6, 5 - ld c, $6 - predef Functiond066e - and a - ret -; 866fb - -String_866fb: - db "@" -; 866fc - -String_866fc: - db " HOF Master!@" -; 8670c - -String_8670c: - db " -Time Famer@" -; 8671c - - -Function8671c: ; 8671c - ld a, [wJumptableIndex] - cp NUM_HOF_TEAMS - jr nc, .asm_86746 - ld hl, sHallOfFame - ld bc, HOF_LENGTH - call AddNTimes - ld a, BANK(sHallOfFame) - call GetSRAMBank - ld a, [hl] - and a - jr z, .asm_86743 - ld de, wc608 - ld bc, HOF_LENGTH - call CopyBytes - call CloseSRAM - and a - ret - -.asm_86743 - call CloseSRAM - -.asm_86746 - scf - ret -; 86748 - -Function86748: ; 86748 - xor a - ld [hBGMapMode], a - ld a, [hli] - ld [TempMonSpecies], a - ld a, [hli] - ld [TempMonID], a - ld a, [hli] - ld [TempMonID + 1], a - ld a, [hli] - ld [TempMonDVs], a - ld a, [hli] - ld [TempMonDVs + 1], a - ld a, [hli] - ld [TempMonLevel], a - ld de, StringBuffer2 - ld bc, 10 - call CopyBytes - ld a, "@" - ld [StringBuffer2 + 10], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - hlcoord 0, 0 - lb bc, 3, SCREEN_WIDTH - 2 - call TextBox - hlcoord 0, 12 - lb bc, 4, SCREEN_WIDTH - 2 - call TextBox - ld a, [TempMonSpecies] - ld [CurPartySpecies], a - ld [wd265], a - ld hl, TempMonDVs - predef GetUnownLetter - xor a - ld [wc2c6], a - hlcoord 6, 5 - call _PrepMonFrontpic - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_867f8 - hlcoord 1, 13 - ld a, $74 - ld [hli], a - ld [hl], $f2 - hlcoord 3, 13 - ld de, wd265 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - call GetBasePokemonName - hlcoord 7, 13 - call PlaceString - ld a, $3 - ld [MonType], a - callba GetGender - ld a, $7f - jr c, .asm_867e2 - ld a, $ef - jr nz, .asm_867e2 - ld a, $f5 - -.asm_867e2 - hlcoord 18, 13 - ld [hli], a - hlcoord 8, 14 - ld a, $f3 - ld [hli], a - ld de, StringBuffer2 - call PlaceString - hlcoord 1, 16 - call PrintLevel - -.asm_867f8 - hlcoord 7, 16 - ld a, $73 - ld [hli], a - ld a, $74 - ld [hli], a - ld [hl], $f3 - hlcoord 10, 16 - ld de, TempMonID - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - ret -; 86810 - -Function86810: ; 86810 - call ClearBGPalettes - ld hl, VTiles2 tile $63 - ld de, FontExtra + $d0 - lb bc, BANK(FontExtra), 1 - call Request2bpp - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - callba GetPlayerBackpic - ld a, $31 - ld [hFillBox], a - hlcoord 6, 6 - lb bc, 6, 6 - predef FillBox - ld a, $d0 - ld [hSCY], a - ld a, $90 - ld [hSCX], a - call WaitBGMap - xor a - ld [hBGMapMode], a - ld [CurPartySpecies], a - ld b, $1a - call GetSGBLayout - call SetPalettes - call Function86635 - xor a - ld [wc2c6], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - callba Function88840 - xor a - ld [hFillBox], a - hlcoord 12, 5 - lb bc, 7, 7 - predef FillBox - ld a, $c0 - ld [hSCX], a - call WaitBGMap - xor a - ld [hBGMapMode], a - ld [hSCY], a - call Function86643 - xor a - ld [hBGMapMode], a - hlcoord 0, 2 - lb bc, 8, 9 - call TextBox - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - hlcoord 2, 4 - ld de, PlayerName - call PlaceString - hlcoord 1, 6 - ld a, $73 - ld [hli], a - ld a, $74 - ld [hli], a - ld [hl], $f3 - hlcoord 4, 6 - ld de, PlayerID - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - hlcoord 1, 8 - ld de, .PlayTime - call PlaceString - hlcoord 3, 9 - ld de, GameTimeHours - lb bc, 2, 3 - call PrintNum - ld [hl], $63 - inc hl - ld de, GameTimeMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - call WaitBGMap - callba Function26601 - ret -; 868ed - -.PlayTime - db "PLAY TIME@" -; 868f7 - +INCLUDE "event/halloffame.asm" SECTION "bank22", ROMX, BANK[$22] @@ -38807,16 +22228,16 @@ ChrisNameMenuHeader: ; 882b5 db $40 ; flags db 00, 00 ; start coords db 11, 10 ; end coords - dw MenuData2_0x882be + dw .MaleNames db 1 ; ???? db 0 ; default option ; 882be -MenuData2_0x882be: ; 882be +.MaleNames: ; 882be db $91 ; flags db 5 ; items db "NEW NAME@" -Unknown_882c9: ; 882c9 +MalePlayerNameArray: ; 882c9 db "CHRIS@" db "MAT@" db "ALLAN@" @@ -38829,16 +22250,16 @@ KrisNameMenuHeader: ; 882e5 db $40 ; flags db 00, 00 ; start coords db 11, 10 ; end coords - dw MenuData2_0x882ee + dw .FemaleNames db 1 ; ???? db 0 ; default option ; 882ee -MenuData2_0x882ee: ; 882ee +.FemaleNames: ; 882ee db $91 ; flags db 5 ; items db "NEW NAME@" -Unknown_882f9: ; 882f9 +FemalePlayerNameArray: ; 882f9 db "KRIS@" db "AMANDA@" db "JUANA@" @@ -38849,11 +22270,11 @@ Unknown_882f9: ; 882f9 GetPlayerNameArray: ; 88318 This Function is never called ld hl, PlayerName - ld de, Unknown_882c9 + ld de, MalePlayerNameArray ld a, [PlayerGender] bit 0, a jr z, .done - ld de, Unknown_882f9 + ld de, FemalePlayerNameArray .done call InitName @@ -38887,12 +22308,12 @@ Function8833e: ; 8833e ld hl, KrisCardPic .GotClass ld de, VTiles2 tile $00 - ld bc, $230 + ld bc, $23 tiles ld a, BANK(ChrisCardPic) ; BANK(KrisCardPic) call FarCopyBytes ld hl, CardGFX ld de, VTiles2 tile $23 - ld bc, $60 + ld bc, 6 tiles ld a, BANK(CardGFX) call FarCopyBytes ret @@ -39049,318 +22470,7 @@ Function8c7c9: ; unreferenced ret ; 8c7d4 -PlayWhirlpoolSound: ; 8c7d4 - call WaitSFX - ld de, SFX_SURF - call PlaySFX - call WaitSFX - ret -; 8c7e1 - -BlindingFlash: ; 8c7e1 - callba FadeOutPalettes - ld hl, StatusFlags - set 2, [hl] - callba Function8c0e5 - callba Function8c001 - ld b, $9 - call GetSGBLayout - callba Function49409 - callba FadeInPalettes - ret -; 8c80a - -ShakeHeadbuttTree: ; 8c80a - callba Function8cf53 - ld de, CutGrassGFX - ld hl, VTiles1 - lb bc, BANK(CutGrassGFX), 4 - call Request2bpp - ld de, HeadbuttTreeGFX - ld hl, VTiles1 tile $04 - lb bc, BANK(HeadbuttTreeGFX), 8 - call Request2bpp - call Function8cad3 - ld a, $1b - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $84 - ld a, $90 - ld [wc3b5], a - callba Function8cf7a - call GetHeadbuttTreeRelativeLocation - ld a, $20 - ld [wcf64], a - call WaitSFX - ld de, SFX_SANDSTORM - call PlaySFX -.loop - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - ld a, $90 - ld [wc3b5], a - callba Function8cf7a - call DelayFrame - jr .loop - -.done - call OverworldTextModeSwitch - call WaitBGMap - xor a - ld [hBGMapMode], a - callba Function8cf53 - ld hl, Sprites + $90 - ld bc, $10 - xor a - call ByteFill - ld de, Font - ld hl, VTiles1 - lb bc, BANK(Font), $c - call Get1bpp - call ReplaceKrisSprite - ret -; 8c893 - -HeadbuttTreeGFX: ; 8c893 -INCBIN "gfx/unknown/08c893.2bpp" -; 8c913 - -GetHeadbuttTreeRelativeLocation: ; 8c913 - xor a - ld [hBGMapMode], a - ld a, [PlayerDirection] - and %00001100 - srl a - ld e, a - ld d, 0 - ld hl, TreeRelativeLocationTable - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - - ld a, $5 - ld [hli], a - ld [hld], a - ld bc, SCREEN_WIDTH - add hl, bc - ld [hli], a - ld [hld], a - call WaitBGMap - xor a - ld [hBGMapMode], a - ret -; 8c938 - -TreeRelativeLocationTable: ; 8c938 - dwcoord 8, 8 + 2 ; RIGHT - dwcoord 8, 8 - 2 ; LEFT - dwcoord 8 - 2, 8 ; DOWN - dwcoord 8 + 2, 8 ; UP -; 8c940 - -OWCutAnimation: ; 8c940 - ld a, e - and $1 - ld [wJumptableIndex], a - call .LoadCutGFX - call WaitSFX - ld de, SFX_PLACE_PUZZLE_PIECE_DOWN - call PlaySFX -.loop - ld a, [wJumptableIndex] - bit 7, a - jr nz, .finish - ld a, $90 - ld [wc3b5], a - callab Function8cf7a - call OWCutJumptable - call DelayFrame - jr .loop - -.finish - ret -; 8c96d - -.LoadCutGFX: ; 8c96d - callab Function8cf53 ; pointless to farcall - ld de, CutGrassGFX - ld hl, VTiles1 - lb bc, BANK(CutGrassGFX), 4 - call Request2bpp - ld de, CutTreeGFX - ld hl, VTiles1 tile $4 - lb bc, BANK(CutTreeGFX), 4 - call Request2bpp - ret -; 8c98c - -CutTreeGFX: ; c898c -INCBIN "gfx/misc/cut_tree.2bpp" -; c89cc - -CutGrassGFX: ; 8c9cc -INCBIN "gfx/misc/cut_grass.2bpp" -; 8ca0c - -OWCutJumptable: ; 8ca0c - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8ca1b - - -.jumptable: ; 8ca1b (23:4a1b) - dw Function8ca23 - dw Function8ca3c - dw Function8ca5c - dw Function8ca64 - - -Function8ca23: ; 8ca23 (23:4a23) - call Function8cad3 - ld a, $17 - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $84 - ld a, $20 - ld [wcf64], a - ld hl, wJumptableIndex -rept 2 - inc [hl] -endr - ret - -Function8ca3c: ; 8ca3c (23:4a3c) - call Function8ca8e - xor a - call Function8ca73 - ld a, $10 - call Function8ca73 - ld a, $20 - call Function8ca73 - ld a, $30 - call Function8ca73 - ld a, $20 - ld [wcf64], a - ld hl, wJumptableIndex - inc [hl] - ret - -Function8ca5c: ; 8ca5c (23:4a5c) - ld a, $1 - ld [hBGMapMode], a - ld hl, wJumptableIndex - inc [hl] - -Function8ca64: ; 8ca64 (23:4a64) - ld hl, wcf64 - ld a, [hl] - and a - jr z, .asm_8ca6d - dec [hl] - ret -.asm_8ca6d - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function8ca73: ; 8ca73 (23:4a73) - push de - push af - ld a, $16 - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $80 - ld hl, $e - add hl, bc - ld [hl], $4 - pop af - ld hl, $c - add hl, bc - ld [hl], a - pop de - ret - -Function8ca8e: ; 8ca8e (23:4a8e) - ld de, 0 - ld a, [wd197] - bit 0, a - jr z, .asm_8ca9a - set 0, e -.asm_8ca9a - ld a, [wd196] - bit 0, a - jr z, .asm_8caa3 - set 1, e -.asm_8caa3 - ld a, [PlayerDirection] - and $c - add e - ld e, a - ld hl, Unknown_8cab3 -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - ret -; 8cab3 (23:4ab3) - -Unknown_8cab3: ; 8cab3 - db $58, $60 - db $48, $60 - db $58, $70 - db $48, $70 - db $58, $40 - db $48, $40 - db $58, $50 - db $48, $50 - db $38, $60 - db $48, $60 - db $38, $50 - db $48, $50 - db $58, $60 - db $68, $60 - db $58, $50 - db $68, $50 -; 8cad3 - -Function8cad3: ; 8cad3 (23:4ad3) - ld a, [PlayerDirection] - and $c - srl a - ld e, a - ld d, 0 - ld hl, Unknown_8cae5 - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ret -; 8cae5 (23:4ae5) - -Unknown_8cae5: ; 8cae5 - db $50, $68 - db $50, $48 - db $40, $58 - db $60, $58 -; 8caed +INCLUDE "event/field_moves.asm" Function8caed: ; 8caed call DelayFrame @@ -39369,9 +22479,9 @@ Function8caed: ; 8caed xor a ld [VramState], a call Function8cb9b - ld de, $5450 - ld a, $a - call Function3b2a + depixel 10, 10, 4, 0 + ld a, SPRITE_ANIM_INDEX_0A + call _InitSpriteAnimStruct ld hl, $3 add hl, bc ld [hl], $84 @@ -39403,9 +22513,9 @@ Function8cb33: ; 8cb33 xor a ld [VramState], a call Function8cb9b - ld de, $fc50 - ld a, $a - call Function3b2a + depixel 31, 10, 4, 0 + ld a, SPRITE_ANIM_INDEX_0A + call _InitSpriteAnimStruct ld hl, $3 add hl, bc ld [hl], $84 @@ -39501,498 +22611,14 @@ Function8cbe6: ; 8cbe6 (23:4be6) add $40 ld d, a ld e, $0 - ld a, $18 - call Function3b2a + ld a, SPRITE_ANIM_INDEX_18 ; fly land + call _InitSpriteAnimStruct ld hl, $3 add hl, bc ld [hl], $80 ret -Special_MagnetTrain: ; 8cc04 - ld a, [ScriptVar] - and a - jr nz, .ToGoldenrod - ld a, 1 ; forwards - lb bc, $40, $60 - ld de, $fca0 - jr .continue - -.ToGoldenrod - ld a, -1 ; backwards - lb bc, $c0, $a0 - ld de, $b460 - -.continue - ld h, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, h - ld [w5_d191], a - ld a, c - ld [w5_d192], a - ld a, b - ld [w5_d193], a - ld a, e - ld [w5_d194], a - ld a, d - ld [w5_d195], a - ld a, [hSCX] - push af - ld a, [hSCY] - push af - call Function8ccc9 - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $1 -.loop - ld a, [wJumptableIndex] - and a - jr z, .initialize - bit 7, a - jr nz, .done - callab Function8cf69 - call Function8cdf7 - call Function8cc99 - call Function3b0c - call DelayFrame - jr .loop - -.initialize - call Function8ceae - jr .loop - -.done - pop af - ld [hVBlank], a - call ClearBGPalettes - xor a - ld [hLCDStatCustom], a - ld [hLCDStatCustom + 1], a - ld [hLCDStatCustom + 2], a - ld [hSCX], a - ld [Requested2bppSource], a - ld [Requested2bppSource + 1], a - ld [Requested2bppDest], a - ld [Requested2bppDest + 1], a - ld [Requested2bpp], a - call ClearTileMap - pop af - ld [hSCY], a - pop af - ld [hSCX], a - xor a - ld [hBGMapMode], a - pop af - ld [rSVBK], a - ret -; 8cc99 - -Function8cc99: ; 8cc99 - ld hl, LYOverridesBackup - ld c, $2f - ld a, [wcf64] - add a - ld [hSCX], a - call Function8ccc4 - ld c, $30 - ld a, [wcf65] - call Function8ccc4 - ld c, $31 - ld a, [wcf64] - add a - call Function8ccc4 - ld a, [wd191] - ld d, a - ld hl, wcf64 - ld a, [hl] -rept 2 - add d -endr - ld [hl], a - ret -; 8ccc4 - -Function8ccc4: ; 8ccc4 -.asm_8ccc4 - ld [hli], a - dec c - jr nz, .asm_8ccc4 - ret -; 8ccc9 - -Function8ccc9: ; 8ccc9 - call ClearBGPalettes - call ClearSprites - call DisableLCD - callab Function8cf53 - call SetMagnetTrainPals - call DrawMagnetTrain - ld a, $90 - ld [hWY], a - call EnableLCD - xor a - ld [hBGMapMode], a - ld [hSCX], a - ld [hSCY], a - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - callba GetPlayerIcon - pop af - ld [rSVBK], a - ld hl, VTiles0 - ld c, $4 - call Request2bpp - ld hl, $c0 - add hl, de - ld d, h - ld e, l - ld hl, VTiles0 tile $04 - ld c, $4 - call Request2bpp - call Function8cda6 - ld hl, wJumptableIndex - xor a - ld [hli], a - ld a, [wd192] -rept 3 - ld [hli], a -endr - ld de, MUSIC_MAGNET_TRAIN - call PlayMusic2 - ret -; 8cd27 - -DrawMagnetTrain: ; 8cd27 - ld hl, VBGMap0 - xor a -.asm_8cd2b - call GetMagnetTrainBGTiles - ld b, 32 / 2 - call .FillAlt - inc a - cp $12 - jr c, .asm_8cd2b - ld hl, VBGMap0 tile $0c - ld de, MagnetTrainTilemap1 - ld c, 20 - call .FillLine - ld hl, VBGMap0 tile $0e - ld de, MagnetTrainTilemap2 - ld c, 20 - call .FillLine - ld hl, VBGMap0 tile $10 - ld de, MagnetTrainTilemap3 - ld c, 20 - call .FillLine - ld hl, VBGMap0 tile $12 - ld de, MagnetTrainTilemap4 - ld c, 20 - call .FillLine - ret -; 8cd65 - -.FillLine ; 8cd65 - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .FillLine - ret -; 8cd6c - -.FillAlt ; 8cd6c - ld [hl], e - inc hl - ld [hl], d - inc hl - dec b - jr nz, .FillAlt - ret -; 8cd74 - -GetMagnetTrainBGTiles: ; 8cd74 - push hl - ld e, a - ld d, 0 - ld hl, MagnetTrainBGTiles -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - pop hl - ret -; 8cd82 - -MagnetTrainBGTiles: ; 8cd82 -; Alternating tiles for each line -; of the Magnet Train tilemap. - db $4c, $4d ; bush - db $5c, $5d ; bush - db $4c, $4d ; bush - db $5c, $5d ; bush - db $08, $08 ; fence - db $18, $18 ; fence - db $1f, $1f ; track - db $31, $31 ; track - db $11, $11 ; track - db $11, $11 ; track - db $0d, $0d ; track - db $31, $31 ; track - db $04, $04 ; fence - db $18, $18 ; fence - db $4c, $4d ; bush - db $5c, $5d ; bush - db $4c, $4d ; bush - db $5c, $5d ; bush -; 8cda6 - -Function8cda6: ; 8cda6 - ld hl, LYOverrides - ld bc, $90 - ld a, [wd192] - call ByteFill - ld hl, LYOverridesBackup - ld bc, $90 - ld a, [wd192] - call ByteFill - ld a, $43 - ld [hLCDStatCustom], a - ret -; 8cdc3 - -SetMagnetTrainPals: ; 8cdc3 - ld a, $1 - ld [rVBK], a - - ; bushes - ld hl, VBGMap0 - ld bc, 8 tiles - ld a, $2 - call ByteFill - - ; train - ld hl, VBGMap0 tile $08 - ld bc, 20 tiles - xor a - call ByteFill - - ; more bushes - ld hl, VBGMap0 tile $1c - ld bc, 8 tiles - ld a, $2 - call ByteFill - - ; train window - ld hl, VBGMap0 tile $10 + 7 - ld bc, 6 - ld a, $4 - call ByteFill - - ld a, $0 - ld [rVBK], a - ret -; 8cdf7 - -Function8cdf7: ; 8cdf7 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_8ce06 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8ce06 - -Jumptable_8ce06: ; 8ce06 - dw Function8ce19 - dw Function8ce6d - dw Function8ce47 - dw Function8ce6d - dw Function8ce7a - dw Function8ce6d - dw Function8cea2 -; 8ce14 - -Function8ce14: ; 8ce14 - ld hl, wJumptableIndex - inc [hl] - ret -; 8ce19 - -Function8ce19: ; 8ce19 - ld d, $55 - ld a, [wd194 + 1] - ld e, a - ld b, $15 - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - ld a, [PlayerGender] - bit 0, a - jr z, .asm_8ce31 - ld b, $1f - -.asm_8ce31 - pop af - ld [rSVBK], a - ld a, b - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $0 - call Function8ce14 - ld a, $80 - ld [wcf66], a - ret -; 8ce47 - -Function8ce47: ; 8ce47 - ld hl, wd193 - ld a, [wcf65] - cp [hl] - jr z, .asm_8ce64 - ld e, a - ld a, [wd191] - xor $ff - inc a - add e - ld [wcf65], a - ld hl, wc3c0 - ld a, [wd191] - add [hl] - ld [hl], a - ret - -.asm_8ce64 - call Function8ce14 - ld a, $80 - ld [wcf66], a - ret -; 8ce6d - -Function8ce6d: ; 8ce6d - ld hl, wcf66 - ld a, [hl] - and a - jr z, .asm_8ce76 - dec [hl] - ret - -.asm_8ce76 - call Function8ce14 - ret -; 8ce7a - -Function8ce7a: ; 8ce7a - ld hl, wd194 - ld a, [wcf65] - cp [hl] - jr z, .asm_8ce9e - ld e, a - ld a, [wd191] - xor $ff - inc a - ld d, a - ld a, e -rept 2 - add d -endr - ld [wcf65], a - ld hl, wc3c0 - ld a, [wd191] - ld d, a - ld a, [hl] -rept 2 - add d -endr - ld [hl], a - ret - - ret - -.asm_8ce9e - call Function8ce14 - ret -; 8cea2 - -Function8cea2: ; 8cea2 - ld a, $80 - ld [wJumptableIndex], a - ld de, SFX_TRAIN_ARRIVED - call PlaySFX - ret -; 8ceae - -Function8ceae: ; 8ceae - callba Function8cf69 - call Function8cdf7 - call Function8cc99 - call Function3b0c - call DelayFrame - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - ld a, [TimeOfDayPal] - push af - ld a, [wPermission] - push af - ld a, [TimeOfDay] - and $3 - ld [TimeOfDayPal], a - ld a, $1 - ld [wPermission], a - ld b, $9 - call GetSGBLayout - call UpdateTimePals - ld a, [rBGP] - ld [wcfc7], a - ld a, [rOBP0] - ld [wcfc8], a - ld a, [rOBP1] - ld [wcfc9], a - pop af - ld [wPermission], a - pop af - ld [TimeOfDayPal], a - pop af - ld [rSVBK], a - ret -; 8ceff - -MagnetTrainTilemap1: - db $1f, $05, $06, $0a, $0a - db $0a, $09, $0a, $0a, $0a - db $0a, $0a, $0a, $09, $0a - db $0a, $0a, $0b, $0c, $1f -MagnetTrainTilemap2: - db $14, $15, $16, $1a, $1a - db $1a, $19, $1a, $1a, $1a - db $1a, $1a, $1a, $19, $1a - db $1a, $1a, $1b, $1c, $1d -MagnetTrainTilemap3: - db $24, $25, $26, $27, $07 - db $2f, $29, $28, $28, $28 - db $28, $28, $28, $29, $07 - db $2f, $2a, $2b, $2c, $2d -MagnetTrainTilemap4: - db $20, $1f, $2e, $1f, $17 - db $00, $2e, $1f, $1f, $1f - db $1f, $1f, $1f, $2e, $17 - db $00, $1f, $2e, $1f, $0f -; 8cf4f +INCLUDE "event/magnet_train.asm" Function8cf4f: ; 8cf4f call Function3238 @@ -40000,6057 +22626,26 @@ Function8cf4f: ; 8cf4f ; 8cf53 -Function8cf53: ; 8cf53 - ld hl, wc300 - ld bc, $c1 -.asm_8cf59 - ld [hl], $0 - inc hl - dec bc - ld a, c - or b - jr nz, .asm_8cf59 - ret -; 8cf62 - -Function8cf62: ; 8cf62 - call Function8cf69 - call DelayFrame - ret -; 8cf69 - -Function8cf69: ; 8cf69 - push hl - push de - push bc - push af - - ld a, $0 - ld [wc3b5], a - call Function8cf7a - - pop af - pop bc - pop de - pop hl - ret -; 8cf7a - -Function8cf7a: ; 8cf7a - ld hl, wc314 - ld e, 10 ; There are 10 structs here. - -.loop - ld a, [hl] - and a - jr z, .next ; This struct is deinitialized. - ld c, l - ld b, h - push hl - push de - call Function8d24b ; Uses a massive jumptable - call LoadBouncingMonIcon - pop de - pop hl - jr c, .done - -.next - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - - ld a, [wc3b5] - ld l, a - ld h, Sprites / $0100 - -.loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd) - ld a, l - cp SpritesEnd % $100 - jr nc, .done - xor a - ld [hli], a - jr .loop2 - -.done - ret -; 8cfa8 - -Function8cfa8: ; 8cfa8 (23:4fa8) - ld hl, wc314 - ld e, 10 - -.loop - ld a, [hl] - and a - jr z, .next - ld c, l - ld b, h - push hl - push de - call Function8d24b ; Uses a massive jumptable - call LoadBouncingMonIcon - pop de - pop hl - jr c, .done - -.next - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - - ld a, [wc3b5] - ld l, a - ld h, (Sprites + $40) / $100 - -.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40) - ld a, l - cp (Sprites + $40) % $100 - jr nc, .done - xor a - ld [hli], a - jr .loop2 - -.done - ret - -Function8cfd6:: ; 8cfd6 -; Find if there's any room in the wc314 array, which is 10x16 - push de - push af - ld hl, wc314 - ld e, 10 -.loop - ld a, [hl] - and a - jr z, .found - ld bc, $10 - add hl, bc - dec e - jr nz, .loop -; We've reached the end. There is no more room here. -; Return carry. - pop af - pop de - scf - ret - -.found -; Back up the structure address to bc. - ld c, l - ld b, h -; Value [wc3b4] is initially set to -1. Set it to -; the number of objects loaded into this array. - ld hl, wc3b4 - inc [hl] - ld a, [hl] - and a - jr nz, .initialized - inc [hl] - -.initialized -; Get row a of Unknown_8d1c4, copy the pointer into de - pop af - ld e, a - ld d, 0 - ld hl, Unknown_8d1c4 -rept 3 - add hl, de -endr - ld e, l - ld d, h -; Set hl to the first field (field 0) in the current structure. - ld hl, 0 - add hl, bc -; Load the index. - ld a, [wc3b4] - ld [hli], a -; Copy the table entry to the next two fields. - ld a, [de] - ld [hli], a - inc de - ld a, [de] - ld [hli], a - inc de -; Look up the third field from the table in the wc300 array (10x2). -; Take the value and load it in - ld a, [de] - call LookUpInwDict_c300 - ld [hli], a - pop de -; Set hl to field 4. Kinda pointless, because we're presumably already here. - ld hl, $4 - add hl, bc -; Load the original value of de into here. - ld a, e - ld [hli], a - ld a, d - ld [hli], a -; load 0 into the next four fields - xor a -rept 2 - ld [hli], a -endr - xor a -rept 2 - ld [hli], a -endr -; load -1 into the next field - dec a - ld [hli], a -; load 0 into the last five fields - xor a -rept 4 - ld [hli], a -endr - ld [hl], a -; back up the address of the first field to wc3b8 - ld a, c - ld [wc3b8], a - ld a, b - ld [wc3b8 + 1], a - ret -; 8d036 - -Function8d036: ; 8d036 -; Clear the index field of the struct in bc. - ld hl, 0 - add hl, bc - ld [hl], $0 - ret -; 8d03d - - -Function8d03d: ; 8d03d (23:503d) -; Clear the index field of every struct in the wc314 array. - ld hl, wc314 - ld bc, $10 - ld e, 10 - xor a -.loop - ld [hl], a - add hl, bc - dec e - jr nz, .loop - ret - - -LoadBouncingMonIcon: ; 8d04c -; Populate Sprites with the bouncing mon icons - call Function8d0ec - call Function8d132 - cp EGG - jr z, .done - cp NUM_POKEMON + 1 - jr z, .almost - call Function8d1a2 - ld a, [wc3ba] - add [hl] - ld [wc3ba], a - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - push bc - ld a, [wc3b5] - ld e, a - ld d, Sprites / $100 - ld a, [hli] - ld c, a -.loop - ld a, [wc3bc] - ld b, a - ld a, [wc3be] - add b - ld b, a - ld a, [wc3bf] - add b - ld b, a - call Function8d0be - add b - ld [de], a - inc hl - inc de - ld a, [wc3bb] - ld b, a - ld a, [wc3bd] - add b - ld b, a - ld a, [wc3c0] - add b - ld b, a - call Function8d0ce - add b - ld [de], a - inc hl - inc de - ld a, [wc3ba] - add [hl] - ld [de], a - inc hl - inc de - call Function8d0de - ld [de], a - inc hl - inc de - ld a, e - ld [wc3b5], a - cp SpritesEnd % $100 - jr nc, .outofroom - dec c - jr nz, .loop - pop bc - jr .done - -.almost - call Function8d036 - -.done - and a - ret - -.outofroom - pop bc - scf - ret -; 8d0be - -Function8d0be: ; 8d0be - push hl - ld a, [hl] - ld hl, wc3b8 - bit 6, [hl] - jr z, .ok - add $8 - xor $ff - inc a - -.ok - pop hl - ret -; 8d0ce - -Function8d0ce: ; 8d0ce - push hl - ld a, [hl] - ld hl, wc3b8 - bit 5, [hl] - jr z, .ok - add $8 - xor $ff - inc a - -.ok - pop hl - ret -; 8d0de - -Function8d0de: ; 8d0de - ld a, [wc3b8] - ld b, a - ld a, [hl] - xor b - and $e0 - ld b, a - ld a, [hl] - and $1f - or b - ret -; 8d0ec - -Function8d0ec: ; 8d0ec - xor a - ld [wc3b8], a - ld hl, $3 - add hl, bc - ld a, [hli] - ld [wc3ba], a - ld a, [hli] - ld [wc3bb], a - ld a, [hli] - ld [wc3bc], a - ld a, [hli] - ld [wc3bd], a - ld a, [hli] - ld [wc3be], a - ret -; 8d109 - -LookUpInwDict_c300: ; 8d109 -; a = wDict_c300[a] if a in wDict_c300 else 0 - push hl - push bc - ld hl, wDict_c300 - ld b, a - ld c, 10 -.loop - ld a, [hli] - cp b - jr z, .ok - inc hl - dec c - jr nz, .loop - xor a - jr .done - -.ok - ld a, [hl] - -.done - pop bc - pop hl - ret -; 8d120 - -Function8d120:: ; 8d120 - ld hl, $1 - add hl, bc - ld [hl], a - ld hl, $8 - add hl, bc - ld [hl], $0 - ld hl, $a - add hl, bc - ld [hl], $ff - ret -; 8d132 - - -Function8d132: ; 8d132 -.loop - ld hl, $8 - add hl, bc - ld a, [hl] - and a - jr z, .ok - dec [hl] - call Function8d189 - ld a, [hli] - push af - jr .skip - -.ok - ld hl, $a - add hl, bc - inc [hl] - call Function8d189 - ld a, [hli] - cp $fe - jr z, .minus_2 - cp $ff - jr z, .minus_1 - push af - ld a, [hl] - push hl - and $3f - ld hl, $9 - add hl, bc - add [hl] - ld hl, $8 - add hl, bc - ld [hl], a - pop hl - -.skip - ld a, [hl] - and $c0 - srl a - ld [wc3b8], a - pop af - ret - -.minus_1 - xor a - ld hl, $8 - add hl, bc - ld [hl], a - ld hl, $a - add hl, bc -rept 2 - dec [hl] -endr - jr .loop - -.minus_2 - xor a - ld hl, $8 - add hl, bc - ld [hl], a - dec a - ld hl, $a - add hl, bc - ld [hl], a - jr .loop -; 8d189 - -Function8d189: ; 8d189 - ; Get the [bc+10]th entry in the data table - ; indexed at [bc+1] in Unknown_8d6e6 - ld hl, $1 - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, Unknown_8d6e6 -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $a - add hl, bc - ld l, [hl] - ld h, 0 - add hl, hl - add hl, de - ret -; 8d1a2 - -Function8d1a2: ; 8d1a2 - ld e, a - ld d, 0 - ld hl, Unknown_8d94d -rept 3 - add hl, de -endr - ret -; 8d1ac - -Function8d1ac: ; unreferenced - push hl - ld l, a - ld h, 0 -rept 2 - add hl, hl -endr - ld de, Unknown_8e706 - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - inc hl - ld e, [hl] - inc hl - ld d, [hl] - pop hl - push bc - call Request2bpp - pop bc - ret -; 8d1c4 - -Unknown_8d1c4: ; 8d1c4 - db $01, JUMPTABLE_8D24B_FUNCTION_01, $00 ; 00 - db $07, JUMPTABLE_8D24B_FUNCTION_04, $00 ; 01 - db $08, JUMPTABLE_8D24B_FUNCTION_05, $05 ; 02 - db $0a, JUMPTABLE_8D24B_FUNCTION_06, $00 ; 03 - db $0b, JUMPTABLE_8D24B_FUNCTION_07, $06 ; 04 - db $0c, JUMPTABLE_8D24B_FUNCTION_08, $06 ; 05 - db $0d, JUMPTABLE_8D24B_FUNCTION_09, $07 ; 06 - db $0e, JUMPTABLE_8D24B_FUNCTION_0A, $07 ; 07 - db $10, JUMPTABLE_8D24B_FUNCTION_0B, $07 ; 08 - db $08, JUMPTABLE_8D24B_FUNCTION_0C, $05 ; 09 - db $11, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0a - db $12, JUMPTABLE_8D24B_FUNCTION_0D, $08 ; 0b - db $12, JUMPTABLE_8D24B_FUNCTION_0E, $08 ; 0c - db $12, JUMPTABLE_8D24B_FUNCTION_0F, $08 ; 0d - db $13, JUMPTABLE_8D24B_FUNCTION_10, $00 ; 0e - db $15, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0f - db $16, JUMPTABLE_8D24B_FUNCTION_11, $00 ; 10 - db $17, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 11 - db $18, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 12 - db $19, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 13 - db $1a, JUMPTABLE_8D24B_FUNCTION_14, $00 ; 14 - db $1b, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 15 - db $1d, JUMPTABLE_8D24B_FUNCTION_15, $00 ; 16 - db $1e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 17 - db $1d, JUMPTABLE_8D24B_FUNCTION_17, $00 ; 18 - db $1f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 19 - db $24, JUMPTABLE_8D24B_FUNCTION_19, $00 ; 1a - db $25, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1b - db $20, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 1c - db $26, JUMPTABLE_8D24B_FUNCTION_1A, $00 ; 1d - db $2d, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1e - db $2e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1f - db $2f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 20 - db $30, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 21 - db $31, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 22 - db $32, JUMPTABLE_8D24B_FUNCTION_1B, $00 ; 23 - db $33, JUMPTABLE_8D24B_FUNCTION_1C, $00 ; 24 - db $34, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 25 - db $35, JUMPTABLE_8D24B_FUNCTION_1D, $00 ; 26 - db $37, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 27 - db $38, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 28 - db $39, JUMPTABLE_8D24B_FUNCTION_20, $00 ; 29 - db $3f, JUMPTABLE_8D24B_FUNCTION_21, $00 ; 2a - db $3e, JUMPTABLE_8D24B_FUNCTION_22, $00 ; 2b - db $40, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 2c -; 8d24b - - -Function8d24b: ; 8d24b - ld hl, $2 ; field 2, see the second column in the above table - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, .Jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8d25b - - -.Jumptable: ; 8d25b (23:525b) - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - dw .six - dw .seven - dw .eight - dw .nine - dw .ten - dw .eleven - dw .twelve - dw .thirteen - dw .fourteen - dw .fifteen - dw .sixteen - dw .seventeen - dw .eighteen - dw .nineteen - dw .twenty - dw .twentyone - dw .twentytwo - dw .twentythree - dw .twentyfour - dw .twentyfive - dw .twentysix - dw .twentyseven - dw .twentyeight - dw .twentynine - dw .thirty - dw .thirtyone - dw .thirtytwo - dw .thirtythree - dw .thirtyfour - - -.zero: ; 8d2a1 (23:52a1) - ret - -.one: ; 8d2a2 (23:52a2) - ld a, [MenuSelection2] - ld hl, 0 - add hl, bc - cp [hl] - jr z, .two - ld hl, $4 - add hl, bc - ld [hl], $10 - ld hl, $7 - add hl, bc - ld [hl], $0 - ret - -.two: ; 8d2b9 (23:52b9) - ld hl, $4 - add hl, bc - ld [hl], $18 - ld hl, $c - add hl, bc - ld a, [hl] - ld d, a - inc [hl] - and $f - ret nz - ld hl, $d - add hl, bc - ld e, [hl] - ld hl, $7 - add hl, bc - ld a, d - and $10 ; bit 4 - jr z, .asm_8d2df - ld a, e - and a - jr z, .asm_8d2e6 - cp $1 - jr z, .asm_8d2e2 -.asm_8d2df - xor a - ld [hl], a - ret -.asm_8d2e2 - ld a, $ff - ld [hl], a - ret -.asm_8d2e6 - ld a, $fe - ld [hl], a - ret - -.three: ; 8d2ea (23:52ea) - ld a, [MenuSelection2] - ld hl, 0 - add hl, bc - cp [hl] - jr z, .asm_8d2fb - ld hl, $4 - add hl, bc - ld [hl], $10 - ret -.asm_8d2fb - ld hl, $4 - add hl, bc - ld [hl], $18 - ret - -.four: ; 8d302 (23:5302) - call .anonymous_jumptable - jp [hl] -; 8d306 (23:5306) - -; Anonymous jumptable (see .anonymous_jumptable) - dw .four_zero - dw .four_one -; 8d30a - -.four_zero: ; 8d30a - call Function8d6d8 - ld hl, 0 - add hl, bc - ld a, [hl] - ld hl, $d - add hl, bc - and $3 - ld [hl], a - inc [hl] - swap a - ld hl, $c - add hl, bc - ld [hl], a - -.four_one: ; 8d321 - ld hl, $4 - add hl, bc - ld a, [hl] - cp $a4 - jr nc, .asm_8d356 - ld hl, $d - add hl, bc - add $4 - ld hl, $4 - add hl, bc - ld [hl], a - ld hl, $5 - add hl, bc - inc [hl] - ld hl, $d - add hl, bc - ld a, [hl] - sla a - sla a - ld d, $2 - ld hl, $c - add hl, bc - ld a, [hl] - add $3 - ld [hl], a - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.asm_8d356 - call Function8d036 - ret -; 8d35a - -.twentyfive: ; 8d35a (23:535a) - ld hl, $c - add hl, bc - ld a, [hl] - inc a - ld [hl], a - ld d, $2 - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.five: ; 8d36c (23:536c) - callab Function11a3b - ret - -.twelve: ; 8d373 (23:5373) - callab Function120c1 - ret - -.six: ; 8d37a (23:537a) - callab GameFreakLogoJumper - ret - -.seven: ; 8d381 (23:5381) - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_8d3ba -rept 2 - dec [hl] -endr - ld d, a - and $1f - jr nz, .asm_8d395 - ld hl, $d - add hl, bc - dec [hl] -.asm_8d395 - ld hl, $b - add hl, bc - ld a, [hl] - push af - push de - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ld hl, $d - add hl, bc - ld a, [hl] - ld hl, $b - add hl, bc - add [hl] - ld [hl], a - ret -.asm_8d3ba - ld a, $1 - ld [wcf64], a - call Function8d036 - ret - -.eight: ; 8d3c3 (23:53c3) - ld hl, $c - add hl, bc - ld a, [hli] - or [hl] - jr z, .asm_8d41e - ld hl, $f - add hl, bc - ld d, [hl] - ld hl, $b - add hl, bc - ld a, [hl] - push af - push de - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ld hl, $c - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $e - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, $e - add hl, bc - ld [hl], e - inc hl - ld [hl], d - ld hl, $c - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, $fff0 - add hl, de - ld e, l - ld d, h - ld hl, $c - add hl, bc - ld [hl], e - inc hl - ld [hl], d - ld hl, $b - add hl, bc - ld a, [hl] - xor $20 - ld [hl], a - ret -.asm_8d41e - call Function8d036 - ret - -.nine: ; 8d422 (23:5422) - callab Function9321d - ret - -.ten: ; 8d429 (23:5429) - callab Function932ac - ld hl, wcf64 - ld a, [hl] - cp $2 - ret nz - ld [hl], $3 - ld a, $f - call Function8d120 - ret - -.eleven: ; 8d43e (23:543e) - ld hl, $b - add hl, bc - ld a, [hl] - dec [hl] - ld e, a - and $1 - jr z, .asm_8d462 - ld hl, $4 - add hl, bc - ld a, [hl] - cp $78 - jr c, .asm_8d461 - call Function8d036 - ld a, $4 - ld [wcf64], a - ld de, SFX_PLACE_PUZZLE_PIECE_DOWN - call PlaySFX - ret -.asm_8d461 - inc [hl] -.asm_8d462 - ld a, e - ld d, $20 - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.thirteen: ; 8d46e (23:546e) - callab Functione00ed - ret - -.fifteen: ; 8d475 (23:5475) - callab Function90d41 - ret - -.fourteen: ; 8d47c (23:547c) - callab Functione21a1 - ret - -.sixteen: ; 8d483 (23:5483) - call .anonymous_jumptable - jp [hl] -; 8d487 (23:5487) - -; Anonymous jumptable (see .anonymous_jumptable) - dw .sixteen_zero - dw .sixteen_one - dw .sixteen_two - dw .sixteen_three - dw .sixteen_four - dw .sixteen_five -; 8d493 - -.sixteen_zero: ; 8d493 - ld a, $14 - call Function8d120 - ld hl, $b - add hl, bc - ld [hl], $2 - ld hl, $c - add hl, bc - ld [hl], $20 - ret -; 8d4a5 - -.sixteen_two: ; 8d4a5 - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_8d4af - dec [hl] - ret - -.asm_8d4af - call Function8d6d8 - ld hl, $c - add hl, bc - ld [hl], $40 - -.sixteen_three: ; 8d4b8 - ld hl, $c - add hl, bc - ld a, [hl] - cp $30 - jr c, .asm_8d4cd - dec [hl] - ld d, $28 - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.asm_8d4cd - ld de, SFX_GOT_SAFARI_BALLS - call PlaySFX - jr .sixteen_five -; 8d4d5 - -.sixteen_one: ; 8d4d5 - ld hl, $b - add hl, bc - ld [hl], $4 - ld hl, $c - add hl, bc - ld [hl], $30 - ld hl, $d - add hl, bc - ld [hl], $24 - ret -; 8d4e8 - -.sixteen_four: ; 8d4e8 - ld hl, $d - add hl, bc - ld a, [hl] - and a - jr z, .asm_8d51c - ld d, a - ld hl, $c - add hl, bc - ld a, [hl] - call Function8e72c - ld hl, $7 - add hl, bc - ld [hl], a - ld hl, $c - add hl, bc - inc [hl] - ld a, [hl] - and $3f - ret nz - ld hl, $c - add hl, bc - ld [hl], $20 - ld hl, $d - add hl, bc - ld a, [hl] - sub $c - ld [hl], a - ld de, SFX_SWITCH_POKEMON - call PlaySFX - ret - -.asm_8d51c - xor a - ld hl, $7 - add hl, bc - ld [hl], a - call Function8d6d8 - ret - -.sixteen_five: ; 8d526 - call Function8d036 - ret -; 8d52a - -.seventeen: ; 8d52a (23:552a) - ld hl, $4 - add hl, bc - ld a, [hl] -rept 2 - inc [hl] -endr - cp $b0 - jr nc, .asm_8d53f - and $3 - ret nz - ld de, SFX_POKEBALLS_PLACED_ON_TABLE - call PlaySFX - ret -.asm_8d53f - call Function8d036 - ret - -.eighteen: ; 8d543 (23:5543) - callab Function29676 - ret - -.nineteen: ; 8d54a (23:554a) - ld hl, $c - add hl, bc - ld a, [hl] - cp $80 - jr nc, .asm_8d574 - ld d, a - add $8 - ld [hl], a - ld hl, $b - add hl, bc - ld a, [hl] - xor $20 - ld [hl], a - push af - push de - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret -.asm_8d574 - call Function8d036 - ret - -.twenty: ; 8d578 (23:5578) - callab Function91640 - ret - -.twentyone: ; 8d57f (23:557f) - ld hl, $d - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $80 - add hl, de - ld e, l - ld d, h - ld hl, $d - add hl, bc - ld [hl], e - inc hl - ld [hl], d - ld hl, $c - add hl, bc - ld a, [hl] -rept 3 - inc [hl] -endr - push af - push de - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.twentytwo: ; 8d5b0 (23:55b0) - ld hl, $5 - add hl, bc - ld a, [hl] - and a - ret z - ld hl, $d - add hl, bc - ld a, [hl] - inc [hl] - cp $40 - ret c - ld hl, $5 - add hl, bc -rept 2 - dec [hl] -endr - ld hl, $f - add hl, bc - ld a, [hl] - ld d, a - cp $40 - jr nc, .asm_8d5d3 - add $8 - ld [hl], a -.asm_8d5d3 - ld hl, $e - add hl, bc - ld a, [hl] - inc [hl] - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.twentythree: ; 8d5e2 (23:55e2) - ld hl, $4 - add hl, bc - ld a, [hl] - cp $b8 - jr nc, .asm_8d603 -rept 2 - inc [hl] -endr - ld hl, $5 - add hl, bc - dec [hl] - ld d, $40 - ld hl, $c - add hl, bc - ld a, [hl] - inc [hl] - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret -.asm_8d603 - call Function8d036 - ret - -.twentyfour: ; 8d607 (23:5607) - ld hl, $5 - add hl, bc - ld a, [hl] - cp $54 - ret z - ld hl, $5 - add hl, bc -rept 2 - inc [hl] -endr - ld hl, $f - add hl, bc - ld a, [hl] - ld d, a - and a - jr z, .asm_8d621 - sub $2 - ld [hl], a -.asm_8d621 - ld hl, $e - add hl, bc - ld a, [hl] - inc [hl] - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.twentyseven: ; 8d630 (23:5630) - callba Function108bc7 - ret - -.twentyeight: ; 8d637 (23:5637) - callba Function108be0 - ret - -.twentynine: ; 8d63e (23:563e) - ld a, [wcf65] - and a - jr nz, .asm_8d645 - ret -.asm_8d645 - ld hl, $7 - add hl, bc - ld [hl], $0 - ld hl, $d - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - xor $ff - inc a - ld d, $20 - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ld a, $36 - call Function8d120 - ret - -.thirty: ; 8d666 (23:5666) - ld hl, $c - add hl, bc - ld a, [hl] - cp $14 - jr nc, .asm_8d67f - add $2 - ld [hl], a - xor $ff - inc a - ld d, $20 - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a -.asm_8d67f - ret - -.thirtytwo: ; 8d680 (23:5680) - ld hl, $b - add hl, bc - ld d, [hl] -rept 3 - inc [hl] -endr - ld hl, $c - add hl, bc - ld a, [hl] - push af - push de - call Function8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call Function8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.thirtythree: ; 8d6a2 (23:56a2) - ld a, [wcf64] - cp $40 - ret nz - ld a, $3d - call Function8d120 - ret - -.thirtyfour: ; 8d6ae (23:56ae) - ld hl, $5 - add hl, bc - ld a, [hl] - add $10 - ld [hl], a - ret - -.twentysix: ; 8d6b7 (23:56b7) - callba Function11d0b6 - ret - -.thirtyone: ; 8d6be (23:56be) - callba Function49aa2 - ret - -.anonymous_jumptable: ; 8d6c5 (23:56c5) - ld hl, [sp+$0] - ld e, [hl] - inc hl - ld d, [hl] - inc de - ld hl, $b - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ret -; 8d6d8 (23:56d8) - -Function8d6d8: ; 8d6d8 - ld hl, $b - add hl, bc - inc [hl] - ret -; 8d6de - -Function8d6de: ; 8d6de (23:56de) - call Function8e72c - ret - -Function8d6e2: ; 8d6e2 (23:56e2) - call Function8e72a - ret -; 8d6e6 (23:56e6) - -Unknown_8d6e6: ; 8d6e6 - dw Unknown_8d76a - dw Unknown_8d76d - dw Unknown_8d772 - dw Unknown_8d777 - dw Unknown_8d77c - dw Unknown_8d781 - dw Unknown_8d786 - dw Unknown_8d7a6 - dw Unknown_8d7ab - dw Unknown_8d7b0 - dw Unknown_8d7b5 - dw Unknown_8d7d4 - dw Unknown_8d7d9 - dw Unknown_8d7e2 - dw Unknown_8d7eb - dw Unknown_8d7f4 - dw Unknown_8d7ff - dw Unknown_8d78b - dw Unknown_8d802 - dw Unknown_8d805 - dw Unknown_8d808 - dw Unknown_8d811 - dw Unknown_8d818 - dw Unknown_8d81d - dw Unknown_8d822 - dw Unknown_8d825 - dw Unknown_8d82c - dw Unknown_8d82f - dw Unknown_8d861 - dw Unknown_8d864 - dw Unknown_8d867 - dw Unknown_8d874 - dw Unknown_8d877 - dw Unknown_8d87a - dw Unknown_8d87d - dw Unknown_8d880 - dw Unknown_8d883 - dw Unknown_8d890 - dw Unknown_8d899 - dw Unknown_8d89c - dw Unknown_8d89f - dw Unknown_8d8a2 - dw Unknown_8d8a5 - dw Unknown_8d8a8 - dw Unknown_8d8ab - dw Unknown_8d794 - dw Unknown_8d79d - dw Unknown_8d8ae - dw Unknown_8d8cd - dw Unknown_8d8ec - dw Unknown_8d8f1 - dw Unknown_8d8f4 - dw Unknown_8d8f7 - dw Unknown_8d8fe - dw Unknown_8d907 - dw Unknown_8d90c - dw Unknown_8d913 - dw Unknown_8d916 - dw Unknown_8d91d - dw Unknown_8d924 - dw Unknown_8d92b - dw Unknown_8d932 - dw Unknown_8d93d - dw Unknown_8d940 - dw Unknown_8d943 - dw Unknown_8d948 -; 8d76a - -Unknown_8d76a: dw $2000 - db -1 -Unknown_8d76d: dw $0800, $0801 - db -2 -Unknown_8d772: dw $083d, $083e - db -2 -Unknown_8d777: dw $083f, $0840 - db -2 -Unknown_8d77c: dw $0400, $0401 - db -2 -Unknown_8d781: dw $043d, $043e - db -2 -Unknown_8d786: dw $043f, $0440 - db -2 -Unknown_8d78b: dw $0800, $0801, $0800, $4801 - db -2 -Unknown_8d794: dw $0863, $0864, $0863, $4864 - db -2 -Unknown_8d79d: dw $0865, $0866, $0865, $4866 - db -2 -Unknown_8d7a6: dw $011e, $011f - db -2 -Unknown_8d7ab: dw $0120, $01fd - db -2 -Unknown_8d7b0: dw $0121, $01fd - db -2 -Unknown_8d7b5: dw $0c81, $0182, $0183, $0482, $0c81, $0c82, $0483, $2084, $0385, $0386, $0487, $0488, $0489, $0a8a, $078b - db -1 -Unknown_8d7d4: dw $0323, $8323 - db -2 -Unknown_8d7d9: dw $0224, $0225, $0226, $0225 - db -2 -Unknown_8d7e2: dw $0727, $0728, $8727, $4728 - db -2 -Unknown_8d7eb: dw $0729, $072a, $0729, $072b - db -2 -Unknown_8d7f4: dw $0729, $072c, $072d, $072c, $0729 - db -1 -Unknown_8d7ff: dw $142e - db -1 -Unknown_8d802: dw $202f - db -1 -Unknown_8d805: dw $2030 - db -1 -Unknown_8d808: dw $0330, $0331, $0330, $4331 - db -2 -Unknown_8d811: dw $0432, $0433, $0434 - db -4 -Unknown_8d818: dw $0335, $0336 - db -2 -Unknown_8d81d: dw $0737, $0738 - db -2 -Unknown_8d822: dw $2039 - db -1 -Unknown_8d825: dw $023b, $023a, $023b - db -1 -Unknown_8d82c: dw $203c - db -1 -Unknown_8d82f: dw $0841, $0842, $0841, $4842 - db -2 - dw $0843, $0844 - db -2 - dw $0845, $0846 - db -2 - dw $0847, $0848 - db -2 - dw $0149, $4149, $c149, $8149 - db -2 - dw $204a - db -1 - dw $204b - db -1 - dw $204c - db -1 - dw $204d - db -1 - dw $034e, $03fd - db -2 -Unknown_8d861: dw $20fd - db -1 -Unknown_8d864: dw $204f - db -1 -Unknown_8d867: dw $0250, $1051, $01fd, $0152, $01fd, $0153 - db -4 -Unknown_8d874: dw $2054 - db -1 -Unknown_8d877: dw $2055 - db -1 -Unknown_8d87a: dw $6055 - db -1 -Unknown_8d87d: dw $a055 - db -1 -Unknown_8d880: dw $e055 - db -1 -Unknown_8d883: dw $0a56, $0957, $0a58, $0a59, $0958, $0a5a - db -2 -Unknown_8d890: dw $0250, $025b, $0250, $425b - db -2 -Unknown_8d899: dw $025c - db -1 -Unknown_8d89c: dw $025d - db -1 -Unknown_8d89f: dw $025e - db -1 -Unknown_8d8a2: dw $025f - db -1 -Unknown_8d8a5: dw $0260 - db -1 -Unknown_8d8a8: dw $0261 - db -1 -Unknown_8d8ab: dw $0262 - db -1 -Unknown_8d8ae: dw $0332, $0333, $0334, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331 - db -1 -Unknown_8d8cd: dw $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0332, $0333, $0334 - db -4 -Unknown_8d8ec: dw $0367, $0368 - db -2 -Unknown_8d8f1: dw $036c - db -1 -Unknown_8d8f4: dw $036d - db -1 -Unknown_8d8f7: dw $0269, $026a, $026b - db -4 -Unknown_8d8fe: dw $036e, $036f, $0370, $0371 - db -2 -Unknown_8d907: dw $0371, $076e - db -1 -Unknown_8d90c: dw $2072, $0773, $0774 - db -1 -Unknown_8d913: dw $0375 - db -1 -Unknown_8d916: dw $0376, $0377, $0778 - db -4 -Unknown_8d91d: dw $4376, $4377, $4778 - db -4 -Unknown_8d924: dw $8376, $8377, $8778 - db -4 -Unknown_8d92b: dw $c376, $c377, $c778 - db -4 -Unknown_8d932: dw $0379, $037a, $037b, $077c, $077d - db -1 -Unknown_8d93d: dw $037e - db -1 -Unknown_8d940: dw $00fd - db -1 -Unknown_8d943: dw $087f, $0880 - db -1 -Unknown_8d948: dw $487f, $4880 - db -1 -; 8d94d - -Unknown_8d94d: ; 8d94d - dbw $00, Unknown_8dd8a - dbw $04, Unknown_8dd8a - dbw $4c, Unknown_8daf1 - dbw $5c, Unknown_8daf1 - dbw $6c, Unknown_8daf6 - dbw $6e, Unknown_8daf6 - dbw $2d, Unknown_8ddf0 - dbw $4d, Unknown_8ddf0 - dbw $60, Unknown_8de09 - dbw $00, Unknown_8de09 - dbw $00, Unknown_8de09 - dbw $06, Unknown_8de09 - dbw $0c, Unknown_8de7e - dbw $0d, Unknown_8daf1 - dbw $00, Unknown_8dc53 - dbw $04, Unknown_8dc53 - dbw $08, Unknown_8dc53 - dbw $40, Unknown_8dc53 - dbw $44, Unknown_8dc53 - dbw $48, Unknown_8dc53 - dbw $4c, Unknown_8dc53 - dbw $80, Unknown_8de87 - dbw $85, Unknown_8de87 - dbw $8a, Unknown_8de87 - dbw $00, Unknown_8db29 - dbw $01, Unknown_8db5c - dbw $09, Unknown_8db9d - dbw $10, Unknown_8dc94 - dbw $29, Unknown_8dc94 - dbw $42, Unknown_8dc94 - dbw $f8, Unknown_8e17e - dbw $fa, Unknown_8e17e - dbw $00, Unknown_8deb2 - dbw $00, Unknown_8dec3 - dbw $00, Unknown_8deec - dbw $0f, Unknown_8db07 - dbw $11, Unknown_8daf1 - dbw $12, Unknown_8daf1 - dbw $13, Unknown_8daf1 - dbw $00, Unknown_8df29 - dbw $08, Unknown_8df29 - dbw $10, Unknown_8df42 - dbw $10, Unknown_8df5b - dbw $10, Unknown_8df74 - dbw $10, Unknown_8df8d - dbw $10, Unknown_8dfa6 - dbw $3a, Unknown_8daf1 - dbw $00, Unknown_8dd8a - dbw $00, Unknown_8db18 - dbw $02, Unknown_8dd9b - dbw $06, Unknown_8db5c - dbw $0a, Unknown_8db5c - dbw $0e, Unknown_8db5c - dbw $12, Unknown_8db3a - dbw $13, Unknown_8db3a - dbw $00, Unknown_8dd8a - dbw $04, Unknown_8dd8a - dbw $10, Unknown_8db5c - dbw $00, Unknown_8dd9b - dbw $04, Unknown_8daf1 - dbw $00, Unknown_8dfbf - dbw $00, Unknown_8ddac - dbw $00, Unknown_8ddbd - dbw $00, Unknown_8ddce - dbw $00, Unknown_8dddf - dbw $00, Unknown_8dd9b - dbw $04, Unknown_8dd9b - dbw $00, Unknown_8dc2e - dbw $30, Unknown_8dc2e - dbw $03, Unknown_8dc2e - dbw $33, Unknown_8dc2e - dbw $06, Unknown_8dc2e - dbw $36, Unknown_8dc2e - dbw $09, Unknown_8dc2e - dbw $39, Unknown_8dc2e - dbw $0c, Unknown_8dfcc - dbw $0c, Unknown_8dfe5 - dbw $3c, Unknown_8daf1 - dbw $3e, Unknown_8daf1 - dbw $00, Unknown_8de9c - dbw $00, Unknown_8dea1 - dbw $00, Unknown_8dff6 - dbw $00, Unknown_8e007 - dbw $00, Unknown_8e018 - dbw $00, Unknown_8daf1 - dbw $01, Unknown_8daf1 - dbw $00, Unknown_8e029 - dbw $00, Unknown_8e076 - dbw $00, Unknown_8e0b7 - dbw $00, Unknown_8e0f4 - dbw $00, Unknown_8e139 - dbw $04, Unknown_8dea1 - dbw $00, Unknown_8e183 - dbw $00, Unknown_8e1b4 - dbw $00, Unknown_8e1b9 - dbw $00, Unknown_8e1ca - dbw $00, Unknown_8e1eb - dbw $00, Unknown_8e1f0 - dbw $00, Unknown_8e1f9 - dbw $00, Unknown_8e202 - dbw $04, Unknown_8e202 - dbw $00, Unknown_8e213 - dbw $04, Unknown_8e213 - dbw $20, Unknown_8e224 - dbw $21, Unknown_8e224 - dbw $22, Unknown_8e24b - dbw $23, Unknown_8e25c - dbw $27, Unknown_8e27d - dbw $2a, Unknown_8e229 - dbw $2a, Unknown_8e23a - dbw $00, Unknown_8e2ae - dbw $08, Unknown_8e33f - dbw $60, Unknown_8e3b0 - dbw $68, Unknown_8e429 - dbw $00, Unknown_8e4a6 - dbw $05, Unknown_8e4a6 - dbw $0a, Unknown_8e4a6 - dbw $50, Unknown_8e50b - dbw $00, Unknown_8e54c - dbw $01, Unknown_8e551 - dbw $04, Unknown_8e55e - dbw $00, Unknown_8db29 - dbw $01, Unknown_8e57b - dbw $03, Unknown_8e59c - dbw $08, Unknown_8e5cd - dbw $1c, Unknown_8e5cd - dbw $80, Unknown_8e61e - dbw $00, Unknown_8e66f - dbw $04, Unknown_8e66f - dbw $d0, Unknown_8e680 - dbw $d3, Unknown_8e680 - dbw $d6, Unknown_8e680 - dbw $6c, Unknown_8e6a5 - dbw $68, Unknown_8e6a5 - dbw $64, Unknown_8e6a5 - dbw $60, Unknown_8e6a5 - dbw $0c, Unknown_8e6a5 - dbw $08, Unknown_8e6a5 - dbw $04, Unknown_8e6a5 - dbw $00, Unknown_8e6a5 -; 8daf1 - - -Unknown_8daf1: ; 8daf1 - db 1 - db $fc, $fc, $00, $00 -; 8daf6 - -Unknown_8daf6: ; 8daf6 - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $10, $00 - db $00, $00, $11, $00 -; 8db07 - -Unknown_8db07: ; 8db07 - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $00, $20 - db $00, $f8, $01, $00 - db $00, $00, $01, $20 -; 8db18 - -Unknown_8db18: ; 8db18 - db 4 - db $f8, $f8, $00, $80 - db $f8, $00, $00, $a0 - db $00, $f8, $01, $80 - db $00, $00, $01, $a0 -; 8db29 - -Unknown_8db29: ; 8db29 - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $00, $20 - db $00, $f8, $00, $40 - db $00, $00, $00, $60 -; 8db3a - -Unknown_8db3a: ; 8db3a - db 4 - db $f8, $f8, $00, $07 - db $f8, $00, $00, $27 - db $00, $f8, $00, $47 - db $00, $00, $00, $67 -; 8db4b - -; 8db4b - db 4 - db $f8, $f8, $00, $80 - db $f8, $00, $00, $a0 - db $00, $f8, $00, $c0 - db $00, $00, $00, $e0 -; 8db5c - -Unknown_8db5c: ; 8db5c - db 16 - db $f0, $f0, $00, $00 - db $f0, $f8, $01, $00 - db $f8, $f0, $02, $00 - db $f8, $f8, $03, $00 - db $f0, $00, $01, $20 - db $f0, $08, $00, $20 - db $f8, $00, $03, $20 - db $f8, $08, $02, $20 - db $00, $f0, $02, $40 - db $00, $f8, $03, $40 - db $08, $f0, $00, $40 - db $08, $f8, $01, $40 - db $00, $00, $03, $60 - db $00, $08, $02, $60 - db $08, $00, $01, $60 - db $08, $08, $00, $60 -; 8db9d - -Unknown_8db9d: ; 8db9d - db 36 - db $e8, $e8, $00, $00 - db $e8, $f0, $01, $00 - db $e8, $f8, $02, $00 - db $f0, $e8, $03, $00 - db $f0, $f0, $04, $00 - db $f0, $f8, $05, $00 - db $f8, $e8, $06, $00 - db $f8, $f0, $05, $00 - db $f8, $f8, $05, $00 - db $e8, $00, $02, $20 - db $e8, $08, $01, $20 - db $e8, $10, $00, $20 - db $f0, $00, $05, $20 - db $f0, $08, $04, $20 - db $f0, $10, $03, $20 - db $f8, $00, $05, $20 - db $f8, $08, $05, $20 - db $f8, $10, $06, $20 - db $00, $e8, $06, $40 - db $00, $f0, $05, $40 - db $00, $f8, $05, $40 - db $08, $e8, $03, $40 - db $08, $f0, $04, $40 - db $08, $f8, $05, $40 - db $10, $e8, $00, $40 - db $10, $f0, $01, $40 - db $10, $f8, $02, $40 - db $00, $00, $05, $60 - db $00, $08, $05, $60 - db $00, $10, $06, $60 - db $08, $00, $05, $60 - db $08, $08, $04, $60 - db $08, $10, $03, $60 - db $10, $00, $02, $60 - db $10, $08, $01, $60 - db $10, $10, $00, $60 -; 8dc2e - -Unknown_8dc2e: ; 8dc2e - db 9 - db $f4, $f4, $00, $00 - db $f4, $fc, $01, $00 - db $f4, $04, $02, $00 - db $fc, $f4, $10, $00 - db $fc, $fc, $11, $00 - db $fc, $04, $12, $00 - db $04, $f4, $20, $00 - db $04, $fc, $21, $00 - db $04, $04, $22, $00 -; 8dc53 - -Unknown_8dc53: ; 8dc53 - db 16 - db $f0, $f0, $00, $00 - db $f0, $f8, $01, $00 - db $f0, $00, $02, $00 - db $f0, $08, $03, $00 - db $f8, $f0, $10, $00 - db $f8, $f8, $11, $00 - db $f8, $00, $12, $00 - db $f8, $08, $13, $00 - db $00, $f0, $20, $00 - db $00, $f8, $21, $00 - db $00, $00, $22, $00 - db $00, $08, $23, $00 - db $08, $f0, $30, $00 - db $08, $f8, $31, $00 - db $08, $00, $32, $00 - db $08, $08, $33, $00 -; 8dc94 - -Unknown_8dc94: ; 8dc94 - db 25 - db $ec, $ec, $00, $00 - db $f4, $ec, $01, $00 - db $fc, $ec, $02, $00 - db $04, $ec, $03, $00 - db $0c, $ec, $04, $00 - db $ec, $f4, $05, $00 - db $f4, $f4, $06, $00 - db $fc, $f4, $07, $00 - db $04, $f4, $08, $00 - db $0c, $f4, $09, $00 - db $ec, $fc, $0a, $00 - db $f4, $fc, $0b, $00 - db $fc, $fc, $0c, $00 - db $04, $fc, $0d, $00 - db $0c, $fc, $0e, $00 - db $ec, $04, $0f, $00 - db $f4, $04, $10, $00 - db $fc, $04, $11, $00 - db $04, $04, $12, $00 - db $0c, $04, $13, $00 - db $ec, $0c, $14, $00 - db $f4, $0c, $15, $00 - db $fc, $0c, $16, $00 - db $04, $0c, $17, $00 - db $0c, $0c, $18, $00 -; 8dcf9 - -; 8dcf9 - db 36 - db $e8, $e8, $00, $00 - db $e8, $f0, $01, $00 - db $e8, $f8, $02, $00 - db $e8, $00, $03, $00 - db $e8, $08, $04, $00 - db $e8, $10, $05, $00 - db $f0, $e8, $06, $00 - db $f0, $f0, $07, $00 - db $f0, $f8, $08, $00 - db $f0, $00, $09, $00 - db $f0, $08, $0a, $00 - db $f0, $10, $0b, $00 - db $f8, $e8, $0c, $00 - db $f8, $f0, $0d, $00 - db $f8, $f8, $0e, $00 - db $f8, $00, $0f, $00 - db $f8, $08, $10, $00 - db $f8, $10, $11, $00 - db $00, $e8, $12, $00 - db $00, $f0, $13, $00 - db $00, $f8, $14, $00 - db $00, $00, $15, $00 - db $00, $08, $16, $00 - db $00, $10, $17, $00 - db $08, $e8, $18, $00 - db $08, $f0, $19, $00 - db $08, $f8, $1a, $00 - db $08, $00, $1b, $00 - db $08, $08, $1c, $00 - db $08, $10, $1d, $00 - db $10, $e8, $1e, $00 - db $10, $f0, $1f, $00 - db $10, $f8, $20, $00 - db $10, $00, $21, $00 - db $10, $08, $22, $00 - db $10, $10, $23, $00 -; 8dd8a - -Unknown_8dd8a: ; 8dd8a - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $02, $00 - db $00, $00, $03, $00 -; 8dd9b - -Unknown_8dd9b: ; 8dd9b - db 4 - db $f8, $f8, $00, $80 - db $f8, $00, $01, $80 - db $00, $f8, $02, $80 - db $00, $00, $03, $80 -; 8ddac - -Unknown_8ddac: ; 8ddac - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $08, $00 - db $00, $00, $03, $00 -; 8ddbd - -Unknown_8ddbd: ; 8ddbd - db 4 - db $f8, $f8, $04, $00 - db $f8, $00, $05, $00 - db $00, $f8, $08, $00 - db $00, $00, $07, $00 -; 8ddce - -Unknown_8ddce: ; 8ddce - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $09, $00 - db $00, $00, $03, $00 -; 8dddf - -Unknown_8dddf: ; 8dddf - db 4 - db $f8, $f8, $04, $00 - db $f8, $00, $05, $00 - db $00, $f8, $09, $00 - db $00, $00, $07, $00 -; 8ddf0 - -Unknown_8ddf0: ; 8ddf0 - db 6 - db $f8, $f4, $00, $01 - db $f8, $fc, $01, $01 - db $f8, $04, $02, $01 - db $00, $f4, $10, $01 - db $00, $fc, $11, $01 - db $00, $04, $12, $01 -; 8de09 - -Unknown_8de09: ; 8de09 - db 29 - db $e8, $e8, $00, $00 - db $e8, $f0, $01, $00 - db $e8, $f8, $02, $00 - db $e8, $00, $03, $00 - db $f0, $e8, $10, $00 - db $f0, $f0, $11, $00 - db $f0, $f8, $12, $00 - db $f0, $00, $13, $00 - db $f8, $e8, $20, $00 - db $f8, $f0, $21, $00 - db $f8, $f8, $22, $00 - db $f8, $00, $23, $00 - db $f8, $08, $24, $00 - db $00, $e8, $30, $80 - db $00, $f0, $31, $80 - db $00, $f8, $32, $80 - db $00, $00, $33, $80 - db $00, $08, $34, $80 - db $08, $e8, $40, $80 - db $08, $f0, $41, $80 - db $08, $f8, $42, $80 - db $08, $00, $43, $80 - db $08, $08, $44, $80 - db $08, $10, $45, $80 - db $10, $f0, $51, $80 - db $10, $f8, $52, $80 - db $10, $00, $53, $80 - db $10, $08, $54, $80 - db $10, $10, $55, $80 -; 8de7e - -Unknown_8de7e: ; 8de7e - db 2 - db $f8, $fc, $00, $00 - db $00, $fc, $10, $00 -; 8de87 - -Unknown_8de87: ; 8de87 - db 5 - db $f0, $18, $00, $00 - db $f0, $20, $01, $00 - db $f8, $10, $02, $00 - db $f8, $18, $03, $00 - db $00, $10, $04, $00 -; 8de9c - -Unknown_8de9c: ; 8de9c - db 1 - db $fc, $fc, $00, $06 -; 8dea1 - -Unknown_8dea1: ; 8dea1 - db 4 - db $f8, $f8, $00, $06 - db $f8, $00, $01, $06 - db $00, $f8, $02, $06 - db $00, $00, $03, $06 -; 8deb2 - -Unknown_8deb2: ; 8deb2 - db 4 - db $ff, $ff, $00, $00 - db $ff, $00, $00, $20 - db $00, $ff, $00, $40 - db $00, $00, $00, $60 -; 8dec3 - -Unknown_8dec3: ; 8dec3 - db 10 - db $ff, $00, $00, $00 - db $ff, $08, $01, $00 - db $ff, $10, $01, $00 - db $ff, $18, $01, $00 - db $ff, $20, $00, $20 - db $00, $00, $00, $40 - db $00, $08, $01, $40 - db $00, $10, $01, $40 - db $00, $18, $01, $40 - db $00, $20, $00, $60 -; 8deec - -Unknown_8deec: ; 8deec - db 15 - db $ec, $f4, $00, $11 - db $ec, $fc, $01, $11 - db $ec, $04, $02, $11 - db $f4, $f4, $03, $11 - db $f4, $fc, $04, $11 - db $f4, $04, $05, $11 - db $fc, $f4, $06, $11 - db $fc, $fc, $07, $11 - db $fc, $04, $08, $11 - db $04, $f4, $09, $11 - db $04, $fc, $0a, $11 - db $04, $04, $0b, $11 - db $0c, $f4, $0c, $11 - db $0c, $fc, $0d, $11 - db $0c, $04, $0e, $11 -; 8df29 - -Unknown_8df29: ; 8df29 - db 6 - db $f4, $f4, $00, $15 - db $f4, $fc, $02, $15 - db $f4, $04, $00, $35 - db $04, $f4, $04, $15 - db $04, $fc, $06, $15 - db $04, $04, $04, $35 -; 8df42 - -Unknown_8df42: ; 8df42 - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $06, $16 - db $04, $fc, $08, $16 - db $04, $04, $0a, $16 -; 8df5b - -Unknown_8df5b: ; 8df5b - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $0c, $16 - db $04, $fc, $0e, $16 - db $04, $04, $10, $16 -; 8df74 - -Unknown_8df74: ; 8df74 - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $12, $16 - db $04, $fc, $14, $16 - db $04, $04, $16, $16 -; 8df8d - -Unknown_8df8d: ; 8df8d - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $18, $16 - db $04, $fc, $1a, $16 - db $04, $04, $1c, $16 -; 8dfa6 - -Unknown_8dfa6: ; 8dfa6 - db 6 - db $f4, $f4, $1e, $16 - db $f4, $fc, $20, $16 - db $f4, $04, $22, $16 - db $04, $f4, $24, $16 - db $04, $fc, $26, $16 - db $04, $04, $28, $16 -; 8dfbf - -Unknown_8dfbf: ; 8dfbf - db 3 - db $f4, $fc, $00, $10 - db $fc, $fc, $00, $10 - db $04, $fc, $00, $10 -; 8dfcc - -Unknown_8dfcc: ; 8dfcc - db 6 - db $00, $00, $00, $00 - db $00, $08, $01, $00 - db $00, $10, $01, $00 - db $00, $18, $01, $00 - db $00, $20, $02, $00 - db $00, $28, $03, $00 -; 8dfe5 - -Unknown_8dfe5: ; 8dfe5 - db 4 - db $00, $00, $00, $00 - db $00, $08, $01, $00 - db $00, $10, $02, $00 - db $00, $18, $03, $00 -; 8dff6 - -Unknown_8dff6: ; 8dff6 - db 4 - db $f8, $f6, $00, $06 - db $f8, $02, $01, $06 - db $00, $f6, $02, $06 - db $00, $02, $03, $06 -; 8e007 - -Unknown_8e007: ; 8e007 - db 4 - db $f8, $f4, $00, $06 - db $f8, $04, $01, $06 - db $00, $f4, $02, $06 - db $00, $04, $03, $06 -; 8e018 - -Unknown_8e018: ; 8e018 - db 4 - db $f8, $f0, $00, $06 - db $f8, $08, $01, $06 - db $00, $f0, $02, $06 - db $00, $08, $03, $06 -; 8e029 - -Unknown_8e029: ; 8e029 - db 19 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $e8, $f0, $06, $00 - db $f8, $f0, $08, $00 - db $08, $f0, $0a, $00 - db $e8, $f8, $0c, $00 - db $f8, $f8, $0e, $00 - db $08, $f8, $10, $00 - db $e8, $00, $12, $00 - db $f8, $00, $14, $00 - db $08, $00, $16, $00 - db $e8, $08, $18, $00 - db $f8, $08, $1a, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e076 - -Unknown_8e076: ; 8e076 - db 16 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $f8, $f0, $26, $00 - db $08, $f0, $0a, $00 - db $e8, $f8, $28, $00 - db $f8, $f8, $2a, $00 - db $08, $f8, $10, $00 - db $f8, $00, $2c, $00 - db $08, $00, $16, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e0b7 - -Unknown_8e0b7: ; 8e0b7 - db 15 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $32, $00 - db $f8, $f0, $34, $00 - db $08, $f0, $36, $00 - db $f8, $f8, $38, $00 - db $08, $f8, $3a, $00 - db $f8, $00, $3c, $00 - db $08, $00, $3e, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e0f4 - -Unknown_8e0f4: ; 8e0f4 - db 17 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $f8, $f0, $40, $00 - db $08, $f0, $42, $00 - db $18, $f0, $44, $00 - db $f8, $f8, $46, $00 - db $08, $f8, $48, $00 - db $18, $f8, $4a, $00 - db $f8, $00, $4c, $00 - db $08, $00, $4e, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e139 - -Unknown_8e139: ; 8e139 - db 17 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $f8, $f0, $50, $00 - db $08, $f0, $0a, $00 - db $e8, $f8, $52, $00 - db $f8, $f8, $54, $00 - db $08, $f8, $10, $00 - db $e8, $00, $56, $00 - db $f8, $00, $2e, $00 - db $08, $00, $16, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e17e - -Unknown_8e17e: ; 8e17e - db 1 - db $fc, $fc, $00, $11 -; 8e183 - -Unknown_8e183: ; 8e183 - db 12 - db $00, $00, $30, $00 - db $00, $08, $31, $00 - db $00, $10, $31, $00 - db $00, $18, $31, $00 - db $00, $20, $31, $00 - db $00, $28, $32, $00 - db $08, $00, $33, $00 - db $08, $08, $34, $00 - db $08, $10, $34, $00 - db $08, $18, $34, $00 - db $08, $20, $34, $00 - db $08, $28, $35, $00 -; 8e1b4 - -Unknown_8e1b4: ; 8e1b4 - db 1 - db $00, $00, $ed, $00 -; 8e1b9 - -Unknown_8e1b9: ; 8e1b9 - db 4 - db $ff, $ff, $30, $00 - db $ff, $01, $32, $00 - db $01, $ff, $33, $00 - db $01, $01, $35, $00 -; 8e1ca - -Unknown_8e1ca: ; 8e1ca - db 8 - db $ff, $ff, $30, $00 - db $ff, $04, $31, $00 - db $ff, $0c, $31, $00 - db $ff, $11, $32, $00 - db $01, $ff, $33, $00 - db $01, $04, $34, $00 - db $01, $0c, $34, $00 - db $01, $11, $35, $00 -; 8e1eb - -Unknown_8e1eb: ; 8e1eb - db 1 - db $00, $00, $34, $00 -; 8e1f0 - -Unknown_8e1f0: ; 8e1f0 - db 2 - db $00, $00, $30, $00 - db $08, $00, $33, $00 -; 8e1f9 - -Unknown_8e1f9: ; 8e1f9 - db 2 - db $00, $00, $32, $00 - db $08, $00, $35, $00 -; 8e202 - -Unknown_8e202: ; 8e202 - db 4 - db $f8, $f8, $00, $01 - db $f8, $00, $01, $01 - db $00, $f8, $02, $01 - db $00, $00, $03, $01 -; 8e213 - -Unknown_8e213: ; 8e213 - db 4 - db $f8, $f8, $00, $81 - db $f8, $00, $01, $81 - db $00, $f8, $02, $81 - db $00, $00, $03, $81 -; 8e224 - -Unknown_8e224: ; 8e224 - db 1 - db $fc, $fc, $00, $02 -; 8e229 - -Unknown_8e229: ; 8e229 - db 4 - db $f0, $fc, $00, $03 - db $f8, $fc, $01, $03 - db $00, $fc, $02, $03 - db $08, $fc, $03, $03 -; 8e23a - -Unknown_8e23a: ; 8e23a - db 4 - db $f0, $fc, $03, $44 - db $f8, $fc, $02, $44 - db $00, $fc, $01, $44 - db $08, $fc, $00, $44 -; 8e24b - -Unknown_8e24b: ; 8e24b - db 4 - db $f8, $f8, $00, $01 - db $f8, $00, $00, $21 - db $00, $f8, $00, $41 - db $00, $00, $00, $61 -; 8e25c - -Unknown_8e25c: ; 8e25c - db 8 - db $f4, $f4, $00, $01 - db $f4, $fc, $01, $01 - db $f4, $04, $00, $21 - db $fc, $f4, $02, $01 - db $fc, $04, $02, $21 - db $04, $f4, $00, $41 - db $04, $fc, $01, $41 - db $04, $04, $00, $61 -; 8e27d - -Unknown_8e27d: ; 8e27d - db 12 - db $f0, $f0, $00, $01 - db $f0, $f8, $01, $01 - db $f8, $f0, $02, $01 - db $f0, $00, $01, $21 - db $f0, $08, $00, $21 - db $f8, $08, $02, $21 - db $00, $f0, $02, $41 - db $08, $f0, $00, $41 - db $08, $f8, $01, $41 - db $00, $08, $02, $61 - db $08, $00, $01, $61 - db $08, $08, $00, $61 -; 8e2ae - -Unknown_8e2ae: ; 8e2ae - db 36 - db $e8, $08, $05, $00 - db $e8, $10, $06, $00 - db $e8, $18, $07, $00 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f0, $18, $17, $00 - db $f8, $e0, $20, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $f8, $18, $27, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $00, $10, $36, $00 - db $08, $e0, $40, $00 - db $08, $e8, $41, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $08, $10, $46, $00 - db $08, $18, $47, $00 - db $10, $e0, $50, $00 - db $10, $e8, $51, $00 - db $10, $18, $57, $00 -; 8e33f - -Unknown_8e33f: ; 8e33f - db 28 - db $e8, $00, $04, $00 - db $e8, $08, $05, $00 - db $e8, $10, $06, $00 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $10, $f8, $53, $00 - db $10, $00, $54, $00 - db $10, $08, $55, $00 -; 8e3b0 - -Unknown_8e3b0: ; 8e3b0 - db 30 - db $e8, $00, $04, $00 - db $e8, $08, $05, $00 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f0, $18, $17, $00 - db $f8, $e0, $20, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $10, $f0, $52, $00 - db $10, $f8, $53, $00 - db $10, $00, $54, $00 - db $10, $08, $55, $00 -; 8e429 - -Unknown_8e429: ; 8e429 - db 31 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f0, $18, $17, $00 - db $f8, $e0, $20, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $f8, $18, $27, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $00, $10, $36, $00 - db $08, $e8, $41, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $10, $e8, $51, $00 - db $10, $f0, $52, $00 - db $10, $00, $54, $00 - db $10, $08, $55, $00 -; 8e4a6 - -Unknown_8e4a6: ; 8e4a6 - db 25 - db $ec, $ec, $00, $09 - db $ec, $f4, $01, $09 - db $ec, $fc, $02, $09 - db $ec, $04, $03, $09 - db $ec, $0c, $04, $09 - db $f4, $ec, $10, $09 - db $f4, $f4, $11, $09 - db $f4, $fc, $12, $09 - db $f4, $04, $13, $09 - db $f4, $0c, $14, $09 - db $fc, $ec, $20, $09 - db $fc, $f4, $21, $09 - db $fc, $fc, $22, $09 - db $fc, $04, $23, $09 - db $fc, $0c, $24, $09 - db $04, $ec, $30, $09 - db $04, $f4, $31, $09 - db $04, $fc, $32, $09 - db $04, $04, $33, $09 - db $04, $0c, $34, $09 - db $0c, $ec, $40, $09 - db $0c, $f4, $41, $09 - db $0c, $fc, $42, $09 - db $0c, $04, $43, $09 - db $0c, $0c, $44, $09 -; 8e50b - -Unknown_8e50b: ; 8e50b - db 16 - db $f0, $ec, $00, $0a - db $f0, $f4, $01, $0a - db $f0, $fc, $02, $0a - db $f0, $04, $03, $0a - db $f8, $ec, $04, $0a - db $f8, $f4, $05, $0a - db $f8, $fc, $06, $0a - db $f8, $04, $07, $0a - db $00, $ec, $08, $0a - db $00, $f4, $09, $0a - db $00, $fc, $0a, $0a - db $00, $04, $0b, $0a - db $08, $ec, $0c, $0a - db $08, $f4, $0d, $0a - db $08, $fc, $0e, $0a - db $08, $04, $0f, $0a -; 8e54c - -Unknown_8e54c: ; 8e54c - db 1 - db $fc, $fc, $00, $00 -; 8e551 - -Unknown_8e551: ; 8e551 - db 3 - db $00, $f8, $00, $00 - db $f8, $f8, $01, $00 - db $f8, $00, $02, $00 -; 8e55e - -Unknown_8e55e: ; 8e55e - db 7 - db $08, $f0, $00, $00 - db $00, $f0, $01, $00 - db $f8, $f0, $02, $00 - db $f8, $f8, $03, $00 - db $f0, $f8, $04, $00 - db $f0, $00, $05, $00 - db $f0, $08, $06, $00 -; 8e57b - -Unknown_8e57b: ; 8e57b - db 8 - db $f8, $f0, $00, $00 - db $f8, $f8, $01, $00 - db $f8, $00, $01, $20 - db $f8, $08, $00, $20 - db $00, $f0, $00, $40 - db $00, $f8, $01, $40 - db $00, $00, $01, $60 - db $00, $08, $00, $60 -; 8e59c - -Unknown_8e59c: ; 8e59c - db 12 - db $e8, $f8, $00, $00 - db $f0, $f8, $01, $00 - db $f8, $f8, $02, $00 - db $e8, $00, $00, $20 - db $f0, $00, $01, $20 - db $f8, $00, $02, $20 - db $00, $f8, $02, $40 - db $08, $f8, $01, $40 - db $10, $f8, $00, $40 - db $00, $00, $02, $60 - db $08, $00, $01, $60 - db $10, $00, $00, $60 -; 8e5cd - -Unknown_8e5cd: ; 8e5cd - db 20 - db $ec, $f0, $00, $00 - db $ec, $f8, $01, $00 - db $ec, $00, $02, $00 - db $ec, $08, $03, $00 - db $f4, $f0, $04, $00 - db $f4, $f8, $05, $00 - db $f4, $00, $06, $00 - db $f4, $08, $07, $00 - db $fc, $f0, $08, $00 - db $fc, $f8, $09, $00 - db $fc, $00, $0a, $00 - db $fc, $08, $0b, $00 - db $04, $f0, $0c, $00 - db $04, $f8, $0d, $00 - db $04, $00, $0e, $00 - db $04, $08, $0f, $00 - db $0c, $f0, $10, $00 - db $0c, $f8, $11, $00 - db $0c, $00, $12, $00 - db $0c, $08, $13, $00 -; 8e61e - -Unknown_8e61e: ; 8e61e - db 20 - db $00, $08, $00, $81 - db $08, $10, $00, $81 - db $10, $18, $00, $81 - db $18, $20, $00, $81 - db $20, $28, $00, $81 - db $18, $30, $00, $81 - db $10, $38, $00, $81 - db $08, $40, $00, $81 - db $00, $48, $00, $81 - db $08, $50, $00, $81 - db $10, $58, $00, $81 - db $18, $60, $00, $81 - db $20, $68, $00, $81 - db $18, $70, $00, $81 - db $10, $78, $00, $81 - db $08, $80, $00, $81 - db $00, $88, $00, $81 - db $08, $90, $00, $81 - db $10, $98, $00, $81 - db $18, $a0, $00, $81 -; 8e66f - -Unknown_8e66f: ; 8e66f - db 4 - db $f8, $f8, $00, $02 - db $f8, $00, $01, $02 - db $00, $f8, $02, $02 - db $00, $00, $03, $02 -; 8e680 - -Unknown_8e680: ; 8e680 - db 9 - db $f0, $f4, $00, $01 - db $f0, $fc, $01, $01 - db $f0, $04, $02, $01 - db $f8, $f4, $10, $01 - db $f8, $fc, $11, $01 - db $f8, $04, $12, $01 - db $00, $f4, $20, $01 - db $00, $fc, $21, $01 - db $00, $04, $22, $01 -; 8e6a5 - -Unknown_8e6a5: ; 8e6a5 - db 24 - db $d8, $f4, $00, $01 - db $d8, $fc, $01, $01 - db $d8, $04, $02, $01 - db $d8, $0c, $03, $01 - db $e0, $f4, $10, $01 - db $e0, $fc, $11, $01 - db $e0, $04, $12, $01 - db $e0, $0c, $13, $01 - db $e8, $f4, $20, $01 - db $e8, $fc, $21, $01 - db $e8, $04, $22, $01 - db $e8, $0c, $23, $01 - db $f0, $f4, $30, $01 - db $f0, $fc, $31, $01 - db $f0, $04, $32, $01 - db $f0, $0c, $33, $01 - db $f8, $f4, $40, $01 - db $f8, $fc, $41, $01 - db $f8, $04, $42, $01 - db $f8, $0c, $43, $01 - db $00, $f4, $50, $01 - db $00, $fc, $51, $01 - db $00, $04, $52, $01 - db $00, $0c, $53, $01 -; 8e706 - - -Unknown_8e706: ; Broken 2bpp pointers - dbbw $80, $01, $672a ; 128-tile 2bpp at 1:672a (inside Multiply) - dbbw $80, $01, $672a - dbbw $80, $01, $672a - dbbw $80, $01, $672a - dbbw $10, $37, $672a ; 16-tile 2bpp at 37:672a (within Tileset11GFX) - dbbw $10, $11, $672a ; 16-tile 2bpp at 11:672a (empty data) - dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data) - dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7) - dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c) - -Function8e72a: ; 8e72a - add $10 -Function8e72c: ; 8e72c - and $3f - cp $20 - jr nc, .asm_8e737 - call Function8e741 - ld a, h - ret - -.asm_8e737 - and $1f - call Function8e741 - ld a, h - xor $ff ; cpl - inc a - ret -; 8e741 - -Function8e741: ; 8e741 - ld e, a - ld a, d - ld d, 0 - ld hl, Unknown_8e75d -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - ld hl, 0 -.asm_8e750 - srl a - jr nc, .asm_8e755 - add hl, de - -.asm_8e755 - sla e - rl d - and a - jr nz, .asm_8e750 - ret -; 8e75d - -Unknown_8e75d: ; 8e75d - sine_wave $100 - - -Function8e79d: ; 8e79d - ld a, [hSGB] - ld de, GFX_8e7f4 - and a - jr z, .asm_8e7a8 - ld de, GFX_8e804 - -.asm_8e7a8 - ld hl, VTiles0 - lb bc, BANK(GFX_8e7f4), 1 - call Request2bpp - ld c, $8 - ld d, $0 -.asm_8e7b5 - push bc - call Function8e7c6 - call DelayFrame - pop bc -rept 2 - inc d -endr - dec c - jr nz, .asm_8e7b5 - call ClearSprites - ret -; 8e7c6 - -Function8e7c6: ; 8e7c6 - ld hl, Sprites - ld c, $8 -.asm_8e7cb - ld a, c - and a - ret z - dec c - ld a, c - sla a - sla a - sla a - push af - push de - push hl - call Function8e72c - pop hl - pop de - add $68 - ld [hli], a - pop af - push de - push hl - call Function8e72a - pop hl - pop de - add $54 - ld [hli], a - ld a, $0 - ld [hli], a - ld a, $6 - ld [hli], a - jr .asm_8e7cb -; 8e7f4 - -GFX_8e7f4: ; 8e7f4 -INCBIN "gfx/unknown/08e7f4.2bpp" -GFX_8e804: ; 8e804 -INCBIN "gfx/unknown/08e804.2bpp" - -InefficientlyClear121BytesAtwc300: ; 8e814 - push hl - push de - push bc - push af - ld hl, wc300 - ld bc, wc3c1 - wc300 -.loop - ld [hl], $0 - inc hl - dec bc - ld a, c - or b - jr nz, .loop - pop af - pop bc - pop de - pop hl - ret -; 8e82b - -Function8e82b: ; 8e82b - ld a, e - call ReadMonMenuIcon - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - ld b, BANK(Icons) - ld c, 8 - ret -; 8e83f - -Function8e83f: ; 8e83f - push hl - push de - push bc - call Function8e849 - pop bc - pop de - pop hl - ret -; 8e849 - -Function8e849: ; 8e849 - ld d, 0 - ld hl, Jumptable_8e854 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8e854 - - -Jumptable_8e854: ; 8e854 (23:6854) - dw Function8e8d5 - dw Function8e961 - dw Function8e97d - dw Function8e99a - dw Function8e898 - dw Function8e8b1 - dw Function8e862 - - -Function8e862: ; 8e862 (23:6862) - call Function8e908 - call Function8e86c - call Function8e936 - ret - -Function8e86c: ; 8e86c (23:686c) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - pop bc - ld a, [hl] - and a - jr z, .asm_8e890 - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e88e - ld a, $6 - jr .asm_8e892 -.asm_8e88e - ld a, $5 -.asm_8e890 - ld a, $4 -.asm_8e892 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e898: ; 8e898 (23:6898) - call Function8e8d5 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $48 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $48 - ld [hl], a - ret - -Function8e8b1: ; 8e8b1 (23:68b1) - call Function8e908 - call Function8e936 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $18 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $60 - ld [hl], a - ld a, c - ld [wc608], a - ld a, b - ld [wc608 + 1], a - ret - -Function8e8d5: ; 8e8d5 (23:68d5) - call Function8e908 - call Function8e8df - call Function8e936 - ret - -Function8e8df: ; 8e8df (23:68df) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, $30 - call AddNTimes - pop bc - ld a, [hl] - and a - ret z - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e900 - ld a, $3 - jr .asm_8e902 -.asm_8e900 - ld a, $2 -.asm_8e902 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e908: ; 8e908 (23:6908) - ld a, [wc3b7] - push af - ld a, [hObjectStructIndexBuffer] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call ReadMonMenuIcon - ld [CurIcon], a - call Function8e9db - ld a, [hObjectStructIndexBuffer] -; and $f \ swap a -rept 4 - add a -endr - add $1c - ld d, a - ld e, $10 - ld a, $0 - call Function8cfd6 - pop af - ld hl, $3 - add hl, bc - ld [hl], a - ret - -Function8e936: ; 8e936 (23:6936) - push bc - ld a, [hObjectStructIndexBuffer] - ld b, a - call Function8e94c - ld a, b - pop bc - ld hl, $9 - add hl, bc - ld [hl], a - rlca - rlca - ld hl, $d - add hl, bc - ld [hl], a - ret - -Function8e94c: ; 8e94c (23:694c) - callba PlacePartymonHPBar - call GetHPPal - ld e, d - ld d, 0 - ld hl, Unknown_8e95e - add hl, de - ld b, [hl] - ret -; 8e95e (23:695e) - -Unknown_8e95e: ; 8e95e - db $00, $40, $80 -; 8e961 - -Function8e961: ; 8e961 (23:6961) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - ld de, $2420 - ld a, $0 - call Function8cfd6 - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e97d: ; 8e97d (23:697d) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - ld d, $1a - ld e, $24 - ld a, $0 - call Function8cfd6 - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e99a: ; 8e99a (23:699a) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - ld a, $62 - ld [wc3b7], a - call Function8e9db - ret - -GetSpeciesIcon: ; 8e9ac -; Load species icon into VRAM at tile a - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIconGFX - ret -; 8e9bc - - -Function8e9bc: ; 8e9bc (23:69bc) - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIcon_a - ret -; 8e9cc (23:69cc) - -Function8e9cc: ; 8e9cc - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - call GetIcon_de - ret -; 8e9db - -Function8e9db: ; 8e9db (23:69db) - ld a, [wc3b7] - -GetIconGFX: ; 8e9de - call GetIcon_a - ld de, $80 ; 8 tiles - add hl, de - ld de, HeldItemIcons - lb bc, BANK(HeldItemIcons), 2 - call GetGFXUnlessMobile - ld a, [wc3b7] - add 10 - ld [wc3b7], a - ret - -HeldItemIcons: -INCBIN "gfx/icon/mail.2bpp" -INCBIN "gfx/icon/item.2bpp" -; 8ea17 - -GetIcon_de: ; 8ea17 -; Load icon graphics into VRAM starting from tile de. - ld l, e - ld h, d - jr GetIcon - -GetIcon_a: ; 8ea1b -; Load icon graphics into VRAM starting from tile a. - ld l, a - ld h, 0 - -GetIcon: ; 8ea1e -; Load icon graphics into VRAM starting from tile hl. - -; One tile is 16 bytes long. -rept 4 - add hl, hl -endr - - ld de, VTiles0 - add hl, de - push hl - -; The icons are contiguous, in order and of the same -; size, so the pointer table is somewhat redundant. - ld a, [CurIcon] - push hl - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - - lb bc, BANK(Icons), 8 - call GetGFXUnlessMobile - - pop hl - ret -; 8ea3f - -GetGFXUnlessMobile: ; 8ea3f - ld a, [wLinkMode] - cp LINK_MOBILE - jp nz, Request2bpp - jp Get2bpp_2 -; 8ea4a - -Function8ea4a: ; 8ea4a - ld hl, wc314 - ld e, $6 - ld a, [MenuSelection2] - ld d, a -.loop - ld a, [hl] - and a - jr z, .next - cp d - jr z, .loadwithtwo - ld a, $0 - jr .ok - -.loadwithtwo - ld a, $2 - -.ok - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl - -.next - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea71 - -Function8ea71: ; 8ea71 - ld hl, wc314 - ld e, $6 -.loop - ld a, [hl] - and a - jr z, .zero - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], $1 - pop hl -.zero - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea8c (23:6a8c) - -Function8ea8c: ; 8ea8c - ld hl, wc314 - ld e, $6 - ld a, [wd0e3] - ld d, a -.asm_8ea95 - ld a, [hl] - and a - jr z, .asm_8eaab - cp d - jr z, .asm_8eaa0 - ld a, $3 - jr .asm_8eaa2 -.asm_8eaa0 - ld a, $2 -.asm_8eaa2 - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl -.asm_8eaab - ld bc, $10 - add hl, bc - dec e - jr nz, .asm_8ea95 - ret - - -INCLUDE "menu/mon_icons.asm" +INCLUDE "engine/sprites.asm" SECTION "bank24", ROMX, BANK[$24] INCLUDE "engine/phone.asm" - -InitClock: ; 90672 (24:4672) -; Ask the player to set the time. - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - - ld a, $0 - ld [wc2ce], a - ld a, $10 - ld [MusicFade], a - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - ld c, 8 - call DelayFrames - call Function4dd - call ClearTileMap - call ClearSprites - ld b, $8 - call GetSGBLayout - xor a - ld [hBGMapMode], a - call LoadStandardFont - ld de, GFX_908fb - ld hl, VTiles2 tile $00 - lb bc, BANK(GFX_908fb), 1 - call Request1bpp - ld de, GFX_90903 - ld hl, VTiles2 tile $01 - lb bc, BANK(GFX_90903), 1 - call Request1bpp - ld de, GFX_9090b - ld hl, VTiles2 tile $02 - lb bc, BANK(GFX_9090b), 1 - call Request1bpp - call .ClearScreen - call WaitBGMap - call Function4a3 - ld hl, UnknownText_0x90874 - call PrintText - ld hl, wc608 - ld bc, 50 - xor a - call ByteFill - ld a, $a - ld [wInitHourBuffer], a - -.loop - ld hl, UnknownText_0x90879 - call PrintText - hlcoord 3, 7 - ld b, 2 - ld c, 15 - call TextBox - hlcoord 11, 7 - ld [hl], $1 - hlcoord 11, 10 - ld [hl], $2 - hlcoord 4, 9 - call DisplayHourOClock - ld c, 10 - call DelayFrames - -.SetHourLoop - call JoyTextDelay - call SetHour - jr nc, .SetHourLoop - - ld a, [wInitHourBuffer] - ld [StringBuffer2 + 1], a - call .ClearScreen - ld hl, UnknownText_0x90886 - call PrintText - call YesNoBox - jr nc, .HourIsSet - call .ClearScreen - jr .loop - -.HourIsSet - ld hl, UnknownText_0x9089a - call PrintText - hlcoord 11, 7 - lb bc, 2, 7 - call TextBox - hlcoord 15, 7 - ld [hl], $1 - hlcoord 15, 10 - ld [hl], $2 - hlcoord 12, 9 - call DisplayMinutesWithMinString - ld c, 10 - call DelayFrames - -.SetMinutesLoop - call JoyTextDelay - call SetMinutes - jr nc, .SetMinutesLoop - - ld a, [BattleMonNick + 5] - ld [StringBuffer2 + 2], a - call .ClearScreen - ld hl, UnknownText_0x908a4 - call PrintText - call YesNoBox - jr nc, .MinutesAreSet - call .ClearScreen - jr .HourIsSet - -.MinutesAreSet - call Function658 - ld hl, OakText_ResponseToSetTime - call PrintText - call WaitPressAorB_BlinkCursor - pop af - ld [hInMenu], a - ret - -.ClearScreen: ; 90783 (24:4783) - xor a - ld [hBGMapMode], a - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - xor a - call ByteFill - ld a, $1 - ld [hBGMapMode], a - ret - -SetHour: ; 90795 (24:4795) - ld a, [hJoyPressed] - and A_BUTTON - jr nz, .Confirm - - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .up - ld a, [hl] - and D_DOWN - jr nz, .down - call DelayFrame - and a - ret - -.down - ld hl, wInitHourBuffer - ld a, [hl] - and a - jr nz, .DecreaseThroughMidnight - ld a, 23 + 1 -.DecreaseThroughMidnight - dec a - ld [hl], a - jr .okay - -.up - ld hl, wInitHourBuffer - ld a, [hl] - cp 23 - jr c, .AdvanceThroughMidnight - ld a, -1 -.AdvanceThroughMidnight - inc a - ld [hl], a - -.okay - hlcoord 4, 9 - ld a, " " - ld bc, 15 - call ByteFill - hlcoord 4, 9 - call DisplayHourOClock - call WaitBGMap - and a - ret - -.Confirm - scf - ret - -DisplayHourOClock: ; 907de (24:47de) - push hl - ld a, [wInitHourBuffer] - ld c, a - ld e, l - ld d, h - call PrintHour - inc hl - ld de, String_oclock - call PlaceString - pop hl - ret -; 907f1 (24:47f1) - -Function907f1: ; 907f1 - ld h, d - ld l, e - push hl - call DisplayHourOClock - pop de -rept 2 - inc de -endr - ld a, $9c - ld [de], a - inc de - push de - ld hl, $3 - add hl, de - ld a, [de] - inc de - ld [hli], a - ld a, [de] - ld [hl], a - pop hl - call DisplayMinutesWithMinString -rept 3 - inc hl -endr - ret -; 90810 - -SetMinutes: ; 90810 (24:4810) - ld a, [hJoyPressed] - and A_BUTTON - jr nz, .asm_90857 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_90835 - ld a, [hl] - and D_DOWN - jr nz, .asm_90828 - call DelayFrame - and a - ret -.asm_90828 - ld hl, BattleMonNick + 5 - ld a, [hl] - and a - jr nz, .asm_90831 - ld a, 59 + 1 -.asm_90831 - dec a - ld [hl], a - jr .asm_90841 -.asm_90835 - ld hl, BattleMonNick + 5 - ld a, [hl] - cp 59 - jr c, .asm_9083f - ld a, -1 -.asm_9083f - inc a - ld [hl], a -.asm_90841 - hlcoord 12, 9 - ld a, " " - ld bc, 7 - call ByteFill - hlcoord 12, 9 - call DisplayMinutesWithMinString - call WaitBGMap - and a - ret -.asm_90857 - scf - ret - -DisplayMinutesWithMinString: ; 90859 (24:4859) - ld de, BattleMonNick + 5 - call PrintTwoDigitNumberRightAlign - inc hl - ld de, String_min - call PlaceString - ret - -PrintTwoDigitNumberRightAlign: ; 90867 (24:4867) - push hl - ld a, " " - ld [hli], a - ld [hl], a - pop hl - lb bc, PRINTNUM_RIGHTALIGN | 1, 2 - call PrintNum - ret -; 90874 (24:4874) - -UnknownText_0x90874: ; 0x90874 - ; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me? - text_jump UnknownText_0x1bc29c - db "@" -; 0x90879 - -UnknownText_0x90879: ; 0x90879 - ; What time is it? - text_jump UnknownText_0x1bc2eb - db "@" -; 0x9087e - -String_oclock: - db "o'clock@" -; 90886 - -UnknownText_0x90886: ; 0x90886 - ; What?@ @ - text_jump UnknownText_0x1bc2fd - start_asm - hlcoord 1, 16 - call DisplayHourOClock - ld hl, UnknownText_0x90895 - ret -; 90895 (24:4895) - -UnknownText_0x90895: ; 0x90895 - ; ? - text_jump UnknownText_0x1bc305 - db "@" -; 0x9089a - -UnknownText_0x9089a: ; 0x9089a - ; How many minutes? - text_jump UnknownText_0x1bc308 - db "@" -; 0x9089f - -String_min: - db "min.@" -; 908a4 - -UnknownText_0x908a4: ; 0x908a4 - ; Whoa!@ @ - text_jump UnknownText_0x1bc31b - start_asm -; 0x908a9 - hlcoord 7, 14 - call DisplayMinutesWithMinString - ld hl, UnknownText_0x908b3 - ret -; 908b3 (24:48b3) - -UnknownText_0x908b3: ; 0x908b3 - ; ? - text_jump UnknownText_0x1bc323 - db "@" -; 0x908b8 - -OakText_ResponseToSetTime: ; 0x908b8 - start_asm - decoord 1, 14 - ld a, [wInitHourBuffer] - ld c, a - call PrintHour - ld [hl], ":" - inc hl - ld de, BattleMonNick + 5 - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - ld b, h - ld c, l - ld a, [wInitHourBuffer] - cp 4 - jr c, .NITE - cp 11 - jr c, .MORN - cp 18 - jr c, .DAY -.NITE - ld hl, .sodark - ret -.MORN - ld hl, .overslept - ret -.DAY - ld hl, .yikes - ret -; 908ec (24:48ec) - -.overslept: ; 0x908ec - ; ! I overslept! - text_jump UnknownText_0x1bc326 - db "@" -; 0x908f1 - -.yikes: ; 0x908f1 - ; ! Yikes! I over- slept! - text_jump UnknownText_0x1bc336 - db "@" -; 0x908f6 - -.sodark: ; 0x908f6 - ; ! No wonder it's so dark! - text_jump UnknownText_0x1bc34f - db "@" -; 0x908fb - -GFX_908fb: ; 908fb -INCBIN "gfx/unknown/0908fb.2bpp" -GFX_90903: ; 90903 -INCBIN "gfx/unknown/090903.2bpp" -GFX_9090b: ; 9090b -INCBIN "gfx/unknown/09090b.2bpp" -; 90913 - -Special_SetDayOfWeek: ; 90913 - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - ld de, GFX_90903 - ld hl, VTiles1 tile $6f - lb bc, BANK(GFX_90903), 1 - call Request1bpp - ld de, GFX_9090b - ld hl, VTiles1 tile $75 - lb bc, BANK(GFX_9090b), 1 - call Request1bpp - xor a - ld [wd002], a -.asm_90936 - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - call LoadStandardMenuDataHeader - ld hl, UnknownText_0x90a3f - call PrintText - hlcoord 9, 3 - ld b, 2 - ld c, 9 - call TextBox - hlcoord 14, 3 - ld [hl], $ef - hlcoord 14, 6 - ld [hl], $f5 - hlcoord 10, 5 - call Function909de - call Function321c - ld c, 10 - call DelayFrames -.asm_9096a - call JoyTextDelay - call Function90993 - jr nc, .asm_9096a - call ExitMenu - call UpdateSprites - ld hl, UnknownText_0x90a44 - call PrintText - call YesNoBox - jr c, .asm_90936 - ld a, [wd002] - ld [StringBuffer2], a - call Function663 - call LoadStandardFont - pop af - ld [hInMenu], a - ret -; 90993 - -Function90993: ; 90993 - ld a, [hJoyPressed] - and A_BUTTON - jr z, .asm_9099b - scf - ret - -.asm_9099b - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_909ba - ld a, [hl] - and D_DOWN - jr nz, .asm_909ad - call DelayFrame - and a - ret - -.asm_909ad - ld hl, wd002 - ld a, [hl] - and a - jr nz, .asm_909b6 - ld a, 6 + 1 - -.asm_909b6 - dec a - ld [hl], a - jr .asm_909c6 - -.asm_909ba - ld hl, wd002 - ld a, [hl] - cp 6 - jr c, .asm_909c4 - ld a, -1 - -.asm_909c4 - inc a - ld [hl], a - -.asm_909c6 - xor a - ld [hBGMapMode], a - hlcoord 10, 4 - ld b, $2 - ld c, $9 - call ClearBox - hlcoord 10, 5 - call Function909de - call WaitBGMap - and a - ret -; 909de - -Function909de: ; 909de - push hl - ld a, [wd002] - ld e, a - ld d, 0 - ld hl, WeekdaysStrings -rept 2 - add hl, de -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - call PlaceString - ret -; 909f2 - -WeekdaysStrings: ; 909f2 - dw Sunday - dw Monday - dw Tuesday - dw Wednesday - dw Thursday - dw Friday - dw Saturday - dw Sunday - -Sunday: db " SUNDAY@" -Monday: db " MONDAY@" -Tuesday: db " TUESDAY@" -Wednesday: db "WEDNESDAY@" -Thursday: db "THURSDAY@" -Friday: db " FRIDAY@" -Saturday: db "SATURDAY@" - - -UnknownText_0x90a3f: ; 0x90a3f - ; What day is it? - text_jump UnknownText_0x1bc369 - db "@" -; 0x90a44 - -UnknownText_0x90a44: ; 0x90a44 - start_asm - hlcoord 1, 14 - call Function909de - ld hl, UnknownText_0x90a4f - ret -; 90a4f (24:4a4f) - -UnknownText_0x90a4f: ; 0x90a4f - ; , is it? - text_jump UnknownText_0x1bc37a - db "@" -; 0x90a54 - -Special_InitialSetDSTFlag: ; 90a54 - ld a, [wDST] - set 7, a - ld [wDST], a - hlcoord 1, 14 - lb bc, 3, 18 - call ClearBox - ld hl, UnknownText_0x90a6c - call PlaceWholeStringInBoxAtOnce - ret -; 90a6c - -UnknownText_0x90a6c: ; 90a6c - start_asm - call UpdateTime - ld a, [hHours] - ld b, a - ld a, [hMinutes] - ld c, a - decoord 1, 14 - callba PrintHoursMins - ld hl, TextJump_DSTIsThatOK - ret -; 90a83 (24:4a83) - -TextJump_DSTIsThatOK: ; 0x90a83 - ; DST, is that OK? - text_jump Text_DSTIsThatOK - db "@" -; 0x90a88 - -Special_InitialClearDSTFlag: ; 90a88 - ld a, [wDST] - res 7, a - ld [wDST], a - hlcoord 1, 14 - lb bc, 3, 18 - call ClearBox - ld hl, UnknownText_0x90aa0 - call PlaceWholeStringInBoxAtOnce - ret -; 90aa0 - -UnknownText_0x90aa0: ; 90aa0 - start_asm - call UpdateTime - ld a, [hHours] - ld b, a - ld a, [hMinutes] - ld c, a - decoord 1, 14 - callba PrintHoursMins - ld hl, UnknownText_0x90ab7 - ret -; 90ab7 - -UnknownText_0x90ab7: ; 0x90ab7 - ; , is that OK? - text_jump UnknownText_0x1c5ff1 - db "@" -; 0x90abc - -Function90abc: ; 90abc - hlcoord 1, 14 - lb bc, 3, SCREEN_WIDTH - 2 - call ClearBox - ld hl, UnknownText_0x90acc - call PlaceWholeStringInBoxAtOnce - ret -; 90acc - -UnknownText_0x90acc: ; 0x90acc - start_asm - - call UpdateTime - - hlcoord 1, 14 - ld [hl], "R" - inc hl - ld [hl], "T" - inc hl - ld [hl], " " - inc hl - - ld de, hRTCDayLo - call Function90b23 - - hlcoord 1, 16 - ld [hl], "D" - inc hl - ld [hl], "F" - inc hl - ld [hl], " " - inc hl - - ld de, StartDay - call Function90b23 - - ld [hl], " " - inc hl - - ld a, [wDST] - bit 7, a - jr z, .off - - ld [hl], "O" - inc hl - ld [hl], "N" - inc hl - jr .done - -.off - ld [hl], "O" - inc hl - ld [hl], "F" - inc hl - ld [hl], "F" - inc hl - -.done - ld hl, UnknownText_0x90b13 - ret -; 90b13 - -UnknownText_0x90b13: ; 0x90b13 - text "<PARA>Now on DEBUG…" - prompt -; 0x90b23 - -Function90b23: ; 90b23 - lb bc, 1, 3 - call PrintNum - ld [hl], "." - inc hl - inc de - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - ld [hl], ":" - inc hl - inc de - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - ret -; 90b3e - -PrintHour: ; 90b3e (24:4b3e) - ld l, e - ld h, d - push bc - call GetTimeOfDayString - call PlaceString - ld l, c - ld h, b - inc hl - pop bc - call AdjustHourForAMorPM - ld [wd265], a - ld de, wd265 - call PrintTwoDigitNumberRightAlign - ret - -GetTimeOfDayString: ; 90b58 (24:4b58) - ld a, c - cp 4 - jr c, .nite - cp 10 - jr c, .morn - cp 18 - jr c, .day -.nite - ld de, .NITE - ret -.morn - ld de, .MORN - ret -.day - ld de, .DAY - ret -; 90b71 (24:4b71) - -.NITE: db "NITE@" -.MORN: db "MORN@" -.DAY: db "DAY@" -; 90b7f - -AdjustHourForAMorPM: -; Convert the hour stored in c (0-23) to a 1-12 value - ld a, c - or a - jr z, .midnight - cp 12 - ret c - ret z - sub 12 - ret - -.midnight - ld a, 12 - ret - -Function90b8d: ; 90b8d (24:4b8d) - ld hl, Options - ld a, [hl] - push af - set NO_TEXT_SCROLL, [hl] - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - ld a, [VramState] - push af - xor a - ld [VramState], a - call Function90bea - call DelayFrame - -.loop - call UpdateTime - call JoyTextDelay - ld a, [wJumptableIndex] - bit 7, a - jr nz, .done - call Function90f04 - callba Function8cf69 - call DelayFrame - jr .loop - -.done - ld de, SFX_READ_TEXT_2 - call PlaySFX - call WaitSFX - pop af - ld [VramState], a - pop af - ld [hInMenu], a - pop af - ld [Options], a - call ClearBGPalettes - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ld a, $90 - ld [hWY], a - call Function91492 - ret - -Function90bea: ; 90bea (24:4bea) - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - xor a - ld [hSCY], a - ld [hSCX], a - ld a, $7 - ld [hWX], a - call Function90c4e - callba Function8cf53 - call Function90d32 - ld a, 8 - call SkipMusic - ld a, $e3 - ld [rLCDC], a - call Function90d70 - xor a - ld [wJumptableIndex], a - ld [wcf64], a - ld [wcf65], a - ld [wcf66], a - ld [wc6d2], a - ld [wc6d1], a - ld [wc6d3], a - ld [wc6d9], a - ld [wc6da], a - ld [wc6db], a - call Function90d9e - call Function90da8 - ld b, $2 - call GetSGBLayout - call SetPalettes - ld a, [hCGB] - and a - ret z - ld a, $e4 - call Functioncf8 - ret - -Function90c4e: ; 90c4e - call Functiond79 - ld hl, TownMapGFX - ld de, VTiles2 - ld a, BANK(TownMapGFX) - call FarDecompress - - ld hl, PokegearGFX - ld de, VTiles2 + $300 - ld a, BANK(PokegearGFX) - call FarDecompress - - ld hl, PokegearSpritesGFX - ld de, VTiles0 - ld a, BANK(PokegearSpritesGFX) - call Decompress - - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] - ld c, a - call GetWorldMapLocation - cp FAST_SHIP - jr z, .ssaqua - - callba GetPlayerIcon - - push de - ld h, d - ld l, e - ld a, b - - push af - ld de, VTiles0 tile $10 - ld bc, $40 - call FarCopyBytes - pop af - - pop hl - - ld de, $c0 - add hl, de - ld de, VTiles0 tile $14 - ld bc, $40 - call FarCopyBytes - ret - -.ssaqua - ld hl, FastShipGFX - ld de, VTiles0 tile $10 - ld bc, $80 - call CopyBytes - ret -; 90cb2 - -FastShipGFX: ; 90cb2 -INCBIN "gfx/misc/fast_ship.2bpp" -; 90d32 - -Function90d32: ; 90d32 (24:4d32) - ld de, $2410 - ld a, $d - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $0 - ret - -Function90d41: ; 90d41 (24:4d41) - ld hl, wcf64 - ld e, [hl] - ld d, 0 - ld hl, Unknown_90d52 - add hl, de - ld a, [hl] - ld hl, $6 - add hl, bc - ld [hl], a - ret -; 90d52 (24:4d52) - -Unknown_90d52: ; 90d52 - db $00, $10, $20, $30 -; 90d56 - -Function90d56: ; 90d56 - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] - ld c, a - call GetWorldMapLocation - cp SPECIAL_MAP - ret nz - ld a, [BackupMapGroup] - ld b, a - ld a, [BackupMapNumber] - ld c, a - call GetWorldMapLocation - ret -; 90d70 - - -Function90d70: ; 90d70 (24:4d70) - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] - ld c, a - call GetWorldMapLocation - - cp FAST_SHIP - jr z, .asm_90d95 - - cp SPECIAL_MAP - jr nz, .asm_90d8e - - ld a, [BackupMapGroup] - ld b, a - ld a, [BackupMapNumber] - ld c, a - call GetWorldMapLocation - -.asm_90d8e - ld [wc6d8], a - ld [wc6d7], a - ret - -.asm_90d95 - ld [wc6d8], a - ld a, NEW_BARK_TOWN - ld [wc6d7], a - ret - -Function90d9e: ; 90d9e (24:4d9e) - ld a, $0 - ld [wJumptableIndex], a - xor a - ld [wcf64], a - ret - -Function90da8: ; 90da8 (24:4da8) - xor a - ld [hBGMapMode], a - hlcoord 0, 0 - ld bc, TileMapEnd - TileMap - ld a, $4f - call ByteFill - ld a, [wcf64] - and $3 - add a - ld e, a - ld d, 0 - ld hl, Jumptable_90e12 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .asm_90dcb - push de - jp [hl] - -.asm_90dcb - call Function90eb0 - callba TownMapPals - ld a, [wcf65] - and a - jr nz, .asm_90de8 - - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - call Function90e00 - ld a, $90 - jr .asm_90df3 - -.asm_90de8 - xor a - ld [hBGMapAddress], a - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - call Function90e00 - xor a - -.asm_90df3 - ld [hWY], a - ld a, [wcf65] - and 1 - xor 1 - ld [wcf65], a - ret - -Function90e00: ; 90e00 (24:4e00) - ld a, [hCGB] - and a - jr z, .asm_90e0e - ld a, $2 - ld [hBGMapMode], a - ld c, 3 - call DelayFrames -.asm_90e0e - call WaitBGMap - ret -; 90e12 (24:4e12) - -Jumptable_90e12: ; 90e12 - dw Function90e1a - dw Function90e3f - dw Function90e82 - dw Function90e72 -; 90e1a - -Function90e1a: ; 90e1a - ld de, ClockTilemapRLE - call Function914bb - hlcoord 12, 1 - ld de, .switch - call PlaceString - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - call Function90f86 - ret -; 90e36 (24:4e36) - -.switch - db " SWITCH▶@" -; 90e3f - -Function90e3f: ; 90e3f - - ld a, [wc6d8] - cp FAST_SHIP - jr z, .johto - cp KANTO_LANDMARK - jr nc, .kanto -.johto - ld e, 0 - jr .ok -.kanto - ld e, 1 -.ok - callba Function91ae1 - ld a, $7 - ld bc, $12 - hlcoord 1, 2 - call ByteFill - hlcoord 0, 2 - ld [hl], $6 - hlcoord 19, 2 - ld [hl], $17 - ld a, [wc6d7] - call Function910b4 - ret -; 90e72 - -Function90e72: ; 90e72 - ld de, RadioTilemapRLE - call Function914bb - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - ret -; 90e82 - -Function90e82: ; 90e82 - ld de, PhoneTilemapRLE - call Function914bb - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - call Function90e98 - call Function912d8 - ret -; 90e98 - -Function90e98: ; 90e98 (24:4e98) - hlcoord 17, 1 - ld a, $3c - ld [hli], a - inc a - ld [hl], a - hlcoord 17, 2 - inc a - ld [hli], a - call GetMapHeaderPhoneServiceNybble - and a - ret nz - hlcoord 18, 2 - ld [hl], $3f - ret - -Function90eb0: ; 90eb0 (24:4eb0) - hlcoord 0, 0 - ld bc, $8 - ld a, $4f - call ByteFill - hlcoord 0, 1 - ld bc, $8 - ld a, $4f - call ByteFill - ld de, wPokegearFlags - ld a, [de] - bit 0, a - call nz, Function90ee4 - ld a, [de] - bit 2, a - call nz, Function90eeb - ld a, [de] - bit 1, a - call nz, Function90ef2 - hlcoord 0, 0 - ld a, $46 - call Function90ef7 - ret - -Function90ee4: ; 90ee4 (24:4ee4) - hlcoord 2, 0 - ld a, $40 - jr Function90ef7 - -Function90eeb: ; 90eeb (24:4eeb) - hlcoord 4, 0 - ld a, $44 - jr Function90ef7 - -Function90ef2: ; 90ef2 (24:4ef2) - hlcoord 6, 0 - ld a, $42 - -Function90ef7: ; 90ef7 (24:4ef7) - ld [hli], a - inc a - ld [hld], a - ld bc, $14 - add hl, bc - add $f - ld [hli], a - inc a - ld [hld], a - ret - -Function90f04: ; 90f04 (24:4f04) - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_90f13 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Jumptable_90f13: ; 90f13 (24:4f13) - dw Function90f2d - dw Function90f3e - dw Function90fb4 - dw Function90fcd - dw Function90fee - dw Function90fcd - dw Function90fe9 - dw Function91156 - dw Function91171 - dw Function911eb - dw Function91256 - dw Function910f9 - dw Function91112 - - -Function90f2d: ; 90f2d (24:4f2d) - call Function90da8 - ld hl, UnknownText_0x914d3 - call PrintText - ld hl, wJumptableIndex - inc [hl] - call Function91492 - ret - -Function90f3e: ; 90f3e (24:4f3e) - call Function90f7b - ld hl, hJoyLast - - ld a, [hl] - and A_BUTTON + B_BUTTON + START + SELECT - jr nz, .asm_90f75 - - ld a, [hl] - and D_RIGHT - ret z - - ld a, [wPokegearFlags] - bit 0, a - jr z, .asm_90f5a - ld c, $2 - ld b, $1 - jr .asm_90f71 -.asm_90f5a - - ld a, [wPokegearFlags] - bit 2, a - jr z, .asm_90f67 - ld c, $7 - ld b, $2 - jr .asm_90f71 -.asm_90f67 - - ld a, [wPokegearFlags] - bit 1, a - ret z - - ld c, $b - ld b, $3 - -.asm_90f71 - call Function91480 - ret - -.asm_90f75 - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function90f7b: ; 90f7b (24:4f7b) - xor a - ld [hBGMapMode], a - call Function90f86 - ld a, $1 - ld [hBGMapMode], a - ret - -Function90f86: ; 90f86 (24:4f86) - hlcoord 3, 5 - lb bc, 5, 14 - call ClearBox - ld a, [hHours] - ld b, a - ld a, [hMinutes] - ld c, a - decoord 6, 8 - callba PrintHoursMins - ld hl, UnknownText_0x90faf - bccoord 6, 6 - call PlaceWholeStringInBoxAtOnce - ret -; 90fa8 (24:4fa8) - -String_90fa8: db "ごぜん@" -String_90fac: db "ごご@" - -UnknownText_0x90faf: ; 0x90faf - text_jump UnknownText_0x1c5821 - db "@" -; 0x90fb4 - -Function90fb4: ; 90fb4 (24:4fb4) - ld a, [wc6d8] - cp FAST_SHIP - jr z, .johto - cp KANTO_LANDMARK - jr nc, .kanto -.johto - ld a, 3 - jr .done - - ret - -.kanto - ld a, 5 -.done - ld [wJumptableIndex], a - call Function91492 - ret - -Function90fcd: ; 90fcd (24:4fcd) - call Function90da8 - ld a, [wc6d8] - call Function9106a - ld a, [wc6d7] - call Function91098 - ld a, c - ld [wc6d5], a - ld a, b - ld [wc6d6], a - ld hl, wJumptableIndex - inc [hl] - ret - -Function90fe9: ; 90fe9 (24:4fe9) - call Function910e8 - jr Function90ff2 - -Function90fee: ; 90fee (24:4fee) - ld d, $2e - ld e, $1 -Function90ff2: ; 90ff2 (24:4ff2) - ld hl, hJoyLast - ld a, [hl] - and B_BUTTON - jr nz, .cancel - ld a, [hl] - and D_RIGHT - jr nz, .right - ld a, [hl] - and D_LEFT - jr nz, .left - call Function9102f - ret - -.right - ld a, [wPokegearFlags] - bit 2, a - jr z, .asm_91015 - ld c, $7 - ld b, $2 - jr .done - -.asm_91015 - ld a, [wPokegearFlags] - bit 1, a - ret z - ld c, $b - ld b, $3 - jr .done - -.left - ld c, $0 - ld b, $0 -.done - call Function91480 - ret -.cancel - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function9102f: ; 9102f (24:502f) - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .up - ld a, [hl] - and D_DOWN - jr nz, .down - ret -.up - ld hl, wc6d7 - ld a, [hl] - cp d - jr c, .asm_91047 - ld a, e - dec a - ld [hl], a -.asm_91047 - inc [hl] - jr .done - -.down - ld hl, wc6d7 - ld a, [hl] - cp e - jr nz, .asm_91054 - ld a, d - inc a - ld [hl], a -.asm_91054 - dec [hl] - -.done - ld a, [wc6d7] - call Function910b4 - ld a, [wc6d5] - ld c, a - ld a, [wc6d6] - ld b, a - ld a, [wc6d7] - call Function910d4 - ret - -Function9106a: ; 9106a - push af - ld de, 0 - ld b, $a - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91079 - ld b, $1e - -.asm_91079 - ld a, b - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $10 - pop af - ld e, a - push bc - callba GetLandmarkCoords - pop bc - ld hl, $4 - add hl, bc - ld [hl], e - ld hl, $5 - add hl, bc - ld [hl], d - ret -; 91098 - -Function91098: ; 91098 - push af - ld de, 0 - ld a, $d - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $4 - ld hl, $2 - add hl, bc - ld [hl], $0 - pop af - push bc - call Function910d4 - pop bc - ret -; 910b4 - -Function910b4: ; 910b4 - push af - hlcoord 8, 0 - lb bc, 2, 12 - call ClearBox - pop af - ld e, a - push de - callba GetLandmarkName - pop de - callba Function1de2c5 - hlcoord 8, 0 - ld [hl], $34 - ret -; 910d4 - -Function910d4: ; 910d4 - push bc - ld e, a - callba GetLandmarkCoords - pop bc - ld hl, $4 - add hl, bc - ld [hl], e - ld hl, $5 - add hl, bc - ld [hl], d - ret -; 910e8 - -Function910e8: ; 910e8 - ld a, [StatusFlags] - bit 6, a - jr z, .asm_910f4 - ld d, $5e - ld e, $2f - ret - -.asm_910f4 - ld d, $5e - ld e, $58 - ret -; 910f9 - - -Function910f9: ; 910f9 (24:50f9) - call Function90da8 - ld de, $2454 - ld a, $14 - call Function3b2a - ld hl, $3 - add hl, bc - ld [hl], $8 - call _UpdateRadioStation - ld hl, wJumptableIndex - inc [hl] - ret - -Function91112: ; 91112 (24:5112) - ld hl, hJoyLast - ld a, [hl] - and B_BUTTON - jr nz, .cancel - ld a, [hl] - and D_LEFT - jr nz, .left - ld a, [wc6da] - ld l, a - ld a, [wc6db] - ld h, a - ld a, [wc6d9] - and a - ret z - rst FarCall - ret - -.left - ld a, [wPokegearFlags] - bit 2, a - jr z, .asm_9113b - ld c, $7 - ld b, $2 - jr .asm_9114c - -.asm_9113b - ld a, [wPokegearFlags] - bit 0, a - jr z, .asm_91148 - ld c, $2 - ld b, $1 - jr .asm_9114c - -.asm_91148 - ld c, $0 - ld b, $0 -.asm_9114c - call Function91480 - ret - -.cancel - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function91156: ; 91156 (24:5156) - ld hl, wJumptableIndex - inc [hl] - xor a - ld [wc6d2], a - ld [wc6d1], a - ld [wc6d3], a - call Function90da8 - call Function91492 - ld hl, UnknownText_0x914ce - call PrintText - ret - -Function91171: ; 91171 (24:5171) - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .b - ld a, [hl] - and A_BUTTON - jr nz, .a - ld hl, hJoyLast - ld a, [hl] - and D_LEFT - jr nz, .left - ld a, [hl] - and D_RIGHT - jr nz, .right - call Function9126d - ret - -.left - ld a, [wPokegearFlags] - bit 0, a - jr z, .asm_9119c - ld c, $2 - ld b, $1 - jr .asm_911ac -.asm_9119c - ld c, $0 - ld b, $0 - jr .asm_911ac - -.right - ld a, [wPokegearFlags] - bit 1, a - ret z - ld c, $b - ld b, $3 -.asm_911ac - call Function91480 - ret - -.b - ld hl, wJumptableIndex - set 7, [hl] - ret - -.a - ld hl, wPhoneList - ld a, [wc6d2] - ld e, a - ld d, 0 - add hl, de - ld a, [wc6d1] - ld e, a - ld d, 0 - add hl, de - ld a, [hl] - and a - ret z - - ld [wc6d3], a - hlcoord 1, 4 - ld a, [wc6d1] - ld bc, 20 * 2 - call AddNTimes - ld [hl], "▷" - call Function91342 - jr c, .asm_911e5 - - ld hl, wJumptableIndex - inc [hl] - ret - -.asm_911e5 - ld a, $8 - ld [wJumptableIndex], a - ret - -Function911eb: ; 911eb (24:51eb) - call GetMapHeaderPhoneServiceNybble - and a - jr nz, .asm_91234 - ld hl, Options - res NO_TEXT_SCROLL, [hl] - xor a - ld [hInMenu], a - ld de, SFX_CALL - call PlaySFX - ld hl, UnknownText_0x9124c - call PrintText - call WaitSFX - ld de, SFX_CALL - call PlaySFX - ld hl, UnknownText_0x9124c - call PrintText - call WaitSFX - ld a, [wc6d3] - ld b, a - call Function90199 - ld c, 10 - call DelayFrames - ld hl, Options - set NO_TEXT_SCROLL, [hl] - ld a, $1 - ld [hInMenu], a - call Function912b7 - ld hl, wJumptableIndex - inc [hl] - ret -.asm_91234 - callba Phone_NoSignal - ld hl, OutOfServiceAreaText - call PrintText - ld a, $8 - ld [wJumptableIndex], a - ld hl, UnknownText_0x914ce - call PrintText - ret -; 9124c (24:524c) - -UnknownText_0x9124c: ; 0x9124c - ; - text_jump UnknownText_0x1c5824 - db "@" -; 0x91251 - -OutOfServiceAreaText: ; 0x91251 - ; You're out of the service area. - text_jump UnknownText_0x1c5827 - db "@" -; 0x91256 - -Function91256: ; 91256 (24:5256) - ld a, [hJoyPressed] - and A_BUTTON | B_BUTTON - ret z - callba HangUp - ld a, $8 - ld [wJumptableIndex], a - ld hl, UnknownText_0x914ce - call PrintText - ret - -Function9126d: ; 9126d (24:526d) - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .up - ld a, [hl] - and D_DOWN - jr nz, .down - ret - -.up - ld hl, wc6d1 - ld a, [hl] - and a - jr z, .asm_91285 - dec [hl] - jr .asm_912a3 - -.asm_91285 - ld hl, wc6d2 - ld a, [hl] - and a - ret z - dec [hl] - jr .asm_912ad - -.down - ld hl, wc6d1 - ld a, [hl] - cp $3 - jr nc, .asm_91299 - inc [hl] - jr .asm_912a3 - -.asm_91299 - ld hl, wc6d2 - ld a, [hl] - cp $6 - ret nc - inc [hl] - jr .asm_912ad - -.asm_912a3 - xor a - ld [hBGMapMode], a - call Function912b7 - call WaitBGMap - ret - -.asm_912ad - xor a - ld [hBGMapMode], a - call Function912d8 - call WaitBGMap - ret - -Function912b7: ; 912b7 (24:52b7) - ld a, " " - hlcoord 1, 4 - ld [hl], a - hlcoord 1, 6 - ld [hl], a - hlcoord 1, 8 - ld [hl], a - hlcoord 1, 10 - ld [hl], a - hlcoord 1, 4 - ld a, [wc6d1] - ld bc, $28 - call AddNTimes - ld [hl], "▶" - ret - -Function912d8: ; 912d8 (24:52d8) - hlcoord 1, 3 - ld b, $9 - ld a, $7f -.asm_912df - ld c, $12 -.asm_912e1 - ld [hli], a - dec c - jr nz, .asm_912e1 -rept 2 - inc hl -endr - dec b - jr nz, .asm_912df - ld a, [wc6d2] - ld e, a - ld d, $0 - ld hl, wPhoneList - add hl, de - xor a - ld [wc6d0], a -.asm_912f8 - ld a, [hli] - push hl - push af - hlcoord 2, 4 - ld a, [wc6d0] - ld bc, $28 - call AddNTimes - ld d, h - ld e, l - pop af - ld b, a - call Function90380 - pop hl - ld a, [wc6d0] - inc a - ld [wc6d0], a - cp $4 - jr c, .asm_912f8 - call Function912b7 - ret -; 9131e (24:531e) - -Function9131e: ; 9131e - ld hl, wPhoneList - ld a, [wc6d2] - ld e, a - ld d, 0 - add hl, de - ld a, [wc6d1] - ld e, a - ld d, 0 - add hl, de - ld [hl], 0 - ld hl, wPhoneList - ld c, $a -.asm_91336 - ld a, [hli] - and a - jr nz, .asm_9133e - ld a, [hld] - ld [hli], a - ld [hl], 0 -.asm_9133e - dec c - jr nz, .asm_91336 - ret -; 91342 - -Function91342: ; 91342 (24:5342) - ld hl, wPhoneList - ld a, [wc6d2] - ld e, a - ld d, 0 - add hl, de - ld a, [wc6d1] - ld e, a - ld d, 0 - add hl, de - ld c, [hl] - callba Function9038a - ld a, c - and a - jr z, .asm_91366 - - ld hl, Jumptable_91455 - ld de, Unknown_9143f - jr .asm_9136c - -.asm_91366 - ld hl, Jumptable_9146a - ld de, Unknown_9145b - -.asm_9136c - xor a - ld [hBGMapMode], a - push hl - push de - ld a, [de] - ld l, a - inc de - ld a, [de] - ld h, a - inc de - push hl - ld bc, hBGMapAddress + 1 - add hl, bc - ld a, [de] - inc de - sla a - ld b, a - ld c, 8 - push de - call TextBox - pop de - pop hl - inc hl - call PlaceString - pop de - xor a - ld [wc6d4], a - call Function9141d - call WaitBGMap - -.asm_91398 - push de - call JoyTextDelay - pop de - ld hl, hJoyPressed - ld a, [hl] - and D_UP - jr nz, .asm_913b4 - ld a, [hl] - and D_DOWN - jr nz, .asm_913c1 - ld a, [hl] - and A_BUTTON | B_BUTTON - jr nz, .asm_913d4 - call DelayFrame - jr .asm_91398 - -.asm_913b4 - ld hl, wc6d4 - ld a, [hl] - and a - jr z, .asm_91398 - dec [hl] - call Function9141d - jr .asm_91398 - -.asm_913c1 - ld hl, 2 - add hl, de - ld a, [wc6d4] - inc a - cp [hl] - jr nc, .asm_91398 - ld [wc6d4], a - call Function9141d - jr .asm_91398 - -.asm_913d4 - xor a - ld [hBGMapMode], a - call Function912d8 - ld a, $1 - ld [hBGMapMode], a - pop hl - ld a, [hJoyPressed] - and B_BUTTON - jr nz, Function913f1 - - ld a, [wc6d4] - ld e, a - ld d, 0 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Function913f1: ; 913f1 - ld hl, UnknownText_0x914ce - call PrintText - scf - ret -; 913f9 (24:53f9) - -Function913f9: ; 913f9 - ld hl, UnknownText_0x914d8 - call MenuTextBox - call YesNoBox - call ExitMenu - jr c, .asm_91419 - call Function9131e - xor a - ld [hBGMapMode], a - call Function912d8 - ld hl, UnknownText_0x914ce - call PrintText - call WaitBGMap -.asm_91419 - scf - ret -; 9141b - -Function9141b: ; 9141b - and a - ret -; 9141d - -Function9141d: ; 9141d (24:541d) - push de - ld a, [de] - inc de - ld l, a - ld a, [de] - inc de - ld h, a - ld a, [de] - ld c, a - push hl - ld a, " " - ld de, 20 * 2 -.asm_9142c - ld [hl], a - add hl, de - dec c - jr nz, .asm_9142c - pop hl - ld a, [wc6d4] - ld bc, 20 * 2 - call AddNTimes - ld [hl], "▶" - pop de - ret -; 9143f (24:543f) - -Unknown_9143f: ; 9143f - dwcoord 10, 6 - db 3 - db "CALL" - next "DELETE" - next "CANCEL" - db "@" -; 91455 - -Jumptable_91455: ; 91455 - dw Function9141b - dw Function913f9 - dw Function913f1 -; 9145b - -Unknown_9145b: ; 9145b - dwcoord 10, 8 - db 2 - db "CALL" - next "CANCEL" - db "@" -; 9146a - -Jumptable_9146a: ; 9146a - dw Function9141b - dw Function913f1 -; 9146e - - -Function9146e: ; 9146e - ld a, [hHours] - cp 12 - jr c, .asm_9147b - sub 12 - ld [wd265], a - scf - ret - -.asm_9147b - ld [wd265], a - and a - ret -; 91480 - - -Function91480: ; 91480 (24:5480) - ld de, SFX_READ_TEXT_2 - call PlaySFX - ld a, c - ld [wJumptableIndex], a - ld a, b - ld [wcf64], a - call Function914ab - ret - -Function91492: ; 91492 - ld a, [wc6dc] - cp $fe - jr z, .asm_914a3 - cp $ff - call z, EnterMapMusic - xor a - ld [wc6dc], a - ret - -.asm_914a3 - call RestartMapMusic - xor a - ld [wc6dc], a - ret -; 914ab - - -Function914ab: ; 914ab (24:54ab) - ld hl, wc314 + 16 - ld bc, $90 - xor a - call ByteFill - ld a, $2 - ld [wc3b4], a - ret - -Function914bb: ; 914bb (24:54bb) - hlcoord 0, 0 -.asm_914be - ld a, [de] - cp $ff - ret z - ld b, a - inc de - ld a, [de] - ld c, a - inc de - ld a, b -.asm_914c8 - ld [hli], a - dec c - jr nz, .asm_914c8 - jr .asm_914be -; 914ce (24:54ce) - -UnknownText_0x914ce: ; 0x914ce - ; Whom do you want to call? - text_jump UnknownText_0x1c5847 - db "@" -; 0x914d3 - -UnknownText_0x914d3: ; 0x914d3 - ; Press any button to exit. - text_jump UnknownText_0x1c5862 - db "@" -; 0x914d8 - -UnknownText_0x914d8: ; 0x914d8 - ; Delete this stored phone number? - text_jump UnknownText_0x1c587d - db "@" -; 0x914dd - - -PokegearSpritesGFX: ; 914dd -INCBIN "gfx/misc/pokegear_sprites.2bpp.lz" -; 9150d - -RadioTilemapRLE: ; 9150d -INCBIN "gfx/unknown/09150d.tilemap.rle" - -PhoneTilemapRLE: ; 9158a -INCBIN "gfx/unknown/09158a.tilemap.rle" - -ClockTilemapRLE: ; 915db -INCBIN "gfx/unknown/0915db.tilemap.rle" -; 9163e - -INCLUDE "engine/radio2.asm" - -Function9191c: ; 9191c - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - ld a, [VramState] - push af - xor a - ld [VramState], a - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - call Function90c4e - callba Function8cf53 - ld a, 8 - call SkipMusic - ld a, $e3 - ld [rLCDC], a - call Function90d56 - ld [wd002], a - ld [wd003], a - xor a - ld [hBGMapMode], a - call Function91a04 - call Function3200 - ld a, [wd002] - call Function9106a - ld a, [wd003] - call Function91098 - ld a, c - ld [wd004], a - ld a, b - ld [wd005], a - ld b, $2 - call GetSGBLayout - call SetPalettes - ld a, [hCGB] - and a - jr z, .asm_9198b - ld a, $e4 - call Functioncf8 - call DelayFrame - -.asm_9198b - ld a, [wd002] - cp KANTO_LANDMARK - jr nc, .asm_9199b - ld d, KANTO_LANDMARK - 1 - ld e, 1 - call Function919b0 - jr .asm_919a1 - -.asm_9199b - call Function910e8 - call Function919b0 - -.asm_919a1 - pop af - ld [VramState], a - pop af - ld [hInMenu], a - pop af - ld [Options], a - call ClearBGPalettes - ret -; 919b0 - -Function919b0: ; 919b0 -.asm_919b0 - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - ret nz - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_919d4 - ld a, [hl] - and D_DOWN - jr nz, .asm_919e1 -.asm_919c7 - push de - callba Function8cf69 - pop de - call DelayFrame - jr .asm_919b0 - -.asm_919d4 - ld hl, wd003 - ld a, [hl] - cp d - jr c, .asm_919de - ld a, e - dec a - ld [hl], a - -.asm_919de - inc [hl] - jr .asm_919ec - -.asm_919e1 - ld hl, wd003 - ld a, [hl] - cp e - jr nz, .asm_919eb - ld a, d - inc a - ld [hl], a - -.asm_919eb - dec [hl] - -.asm_919ec - push de - ld a, [wd003] - call Function910b4 - ld a, [wd004] - ld c, a - ld a, [wd005] - ld b, a - ld a, [wd003] - call Function910d4 - pop de - jr .asm_919c7 -; 91a04 - -Function91a04: ; 91a04 - ld a, [wd002] - cp KANTO_LANDMARK - jr nc, .asm_91a0f - ld e, $0 - jr .asm_91a11 - -.asm_91a0f - ld e, $1 - -.asm_91a11 - callba Function91ae1 - ld a, $7 - ld bc, 6 - hlcoord 1, 0 - call ByteFill - hlcoord 0, 0 - ld [hl], $6 - hlcoord 7, 0 - ld [hl], $17 - hlcoord 7, 1 - ld [hl], $16 - hlcoord 7, 2 - ld [hl], $26 - ld a, $7 - ld bc, NAME_LENGTH - hlcoord 8, 2 - call ByteFill - hlcoord 19, 2 - ld [hl], $17 - ld a, [wd003] - call Function910b4 - callba TownMapPals - ret -; 91a53 - -PlayRadio: ; 91a53 - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - call .PlayStation - ld c, 100 - call DelayFrames -.loop - call JoyTextDelay - ld a, [hJoyPressed] - and A_BUTTON | B_BUTTON - jr nz, .stop - ld a, [wc6da] - ld l, a - ld a, [wc6db] - ld h, a - ld a, [wc6d9] - and a - jr z, .zero - rst FarCall - -.zero - call DelayFrame - jr .loop - -.stop - pop af - ld [Options], a - call Function91492 - ret -; 91a87 - -.PlayStation: ; 91a87 - ld a, -1 - ld [EnemyTurnsTaken], a - ld hl, .StationPointers - ld d, $0 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .jump_return - push de - jp [hl] - -.jump_return - push de - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - hlcoord 1, 14 - ld [hl], $72 - pop de - hlcoord 2, 14 - call PlaceString - ld h, b - ld l, c - ld [hl], $73 - call WaitBGMap - ret -; 91ab9 - -.StationPointers: ; 91ab9 - dw Function91acb - dw LoadStation_OaksPokemonTalk - dw LoadStation_PokedexShow - dw LoadStation_PokemonMusic - dw LoadStation_LuckyChannel - dw LoadStation_UnownRadio - dw LoadStation_PlacesAndPeople - dw LoadStation_LetsAllSing - dw LoadStation_RocketRadio -; 91acb - -Function91acb: ; 91acb - call IsInJohto - and a - jr nz, .kanto - call UpdateTime - ld a, [TimeOfDay] - and a - jp z, LoadStation_PokedexShow - jp LoadStation_OaksPokemonTalk - -.kanto - jp LoadStation_PlacesAndPeople -; 91ae1 - -Function91ae1: ; 91ae1 - ld a, e - and a - jr nz, .kanto - call Function91ff2 - call FillJohtoMap - ret - -.kanto - call Function91ff2 - call FillKantoMap - ret -; 91af3 - - -INCLUDE "engine/flypoints.asm" - -Function92311: ; unreferenced - xor a - ld [wd002], a - call ClearBGPalettes - call ClearTileMap - call ClearSprites - ld hl, hInMenu - ld a, [hl] - push af - ld [hl], $1 - xor a - ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 - ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 - call Request1bpp - call FillKantoMap - call TownMapBubble - call TownMapPals - ld hl, VBGMap1 - call TownMapBGUpdate - call FillJohtoMap - call TownMapBubble - call TownMapPals - ld hl, VBGMap0 - call TownMapBGUpdate - call TownMapMon - ld a, c - ld [wd003], a - ld a, b - ld [wd004], a - ld b, $2 - call GetSGBLayout - call SetPalettes -.loop - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .pressedB - ld a, [hl] - and A_BUTTON - jr nz, .pressedA - call Function923b8 - call GetMapCursorCoordinates - callba Function8cf69 - call DelayFrame - jr .loop - -.pressedB - ld a, -1 - jr .asm_9239f - -.pressedA - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld a, [hl] - -.asm_9239f - ld [wd002], a - pop af - ld [hInMenu], a - call ClearBGPalettes - ld a, $90 - ld [hWY], a - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ld a, [wd002] - ld e, a - ret -; 923b8 - -Function923b8: ; 923b8 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN | D_RIGHT - jr nz, .asm_923c6 - ld a, [hl] - and D_UP | D_LEFT - jr nz, .asm_923d3 - ret - -.asm_923c6 - ld hl, wd002 - ld a, [hl] - cp FLY_INDIGO - jr c, .asm_923d0 - ld [hl], -1 -.asm_923d0 - inc [hl] - jr .asm_923dd - -.asm_923d3 - ld hl, wd002 - ld a, [hl] - and a - jr nz, .asm_923dc - ld [hl], FLY_INDIGO + 1 -.asm_923dc - dec [hl] - -.asm_923dd - ld a, [wd002] - cp KANTO_FLYPOINT - jr c, .johto - - call FillKantoMap - xor a - ld b, $9c - jr .asm_923f3 - -.johto - call FillJohtoMap - ld a, $90 - ld b, $98 - -.asm_923f3 - ld [hWY], a - ld a, b - ld [hBGMapAddress + 1], a - call TownMapBubble - call WaitBGMap - xor a - ld [hBGMapMode], a - ret -; 92402 - +INCLUDE "engine/timeset.asm" +INCLUDE "engine/pokegear.asm" INCLUDE "data/wild/fish.asm" INCLUDE "engine/slot_machine.asm" -SECTION "bank28", ROMX, BANK[$28] +SECTION "Phone Engine", ROMX, BANK[$28] INCLUDE "engine/more_phone_scripts.asm" INCLUDE "engine/buena_phone_scripts.asm" -INCLUDE "text/phone/buena.asm" -SECTION "bank29", ROMX, BANK[$29] +SECTION "Phone Text", ROMX, BANK[$29] INCLUDE "text/phone/anthony_overworld.asm" INCLUDE "text/phone/todd_overworld.asm" @@ -46081,1095 +22676,7 @@ INCLUDE "engine/events_3.asm" INCLUDE "engine/radio.asm" -ReadPartyMonMail: ; b9229 - ld a, [CurPartyMon] - ld hl, sPartyScratch1 - ld bc, SCRATCHMON_STRUCT_LENGTH - call AddNTimes - ld d, h - ld e, l -ReadAnyMail: ; b9237 - push de - call ClearBGPalettes - call ClearSprites - call ClearTileMap - call DisableLCD - call LoadFontsExtra - pop de - push de - ld a, BANK(sPartyScratch1) - call GetSRAMBank - callba Function1de5c8 - call CloseSRAM - ld a, c - ld de, GFX_1de5e6 - or a - jr z, .asm_b9268 - ld de, GFX_1de9e6 - sub $3 - jr c, .asm_b9268 - ld de, GFX_1dede6 - -.asm_b9268 - ld hl, VTiles1 - lb bc, BANK(GFX_1de5e6), $80 - call Get1bpp - pop de - call Functionb92b8 - call EnableLCD - call WaitBGMap - ld a, [wd1ec] - ld e, a - callba Function8cb4 - call SetPalettes - xor a - ld [hJoyPressed], a - call Functionb929a - call ClearBGPalettes - call DisableLCD - call LoadStandardFont - jp EnableLCD -; b929a - -Functionb929a: ; b929a -.asm_b929a - call GetJoypad - ld a, [hJoyPressed] - and A_BUTTON | B_BUTTON | START - jr z, .asm_b929a - and START - jr nz, .asm_b92a8 - ret - -.asm_b92a8 - ld a, [wJumptableIndex] - push af - callab Function845d4 - pop af - ld [wJumptableIndex], a - jr .asm_b929a -; b92b8 - -Functionb92b8: ; b92b8 - ld h, d - ld l, e - push hl - ld a, $0 - call GetSRAMBank - ld de, $2b - add hl, de - ld a, [hli] - ld [Buffer1], a - ld a, [hli] - ld [Buffer2], a - ld a, [hli] - ld [CurPartySpecies], a - ld b, [hl] - call CloseSRAM - ld hl, Unknown_b92f8 - ld c, 0 -.asm_b92d9 - ld a, [hli] - cp b - jr z, .asm_b92ea - cp $ff - jr z, .asm_b92e6 - inc c -rept 2 - inc hl -endr - jr .asm_b92d9 - -.asm_b92e6 - ld hl, Unknown_b92f8 - inc hl - -.asm_b92ea - ld a, c - ld [wd1ec], a - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .done - pop bc - push de - jp [hl] -.done - ret -; b92f8 - -Unknown_b92f8: ; b92f8 - dbw FLOWER_MAIL, Functionb963e - dbw SURF_MAIL, Functionb9317 - dbw LITEBLUEMAIL, Functionb9335 - dbw PORTRAITMAIL, Functionb96ca - dbw LOVELY_MAIL, Functionb944b - dbw EON_MAIL, Functionb93d2 - dbw MORPH_MAIL, Functionb94d6 - dbw BLUESKY_MAIL, Functionb9582 - dbw MUSIC_MAIL, Functionb9710 - dbw MIRAGE_MAIL, Functionb9776 - db $ff -; b9317 - -Functionb9317: ; b9317 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9d46 - ld c, $40 - call Functionb9915 - ld de, MailLaprasGFX - ld c, $30 - call Functionb991e - ld de, Unknown_b994e - ld c, $8 - call Functionb9915 - jr Functionb9351 - -Functionb9335: ; b9335 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9dc6 - ld c, $40 - call Functionb9915 - ld de, MailDratiniGFX - ld c, $30 - call Functionb991e - ld de, Unknown_b995e - ld c, $8 - call Functionb9915 - -Functionb9351: ; b9351 - ld de, Unknown_b9976 - ld c, $10 - call Functionb9915 - ld c, $10 - call Functionb990c - ld de, Unknown_b9c3e - ld c, $40 - call Functionb990c - ld c, $40 - call Functionb9915 - call Functionb9858 - hlcoord 2, 15 - ld a, $3f - call Functionb98d4 - ld a, $39 - hlcoord 15, 14 - call Functionb98fc - ld a, $44 - hlcoord 2, 2 - call Functionb98ee - hlcoord 15, 11 - call Functionb98ee - ld a, $4c - hlcoord 3, 12 - call Functionb98ee - hlcoord 15, 2 - call Functionb98ee - ld a, $50 - hlcoord 6, 3 - call Functionb98ee - ld a, $40 - hlcoord 13, 2 - ld [hli], a - hlcoord 6, 14 - ld [hl], a - ld a, $41 - hlcoord 4, 5 - ld [hli], a - hlcoord 17, 5 - ld [hli], a - hlcoord 13, 12 - ld [hl], a - ld a, $42 - hlcoord 9, 2 - ld [hli], a - hlcoord 14, 5 - ld [hli], a - hlcoord 3, 10 - ld [hl], a - ld a, $43 - hlcoord 6, 11 - ld [hli], a - pop hl - jp Functionb9803 -; b93d2 - -Functionb93d2: ; b93d2 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b997e - ld c, $8 - call Functionb9915 - ld de, Unknown_b998e - ld c, $8 - call Functionb990c - ld de, Unknown_b998e - ld c, $8 - call Functionb990c - ld de, Unknown_b997e - ld c, $8 - call Functionb9915 - ld de, Unknown_b9d76 - ld c, $8 - call Functionb9915 - ld de, MailPikaGFX - ld c, $30 - call Functionb991e - ld hl, VTiles2 tile $3d - ld de, Unknown_b9c9e - ld c, $20 - call Functionb990c - ld de, Unknown_b998e - ld c, $8 - call Functionb9915 - ld a, $31 - hlcoord 0, 0 - call Functionb98a8 - hlcoord 1, 17 - call Functionb98a8 - ld a, $33 - hlcoord 0, 1 - call Functionb98ba - hlcoord 19, 0 - call Functionb98ba - hlcoord 2, 15 - ld a, $35 - call Functionb98d4 - inc a - hlcoord 15, 14 - call Functionb98fc - call Functionb9491 - pop hl - jp Functionb9803 -; b944b - -Functionb944b: ; b944b - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9e26 - ld c, $28 - call Functionb9915 - ld de, MailPoliwagGFX - ld c, $30 - call Functionb991e - ld de, Unknown_b9966 - ld c, $8 - call Functionb9915 - ld de, Unknown_b9c5e - ld c, $20 - call Functionb9915 - ld de, Unknown_b996e - ld c, $8 - call Functionb990c - call Functionb987b - hlcoord 2, 15 - ld a, $3c - call Functionb98d4 - ld a, $36 - hlcoord 15, 14 - call Functionb98fc - call Functionb9491 - pop hl - jp Functionb9803 -; b9491 - -Functionb9491: ; b9491 - ld a, $3d - hlcoord 2, 2 - call Functionb98ee - hlcoord 16, 2 - call Functionb98ee - hlcoord 9, 4 - call Functionb98ee - hlcoord 2, 11 - call Functionb98ee - hlcoord 6, 12 - call Functionb98ee - hlcoord 12, 11 - call Functionb98ee - ld a, $41 - hlcoord 5, 4 - ld [hl], a - hlcoord 6, 2 - ld [hl], a - hlcoord 12, 4 - ld [hl], a - hlcoord 14, 2 - ld [hl], a - hlcoord 3, 13 - ld [hl], a - hlcoord 9, 11 - ld [hl], a - hlcoord 16, 12 - ld [hl], a - ret -; b94d6 - -Functionb94d6: ; b94d6 - push bc - ld hl, VTiles2 tile $31 - ld bc, $28 - call Functionb97f8 - ld de, Unknown_b9c96 - ld c, 8 - call Functionb9915 - ld de, Unknown_b9c7e - ld c, 8 - call Functionb9915 - ld de, Unknown_b993e - ld c, 8 - call Functionb9915 - ld de, Unknown_b997e - ld c, 8 - call Functionb990c - ld de, Unknown_b9926 - ld c, 8 - call Functionb9915 - ld de, MailDittoGFX - ld c, $30 - call Functionb991e - call Functionb987b - ld a, $31 - hlcoord 1, 1 - call Functionb98ee - hlcoord 17, 15 - call Functionb98ee - hlcoord 1, 3 - ld [hl], a - hlcoord 3, 1 - ld [hl], a - hlcoord 16, 16 - ld [hl], a - hlcoord 18, 14 - ld [hl], a - ld a, $36 - hlcoord 1, 4 - ld [hl], a - hlcoord 2, 3 - ld [hl], a - hlcoord 3, 2 - ld [hl], a - hlcoord 4, 1 - ld [hl], a - inc a - hlcoord 15, 16 - ld [hl], a - hlcoord 16, 15 - ld [hl], a - hlcoord 17, 14 - ld [hl], a - hlcoord 18, 13 - ld [hl], a - inc a - hlcoord 2, 15 - ld b, $e - call Functionb98de - inc a - hlcoord 2, 11 - call Functionb98d4 - hlcoord 2, 5 - call Functionb98d4 - inc a - hlcoord 6, 1 - call Functionb98d0 - hlcoord 1, 16 - call Functionb98d0 - inc a - hlcoord 3, 13 - call Functionb98fc - pop hl - jp Functionb9803 -; b9582 - -Functionb9582: ; b9582 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b997e - ld c, $8 - call Functionb9915 - ld a, $ff - ld bc, $10 - call ByteFill - ld de, Unknown_b992e - ld c, $8 - call Functionb991e - ld de, MailDragoniteGFX - ld c, $b8 - call Functionb991e - ld de, MailCloudGFX - ld c, $30 - call Functionb990c - ld de, Unknown_b9db6 - ld c, $8 - call Functionb990c - ld de, MailCloudGFX - ld c, $8 - call Functionb990c - ld de, Unknown_b9d26 - ld c, $10 - call Functionb990c - ld de, Unknown_b9d3e - ld c, $8 - call Functionb990c - ld a, $31 - hlcoord 0, 0 - call Functionb98dc - hlcoord 0, 1 - call Functionb98e3 - hlcoord 19, 1 - call Functionb98e3 - inc a - hlcoord 0, 17 - call Functionb98dc - inc a - hlcoord 0, 16 - call Functionb98dc - inc a - hlcoord 2, 2 - call Functionb9636 - hlcoord 3, 3 - call Functionb9636 - hlcoord 4, 4 - call Functionb9636 - dec hl - ld [hl], $7f - dec a - hlcoord 15, 14 - call Functionb98ee - add $4 - hlcoord 15, 16 - ld [hli], a - inc a - ld [hl], a - inc a - push af - hlcoord 12, 1 - call Functionb98fc - pop af - hlcoord 15, 4 - call Functionb98fc - inc a - hlcoord 2, 11 - call Functionb98d4 - inc a - hlcoord 10, 3 - call Functionb98ee - pop hl - jp Functionb9803 -; b9636 - -Functionb9636: ; b9636 - ld b, $6 -.asm_b9638 - ld [hli], a - inc a - dec b - jr nz, .asm_b9638 - ret -; b963e - -Functionb963e: ; b963e - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9d86 - ld c, $40 - call Functionb990c - ld de, MailOddishGFX - ld c, $20 - call Functionb991e - ld de, Unknown_b9db6 - ld c, $8 - call Functionb9915 - ld de, Unknown_b9cbe - ld c, $20 - call Functionb990c - ld c, $20 - call Functionb9915 - call Functionb9858 - hlcoord 2, 15 - ld a, $3d - call Functionb98d4 - ld a, $39 - hlcoord 16, 13 - call Functionb98ee - hlcoord 2, 13 - call Functionb98ee - ld a, $3e - hlcoord 2, 2 - call Functionb98ee - hlcoord 5, 3 - call Functionb98ee - hlcoord 10, 2 - call Functionb98ee - hlcoord 16, 3 - call Functionb98ee - hlcoord 5, 11 - call Functionb98ee - hlcoord 16, 10 - call Functionb98ee - ld a, $42 - hlcoord 3, 4 - call Functionb98ee - hlcoord 12, 3 - call Functionb98ee - hlcoord 14, 2 - call Functionb98ee - hlcoord 2, 10 - call Functionb98ee - hlcoord 14, 11 - call Functionb98ee - pop hl - jp Functionb9803 -; b96ca - -Functionb96ca: ; b96ca - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9e4e - ld c, $28 - call Functionb9915 - ld de, Unknown_b995e - ld c, $8 - call Functionb9915 - ld hl, VTiles2 tile $3d - ld de, Unknown_b9bfe - ld c, $20 - call Functionb990c - ld de, Unknown_b9936 - ld c, $8 - call Functionb9915 - call Functionb987b - hlcoord 8, 15 - ld a, $36 - ld b, $a - call Functionb98de - call Functionb9491 - ld a, $1 - ld [UnownLetter], a - hlcoord 1, 10 - call PrepMonFrontpic - pop hl - jp Functionb9803 -; b9710 - -Functionb9710: ; b9710 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9e06 - ld c, $20 - call Functionb9915 - ld de, Unknown_b993e - ld c, $10 - call Functionb9915 - ld de, Unknown_b9996 - ld c, $30 - call Functionb991e - xor a - ld bc, $10 - call ByteFill - ld de, Unknown_b9cfe - ld c, $18 - call Functionb990c - ld de, Unknown_b9946 - ld c, $8 - call Functionb990c - ld a, $31 - hlcoord 0, 0 - call Functionb98a8 - hlcoord 1, 17 - call Functionb98a8 - ld a, $33 - hlcoord 0, 1 - call Functionb98ba - hlcoord 19, 0 - call Functionb98ba - ld a, $35 - hlcoord 2, 15 - call Functionb989e - ld a, $37 - hlcoord 15, 14 - call Functionb98fc - call Functionb9491 - pop hl - jp Functionb9803 -; b9776 - -Functionb9776: ; b9776 - push bc - ld hl, VTiles2 tile $31 - ld bc, $28 - call Functionb97f8 - ld de, Unknown_b992e - ld c, $8 - call Functionb9915 - ld de, MailMewGFX - ld c, $90 - call Functionb9915 - ld de, Unknown_b9dce - ld c, $8 - call Functionb990c - ld de, Unknown_b9df6 - ld c, $8 - call Functionb990c - call Functionb987b - ld a, $36 - hlcoord 1, 16 - call Functionb98d8 - inc a - hlcoord 15, 14 - call Functionb98fc - inc a - hlcoord 15, 16 - ld [hli], a - inc a - ld [hl], a - ld a, $3f - hlcoord 1, 1 - call Functionb98a8 - ld a, $41 - hlcoord 0, 2 - call Functionb98b5 - ld a, $43 - hlcoord 19, 2 - call Functionb98b5 - ld a, $45 - hlcoord 0, 1 - ld [hl], a - inc a - hlcoord 19, 1 - ld [hl], a - inc a - hlcoord 0, 16 - ld [hl], a - inc a - hlcoord 19, 16 - ld [hl], a - inc a - hlcoord 2, 5 - call Functionb98d4 - inc a - hlcoord 2, 11 - call Functionb98d4 - pop hl - jp Functionb9803 -; b97f8 - -Functionb97f8: ; b97f8 -.asm_b97f8 - xor a - ld [hli], a - ld a, $ff - ld [hli], a - dec bc - ld a, b - or c - jr nz, .asm_b97f8 - ret -; b9803 - -Functionb9803: ; b9803 - ld bc, $2f - ld de, wd002 - ld a, $0 - call GetSRAMBank - call CopyBytes - call CloseSRAM - ld hl, wd023 - ld de, wd050 - ld bc, $a - call CopyBytes - ld a, $50 - ld [wd023], a - ld [wd05a], a - ld de, wd002 - hlcoord 2, 7 - call PlaceString - ld de, wd050 - ld a, [de] - and a - ret z - ld a, [wd1ec] - hlcoord 8, 14 - cp $3 - jr z, .asm_b984b - hlcoord 6, 14 - cp $6 - jr z, .asm_b984b - hlcoord 5, 14 - -.asm_b984b - jp PlaceString -; b984e - -Functionb984e: ; b984e -.asm_b984e - ld a, [hl] - xor $ff - ld [hli], a - dec bc - ld a, b - or c - jr nz, .asm_b984e - ret -; b9858 - -Functionb9858: ; b9858 - hlcoord 0, 0 - ld a, $31 - ld [hli], a - inc a - call Functionb98d8 - inc a - ld [hli], a - inc a - call Functionb98e3 - ld a, $36 - ld [hli], a - inc a - call Functionb98d8 - hlcoord 19, 1 - ld a, $35 - call Functionb98e3 - ld a, $38 - ld [hl], a - ret -; b987b - -Functionb987b: ; b987b - hlcoord 0, 0 - ld a, $31 - ld [hli], a - inc a - call Functionb98d8 - ld [hl], $31 - inc hl - inc a - call Functionb98e3 - ld [hl], $31 - inc hl - inc a - call Functionb98d8 - hlcoord 19, 1 - ld a, $35 - call Functionb98e3 - ld [hl], $31 - ret -; b989e - -Functionb989e: ; b989e - push af - ld b, $7 - jr Functionb98ab - -Functionb98a3: ; b98a3 - push af - ld b, $8 - jr Functionb98ab - -Functionb98a8: ; b98a8 - push af - ld b, $9 - -Functionb98ab: ; b98ab - ld [hli], a - inc a - ld [hli], a - dec a - dec b - jr nz, Functionb98ab - ld [hl], a - pop af - ret -; b98b5 - -Functionb98b5: ; b98b5 - push af - ld b, $7 - jr Functionb98bd - -Functionb98ba: ; b98ba - push af - ld b, $8 - -Functionb98bd: ; b98bd - ld [hl], a - ld de, SCREEN_WIDTH - add hl, de - inc a - ld [hl], a - add hl, de - dec a - dec b - jr nz, Functionb98bd - ld [hl], a - pop af - ret -; b98cc - -Functionb98cc: ; b98cc - ld b, $7 - jr Functionb98de - -Functionb98d0: ; b98d0 - ld b, $d - jr Functionb98de - -Functionb98d4: ; b98d4 - ld b, $10 - jr Functionb98de - -Functionb98d8: ; b98d8 - ld b, $12 - jr Functionb98de - -Functionb98dc: ; b98dc - ld b, $14 - -Functionb98de: ; b98de - ld [hli], a - dec b - jr nz, Functionb98de - ret -; b98e3 - -Functionb98e3: ; b98e3 - ld b, $10 - ld de, SCREEN_WIDTH -.asm_b98e8 - ld [hl], a - add hl, de - dec b - jr nz, .asm_b98e8 - ret -; b98ee - -Functionb98ee: ; b98ee - push af - ld [hli], a - inc a - ld [hl], a - ld bc, $13 - add hl, bc - inc a - ld [hli], a - inc a - ld [hl], a - pop af - ret -; b98fc - -Functionb98fc: ; b98fc - ld [hli], a - inc a - ld [hli], a - inc a - ld [hl], a - ld bc, SCREEN_HEIGHT - add hl, bc - inc a - ld [hli], a - inc a - ld [hli], a - inc a - ld [hl], a - ret -; b990c - -Functionb990c: ; b990c -.asm_b990c - ld a, [de] - inc de - ld [hli], a - xor a - ld [hli], a - dec c - jr nz, .asm_b990c - ret -; b9915 - -Functionb9915: ; b9915 -.asm_b9915 - xor a - ld [hli], a - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .asm_b9915 - ret -; b991e - -Functionb991e: ; b991e -.asm_b991e - ld a, [de] - inc de -rept 2 - ld [hli], a -endr - dec c - jr nz, .asm_b991e - ret -; b9926 - -Unknown_b9926: ; b9926 -INCBIN "gfx/unknown/0b9926.1bpp" - -Unknown_b992e: ; b992e -INCBIN "gfx/unknown/0b992e.1bpp" - -Unknown_b9936: ; b9936 -INCBIN "gfx/unknown/0b9936.1bpp" - -Unknown_b993e: ; b993e -INCBIN "gfx/unknown/0b993e.1bpp" - -Unknown_b9946: ; b9946 -INCBIN "gfx/unknown/0b9946.1bpp" - -Unknown_b994e: ; b994e -INCBIN "gfx/unknown/0b994e.1bpp" - -Unknown_b995e: ; b995e -INCBIN "gfx/unknown/0b995e.1bpp" - -Unknown_b9966: ; b9966 -INCBIN "gfx/unknown/0b9966.1bpp" - -Unknown_b996e: ; b996e -INCBIN "gfx/unknown/0b996e.1bpp" - -Unknown_b9976: ; b9976 -INCBIN "gfx/unknown/0b9976.1bpp" - -Unknown_b997e: ; b997e -INCBIN "gfx/unknown/0b997e.1bpp" - -Unknown_b998e: ; b998e -INCBIN "gfx/unknown/0b998e.1bpp" - -Unknown_b9996: ; b9996 -INCBIN "gfx/unknown/0b9996.1bpp" - -MailDratiniGFX: ; b99c6 -INCBIN "gfx/unknown/0b99c6.1bpp" - -MailPoliwagGFX: ; b99f6 -INCBIN "gfx/unknown/0b99f6.1bpp" - -MailLaprasGFX: ; b9a26 -INCBIN "gfx/unknown/0b9a26.1bpp" - -MailPikaGFX: ; b9a56 -INCBIN "gfx/unknown/0b9a56.1bpp" - -MailDittoGFX: ; b9a86 -INCBIN "gfx/unknown/0b9a86.1bpp" - -MailMewGFX: ; b9ab6 -INCBIN "gfx/unknown/0b9ab6.1bpp" - -MailDragoniteGFX: ; b9b46 -INCBIN "gfx/unknown/0b9b46.1bpp" - -MailSentretGFX: ; b9bce -INCBIN "gfx/unknown/0b9bce.1bpp" - -Unknown_b9bee: ; b9bee -INCBIN "gfx/unknown/0b9bee.1bpp" - -Unknown_b9bfe: ; b9bfe -INCBIN "gfx/unknown/0b9bfe.1bpp" - -MailOddishGFX: ; b9c1e -INCBIN "gfx/unknown/0b9c1e.1bpp" - -Unknown_b9c3e: ; b9c3e -INCBIN "gfx/unknown/0b9c3e.1bpp" - -Unknown_b9c5e: ; b9c5e -INCBIN "gfx/unknown/0b9c5e.1bpp" - -Unknown_b9c7e: ; b9c7e -INCBIN "gfx/unknown/0b9c7e.1bpp" - -Unknown_b9c96: ; b9c96 -INCBIN "gfx/unknown/0b9c96.1bpp" - -Unknown_b9c9e: ; b9c9e -INCBIN "gfx/unknown/0b9c9e.1bpp" - -Unknown_b9cbe: ; b9cbe -INCBIN "gfx/unknown/0b9cbe.1bpp" - -Unknown_b9cde: ; b9cde -INCBIN "gfx/unknown/0b9cde.1bpp" - -Unknown_b9cfe: ; b9cfe -INCBIN "gfx/unknown/0b9cfe.1bpp" - -MailCloudGFX: ; b9d16 -INCBIN "gfx/unknown/0b9d16.1bpp" - -Unknown_b9d26: ; b9d26 -INCBIN "gfx/unknown/0b9d26.1bpp" - -Unknown_b9d3e: ; b9d3e -INCBIN "gfx/unknown/0b9d3e.1bpp" - -Unknown_b9d46: ; b9d46 -INCBIN "gfx/unknown/0b9d46.1bpp" - -Unknown_b9d76: ; b9d76 -INCBIN "gfx/unknown/0b9d76.1bpp" - -Unknown_b9d86: ; b9d86 -INCBIN "gfx/unknown/0b9d86.1bpp" - -Unknown_b9db6: ; b9db6 -INCBIN "gfx/unknown/0b9db6.1bpp" - -Unknown_b9dc6: ; b9dc6 -INCBIN "gfx/unknown/0b9dc6.1bpp" - -Unknown_b9dce: ; b9dce -INCBIN "gfx/unknown/0b9dce.1bpp" - -Unknown_b9df6: ; b9df6 -INCBIN "gfx/unknown/0b9df6.1bpp" - -Unknown_b9e06: ; b9e06 -INCBIN "gfx/unknown/0b9e06.1bpp" - -Unknown_b9e26: ; b9e26 -INCBIN "gfx/unknown/0b9e26.1bpp" - -Unknown_b9e4e: ; b9e4e -INCBIN "gfx/unknown/0b9e4e.1bpp" - - -ItemIsMail: ; b9e76 - ld a, d - ld hl, .items - ld de, 1 - jp IsInArray -; b9e80 - -.items - db FLOWER_MAIL - db SURF_MAIL - db LITEBLUEMAIL - db PORTRAITMAIL - db LOVELY_MAIL - db EON_MAIL - db MORPH_MAIL - db BLUESKY_MAIL - db MUSIC_MAIL - db MIRAGE_MAIL - db $ff -; b9e8b - +INCLUDE "gfx/mail.asm" SECTION "bank2F", ROMX, BANK[$2F] @@ -47206,7 +22713,7 @@ StartBattleWithMapTrainerScript: ; 0xbe68a startbattle returnafterbattle trainerstatus SET_FLAG - loadvar wd04d, -1 + loadvar wRunningTrainerBattleScript, -1 AlreadyBeatenTrainerScript: scripttalkafter @@ -47364,7 +22871,7 @@ DisplayCaughtContestMonStats: ; cc000 ld [Options], a call WaitBGMap - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call SetPalettes ret @@ -47601,4039 +23108,30 @@ CopyrightGFX:: ; e4000 INCBIN "gfx/misc/copyright.2bpp" ; e41d0 -_OptionsMenu: ; e41d0 - ld hl, hInMenu - ld a, [hl] - push af - ld [hl], $1 - call ClearBGPalettes - hlcoord 0, 0 - ld b, $10 - ld c, $12 - call TextBox - hlcoord 2, 2 - ld de, StringOptions - call PlaceString - xor a - ld [wJumptableIndex], a - ld c, $6 ;number of items on the menu minus 1 (for cancel) -.asm_e41f3 ;this next will display the settings of each option when the menu is opened - push bc - xor a - ld [hJoyLast], a - call GetOptionPointer - pop bc - ld hl, wJumptableIndex - inc [hl] - dec c - jr nz, .asm_e41f3 - call Functione4512 - xor a - ld [wJumptableIndex], a - inc a - ld [hBGMapMode], a - call WaitBGMap - ld b, $8 - call GetSGBLayout - call SetPalettes -.asm_e4217 - call JoyTextDelay - ld a, [hJoyPressed] - and START | B_BUTTON - jr nz, .ExitOptions - call OptionsControl - jr c, .asm_e422a - call GetOptionPointer - jr c, .ExitOptions - -.asm_e422a - call Functione455c - ld c, 3 - call DelayFrames - jr .asm_e4217 - -.ExitOptions - ld de, SFX_TRANSACTION - call PlaySFX - call WaitSFX - pop af - ld [hInMenu], a - ret -; e4241 - -StringOptions: ; e4241 - db "TEXT SPEED", $22 - db " :", $22 - db "BATTLE SCENE", $22 - db " :", $22 - db "BATTLE STYLE", $22 - db " :", $22 - db "SOUND", $22 - db " :", $22 - db "PRINT", $22 - db " :", $22 - db "MENU ACCOUNT", $22 - db " :", $22 - db "FRAME", $22 - db " :TYPE", $22 - db "CANCEL@" -; e42d6 - - -GetOptionPointer: ; e42d6 - ld a, [wJumptableIndex] ;load the cursor position to a - ld e, a ;copy it to de - ld d, 0 - ld hl, .Pointers -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] ;jump to the code of the current highlighted item -; e42e5 - -.Pointers - dw Options_TextSpeed - dw Options_BattleScene - dw Options_BattleStyle - dw Options_Sound - dw Options_Print - dw Options_MenuAccount - dw Options_Frame - dw Options_Cancel -; e42f5 - - -Options_TextSpeed: ; e42f5 - call GetTextSpeed - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr z, .NonePressed - ld a, c ;right pressed - cp $2 - jr c, .Increase - ld c, $ff - -.Increase - inc c - ld a, e - jr .Save - -.LeftPressed - ld a, c - and a - jr nz, .Decrease - ld c, $3 - -.Decrease - dec c - ld a, d - -.Save - ld b, a - ld a, [Options] - and $f0 - or b - ld [Options], a - -.NonePressed - ld b, 0 - ld hl, .Strings -rept 2 - add hl, bc -endr - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 11, 3 - call PlaceString - and a - ret -; e4331 - -.Strings - dw .Fast - dw .Mid - dw .Slow - -.Fast - db "FAST@" -.Mid - db "MID @" -.Slow - db "SLOW@" -; e4346 - - -GetTextSpeed: ; e4346 - ld a, [Options] ;This converts the number of frames, to 0,1,2 representing speed - and 7 - cp 5 ;5 frames of delay is slow - jr z, .slow - cp 1 ;1 frame of delay is fast - jr z, .fast - ld c, 1 ;set it to mid if not one of the above - lb de, 1, 5 - ret - -.slow - ld c, 2 - lb de, 3, 1 - ret - -.fast - ld c, 0 - lb de, 5, 3 - ret -; e4365 - - -Options_BattleScene: ; e4365 - ld hl, Options - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr z, .NonePressed - bit 7, [hl] - jr nz, .ToggleOn - jr .ToggleOff - -.LeftPressed - bit 7, [hl] - jr z, .ToggleOff - jr .ToggleOn - -.NonePressed - bit 7, [hl] - jr z, .ToggleOn - jr .ToggleOff - -.ToggleOn - res 7, [hl] - ld de, .On - jr .Display - -.ToggleOff - set 7, [hl] - ld de, .Off - -.Display - hlcoord 11, 5 - call PlaceString - and a - ret -; e4398 - -.On - db "ON @" -.Off - db "OFF@" -; e43a0 - - -Options_BattleStyle: ; e43a0 - ld hl, Options - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr z, .NonePressed - bit 6, [hl] - jr nz, .ToggleShift - jr .ToggleSet - -.LeftPressed - bit 6, [hl] - jr z, .ToggleSet - jr .ToggleShift - -.NonePressed - bit 6, [hl] - jr nz, .ToggleSet - -.ToggleShift - res 6, [hl] - ld de, .Shift - jr .Display - -.ToggleSet - set 6, [hl] - ld de, .Set - -.Display - hlcoord 11, 7 - call PlaceString - and a - ret -; e43d1 - -.Shift - db "SHIFT@" -.Set - db "SET @" -; e43dd - - -Options_Sound: ; e43dd - ld hl, Options - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr z, .NonePressed - bit 5, [hl] - jr nz, .SetMono - jr .SetStereo - -.LeftPressed - bit 5, [hl] - jr z, .SetStereo - jr .SetMono - -.NonePressed - bit 5, [hl] - jr nz, .ToggleStereo - jr .ToggleMono - -.SetMono - res 5, [hl] - call RestartMapMusic - -.ToggleMono - ld de, .Mono - jr .Display - -.SetStereo - set 5, [hl] - call RestartMapMusic - -.ToggleStereo - ld de, .Stereo - -.Display - hlcoord 11, 9 - call PlaceString - and a - ret -; e4416 - -.Mono - db "MONO @" -.Stereo - db "STEREO@" -; e4424 - - -Options_Print: ; e4424 - call GetPrinterSetting - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr z, .NonePressed - ld a, c - cp $4 - jr c, .Increase - ld c, $ff - -.Increase - inc c - ld a, e - jr .Save - -.LeftPressed - ld a, c - and a - jr nz, .Decrease - ld c, $5 - -.Decrease - dec c - ld a, d - -.Save - ld b, a - ld [GBPrinter], a - -.NonePressed - ld b, $0 - ld hl, .Strings -rept 2 - add hl, bc -endr - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 11, 11 - call PlaceString - and a - ret -; e445a - -.Strings - dw .Lightest - dw .Lighter - dw .Normal - dw .Darker - dw .Darkest - -.Lightest - db "LIGHTEST@" -.Lighter - db "LIGHTER @" -.Normal - db "NORMAL @" -.Darker - db "DARKER @" -.Darkest - db "DARKEST @" -; e4491 - - -GetPrinterSetting: ; e4491 - ld a, [GBPrinter] ;converts from the stored printer setting to 0,1,2,3,4 - and a - jr z, .IsLightest - cp $20 - jr z, .IsLight - cp $60 - jr z, .IsDark - cp $7f - jr z, .IsDarkest - ld c, $2 ;normal if none of the above - ld de, $2060 ;the 2 values next to this setting - ret - -.IsLightest - ld c, $0 - ld de, $7f20 ;the 2 values next to this setting - ret - -.IsLight - ld c, $1 - ld de, $40 ;the 2 values next to this setting - ret - -.IsDark - ld c, $3 - ld de, $407f ;the 2 values next to this setting - ret - -.IsDarkest - ld c, $4 - ld de, $6000 ;the 2 values next to this setting - ret -; e44c1 - -Options_MenuAccount: ; e44c1 - ld hl, Options2 - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr z, .NonePressed - bit 0, [hl] - jr nz, .ToggleOff - jr .ToggleOn - -.LeftPressed - bit 0, [hl] - jr z, .ToggleOn - jr .ToggleOff - -.NonePressed - bit 0, [hl] - jr nz, .ToggleOn - -.ToggleOff - res 0, [hl] - ld de, .Off - jr .Display - -.ToggleOn - set 0, [hl] - ld de, .On - -.Display - hlcoord 11, 13 - call PlaceString - and a - ret -; e44f2 - -.Off - db "OFF@" -.On - db "ON @" -; e44fa - - -Options_Frame: ; e44fa - ld hl, TextBoxFrame - ld a, [hJoyPressed] - bit 5, a - jr nz, .LeftPressed - bit 4, a - jr nz, .RightPressed - and a - ret - -.RightPressed - ld a, [hl] - inc a - jr .Save - -.LeftPressed - ld a, [hl] - dec a - -.Save - and $7 - ld [hl], a - ; fallthrough -; e4512 - -Functione4512: ; e4512 - ld a, [TextBoxFrame] - hlcoord 16, 15 ;where on the screen the number is drawn - add "1" - ld [hl], a - call LoadFontsExtra - and a - ret -; e4520 - -Options_Cancel: ; e4520 - ld a, [hJoyPressed] - and A_BUTTON - jr nz, .Exit - and a - ret - -.Exit - scf - ret -; e452a - -OptionsControl: ; e452a - ld hl, wJumptableIndex - ld a, [hJoyLast] - cp D_DOWN - jr z, .DownPressed - cp D_UP - jr z, .UpPressed - and a - ret - -.DownPressed - ld a, [hl] ;load the cursor position to a - cp $7 ;maximum number of items in option menu - jr nz, .CheckFive - ld [hl], $0 - scf - ret - -.CheckFive ;I have no idea why this exists... - cp $5 - jr nz, .Increase - ld [hl], $5 - -.Increase - inc [hl] - scf - ret - -.UpPressed - ld a, [hl] - cp $6 - jr nz, .NotSix - ld [hl], $5 ;Another thing where I'm not sure why it exists - scf - ret - -.NotSix - and a - jr nz, .Decrease - ld [hl], $8 ;number of option items +1 - -.Decrease - dec [hl] - scf - ret -; e455c - -Functione455c: ; e455c - hlcoord 1, 1 - ld de, SCREEN_WIDTH - ld c, $10 -.asm_e4564 - ld [hl], $7f - add hl, de - dec c - jr nz, .asm_e4564 - hlcoord 1, 2 - ld bc, $28 - ld a, [wJumptableIndex] - call AddNTimes - ld [hl], $ed - ret -; e4579 - - -Functione4579: ; e4579 - ld de, MUSIC_NONE - call PlayMusic - call ClearBGPalettes - call ClearTileMap - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - xor a - ld [hBGMapAddress], a - ld [hJoyDown], a - ld [hSCX], a - ld [hSCY], a - ld a, $90 - ld [hWY], a - call WaitBGMap - ld b, $19 - call GetSGBLayout - call SetPalettes - ld c, 10 - call DelayFrames - callab Copyright - call WaitBGMap - ld c, 100 - call DelayFrames - call ClearTileMap - callba GBCOnlyScreen - call Functione45e8 -.joy_loop - call JoyTextDelay - ld a, [hJoyLast] - and BUTTONS - jr nz, .pressed_button - ld a, [wJumptableIndex] - bit 7, a - jr nz, .finish - call PlaceGameFreakPresents - callba Function8cf69 - call DelayFrame - jr .joy_loop - -.pressed_button - call Functione465e - scf - ret - -.finish - call Functione465e - and a - ret -; e45e8 - -Functione45e8: ; e45e8 - ld de, GameFreakLogo - ld hl, VTiles2 - lb bc, BANK(GameFreakLogo), $1c - call Get1bpp - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - ld hl, IntroLogoGFX - ld de, w6_d000 - ld a, BANK(IntroLogoGFX) - call FarDecompress - ld hl, VTiles0 - ld de, w6_d000 - ld bc, $180 - call Request2bpp - ld hl, VTiles1 - ld de, w6_d000 + $800 - ld bc, $180 - call Request2bpp - pop af - ld [rSVBK], a - callba Function8cf53 - ld de, $5458 - ld a, $3 - call Function3b2a - ld hl, $7 - add hl, bc - ld [hl], $a0 - ld hl, $c - add hl, bc - ld [hl], $60 - ld hl, $d - add hl, bc - ld [hl], $30 - xor a - ld [wJumptableIndex], a - ld [wcf64], a - ld [wcf65], a - ld [hSCX], a - ld [hSCY], a - ld a, $1 - ld [hBGMapMode], a - ld a, $90 - ld [hWY], a - ld de, $e4e4 - call DmgToCgbObjPals - ret -; e465e - -Functione465e: ; e465e - callba Function8cf53 - call ClearTileMap - call ClearSprites - ld c, 16 - call DelayFrames - ret -; e4670 - -PlaceGameFreakPresents: ; e4670 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; e467f - -.jumptable: ; e467f - dw PlaceGameFreakPresents_0 - dw PlaceGameFreakPresents_1 - dw PlaceGameFreakPresents_2 - dw PlaceGameFreakPresents_3 -; e4687 - -PlaceGameFreakPresents_AdvanceIndex: ; e4687 - ld hl, wJumptableIndex - inc [hl] - ret -; e468c - -PlaceGameFreakPresents_0: ; e468c - ret -; e468d - -PlaceGameFreakPresents_1: ; e468d - ld hl, wcf65 - ld a, [hl] - cp $20 - jr nc, .PlaceGameFreak - inc [hl] - ret - -.PlaceGameFreak - ld [hl], 0 - ld hl, .GAME_FREAK - decoord 5, 10 - ld bc, .end - .GAME_FREAK - call CopyBytes - call PlaceGameFreakPresents_AdvanceIndex - ld de, SFX_GAME_FREAK_PRESENTS - call PlaySFX - ret -; e46af - -.GAME_FREAK - ; G A M E _ F R E A K - db 0, 1, 2, 3, 13, 4, 5, 3, 1, 6 -.end - db "@" -; e46ba - -PlaceGameFreakPresents_2: ; e46ba - ld hl, wcf65 - ld a, [hl] - cp $40 - jr nc, .place_presents - inc [hl] - ret - -.place_presents - ld [hl], 0 - ld hl, .presents - decoord 7,11 - ld bc, .end - .presents - call CopyBytes - call PlaceGameFreakPresents_AdvanceIndex - ret -; e46d6 - -.presents - db 7, 8, 9, 10, 11, 12 -.end - db "@" -; e46dd - -PlaceGameFreakPresents_3: ; e46dd - ld hl, wcf65 - ld a, [hl] - cp $80 - jr nc, .finish - inc [hl] - ret - -.finish - ld hl, wJumptableIndex - set 7, [hl] - ret -; e46ed - - - -GameFreakLogoJumper: ; e46ed (39:46ed) - ld hl, $b - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, GameFreakLogoScenes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -GameFreakLogoScenes: ; e46fd (39:46fd) - dw GameFreakLogoScene1 - dw GameFreakLogoScene2 - dw GameFreakLogoScene3 - dw GameFreakLogoScene4 - dw GameFreakLogoScene5 - - -GameFreakLogoScene1: ; e4707 (39:4707) - ld hl, $b - add hl, bc - inc [hl] - ret - -GameFreakLogoScene2: ; e470d (39:470d) - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_e4747 - ld d, a - ld hl, $d - add hl, bc - ld a, [hl] - and $3f - cp $20 - jr nc, .asm_e4723 - add $20 -.asm_e4723 - ld e, a - callba Functionce765 - ld hl, $7 - add hl, bc - ld [hl], e - ld hl, $d - add hl, bc - ld a, [hl] - dec [hl] - and $1f - ret nz - ld hl, $c - add hl, bc - ld a, [hl] - sub $30 - ld [hl], a - ld de, SFX_DITTO_BOUNCE - call PlaySFX - ret -.asm_e4747 - ld hl, $b - add hl, bc - inc [hl] - ld hl, $d - add hl, bc - ld [hl], $0 - ld de, SFX_DITTO_POP_UP - call PlaySFX - ret - -GameFreakLogoScene3: ; e4759 (39:4759) - ld hl, $d - add hl, bc - ld a, [hl] - cp $20 - jr nc, .asm_e4764 - inc [hl] - ret -.asm_e4764 - ld hl, $b - add hl, bc - inc [hl] - ld hl, $d - add hl, bc - ld [hl], $0 - ld de, SFX_DITTO_TRANSFORM - call PlaySFX - ret - -GameFreakLogoScene4: ; e4776 (39:4776) - ld hl, $d - add hl, bc - ld a, [hl] - cp $40 - jr z, .asm_e47a3 - inc [hl] - srl a - srl a - ld e, a - ld d, $0 - ld hl, GameFreakLogoPalettes -rept 2 - add hl, de -endr - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, [hli] - ld [OBPals + 12], a - ld a, [hli] - ld [OBPals + 13], a - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -.asm_e47a3 - ld hl, $b - add hl, bc - inc [hl] - call PlaceGameFreakPresents_AdvanceIndex - -GameFreakLogoScene5: ; e47ab (39:47ab) - ret -; e47ac (39:47ac) - -GameFreakLogoPalettes: ; e47ac -; Ditto's color as it turns into the Game Freak logo. -; Fade from pink to orange. -; One color per step. - RGB 23, 12, 28 - RGB 23, 12, 27 - RGB 23, 13, 26 - RGB 23, 13, 24 - RGB 24, 14, 22 - RGB 24, 14, 20 - RGB 24, 15, 18 - RGB 24, 15, 16 - RGB 25, 16, 14 - RGB 25, 16, 12 - RGB 25, 17, 10 - RGB 25, 17, 08 - RGB 26, 18, 06 - RGB 26, 18, 04 - RGB 26, 19, 02 - RGB 26, 19, 00 -;' e47cc - -GameFreakLogo: ; e47cc -INCBIN "gfx/splash/logo.1bpp" -; e48ac - -CrystalIntro: ; e48ac - ld a, [rSVBK] - push af - ld a, 5 - ld [rSVBK], a - ld a, [hInMenu] - push af - ld a, [hVBlank] - push af - call Functione4901 -.loop: ; e48bc - call JoyTextDelay - ld a, [hJoyLast] - and BUTTONS - jr nz, .ShutOffMusic - ld a, [wJumptableIndex] - bit 7, a - jr nz, .done - call IntroSceneJumper - callba Function8cf69 - call DelayFrame - jp .loop - -.ShutOffMusic - ld de, MUSIC_NONE - call PlayMusic - -.done - call ClearBGPalettes - call ClearSprites - call ClearTileMap - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - pop af - ld [hVBlank], a - pop af - ld [hInMenu], a - pop af - ld [rSVBK], a - ret -; e4901 - -Functione4901: ; e4901 - xor a - ld [hVBlank], a - ld a, $1 - ld [hInMenu], a - xor a - ld [hMapAnims], a - ld [wJumptableIndex], a - ret -; e490f - -IntroSceneJumper: ; e490f - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, IntroScenes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; e491e - - -IntroScenes: ; e491e (39:491e) - dw IntroScene1 - dw IntroScene2 - dw IntroScene3 - dw IntroScene4 - dw IntroScene5 - dw IntroScene6 - dw IntroScene7 - dw IntroScene8 - dw IntroScene9 - dw IntroScene10 - dw IntroScene11 - dw IntroScene12 - dw IntroScene13 - dw IntroScene14 - dw IntroScene15 - dw IntroScene16 - dw IntroScene17 - dw IntroScene18 - dw IntroScene19 - dw IntroScene20 - dw IntroScene21 - dw IntroScene22 - dw IntroScene23 - dw IntroScene24 - dw IntroScene25 - dw IntroScene26 - dw IntroScene27 - dw IntroScene28 - - -NextIntroScene: ; e4956 (39:4956) - ld hl, wJumptableIndex - inc [hl] - ret - -IntroScene1: ; e495b (39:495b) -; Setup the next scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap001 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroPulseGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld hl, IntroTilemap002 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_365ad - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_365ad - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene2: ; e49d6 (39:49d6) -; First Unown (A) fades in, pulses, then fades out. - ld hl, wIntroSceneFrameCounter - ld a, [hl] - inc [hl] - cp $80 - jr nc, .endscene - cp $60 - jr nz, .DontPlaySound - push af - ld de, $5858 - call Functione51dc - ld de, SFX_INTRO_UNOWN_1 - call PlaySFX - pop af -.DontPlaySound - ld [wcf65], a - xor a - call Functione5223 - ret -.endscene - call NextIntroScene - ret - -IntroScene3: ; e49fd (39:49fd) -; More setup. Transition to the outdoor scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroBackgroundGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e5edd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e5edd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call Functione5516 - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - call NextIntroScene - ret - -IntroScene4: ; e4a69 (39:4a69) -; Scroll the outdoor panorama for a bit. - call Functione552f - ld hl, wIntroSceneFrameCounter - ld a, [hl] - cp $80 - jr z, .endscene - inc [hl] - ret -.endscene - call NextIntroScene - ret - -IntroScene5: ; e4a7a (39:4a7a) -; Go back to the Unown. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld [hLCDStatCustom], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap005 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroPulseGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld hl, IntroTilemap006 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_365ad - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_365ad - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene6: ; e4af7 (39:4af7) -; Two more Unown (I, H) fade in. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr nc, .endscene - cp $60 - jr z, .SecondUnown - cp $40 - jr nc, .StopUnown - cp $20 - jr z, .FirstUnown - jr .NoUnown -.FirstUnown - push af - ld de, $3878 - call Functione51dc - ld de, SFX_INTRO_UNOWN_2 - call PlaySFX - pop af -.NoUnown - ld [wcf65], a - xor a - call Functione5223 - ret -.SecondUnown - push af - ld de, $7030 - call Functione51dc - ld de, SFX_INTRO_UNOWN_1 - call PlaySFX - pop af -.StopUnown - ld [wcf65], a - ld a, $1 - call Functione5223 - ret -.endscene - call NextIntroScene - ret - -IntroScene7: ; e4b3f (39:4b3f) -; Back to the outdoor scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 - call Functione54fa - ld hl, IntroPichuWooperGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneRunGFX - ld de, VTiles0 tile $00 - call Functione54de - ld hl, IntroBackgroundGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e5edd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e5edd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call Functione5516 - callba Function8cf53 - ld de, $6cd8 - ld a, $26 - call Function3b2a - ld a, $f0 - ld [wc3c0], a - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene8: ; e4bd3 (39:4bd3) -; Scroll the scene, then show Suicune running across the screen. - ld hl, wIntroSceneFrameCounter - ld a, [hl] - inc [hl] - cp $40 - jr z, .asm_e4be2 - jr nc, .asm_e4be8 - call Functione552f - ret -.asm_e4be2 - ld de, SFX_INTRO_SUICUNE_3 - call PlaySFX -.asm_e4be8 - ld a, [wc3c0] - and a - jr z, .asm_e4bf4 - sub $8 - ld [wc3c0], a - ret -.asm_e4bf4 - ld de, SFX_INTRO_SUICUNE_2 - call PlaySFX - callba Function8d03d - call NextIntroScene - ret - -IntroScene9: ; e4c04 (39:4c04) -; Set up the next scene (same bg). - xor a - ld [hLCDStatCustom], a - call ClearSprites - hlcoord 0, 0, AttrMap - ld bc, $f0 - ld a, $1 - call ByteFill - ld bc, $3c - ld a, $2 - call ByteFill - ld bc, $3c - ld a, $3 - call ByteFill - ld a, $2 - ld [hBGMapMode], a - call DelayFrame - call DelayFrame - call DelayFrame - ld a, $c - ld [hBGMapAddress], a - call DelayFrame - call DelayFrame - call DelayFrame - xor a - ld [hBGMapMode], a - ld [hBGMapAddress], a - ld [wc3c0], a - xor a - ld [wcf64], a - call NextIntroScene - ret - -IntroScene10: ; e4c4f (39:4c4f) -; Wooper and Pichu enter. - call Functione546d - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $c0 - jr z, .done - cp $20 - jr z, .wooper - cp $40 - jr z, .pichu - ret - -.pichu - lb de, $a9, $80 - ld a, $27 - call Function3b2a - ld de, SFX_INTRO_PICHU - call PlaySFX - ret - -.wooper - lb de, $b0, $30 - ld a, $28 - call Function3b2a - ld de, SFX_INTRO_PICHU - call PlaySFX - ret -.done - call NextIntroScene - ret - -IntroScene11: ; e4c86 (39:4c86) -; Back to Unown again. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld [hLCDStatCustom], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap007 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap008 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_365ad - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_365ad - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene12: ; e4cfa (39:4cfa) -; Even more Unown. - call Functione4d36 - ld hl, wIntroSceneFrameCounter - ld a, [hl] - inc [hl] - cp $c0 - jr nc, .asm_e4d32 - cp $80 - jr nc, .asm_e4d1d - ld c, a - and $1f - sla a - ld [wcf65], a - ld a, c - and $e0 - srl a - swap a - call Functione5223 - ret -.asm_e4d1d - ld c, a - and $f - sla a - sla a - ld [wcf65], a - ld a, c - and $70 - or $40 - swap a - call Functione5223 - ret -.asm_e4d32 - call NextIntroScene - ret - -Functione4d36: ; e4d36 (39:4d36) - ld a, [wIntroSceneFrameCounter] - ld c, a - ld hl, .UnownSounds -.loop - ld a, [hli] - cp -1 - ret z - cp c - jr z, .playsound -rept 2 - inc hl -endr - jr .loop -.playsound - ld a, [hli] - ld d, [hl] - ld e, a - push de - call SFXChannelsOff - pop de - call PlaySFX - ret -; e4d54 (39:4d54) - -.UnownSounds: ; e4d54 - dbw $00, SFX_INTRO_UNOWN_3 - dbw $20, SFX_INTRO_UNOWN_2 - dbw $40, SFX_INTRO_UNOWN_1 - dbw $60, SFX_INTRO_UNOWN_2 - dbw $80, SFX_INTRO_UNOWN_3 - dbw $90, SFX_INTRO_UNOWN_2 - dbw $a0, SFX_INTRO_UNOWN_1 - dbw $b0, SFX_INTRO_UNOWN_2 - db $ff -; e4d6d - -IntroScene13: ; e4d6d (39:4d6d) -; Switch scenes again. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneRunGFX - ld de, VTiles0 tile $00 - call Functione54de - ld hl, IntroBackgroundGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e5edd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e5edd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - lb de, $6c, $58 - ld a, $26 - call Function3b2a - ld de, MUSIC_CRYSTAL_OPENING - call PlayMusic - xor a - ld [wc3c0], a - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene14: ; e4dfa (39:4dfa) -; Suicune runs then jumps. - ld a, [hSCX] - sub 10 - ld [hSCX], a - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr z, .done - cp $60 - jr z, .jump - jr nc, .asm_e4e1a - cp $40 - jr nc, .asm_e4e33 - ret - -.jump - ld de, SFX_INTRO_SUICUNE_4 - call PlaySFX - -.asm_e4e1a - ld a, $1 - ld [wcf65], a - ld a, [wc3c0] - cp $88 - jr c, .asm_e4e2c - sub $8 - ld [wc3c0], a - ret - -.asm_e4e2c - callba Function8d03d - ret - -.asm_e4e33 - ld a, [wc3c0] - sub $2 - ld [wc3c0], a - ret - -.done - call NextIntroScene - ret - -IntroScene15: ; e4e40 (39:4e40) -; Transition to a new scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap009 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneJumpGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroUnownBackGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld de, GFX_e7a5d - ld hl, VTiles1 tile $00 - lb bc, BANK(GFX_e7a5d), 1 - call Request2bpp - ld hl, IntroTilemap010 - ld de, VBGMap0 tile $00 - call Functione54fa - call Functione541b - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e77dd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e77dd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld a, $90 - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - lb de, $40, $28 - ld a, $2a - call Function3b2a - lb de, $60, $00 - ld a, $2b - call Function3b2a - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene16: ; e4edc (39:4edc) -; Suicune shows its face. An Unown appears in front. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr nc, .done - call Functione5441 - ld a, [hSCY] - and a - ret z - add 8 - ld [hSCY], a - ret -.done - call NextIntroScene - ret - -IntroScene17: ; e4ef5 (39:4ef5) -; ... - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap011 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneCloseGFX - ld de, VTiles1 tile $00 - call Functione54de - ld hl, IntroTilemap012 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e6d6d - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e6d6d - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene18: ; e4f67 (39:4f67) -; Suicune close up. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $60 - jr nc, .done - ld a, [hSCX] - cp $60 - ret z - add 8 - ld [hSCX], a - ret -.done - call NextIntroScene - ret - -IntroScene19: ; e4f7e (39:4f7e) -; More setup. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap013 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneBackGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroUnownsGFX - ld de, VTiles1 tile $00 - call Functione54c2 - ld de, GFX_e7a5d - ld hl, VTiles1 tile $7f - lb bc, BANK(GFX_e7a5d), 1 - call Request2bpp - ld hl, IntroTilemap014 - ld de, VBGMap0 tile $00 - call Functione54fa - call Functione541b - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e77dd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e77dd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld a, $d8 - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - ld hl, wc300 - xor a - ld [hli], a - ld [hl], $7f - call Functione549e - lb de, $60, $00 - ld a, $2b - call Function3b2a - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene20: ; e5019 (39:5019) -; Suicune running away. A bunch of Unown appear. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $98 - jr nc, .asm_e5059 - cp $58 - ret nc - cp $40 - jr nc, .asm_e5032 - cp $28 - ret nc - ld a, [hSCY] - inc a - ld [hSCY], a - ret - -.asm_e5032 - sub $18 - ld c, a - and $3 - cp $3 - ret nz - ld a, c - and $1c - srl a - srl a - ld [wcf65], a - xor a - call Functione5348 - ret -; e5049 (39:5049) - - ld a, c - and $1c - srl a - srl a - ld [wcf65], a - ld a, 1 - call Functione5348 - ret - -.asm_e5059 - call NextIntroScene - ret - -IntroScene21: ; e505d (39:505d) -; Suicune gets more distant and turns black. - call Functione5451 - ld c, 3 - call DelayFrames - xor a - ld [hBGMapMode], a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene22: ; e5072 (39:5072) - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $8 - jr nc, .done - ret -.done - callba Function8d03d - call NextIntroScene - ret - -IntroScene23: ; e5086 (39:5086) - xor a - ld [wcf64], a - call NextIntroScene - ret - -IntroScene24: ; e508e (39:508e) -; Fade to white. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $20 - jr nc, .done - - ld c, a - and $3 - ret nz - ld a, c - and $1c - sla a - call Functione5172 - ret - -.done - ld a, $40 - ld [wcf64], a - call NextIntroScene - ret - -IntroScene25: ; e50ad (39:50ad) -; Wait around a bit. - ld a, [wcf64] - dec a - jr z, .done - ld [wcf64], a - ret -.done - call NextIntroScene - ret - -IntroScene26: ; e50bb (39:50bb) -; Load the final scene. - call ClearBGPalettes - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap015 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroCrystalUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap017 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e679d - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e679d - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene27: ; e512d (39:512d) -; Spell out C R Y S T A L with Unown. - ld hl, wcf65 - inc [hl] - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr nc, .done - - ld c, a - and $f - ld [wcf65], a - ld a, c - and $70 - swap a - call Functione539d - ret - -.done - call NextIntroScene - ld a, $80 - ld [wcf64], a - ret - -IntroScene28: ; e5152 (39:5152) -; Cut out when the music ends, and lead into the title screen. - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - cp $18 - jr z, .clear - cp $8 - ret nz - - ld de, SFX_UNKNOWN_CB - call PlaySFX - ret - -.clear - call ClearBGPalettes - ret - -.done - ld hl, wJumptableIndex - set 7, [hl] - ret - - -Functione5172: ; e5172 (39:5172) - ld hl, Unknown_e519c - add l - ld l, a - ld a, $0 - adc h - ld h, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld de, BGPals - ld b, $8 -.asm_e5187 - push hl - ld c, $8 -.asm_e518a - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_e518a - pop hl - dec b - jr nz, .asm_e5187 - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e519c (39:519c) - -Unknown_e519c: ; e519c -; Fade to white. - RGB 24, 12, 09 - RGB 31, 31, 31 - RGB 12, 00, 31 - RGB 00, 00, 00 - - RGB 31, 19, 05 - RGB 31, 31, 31 - RGB 15, 05, 31 - RGB 07, 07, 07 - - RGB 31, 21, 09 - RGB 31, 31, 31 - RGB 18, 09, 31 - RGB 11, 11, 11 - - RGB 31, 23, 13 - RGB 31, 31, 31 - RGB 21, 13, 31 - RGB 15, 15, 15 - - RGB 31, 25, 17 - RGB 31, 31, 31 - RGB 25, 17, 31 - RGB 19, 19, 19 - - RGB 31, 27, 21 - RGB 31, 31, 31 - RGB 27, 21, 31 - RGB 23, 23, 23 - - RGB 31, 29, 25 - RGB 31, 31, 31 - RGB 29, 26, 31 - RGB 27, 27, 27 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 -; e51dc - -Functione51dc: ; e51dc (39:51dc) - push de - ld a, $29 - call Function3b2a - ld hl, $c - add hl, bc - ld [hl], $8 - ld a, $3c - call Function3b3c - pop de - - push de - ld a, $29 - call Function3b2a - ld hl, $c - add hl, bc - ld [hl], $18 - ld a, $3b - call Function3b3c - pop de - - push de - ld a, $29 - call Function3b2a - ld hl, $c - add hl, bc - ld [hl], $28 - ld a, $39 - call Function3b3c - pop de - - ld a, $29 - call Function3b2a - ld hl, $c - add hl, bc - ld [hl], $38 - ld a, $3a - call Function3b3c - ret - -Functione5223: ; e5223 (39:5223) -rept 3 - add a -endr - ld e, a - ld d, $0 - ld hl, BGPals - add hl, de -rept 2 - inc hl -endr - ld a, [wcf65] - and $3f - cp $1f - jr z, .asm_e523e - jr c, .asm_e523e - ld c, a - ld a, $3f - sub c -.asm_e523e - ld c, a - ld b, $0 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - push hl - push bc - ld hl, BGPals - ld bc, $40 - xor a - call ByteFill - pop bc - pop hl - push hl - ld hl, Unknown_e5288 -rept 2 - add hl, bc -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - push hl - ld hl, Unknown_e52c8 -rept 2 - add hl, bc -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - push hl - ld hl, Unknown_e5308 -rept 2 - add hl, bc -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e5288 (39:5288) - -Unknown_e5288: ; e5288 -; Fade between black and white. -hue = 0 -rept 32 - RGB hue, hue, hue -hue = hue + 1 -endr -; e52c8 - -Unknown_e52c8: ; e52c8 -; Fade between black and light blue. -hue = 0 -rept 32 - RGB 0, hue / 2, hue -hue = hue + 1 -endr -; e5308 - -Unknown_e5308: ; e5308 -; Fade between black and blue. -hue = 0 -rept 32 - RGB 0, 0, hue -hue = hue + 1 -endr -; e5348 - -Functione5348: ; e5348 (39:5348) - and a - jr nz, .asm_e5350 - ld hl, Palette_e538d - jr .asm_e5353 -.asm_e5350 - ld hl, Palette_e5395 -.asm_e5353 - ld a, [wcf65] - and $7 -rept 3 - add a -endr - ld c, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - push bc - ld de, BGPals - ld a, c - add e - ld e, a - ld a, $0 - adc d - ld d, a - ld bc, $8 - call CopyBytes - pop bc - ld de, wMapPals - ld a, c - add e - ld e, a - ld a, $0 - adc d - ld d, a - ld bc, $8 - call CopyBytes - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e538d (39:538d) - -Palette_e538d: ; e538d - RGB 24, 12, 09 - RGB 31, 31, 31 - RGB 12, 00, 31 - RGB 00, 00, 00 -; e5395 - -Palette_e5395: ; e5395 - RGB 24, 12, 09 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 -; e539d - -Functione539d: ; e539d (39:539d) -rept 3 - add a -endr - ld e, a - ld d, $0 - ld hl, BGPals - add hl, de -rept 4 - inc hl -endr - ld a, [wcf65] - add a - ld c, a - ld b, $0 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - push hl - ld hl, Palette_e53db - add hl, bc - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - push hl - ld hl, Palette_e53fb - add hl, bc - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e53db (39:53db) - -Palette_e53db: ; e53db -hue = 31 -rept 8 - RGB hue, hue, hue -hue = hue + -1 - RGB hue, hue, hue -hue = hue + -2 -endr -; e53fb - -Palette_e53fb: ; e53fb -hue = 31 -rept 16 - RGB hue, hue, hue -hue = hue + -1 -endr -; e541b - -Functione541b: ; e541b (39:541b) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - ld hl, w6_d000 - decoord 0, 0 - ld b, SCREEN_HEIGHT -.asm_e542a - ld c, SCREEN_WIDTH -.asm_e542c - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_e542c - ld a, $c - add l - ld l, a - ld a, $0 - adc h - ld h, a - dec b - jr nz, .asm_e542a - pop af - ld [rSVBK], a - ret - -Functione5441: ; e5441 (39:5441) - ld a, [wcf64] - and $3 - jr z, Functione5451 - cp $3 - jr z, .asm_e544d - ret -.asm_e544d - xor a - ld [hBGMapMode], a - ret - -Functione5451: ; e5451 (39:5451) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH -.asm_e5457 - ld a, [hl] - and a - jr z, .asm_e5462 - cp $80 - jr nc, .asm_e5462 - xor $8 - ld [hl], a -.asm_e5462 - inc hl - dec bc - ld a, c - or b - jr nz, .asm_e5457 - ld a, $1 - ld [hBGMapMode], a - ret - -Functione546d: ; e546d (39:546d) - ld a, [wcf64] - cp $24 - ret nc - and $c - srl a - ld e, a - ld d, $0 - ld hl, Unknown_e5496 - add hl, de - ld a, [hli] - ld [Requested2bppSource], a - ld a, [hli] - ld [Requested2bppSource + 1], a - ld a, (VTiles2 tile $09) % $100 - ld [Requested2bppDest], a - ld a, (VTiles2 tile $09) / $100 - ld [Requested2bppDest + 1], a - ld a, $4 - ld [Requested2bpp], a - ret -; e5496 (39:5496) - -Unknown_e5496: ; e5496 - dw GFX_e799d - dw GFX_e79dd - dw GFX_e7a1d - dw GFX_e79dd -; e549e - -Functione549e: ; e549e (39:549e) - ld a, $1 - ld [hCGBPalUpdate], a - ret - -Functione54a3: ; e54a3 (39:54a3) - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld bc, $80 - xor a - call ByteFill - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - call DelayFrame - call DelayFrame - ret - -Functione54c2: ; e54c2 (39:54c2) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push de - ld de, w6_d000 - call Decompress - pop hl - ld de, w6_d000 - ld bc, $180 - call Request2bpp - pop af - ld [rSVBK], a - ret - -Functione54de: ; e54de (39:54de) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push de - ld de, w6_d000 - call Decompress - pop hl - ld de, w6_d000 - ld bc, $1ff - call Request2bpp - pop af - ld [rSVBK], a - ret - -Functione54fa: ; e54fa (39:54fa) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push de - ld de, w6_d000 - call Decompress - pop hl - ld de, w6_d000 - ld bc, $140 - call Request2bpp - pop af - ld [rSVBK], a - ret - -Functione5516: ; e5516 (39:5516) - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, LYOverrides - ld bc, $90 - xor a - call ByteFill - pop af - ld [rSVBK], a - ld a, $43 - ld [hLCDStatCustom], a - ret - -Functione552f: ; e552f (39:552f) - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, [wcf64] - and $1 - jr z, .asm_e5548 - ld hl, LYOverrides - ld a, [hl] - inc a - ld bc, $5f - call ByteFill -.asm_e5548 - ld hl, LYOverrides + $5f - ld a, [hl] -rept 2 - inc a -endr - ld bc, $31 - call ByteFill - ld a, [LYOverrides + 0] - ld [hSCX], a - pop af - ld [rSVBK], a - ret - -IntroSuicuneRunGFX: ; e555d -INCBIN "gfx/intro/suicune_run.2bpp.lz" -; e592d - -IntroPichuWooperGFX: ; e592d -INCBIN "gfx/intro/pichu_wooper.2bpp.lz" -; e5c7d - -IntroBackgroundGFX: ; e5c7d -INCBIN "gfx/intro/background.2bpp.lz" -; e5e6d - -IntroTilemap004: ; e5e6d -INCBIN "gfx/intro/004.tilemap.lz" -; e5ecd - -IntroTilemap003: ; e5ecd -INCBIN "gfx/intro/003.tilemap.lz" -; e5edd - -Palette_e5edd: ; e5edd - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 0, 4, 5 - RGB 1, 8, 5 - RGB 4, 12, 9 - RGB 24, 12, 9 - RGB 0, 4, 5 - RGB 9, 6, 8 - RGB 8, 16, 5 - RGB 5, 10, 4 - RGB 31, 31, 31 - RGB 9, 6, 8 - RGB 18, 9, 9 - RGB 13, 8, 9 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 2, 5, 22 - RGB 1, 5, 12 - RGB 31, 31, 31 - RGB 31, 10, 25 - RGB 31, 21, 0 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 21, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroUnownsGFX: ; e5f5d -INCBIN "gfx/intro/unowns.2bpp.lz" -; e634d - -IntroPulseGFX: ; e634d -INCBIN "gfx/intro/pulse.2bpp.lz" -; e63dd - -IntroTilemap002: ; e63dd -INCBIN "gfx/intro/002.tilemap.lz" -; e641d - -IntroTilemap001: ; e641d -INCBIN "gfx/intro/001.tilemap.lz" -; e642d - -IntroTilemap006: ; e642d -INCBIN "gfx/intro/006.tilemap.lz" -; e647d - -IntroTilemap005: ; e647d -INCBIN "gfx/intro/005.tilemap.lz" -; e649d - -IntroTilemap008: ; e649d -INCBIN "gfx/intro/008.tilemap.lz" -; e655d - -IntroTilemap007: ; e655d -INCBIN "gfx/intro/007.tilemap.lz" -; e65ad - -Palette_365ad: ; e65ad - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 10, 0, 10 - RGB 19, 0, 19 - RGB 31, 0, 31 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroCrystalUnownsGFX: ; e662d -INCBIN "gfx/intro/crystal_unowns.2bpp.lz" -; e672d - -IntroTilemap017: ; e672d -INCBIN "gfx/intro/017.tilemap.lz" -; e676d - -IntroTilemap015: ; e676d -INCBIN "gfx/intro/015.tilemap.lz" -; e679d - -Palette_e679d: ; e679d - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroSuicuneCloseGFX: ; e681d -INCBIN "gfx/intro/suicune_close.2bpp.lz" -; e6c3d - -IntroTilemap012: ; e6c3d -INCBIN "gfx/intro/012.tilemap.lz" -; e6d0d - -IntroTilemap011: ; e6d0d -INCBIN "gfx/intro/011.tilemap.lz" -; e6d6d - -Palette_e6d6d: ; e6d6d - RGB 24, 12, 9 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 31, 31, 31 - RGB 8, 9, 31 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 12, 20, 31 - RGB 19, 8, 31 - RGB 0, 0, 0 - RGB 12, 20, 31 - RGB 8, 9, 31 - RGB 19, 8, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 12, 20, 31 - RGB 8, 9, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroSuicuneJumpGFX: ; e6ded -INCBIN "gfx/intro/suicune_jump.2bpp.lz" -; e72ad - -IntroSuicuneBackGFX: ; e72ad -INCBIN "gfx/intro/suicune_back.2bpp.lz" -; e764d - -IntroTilemap010: ; e764d -INCBIN "gfx/intro/010.tilemap.lz" -; e76ad - -IntroTilemap009: ; e76ad -INCBIN "gfx/intro/009.tilemap.lz" -; e76bd - -IntroTilemap014: ; e76bd -INCBIN "gfx/intro/014.tilemap.lz" -; e778d - -IntroTilemap013: ; e778d -INCBIN "gfx/intro/013.tilemap.lz" -; e77dd - -Palette_e77dd: ; e77dd - RGB 24, 12, 9 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 31, 31, 31 - RGB 8, 9, 31 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 12, 0, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 21, 9, 0 - RGB 21, 9, 0 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroUnownBackGFX: ; e785d -INCBIN "gfx/intro/unown_back.2bpp.lz" -; e799d - -GFX_e799d: ; e799d -INCBIN "gfx/unknown/0e799d.2bpp" -GFX_e79dd: ; e79dd -INCBIN "gfx/unknown/0e79dd.2bpp" -GFX_e7a1d: ; e7a1d -INCBIN "gfx/unknown/0e7a1d.2bpp" - -GFX_e7a5d: ; e7a5d -INCBIN "gfx/unknown/0e7a5d.2bpp" - - +INCLUDE "engine/options_menu.asm" +INCLUDE "engine/crystal_intro.asm" SECTION "bank3E", ROMX, BANK[$3E] -FontExtra: -INCBIN "gfx/misc/font_extra.2bpp" - -Font: -INCBIN "gfx/misc/font.1bpp" - -FontBattleExtra: -INCBIN "gfx/misc/font_battle_extra.2bpp" - -Frames: ; f8800 -INCBIN "gfx/frames/1.1bpp" -INCBIN "gfx/frames/2.1bpp" -INCBIN "gfx/frames/3.1bpp" -INCBIN "gfx/frames/4.1bpp" -INCBIN "gfx/frames/5.1bpp" -INCBIN "gfx/frames/6.1bpp" -INCBIN "gfx/frames/7.1bpp" -INCBIN "gfx/frames/8.1bpp" -INCBIN "gfx/frames/9.1bpp" -; f89b0 - -; TODO: Various misc graphics here. - -GFX_f89b0: ; f89b0 -INCBIN "gfx/unknown/0f89b0.2bpp" -; f8a90 - -ShinyIcon: ; f8a90 -INCBIN "gfx/stats/shiny.2bpp" - -GFX_f8aa0: ; f8aa0 -INCBIN "gfx/unknown/0f8aa0.2bpp" -; f8ac0 - -EnemyHPBarBorderGFX: ; f8ac0 -INCBIN "gfx/battle/enemy_hp_bar_border.1bpp" -; f8ae0 - -HPExpBarBorderGFX: ; f8ae0 -INCBIN "gfx/battle/hp_exp_bar_border.1bpp" -; f8b10 - -ExpBarGFX: ; f8b10 -INCBIN "gfx/battle/expbar.2bpp" -; f8ba0 - -TownMapGFX: ; f8ba0 -INCBIN "gfx/misc/town_map.2bpp.lz" -; f8ea4 - -GFX_f8ea4: ; unused -INCBIN "gfx/unknown/0f8ea4.2bpp" -; f8f24 - -OverworldPhoneIconGFX: ; f8f24 -INCBIN "gfx/mobile/overworld_phone_icon.2bpp" -; f8f34 - -GFX_f8f34: ; unused -INCBIN "gfx/unknown/0f8f34.2bpp" -; f9204 - -TextBoxSpaceGFX: ; f9204 -INCBIN "gfx/frames/space.2bpp" -; f9214 - -MobilePhoneTilesGFX: ; f9214 -INCBIN "gfx/mobile/phone_tiles.2bpp" -; f9344 - -MapEntryFrameGFX: ; f9344 -INCBIN "gfx/frames/map_entry_sign.2bpp" -; f9424 - -GFX_f9424: ; f9424 -INCBIN "gfx/unknown/0f9424.2bpp" -; f9434 - -Footprints: ; f9434 -INCBIN "gfx/misc/footprints.1bpp" -; fb434 - -; This and the following two functions are unreferenced. -Unknown_fb434: - db 0 - -Functionfb435: ; 4b435 - ld a, [Unknown_fb434] - and a - jp nz, Get1bpp_2 - jp Get1bpp -; fb43f - -Functionfb43f: ; fb43f - ld a, [Unknown_fb434] - and a - jp nz, Get2bpp_2 - jp Get2bpp -; End unreferenced block -; fb449 - -_LoadStandardFont:: ; fb449 - ld de, Font - ld hl, VTiles1 - lb bc, BANK(Font), $80 - ld a, [rLCDC] - bit 7, a - jp z, Copy1bpp - - ld de, Font - ld hl, VTiles1 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ld de, Font + $20 * LEN_1BPP_TILE - ld hl, VTiles1 tile $20 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ld de, Font + $40 * LEN_1BPP_TILE - ld hl, VTiles1 tile $40 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ld de, Font + $60 * LEN_1BPP_TILE - ld hl, VTiles1 tile $60 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ret -; fb48a - -_LoadFontsExtra1:: ; fb48a - ld de, MobilePhoneTilesGFX - ld hl, VTiles2 tile $60 - lb bc, BANK(MobilePhoneTilesGFX), 1 - call Get1bpp_2 - ld de, OverworldPhoneIconGFX - ld hl, VTiles2 tile $62 - lb bc, BANK(OverworldPhoneIconGFX), 1 - call Get2bpp_2 - ld de, FontExtra + 3 * LEN_2BPP_TILE - ld hl, VTiles2 tile $63 - lb bc, BANK(FontExtra), $16 - call Get2bpp_2 - jr LoadFrame -; fb4b0 - -_LoadFontsExtra2:: ; fb4b0 - ld de, GFX_f9424 - ld hl, VTiles2 tile $61 - ld b, BANK(GFX_f9424) - ld c, 1 - call Get2bpp_2 - ret -; fb4be - -_LoadFontsBattleExtra:: ; fb4be - ld de, FontBattleExtra - ld hl, VTiles2 tile $60 - lb bc, BANK(FontBattleExtra), $19 - call Get2bpp_2 - jr LoadFrame -; fb4cc - -LoadFrame: ; fb4cc - ld a, [TextBoxFrame] - and 7 - ld bc, TILES_PER_FRAME * LEN_1BPP_TILE - ld hl, Frames - call AddNTimes - ld d, h - ld e, l - ld hl, VTiles2 tile $79 - lb bc, BANK(Frames), TILES_PER_FRAME - call Get1bpp_2 - ld hl, VTiles2 tile $7f - ld de, TextBoxSpaceGFX - lb bc, BANK(TextBoxSpaceGFX), 1 - call Get1bpp_2 - ret -; fb4f2 - -LoadBattleFontsHPBar: ; fb4f2 - ld de, FontBattleExtra - ld hl, VTiles2 tile $60 - lb bc, BANK(FontBattleExtra), $c - call Get2bpp_2 - ld hl, VTiles2 tile $70 - ld de, FontBattleExtra + $10 * LEN_2BPP_TILE - lb bc, BANK(FontBattleExtra), 3 - call Get2bpp_2 - call LoadFrame - -LoadHPBar: ; fb50d - ld de, EnemyHPBarBorderGFX - ld hl, VTiles2 tile $6c - lb bc, BANK(EnemyHPBarBorderGFX), 4 - call Get1bpp_2 - ld de, HPExpBarBorderGFX - ld hl, VTiles2 tile $73 - lb bc, BANK(HPExpBarBorderGFX), 6 - call Get1bpp_2 - ld de, ExpBarGFX - ld hl, VTiles2 tile $55 - lb bc, BANK(ExpBarGFX), 9 - call Get2bpp_2 - ld de, MobilePhoneTilesGFX + 9 * LEN_2BPP_TILE - ld hl, VTiles2 tile $5e - lb bc, BANK(MobilePhoneTilesGFX), 2 - call Get2bpp_2 - ret -; fb53e - -Functionfb53e: ; fb53e - call _LoadFontsBattleExtra - ld de, EnemyHPBarBorderGFX - ld hl, VTiles2 tile $6c - lb bc, BANK(EnemyHPBarBorderGFX), 4 - call Get1bpp_2 - ld de, HPExpBarBorderGFX - ld hl, VTiles2 tile $78 - lb bc, BANK(HPExpBarBorderGFX), 1 - call Get1bpp_2 - ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE - ld hl, VTiles2 tile $76 - lb bc, BANK(HPExpBarBorderGFX), 2 - call Get1bpp_2 - ld de, ExpBarGFX - ld hl, VTiles2 tile $55 - lb bc, BANK(ExpBarGFX), 8 - call Get2bpp_2 - -Functionfb571: ; fb571 - ld de, GFX_f89b0 - ld hl, VTiles2 tile $31 - lb bc, BANK(GFX_f89b0), $11 - call Get2bpp_2 - ret -; fb57e - -; These functions seem to be related to backwards compatibility - -Functionfb57e: ; fb57e - ld a, [wd003] - ld hl, OTPartyMon1Species - call GetPartyLocation - push hl - ld a, [wd003] - inc a - ld c, a - ld b, 0 - ld hl, OTPartyCount - add hl, bc - ld a, [hl] - pop hl - cp EGG - jr z, .asm_fb59c - cp [hl] - jr nz, .asm_fb5db - -.asm_fb59c - ld b, h - ld c, l - ld hl, MON_LEVEL - add hl, bc - ld a, [hl] - cp 101 - jr nc, .asm_fb5db - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jr nz, .asm_fb5d9 - ld hl, OTPartySpecies - ld a, [wd003] - ld c, a - ld b, 0 - add hl, bc - ld a, [hl] - - ; Magnemite and Magneton's types changed - ; from Electric to Electric/Steel. - cp MAGNEMITE - jr z, .asm_fb5d9 - cp MAGNETON - jr z, .asm_fb5d9 - - ld [CurSpecies], a - call GetBaseData - ld hl, wcbea -rept 2 - add hl, bc -endr - ld a, [BaseType1] - cp [hl] - jr nz, .asm_fb5db - inc hl - ld a, [BaseType2] - cp [hl] - jr nz, .asm_fb5db - -.asm_fb5d9 - and a - ret - -.asm_fb5db - scf - ret -; fb5dd - -Functionfb5dd: ; fb5dd - ld a, [wd002] - ld d, a - ld a, [PartyCount] - ld b, a - ld c, $0 -.asm_fb5e7 - ld a, c - cp d - jr z, .asm_fb5f8 - push bc - ld a, c - ld hl, PartyMon1HP - call GetPartyLocation - pop bc - ld a, [hli] - or [hl] - jr nz, .asm_fb60b - -.asm_fb5f8 - inc c - dec b - jr nz, .asm_fb5e7 - ld a, [wd003] - ld hl, OTPartyMon1HP - call GetPartyLocation - ld a, [hli] - or [hl] - jr nz, .asm_fb60b - scf - ret - -.asm_fb60b - and a - ret -; fb60d - -Functionfb60d: ; fb60d - hlcoord 4, 0 - ld de, PlayerName - call PlaceString - ld a, $14 - ld [bc], a - hlcoord 4, 8 - ld de, wd26b - call PlaceString - ld a, $14 - ld [bc], a - hlcoord 7, 1 - ld de, PartySpecies - call Functionfb634 - hlcoord 7, 9 - ld de, OTPartySpecies - -Functionfb634: ; fb634 - ld c, $0 -.asm_fb636 - ld a, [de] - cp $ff - ret z - ld [wd265], a - push bc - push hl - push de - push hl - ld a, c - ld [hProduct], a - call GetPokemonName - pop hl - call PlaceString - pop de - inc de - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - inc c - jr .asm_fb636 -; fb656 - -KantoMonSpecials: ; fb656 -; The original special base stat for -; each Kanto monster from Red/Blue. - db 65 ; BULBASAUR - db 80 ; IVYSAUR - db 100 ; VENUSAUR - db 50 ; CHARMANDER - db 65 ; CHARMELEON - db 85 ; CHARIZARD - db 50 ; SQUIRTLE - db 65 ; WARTORTLE - db 85 ; BLASTOISE - db 20 ; CATERPIE - db 25 ; METAPOD - db 80 ; BUTTERFREE - db 20 ; WEEDLE - db 25 ; KAKUNA - db 45 ; BEEDRILL - db 35 ; PIDGEY - db 50 ; PIDGEOTTO - db 70 ; PIDGEOT - db 25 ; RATTATA - db 50 ; RATICATE - db 31 ; SPEAROW - db 61 ; FEAROW - db 40 ; EKANS - db 65 ; ARBOK - db 50 ; PIKACHU - db 90 ; RAICHU - db 30 ; SANDSHREW - db 55 ; SANDSLASH - db 40 ; NIDORAN_F - db 55 ; NIDORINA - db 75 ; NIDOQUEEN - db 40 ; NIDORAN_M - db 55 ; NIDORINO - db 75 ; NIDOKING - db 60 ; CLEFAIRY - db 85 ; CLEFABLE - db 65 ; VULPIX - db 100 ; NINETALES - db 25 ; JIGGLYPUFF - db 50 ; WIGGLYTUFF - db 40 ; ZUBAT - db 75 ; GOLBAT - db 75 ; ODDISH - db 85 ; GLOOM - db 100 ; VILEPLUME - db 55 ; PARAS - db 80 ; PARASECT - db 40 ; VENONAT - db 90 ; VENOMOTH - db 45 ; DIGLETT - db 70 ; DUGTRIO - db 40 ; MEOWTH - db 65 ; PERSIAN - db 50 ; PSYDUCK - db 80 ; GOLDUCK - db 35 ; MANKEY - db 60 ; PRIMEAPE - db 50 ; GROWLITHE - db 80 ; ARCANINE - db 40 ; POLIWAG - db 50 ; POLIWHIRL - db 70 ; POLIWRATH - db 105 ; ABRA - db 120 ; KADABRA - db 135 ; ALAKAZAM - db 35 ; MACHOP - db 50 ; MACHOKE - db 65 ; MACHAMP - db 70 ; BELLSPROUT - db 85 ; WEEPINBELL - db 100 ; VICTREEBEL - db 100 ; TENTACOOL - db 120 ; TENTACRUEL - db 30 ; GEODUDE - db 45 ; GRAVELER - db 55 ; GOLEM - db 65 ; PONYTA - db 80 ; RAPIDASH - db 40 ; SLOWPOKE - db 80 ; SLOWBRO - db 95 ; MAGNEMITE - db 120 ; MAGNETON - db 58 ; FARFETCH_D - db 35 ; DODUO - db 60 ; DODRIO - db 70 ; SEEL - db 95 ; DEWGONG - db 40 ; GRIMER - db 65 ; MUK - db 45 ; SHELLDER - db 85 ; CLOYSTER - db 100 ; GASTLY - db 115 ; HAUNTER - db 130 ; GENGAR - db 30 ; ONIX - db 90 ; DROWZEE - db 115 ; HYPNO - db 25 ; KRABBY - db 50 ; KINGLER - db 55 ; VOLTORB - db 80 ; ELECTRODE - db 60 ; EXEGGCUTE - db 125 ; EXEGGUTOR - db 40 ; CUBONE - db 50 ; MAROWAK - db 35 ; HITMONLEE - db 35 ; HITMONCHAN - db 60 ; LICKITUNG - db 60 ; KOFFING - db 85 ; WEEZING - db 30 ; RHYHORN - db 45 ; RHYDON - db 105 ; CHANSEY - db 100 ; TANGELA - db 40 ; KANGASKHAN - db 70 ; HORSEA - db 95 ; SEADRA - db 50 ; GOLDEEN - db 80 ; SEAKING - db 70 ; STARYU - db 100 ; STARMIE - db 100 ; MR__MIME - db 55 ; SCYTHER - db 95 ; JYNX - db 85 ; ELECTABUZZ - db 85 ; MAGMAR - db 55 ; PINSIR - db 70 ; TAUROS - db 20 ; MAGIKARP - db 100 ; GYARADOS - db 95 ; LAPRAS - db 48 ; DITTO - db 65 ; EEVEE - db 110 ; VAPOREON - db 110 ; JOLTEON - db 110 ; FLAREON - db 75 ; PORYGON - db 90 ; OMANYTE - db 115 ; OMASTAR - db 45 ; KABUTO - db 70 ; KABUTOPS - db 60 ; AERODACTYL - db 65 ; SNORLAX - db 125 ; ARTICUNO - db 125 ; ZAPDOS - db 125 ; MOLTRES - db 50 ; DRATINI - db 70 ; DRAGONAIR - db 100 ; DRAGONITE - db 154 ; MEWTWO - db 100 ; MEW -; fb6ed - - -INCLUDE "event/name_rater.asm" - - -PlaySlowCry: ; fb841 - ld a, [ScriptVar] - call LoadCryHeader - jr c, .done - - ld hl, CryPitch - ld a, [hli] - ld h, [hl] - ld l, a - ld bc, -$140 - add hl, bc - ld a, l - ld [CryPitch], a - ld a, h - ld [CryPitch + 1], a - ld hl, CryLength - ld a, [hli] - ld h, [hl] - ld l, a - ld bc, $60 - add hl, bc - ld a, l - ld [CryLength], a - ld a, h - ld [CryLength + 1], a - callba _PlayCryHeader - call WaitSFX - -.done - ret -; fb877 - -Functionfb877: ; fb877 - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a - call LowVolume - call ClearBGPalettes - call ClearTileMap - call UpdateSprites - call ClearSprites - ld a, [wPokedexStatus] - push af - ld a, [hSCX] - add $5 - ld [hSCX], a - xor a - ld [wPokedexStatus], a - callba Function41a7f - call WaitPressAorB_BlinkCursor - ld a, $1 - ld [wPokedexStatus], a - callba Function4424d - call WaitPressAorB_BlinkCursor - pop af - ld [wPokedexStatus], a - call MaxVolume - call FadeToWhite - ld a, [hSCX] - add $fb - ld [hSCX], a - call Functionfb8c8 - pop af - ld [hMapAnims], a - ret -; fb8c8 - -Functionfb8c8: ; fb8c8 - call ClearTileMap - call LoadFontsExtra - call LoadStandardFont - callba Function40ab2 - call Function3200 - callba GetEnemyMonDVs - ld a, [hli] - ld [TempMonDVs], a - ld a, [hl] - ld [TempMonDVs + 1], a - ld b, $1c - call GetSGBLayout - call SetPalettes - ret -; fb8f1 +INCLUDE "gfx/font.asm" +INCLUDE "engine/time_capsule/conversion.asm" -ConvertMon_2to1: ; fb8f1 -; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265. - push bc - push hl - ld a, [wd265] - ld b, a - ld c, 0 - ld hl, Pokered_MonIndices -.loop - inc c - ld a, [hli] - cp b - jr nz, .loop - ld a, c - ld [wd265], a - pop hl - pop bc - ret -; fb908 - -ConvertMon_1to2: ; fb908 -; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265. - push bc - push hl - ld a, [wd265] - dec a - ld hl, Pokered_MonIndices - ld b, 0 - ld c, a - add hl, bc - ld a, [hl] - ld [wd265], a - pop hl - pop bc - ret -; fb91c - -Pokered_MonIndices: ; fb91c - db RHYDON - db KANGASKHAN - db NIDORAN_M - db CLEFAIRY - db SPEAROW - db VOLTORB - db NIDOKING - db SLOWBRO - db IVYSAUR - db EXEGGUTOR - db LICKITUNG - db EXEGGCUTE - db GRIMER - db GENGAR - db NIDORAN_F - db NIDOQUEEN - db CUBONE - db RHYHORN - db LAPRAS - db ARCANINE - db MEW - db GYARADOS - db SHELLDER - db TENTACOOL - db GASTLY - db SCYTHER - db STARYU - db BLASTOISE - db PINSIR - db TANGELA - db SCIZOR - db SHUCKLE - db GROWLITHE - db ONIX - db FEAROW - db PIDGEY - db SLOWPOKE - db KADABRA - db GRAVELER - db CHANSEY - db MACHOKE - db MR__MIME - db HITMONLEE - db HITMONCHAN - db ARBOK - db PARASECT - db PSYDUCK - db DROWZEE - db GOLEM - db HERACROSS - db MAGMAR - db HO_OH - db ELECTABUZZ - db MAGNETON - db KOFFING - db SNEASEL - db MANKEY - db SEEL - db DIGLETT - db TAUROS - db TEDDIURSA - db URSARING - db SLUGMA - db FARFETCH_D - db VENONAT - db DRAGONITE - db MAGCARGO - db SWINUB - db PILOSWINE - db DODUO - db POLIWAG - db JYNX - db MOLTRES - db ARTICUNO - db ZAPDOS - db DITTO - db MEOWTH - db KRABBY - db CORSOLA - db REMORAID - db OCTILLERY - db VULPIX - db NINETALES - db PIKACHU - db RAICHU - db DELIBIRD - db MANTINE - db DRATINI - db DRAGONAIR - db KABUTO - db KABUTOPS - db HORSEA - db SEADRA - db SKARMORY - db HOUNDOUR - db SANDSHREW - db SANDSLASH - db OMANYTE - db OMASTAR - db JIGGLYPUFF - db WIGGLYTUFF - db EEVEE - db FLAREON - db JOLTEON - db VAPOREON - db MACHOP - db ZUBAT - db EKANS - db PARAS - db POLIWHIRL - db POLIWRATH - db WEEDLE - db KAKUNA - db BEEDRILL - db HOUNDOOM - db DODRIO - db PRIMEAPE - db DUGTRIO - db VENOMOTH - db DEWGONG - db KINGDRA - db PHANPY - db CATERPIE - db METAPOD - db BUTTERFREE - db MACHAMP - db DONPHAN - db GOLDUCK - db HYPNO - db GOLBAT - db MEWTWO - db SNORLAX - db MAGIKARP - db PORYGON2 - db STANTLER - db MUK - db SMEARGLE - db KINGLER - db CLOYSTER - db TYROGUE - db ELECTRODE - db CLEFABLE - db WEEZING - db PERSIAN - db MAROWAK - db HITMONTOP - db HAUNTER - db ABRA - db ALAKAZAM - db PIDGEOTTO - db PIDGEOT - db STARMIE - db BULBASAUR - db VENUSAUR - db TENTACRUEL - db SMOOCHUM - db GOLDEEN - db SEAKING - db ELEKID - db MAGBY - db MILTANK - db BLISSEY - db PONYTA - db RAPIDASH - db RATTATA - db RATICATE - db NIDORINO - db NIDORINA - db GEODUDE - db PORYGON - db AERODACTYL - db RAIKOU - db MAGNEMITE - db ENTEI - db SUICUNE - db CHARMANDER - db SQUIRTLE - db CHARMELEON - db WARTORTLE - db CHARIZARD - db LARVITAR - db PUPITAR - db TYRANITAR - db LUGIA - db ODDISH - db GLOOM - db VILEPLUME - db BELLSPROUT - db WEEPINBELL - db VICTREEBEL - db CHIKORITA - db BAYLEEF - db MEGANIUM - db CYNDAQUIL - db QUILAVA - db TYPHLOSION - db TOTODILE - db CROCONAW - db FERALIGATR - db SENTRET - db FURRET - db HOOTHOOT - db NOCTOWL - db LEDYBA - db LEDIAN - db SPINARAK - db ARIADOS - db CROBAT - db CHINCHOU - db LANTURN - db PICHU - db CLEFFA - db IGGLYBUFF - db TOGEPI - db TOGETIC - db NATU - db XATU - db MAREEP - db FLAAFFY - db AMPHAROS - db BELLOSSOM - db MARILL - db AZUMARILL - db SUDOWOODO - db POLITOED - db HOPPIP - db SKIPLOOM - db JUMPLUFF - db AIPOM - db SUNKERN - db SUNFLORA - db YANMA - db WOOPER - db QUAGSIRE - db ESPEON - db UMBREON - db MURKROW - db SLOWKING - db MISDREAVUS - db UNOWN - db WOBBUFFET - db GIRAFARIG - db PINECO - db FORRETRESS - db DUNSPARCE - db GLIGAR - db STEELIX - db SNUBBULL - db GRANBULL - db QWILFISH - db WOBBUFFET - db WOBBUFFET -; fba18 - - -Functionfba18: ; fba18 +UpdateUnownDex: ; fba18 ld a, [UnownLetter] ld c, a ld b, 26 ld hl, UnownDex -.asm_fba21 +.loop ld a, [hli] and a - jr z, .asm_fba2b + jr z, .done cp c ret z dec b - jr nz, .asm_fba21 + jr nz, .loop ret -.asm_fba2b +.done dec hl ld [hl], c ret @@ -51642,8 +23140,8 @@ Functionfba18: ; fba18 Functionfba2e: ; fba2e (3e:7a2e) hlcoord 4, 15 - ld bc, $c - ld a, $7f + ld bc, 12 + ld a, " " call ByteFill ld a, [wc7dd] ld e, a @@ -51748,914 +23246,9 @@ SECTION "bank3F", ROMX, BANK[$3F] INCLUDE "tilesets/animations.asm" +INCLUDE "engine/npctrade.asm" -; Trade struct -TRADE_DIALOG EQU 0 -TRADE_GIVEMON EQU 1 -TRADE_GETMON EQU 2 -TRADE_NICK EQU 3 -TRADE_DVS EQU 14 -TRADE_ITEM EQU 16 -TRADE_OT_ID EQU 17 -TRADE_OT_NAME EQU 19 -TRADE_GENDER EQU 30 -TRADE_PADDING EQU 31 - -; Trade dialogs -TRADE_INTRO EQU 0 -TRADE_CANCEL EQU 1 -TRADE_WRONG EQU 2 -TRADE_COMPLETE EQU 3 -TRADE_AFTER EQU 4 - -NPCTrade:: ; fcba8 - ld a, e - ld [wJumptableIndex], a - call Functionfcc59 - ld b, CHECK_FLAG - call TradeFlagAction - ld a, TRADE_AFTER - jr nz, .done - - ld a, TRADE_INTRO - call PrintTradeText - - call YesNoBox - ld a, TRADE_CANCEL - jr c, .done - -; Select givemon from party - ld b, 6 - callba Function5001d - ld a, TRADE_CANCEL - jr c, .done - - ld e, TRADE_GIVEMON - call GetTradeAttribute - ld a, [CurPartySpecies] - cp [hl] - ld a, TRADE_WRONG - jr nz, .done - - call CheckTradeGender - ld a, TRADE_WRONG - jr c, .done - - ld b, SET_FLAG - call TradeFlagAction - - ld hl, ConnectLinkCableText - call PrintText - - call Functionfcc63 - call Functionfcc07 - call GetTradeMonNames - - ld hl, TradedForText - call PrintText - - call RestartMapMusic - - ld a, TRADE_COMPLETE - -.done - call PrintTradeText - ret -; fcc07 - -Functionfcc07: ; fcc07 - call DisableSpriteUpdates - ld a, [wJumptableIndex] - push af - ld a, [wcf64] - push af - predef Function28f24 - pop af - ld [wcf64], a - pop af - ld [wJumptableIndex], a - call Function2b74 - ret -; fcc23 - -CheckTradeGender: ; fcc23 - xor a - ld [MonType], a - - ld e, TRADE_GENDER - call GetTradeAttribute - ld a, [hl] - and a - jr z, .asm_fcc46 - cp 1 - jr z, .asm_fcc3e - - callba GetGender - jr nz, .asm_fcc48 - jr .asm_fcc46 - -.asm_fcc3e - callba GetGender - jr z, .asm_fcc48 - -.asm_fcc46 - and a - ret - -.asm_fcc48 - scf - ret -; fcc4a - -TradeFlagAction: ; fcc4a - ld hl, wd960 - ld a, [wJumptableIndex] - ld c, a - predef FlagPredef - ld a, c - and a - ret -; fcc59 - -Functionfcc59: ; fcc59 - ld e, TRADE_DIALOG - call GetTradeAttribute - ld a, [hl] - ld [wcf64], a - ret -; fcc63 - -Functionfcc63: ; fcc63 - ld e, TRADE_GIVEMON - call GetTradeAttribute - ld a, [hl] - ld [wc6d0], a - - ld e, TRADE_GETMON - call GetTradeAttribute - ld a, [hl] - ld [wc702], a - - ld a, [wc6d0] - ld de, wc6d1 - call Functionfcde8 - call Functionfcdf4 - - ld a, [wc702] - ld de, wc703 - call Functionfcde8 - call Functionfcdf4 - - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call Functionfcdd7 - ld de, wc6f2 - call Functionfcdf4 - - ld hl, PlayerName - ld de, wc6e7 - call Functionfcdf4 - - ld hl, PartyMon1ID - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld de, wc6ff - call Functionfce0f - - ld hl, PartyMon1DVs - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld de, wc6fd - call Functionfce0f - - ld hl, PartyMon1Species - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld b, h - ld c, l - callba GetCaughtGender - ld a, c - ld [wc701], a - - ld e, TRADE_DIALOG - call GetTradeAttribute - ld a, [hl] - cp TRADE_COMPLETE - ld a, 1 - jr c, .asm_fcce6 - ld a, 2 -.asm_fcce6 - ld [wEnemyCharging], a - - ld hl, PartyMon1Level - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld a, [hl] - ld [CurPartyLevel], a - ld a, [wc702] - ld [CurPartySpecies], a - xor a - ld [MonType], a - ld [wPokemonWithdrawDepositParameter], a - callab Functione039 - predef TryAddMonToParty - - ld e, TRADE_DIALOG - call GetTradeAttribute - ld a, [hl] - cp TRADE_COMPLETE - ld b, 0 - jr c, .asm_fcd1c - ld b, 1 -.asm_fcd1c - callba SetPartymonCaughtData - - ld e, TRADE_NICK - call GetTradeAttribute - ld de, wc70e - call Functionfcdf4 - - ld hl, PartyMonNicknames - ld bc, PKMN_NAME_LENGTH - call Functionfcdde - ld hl, wc70e - call Functionfcdf4 - - ld e, TRADE_OT_NAME - call GetTradeAttribute - push hl - ld de, wc724 - call Functionfcdf4 - pop hl - ld de, wc719 - call Functionfcdf4 - - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call Functionfcdde - ld hl, wc724 - call Functionfcdf4 - - ld e, TRADE_DVS - call GetTradeAttribute - ld de, wEnemyTrappingMove - call Functionfce0f - - ld hl, PartyMon1DVs - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - ld hl, wEnemyTrappingMove - call Functionfce0f - - ld e, TRADE_OT_ID - call GetTradeAttribute - ld de, wPlayerCharging - call Functionfce15 - - ld hl, PartyMon1ID - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - ld hl, wEnemyWrapCount - call Functionfce0f - - ld e, TRADE_ITEM - call GetTradeAttribute - push hl - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - pop hl - ld a, [hl] - ld [de], a - - push af - push bc - push de - push hl - ld a, [CurPartyMon] - push af - ld a, [PartyCount] - dec a - ld [CurPartyMon], a - callba Functione134 - pop af - ld [CurPartyMon], a - pop hl - pop de - pop bc - pop af - ret -; fcdc2 - - -GetTradeAttribute: ; 0xfcdc2 - ld d, 0 - push de - ld a, [wJumptableIndex] - and $f - swap a - ld e, a - ld d, 0 - ld hl, NPCTrades -rept 2 - add hl, de -endr - pop de - add hl, de - ret -; 0xfcdd7 - -Functionfcdd7: ; fcdd7 - ld a, [CurPartyMon] - call AddNTimes - ret -; fcdde - -Functionfcdde: ; fcdde - ld a, [PartyCount] - dec a - call AddNTimes - ld e, l - ld d, h - ret -; fcde8 - -Functionfcde8: ; fcde8 - push de - ld [wd265], a - call GetBasePokemonName - ld hl, StringBuffer1 - pop de - ret -; fcdf4 - -Functionfcdf4: ; fcdf4 - ld bc, NAME_LENGTH - call CopyBytes - ret -; fcdfb - -Functionfcdfb: ; fcdfb - ld bc, 4 - call CopyBytes - ld a, $50 - ld [de], a - ret -; fce05 - -Functionfce05: ; fce05 - ld bc, 3 - call CopyBytes - ld a, $50 - ld [de], a - ret -; fce0f - -Functionfce0f: ; fce0f - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - ret -; fce15 - -Functionfce15: ; fce15 - ld a, [hli] - ld [de], a - dec de - ld a, [hl] - ld [de], a - ret -; fce1b - -GetTradeMonNames: ; fce1b - ld e, TRADE_GETMON - call GetTradeAttribute - ld a, [hl] - call Functionfcde8 - - ld de, StringBuffer2 - call Functionfcdf4 - - ld e, TRADE_GIVEMON - call GetTradeAttribute - ld a, [hl] - call Functionfcde8 - - ld de, wd050 - call Functionfcdf4 - - ld hl, StringBuffer1 -.loop - ld a, [hli] - cp "@" - jr nz, .loop - - dec hl - push hl - ld e, TRADE_GENDER - call GetTradeAttribute - ld a, [hl] - pop hl - and a - ret z - - cp 1 - ld a, "♂" - jr z, .done - ld a, "♀" -.done - ld [hli], a - ld [hl], "@" - ret -; fce58 - - -NPCTrades: ; fce58 - db 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, $54, $92, "MIKE@@@@@@@", 0, 0 - db 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, $1e, $bf, "KYLE@@@@@@@", 0, 0 - db 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, $05, $72, "TIM@@@@@@@@", 0, 0 - db 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, $1b, $01, "EMY@@@@@@@@", 2, 0 - db 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, $00, $3d, "CHRIS@@@@@@", 0, 0 - db 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, $7b, $67, "KIM@@@@@@@@", 0, 0 - db 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, $a2, $c3, "FOREST@@@@@", 0, 0 -; fcf38 - - -PrintTradeText: ; fcf38 - push af - call GetTradeMonNames - pop af - ld bc, 2 * 4 - ld hl, TradeTexts - call AddNTimes - ld a, [wcf64] - ld c, a -rept 2 - add hl, bc -endr - ld a, [hli] - ld h, [hl] - ld l, a - call PrintText - ret -; fcf53 - -TradeTexts: ; fcf53 -; intro - dw TradeIntroText1 - dw TradeIntroText2 - dw TradeIntroText3 - dw TradeIntroText4 - -; cancel - dw TradeCancelText1 - dw TradeCancelText2 - dw TradeCancelText3 - dw TradeCancelText4 - -; wrong mon - dw TradeWrongText1 - dw TradeWrongText2 - dw TradeWrongText3 - dw TradeWrongText4 - -; completed - dw TradeCompleteText1 - dw TradeCompleteText2 - dw TradeCompleteText3 - dw TradeCompleteText4 - -; after - dw TradeAfterText1 - dw TradeAfterText2 - dw TradeAfterText3 - dw TradeAfterText4 -; fcf7b - - -ConnectLinkCableText: ; 0xfcf7b - ; OK, connect the Game Link Cable. - text_jump UnknownText_0x1bd407 - db "@" -; 0xfcf80 - - -TradedForText: ; 0xfcf80 - ; traded givemon for getmon - text_jump UnknownText_0x1bd429 - start_asm - - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - ld hl, .done - ret - -.done - ; sound0x0A - ; interpret_data - text_jump UnknownText_0x1bd445 - db "@" -; 0xfcf97 - - -TradeIntroText1: ; 0xfcf97 - ; I collect #MON. Do you have @ ? Want to trade it for my @ ? - text_jump UnknownText_0x1bd449 - db "@" -; 0xfcf9c - -TradeCancelText1: ; 0xfcf9c - ; You don't want to trade? Aww… - text_jump UnknownText_0x1bd48c - db "@" -; 0xfcfa1 - -TradeWrongText1: ; 0xfcfa1 - ; Huh? That's not @ . What a letdown… - text_jump UnknownText_0x1bd4aa - db "@" -; 0xfcfa6 - -TradeCompleteText1: ; 0xfcfa6 - ; Yay! I got myself @ ! Thanks! - text_jump UnknownText_0x1bd4d2 - db "@" -; 0xfcfab - -TradeAfterText1: ; 0xfcfab - ; Hi, how's my old @ doing? - text_jump UnknownText_0x1bd4f4 - db "@" -; 0xfcfb0 - - -TradeIntroText2: -TradeIntroText3: ; 0xfcfb0 - ; Hi, I'm looking for this #MON. If you have @ , would you trade it for my @ ? - text_jump UnknownText_0x1bd512 - db "@" -; 0xfcfb5 - -TradeCancelText2: -TradeCancelText3: ; 0xfcfb5 - ; You don't have one either? Gee, that's really disappointing… - text_jump UnknownText_0x1bd565 - db "@" -; 0xfcfba - -TradeWrongText2: -TradeWrongText3: ; 0xfcfba - ; You don't have @ ? That's too bad, then. - text_jump UnknownText_0x1bd5a1 - db "@" -; 0xfcfbf - -TradeCompleteText2: ; 0xfcfbf - ; Great! Thank you! I finally got @ . - text_jump UnknownText_0x1bd5cc - db "@" -; 0xfcfc4 - -TradeAfterText2: ; 0xfcfc4 - ; Hi! The @ you traded me is doing great! - text_jump UnknownText_0x1bd5f4 - db "@" -; 0xfcfc9 - - -TradeIntroText4: ; 0xfcfc9 - ; 's cute, but I don't have it. Do you have @ ? Want to trade it for my @ ? - text_jump UnknownText_0x1bd621 - db "@" -; 0xfcfce - -TradeCancelText4: ; 0xfcfce - ; You don't want to trade? Oh, darn… - text_jump UnknownText_0x1bd673 - db "@" -; 0xfcfd3 - -TradeWrongText4: ; 0xfcfd3 - ; That's not @ . Please trade with me if you get one. - text_jump UnknownText_0x1bd696 - db "@" -; 0xfcfd8 - -TradeCompleteText4: ; 0xfcfd8 - ; Wow! Thank you! I always wanted @ ! - text_jump UnknownText_0x1bd6cd - db "@" -; 0xfcfdd - -TradeAfterText4: ; 0xfcfdd - ; How is that @ I traded you doing? Your @ 's so cute! - text_jump UnknownText_0x1bd6f5 - db "@" -; 0xfcfe2 - - -TradeCompleteText3: ; 0xfcfe2 - ; Uh? What happened? - text_jump UnknownText_0x1bd731 - db "@" -; 0xfcfe7 - -TradeAfterText3: ; 0xfcfe7 - ; Trading is so odd… I still have a lot to learn about it. - text_jump UnknownText_0x1bd745 - db "@" -; 0xfcfec - - -MomTriesToBuySomething:: ; fcfec - ld a, [wMapReentryScriptQueueFlag] - and a - ret nz - call GetMapHeaderPhoneServiceNybble - and a - ret nz - xor a - ld [wdc18], a - call CheckBalance_MomItem2 - ret nc - call Functionfd0c3 - ret nc - ld b, BANK(UnknownScript_0xfd00f) - ld de, UnknownScript_0xfd00f - callba LoadScriptBDE - scf - ret -; fd00f - -UnknownScript_0xfd00f: ; 0xfd00f - callasm Functionfd017 - farjump Script_ReceivePhoneCall -; 0xfd017 - -Functionfd017: ; fd017 - call MomBuysItem_DeductFunds - call Functionfd0eb - ld a, [wdc18] - and a - jr nz, .ok - ld hl, wdc17 - inc [hl] -.ok - ld a, 1 - ld [wCurrentCaller], a - ld bc, wd03f - ld hl, 0 - add hl, bc - ld [hl], 0 - inc hl - ld [hl], 1 - ld hl, 9 - add hl, bc - ld a, $3f - ld [hli], a - ld a, e - ld [hli], a - ld a, d - ld [hl], a - ret -; fd044 - -CheckBalance_MomItem2: ; fd044 - ld a, [wdc17] - cp 10 - jr nc, .nope - call GetItemFromMom - ld a, [hli] - ld [hMoneyTemp], a - ld a, [hli] - ld [hMoneyTemp + 1], a - ld a, [hli] - ld [hMoneyTemp + 2], a - ld de, wMomsMoney - ld bc, hMoneyTemp - callba CompareMoney - jr nc, .have_enough_money - -.nope - jr .check_have_2300 - -.have_enough_money - scf - ret - -.check_have_2300 - ld hl, hMoneyTemp - ld [hl], (2300 / $10000) ; $00 - inc hl - ld [hl], ((2300 % $10000) / $100) ; $08 - inc hl - ld [hl], (2300 % $100) ; $fc -.loop - ld de, wdc19 - ld bc, wMomsMoney - callba CompareMoney - jr z, .exact - jr nc, .less_than - call Functionfd099 - jr .loop - -.less_than - xor a - ret - -.exact - call Functionfd099 - ld a, 5 - call RandomRange - inc a - ld [wdc18], a - scf - ret -; fd099 - -Functionfd099: ; fd099 - ld de, wdc19 - ld bc, hMoneyTemp - callba AddMoney - ret -; fd0a6 - - -MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6) - call GetItemFromMom - ld de, 3 - add hl, de - ld a, [hli] - ld [hMoneyTemp], a - ld a, [hli] - ld [hMoneyTemp + 1], a - ld a, [hli] - ld [hMoneyTemp + 2], a - ld de, wMomsMoney - ld bc, hMoneyTemp - callba TakeMoney - ret - - -Functionfd0c3: ; fd0c3 - call GetItemFromMom - ld de, 6 - add hl, de - ld a, [hli] - cp 1 - jr z, .not_doll - ld a, [hl] - ld c, a - ld b, 1 - callba DecorationFlagAction_c - scf - ret - -.not_doll - ld a, [hl] - ld [CurItem], a - ld a, $1 - ld [wItemQuantityChangeBuffer], a - ld hl, PCItems - call ReceiveItem - ret -; fd0eb - - -Functionfd0eb: ; fd0eb (3f:50eb) - call GetItemFromMom - ld de, 6 ; field - add hl, de - ld a, [hli] - ld de, Script_MomBoughtItem - cp 1 - ret z - ld de, Script_MomBoughtDoll - ret -; fd0fd (3f:50fd) - -Script_MomBoughtItem: ; 0xfd0fd - writetext _MomText_HiHowAreYou - writetext _MomText_FoundAnItem - writetext _MomText_BoughtWithYourMoney - writetext _MomText_ItsInPC - end -; 0xfd10a - -Script_MomBoughtDoll: ; 0xfd10a - writetext _MomText_HiHowAreYou - writetext _MomText_FoundADoll - writetext _MomText_BoughtWithYourMoney - writetext _MomText_ItsInRoom - end -; 0xfd117 - - -GetItemFromMom: ; fd117 - ld a, [wdc18] - and a - jr z, .zero - dec a - ld de, MomItems_1 - jr .incave - -.zero - ld a, [wdc17] - cp 10 ; length of MomItems_2 - jr c, .ok - xor a - -.ok - ld de, MomItems_2 - -.incave - ld l, a - ld h, 0 -rept 3 ; multiply hl by 8 - add hl, hl -endr - add hl, de - ret -; fd136 - -momitem: macro -; money to trigger, cost, kind, item - dt \1 - dt \2 - db \3, \4 -ENDM - - -MomItems_1: ; fd136 - momitem 0, 600, MOM_ITEM, SUPER_POTION - momitem 0, 90, MOM_ITEM, ANTIDOTE - momitem 0, 180, MOM_ITEM, POKE_BALL - momitem 0, 450, MOM_ITEM, ESCAPE_ROPE - momitem 0, 500, MOM_ITEM, GREAT_BALL -; fd15e - -MomItems_2: ; fd15e - momitem 900, 600, MOM_ITEM, SUPER_POTION - momitem 4000, 270, MOM_ITEM, REPEL - momitem 7000, 600, MOM_ITEM, SUPER_POTION - momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL - momitem 15000, 3000, MOM_ITEM, MOON_STONE - momitem 19000, 600, MOM_ITEM, SUPER_POTION - momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL - momitem 40000, 900, MOM_ITEM, HYPER_POTION - momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL - momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL -; fd1ae - - db 0, 0, 0 ; XXX - -_MomText_HiHowAreYou: ; 0xfd1b1 - ; Hi, ! How are you? - text_jump UnknownText_0x1bc615 - db "@" -; 0xfd1b6 - -_MomText_FoundAnItem: ; 0xfd1b6 - ; I found a useful item shopping, so - text_jump UnknownText_0x1bc62a - db "@" -; 0xfd1bb - -_MomText_BoughtWithYourMoney: ; 0xfd1bb - ; I bought it with your money. Sorry! - text_jump UnknownText_0x1bc64e - db "@" -; 0xfd1c0 - -_MomText_ItsInPC: ; 0xfd1c0 - ; It's in your PC. You'll like it! - text_jump UnknownText_0x1bc673 - db "@" -; 0xfd1c5 - -_MomText_FoundADoll: ; 0xfd1c5 - ; While shopping today, I saw this adorable doll, so - text_jump UnknownText_0x1bc693 - db "@" -; 0xfd1ca - -_MomText_ItsInRoom: ; 0xfd1ca - ; It's in your room. You'll love it! - text_jump UnknownText_0x1bc6c7 - db "@" -; 0xfd1cf - - db 0 ; XXX - -Functionfd1d0: ; fd1d0 - ret -; fd1d1 - - ret ; XXX - +INCLUDE "event/mom_phone.asm" INCLUDE "misc/mobile_40.asm" @@ -52717,7 +23310,7 @@ Function10404d: ; 10404d ret ; 104061 -Function104061:: ; 104061 +ReloadMapPart:: ; 104061 ld hl, Function104067 jp Function104177 ; 104067 @@ -52747,7 +23340,7 @@ Function104067: ; 104067 ret Function104099: ; 104099 - ld hl, Function104061 + ld hl, ReloadMapPart ; useless ld hl, Function1040a2 jp Function104177 ; 1040a2 @@ -53221,48 +23814,48 @@ Function104309: ld [rVBK], a ld c, $8 ld hl, w6_d000 + $80 - ld de, VBGMap1 tile $00 + debgcoord 0, 0, VBGMap1 call Function104209 ld a, $0 ld [rVBK], a ld c, $8 ld hl, w6_d000 - ld de, VBGMap1 tile $00 + debgcoord 0, 0, VBGMap1 call Function104209 ret Function10433a: ; 10433a (41:433a) - ld b, $4 -.asm_10433c - ld c, $14 -.asm_10433e + ld b, 4 +.outer_loop + ld c, 20 +.inner_loop ld a, [de] ld [hli], a inc de dec c - jr nz, .asm_10433e + jr nz, .inner_loop ld a, l - add $c + add $20 - 20 ld l, a ld a, h adc $0 ld h, a dec b - jr nz, .asm_10433c + jr nz, .outer_loop ret ; 104350 -ShockEmote: INCBIN "gfx/emotes/shock.2bpp" -QuestionEmote: INCBIN "gfx/emotes/question.2bpp" -HappyEmote: INCBIN "gfx/emotes/happy.2bpp" -SadEmote: INCBIN "gfx/emotes/sad.2bpp" -HeartEmote: INCBIN "gfx/emotes/heart.2bpp" -BoltEmote: INCBIN "gfx/emotes/bolt.2bpp" -SleepEmote: INCBIN "gfx/emotes/sleep.2bpp" -FishEmote: INCBIN "gfx/emotes/fish.2bpp" -FishingRodGFX1: INCBIN "gfx/misc/fishing1.2bpp" +ShockEmote: INCBIN "gfx/emotes/shock.2bpp" +QuestionEmote: INCBIN "gfx/emotes/question.2bpp" +HappyEmote: INCBIN "gfx/emotes/happy.2bpp" +SadEmote: INCBIN "gfx/emotes/sad.2bpp" +HeartEmote: INCBIN "gfx/emotes/heart.2bpp" +BoltEmote: INCBIN "gfx/emotes/bolt.2bpp" +SleepEmote: INCBIN "gfx/emotes/sleep.2bpp" +FishEmote: INCBIN "gfx/emotes/fish.2bpp" +JumpShadowGFX: INCBIN "gfx/misc/shadow.2bpp" FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp" -FishingRodGFX3: INCBIN "gfx/misc/fishing3.2bpp" +BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp" FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp" @@ -53276,7 +23869,7 @@ RunCallback_05_03: ; 1045b0 call RunMapCallback RunCallback_03: ; 1045c4 - callba Function97df9 + callba ClearCmdQueue ld a, $3 call RunMapCallback call GetMapHeaderTimeOfDayNybble @@ -53286,7 +23879,7 @@ RunCallback_03: ; 1045c4 EnterMapConnection: ; 1045d6 ; Return carry if a connection has been entered. - ld a, [wd151] + ld a, [wPlayerStepDirection] and a jp z, EnterSouthConnection cp 1 @@ -53503,7 +24096,7 @@ LoadMapTimeOfDay: ; 104750 ld hl, VramState res 6, [hl] ld a, $1 - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a callba Function8c0e5 callba Function8c001 call OverworldTextModeSwitch @@ -53512,10 +24105,10 @@ LoadMapTimeOfDay: ; 104750 ret Function104770: ; 104770 (41:4770) - ld a, $98 - ld [wd153], a + ld a, VBGMap0 / $100 + ld [wBGMapAnchor + 1], a xor a - ld [wd152], a + ld [wBGMapAnchor], a ld [hSCY], a ld [hSCX], a callba Function5958 @@ -53525,50 +24118,50 @@ Function104770: ; 104770 (41:4770) ld [rVBK], a xor a lb bc, 4, 0 - ld hl, VBGMap0 tile $00 + hlbgcoord 0, 0 call ByteFill pop af ld [rVBK], a ld a, $60 lb bc, 4, 0 - ld hl, VBGMap0 tile $00 + hlbgcoord 0, 0 call ByteFill ret Function1047a3: ; 1047a3 (41:47a3) decoord 0, 0 - call Function1047b4 + call .copy ld a, [hCGB] and a ret z + decoord 0, 0, AttrMap ld a, $1 ld [rVBK], a - -Function1047b4: ; 1047b4 (41:47b4) - ld hl, VBGMap0 tile $00 - ld c, $14 - ld b, $12 -.asm_1047bb +.copy: + hlbgcoord 0, 0 + ld c, SCREEN_WIDTH + ld b, SCREEN_HEIGHT +.row push bc -.asm_1047bc +.column ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_1047bc - ld bc, $c + jr nz, .column + ld bc, $20 - SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, .asm_1047bb + jr nz, .row ld a, $0 ld [rVBK], a ret LoadGraphics: ; 1047cf call LoadTilesetHeader - call Function2821 + call LoadTileset xor a ld [hMapAnims], a xor a @@ -53579,14 +24172,14 @@ LoadGraphics: ; 1047cf ret LoadMapPalettes: ; 1047eb - ld b, $9 + ld b, SCGB_09 jp GetSGBLayout ; 1047f0 RefreshMapSprites: ; 1047f0 call ClearSprites callba ReturnFromMapSetupScript - call Function2914 + call GetMovementPermissions callba Function579d callba CheckReplaceKrisSprite ld hl, wPlayerSpriteSetupFlags @@ -53602,7 +24195,7 @@ RefreshMapSprites: ; 1047f0 ret CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) - ld a, [wd151] + ld a, [wPlayerStepDirection] cp STANDING ret z and a ; DOWN @@ -53617,7 +24210,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) ret .down - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] sub 4 ld b, a ld a, [MapHeight] @@ -53628,7 +24221,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) ret .up - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] sub 4 cp -1 jr z, .ok @@ -53636,7 +24229,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) ret .left - ld a, [PlayerMapX] + ld a, [PlayerNextMapX] sub $4 cp -1 jr z, .ok @@ -53644,7 +24237,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) ret .right - ld a, [PlayerMapX] + ld a, [PlayerNextMapX] sub 4 ld b, a ld a, [MapWidth] @@ -53706,2060 +24299,9 @@ GetCoordOfUpperLeftCorner:: ; 10486d ret ; 1048ba +INCLUDE "engine/mysterygift.asm" -DoMysteryGift: ; 1048ba (41:48ba) - call ClearTileMap - call ClearSprites - call WaitBGMap - call Function105153 - hlcoord 3, 8 - ld de, String_1049cd - call PlaceString - call WaitBGMap - callba Function2c642 - call Function1050fb - ld a, $2 - ld [wca01], a - ld a, $14 - ld [wca02], a - ld a, [rIE] - push af - call Function104a95 - ld d, a - xor a - ld [rIF], a - pop af - ld [rIE], a - push de - call ClearTileMap - call EnableLCD - call WaitBGMap - ld b, $8 - call GetSGBLayout - call SetPalettes - pop de - hlcoord 2, 8 - ld a, d - ld de, UnknownText_0x1049fd - cp $10 - jp z, Function1049af - cp $6c - jp nz, Function1049b4 - ld a, [wc900] - cp $3 - jr z, .asm_10492f - call Function104a25 - ld hl, UnknownText_0x104a11 - jp nc, Function1049c5 - call Function104a30 - ld hl, UnknownText_0x104a16 - jp c, Function1049c5 -.asm_10492f - ld a, [wc962] - and a - jp nz, Function1049bd - ld a, [wc912] - and a - jp nz, Function1049c2 - ld a, [wc900] - cp $3 - jr z, .asm_104963 - call Function104a56 - ld a, [wc900] - cp $4 - jr z, .asm_104963 - call Function104a71 - callba RestoreMobileEventIndex - callba MobileFn_1060a9 - callba BackupMobileEventIndex -.asm_104963 - ld a, [wc90f] - and a - jr z, .item - ld a, [wc911] - ld c, a - callba MysteryGiftGetDecoration - push bc - call Function105069 - pop bc - jr nz, .item - callab GetDecorationName_c - ld h, d - ld l, e - ld de, StringBuffer1 - ld bc, ITEM_NAME_LENGTH - call CopyBytes - ld hl, UnknownText_0x104a20 - jr Function1049c5 - -.item - call GetMysteryGiftBank - ld a, [wc910] - ld c, a - callba MysteryGiftGetItemHeldEffect - ld a, c - ld [s0_abe4], a - ld [wNamedObjectIndexBuffer], a - call CloseSRAM - call GetItemName - ld hl, UnknownText_0x104a1b - jr Function1049c5 - -Function1049af: ; 1049af (41:49af) - ld hl, UnknownText_0x1049fd - jr Function1049c5 - -Function1049b4: ; 1049b4 (41:49b4) - ld hl, UnknownText_0x104a02 - call PrintText - jp DoMysteryGift - -Function1049bd: ; 1049bd (41:49bd) - ld hl, UnknownText_0x104a07 - jr Function1049c5 - -Function1049c2: ; 1049c2 (41:49c2) - ld hl, UnknownText_0x104a0c - -Function1049c5: ; 1049c5 (41:49c5) - call PrintText - ld a, $e3 - ld [rLCDC], a - ret -; 1049cd (41:49cd) - -String_1049cd: ; 1049cd - db "Press A to" - next "link IR-Device" - next "Press B to" - next "cancel it." - db "@" -; 1049fd - -UnknownText_0x1049fd: ; 1049fd - text_jump UnknownText_0x1c0436 - db "@" -; 104a02 - -UnknownText_0x104a02: ; 104a02 - text_jump UnknownText_0x1c0454 - db "@" -; 104a07 - -UnknownText_0x104a07: ; 104a07 - text_jump UnknownText_0x1c046a - db "@" -; 104a0c - -UnknownText_0x104a0c: ; 104a0c - text_jump UnknownText_0x1c048e - db "@" -; 104a11 - -UnknownText_0x104a11: ; 104a11 - text_jump UnknownText_0x1c04a7 - db "@" -; 104a16 - -UnknownText_0x104a16: ; 104a16 - text_jump UnknownText_0x1c04c6 - db "@" -; 104a1b - -UnknownText_0x104a1b: ; 104a1b - text_jump UnknownText_0x1c04e9 - db "@" -; 104a20 - -UnknownText_0x104a20: ; 104a20 - text_jump UnknownText_0x1c04fa - db "@" -; 104a25 - -Function104a25: ; 104a25 (41:4a25) - call GetMysteryGiftBank - ld a, [s0_abe5] - cp $5 - jp CloseSRAM - -Function104a30: ; 104a30 (41:4a30) - call GetMysteryGiftBank - ld a, [wc901] - ld b, a - ld a, [wc902] - ld c, a - ld a, [s0_abe5] - ld d, a - ld hl, s0_abe6 -.asm_104a42 - ld a, d - and a - jr z, .asm_104a53 - ld a, [hli] - cp b - jr nz, .asm_104a4e - ld a, [hl] - cp c - jr z, .asm_104a52 -.asm_104a4e - inc hl - dec d - jr .asm_104a42 -.asm_104a52 - scf -.asm_104a53 - jp CloseSRAM - -Function104a56: ; 104a56 (41:4a56) - call GetMysteryGiftBank - ld hl, s0_abe5 - ld a, [hl] - inc [hl] - ld hl, s0_abe6 ; inc hl - ld e, a - ld d, $0 -rept 2 - add hl, de -endr - ld a, [wc901] - ld [hli], a - ld a, [wc902] - ld [hl], a - jp CloseSRAM - -Function104a71: ; 104a71 (41:4a71) - call GetMysteryGiftBank - ld a, $1 - ld [sMysteryGiftTrainerHouseFlag], a - ld hl, wc903 - ld de, s0_abfe - ld bc, $b - call CopyBytes - ld a, $1 - ld [de], a - inc de - ld hl, wc850 - ld bc, $26 - call CopyBytes - jp CloseSRAM - -Function104a95: ; 104a95 (41:4a95) - di - callba ClearChannels - call Function104d5e -.asm_104a9f - call Function104d96 - call Function104ddd - ld a, [hPrintNum10] - cp $10 - jp z, Function104bd0 - cp $6c - jr nz, .asm_104a9f - ld a, [hPrintNum9] - cp $2 - jr z, Function104b22 - ld hl, $ffb3 - ld b, $1 - call Function104d56 - jr nz, .asm_104ac8 - call Function104b49 - jp nz, Function104bd0 - jr asm_104b0a -.asm_104ac8 - ld a, [rLY] - cp $90 - jr c, .asm_104ac8 - ld c, rRP % $100 - ld a, $c0 - ld [$ff00+c], a - ld b, $f0 -.asm_104ad5 - push bc - call Function105038 - ld b, $2 - ld c, rRP % $100 -.asm_104add - ld a, [$ff00+c] - and b - ld b, a - ld a, [rLY] - cp $90 - jr nc, .asm_104add -.asm_104ae6 - ld a, [$ff00+c] - and b - ld b, a - ld a, [rLY] - cp $90 - jr c, .asm_104ae6 - ld a, b - pop bc - dec b - jr z, .asm_104a9f - or a - jr nz, .asm_104a9f - ld a, [hMoneyTemp + 1] - bit 1, a - jr z, .asm_104ad5 - ld a, $10 - ld [hPrintNum10], a - jp Function104bd0 - -Function104b04: ; 104b04 (41:4b04) - call Function104b40 - jp nz, Function104bd0 - -asm_104b0a: ; 104b0a (41:4b0a) - call Function104d38 - jp nz, Function104bd0 - call Function104b88 - jp nz, Function104bd0 - call Function104d43 - jp nz, Function104bd0 - call Function105033 - jp Function104bd0 - -Function104b22: ; 104b22 (41:4b22) - call Function104b88 - jp nz, Function104bd0 - call Function104d43 - jp nz, Function104bd0 - call Function104b40 - jp nz, Function104bd0 - call Function104d38 - jp nz, Function104bd0 - call Function10502e - jp Function104bd0 - -Function104b40: ; 104b40 (41:4b40) - ld hl, $ffb3 - ld b, $1 - call Function104d56 - ret nz - -Function104b49: ; 104b49 (41:4b49) - call Function105033 - ld a, [hPrintNum10] - cp $6c - ret nz - ld a, [$ffb3] - cp $96 - jp nz, Function104d32 - ld a, $90 - ld [$ffb3], a - call Function104d38 - ret nz - ld hl, $ffb3 - ld b, $1 - call Function104d4e - ret nz - call Function10502e - ld a, [hPrintNum10] - cp $6c - ret nz - call Function104d43 - ret nz - ld hl, wc850 - ld a, [wca02] - ld b, a - call Function104d56 - ret nz - call Function105033 - ld a, [hPrintNum10] - cp $6c - ret - -Function104b88: ; 104b88 (41:4b88) - ld a, $96 - ld [$ffb3], a - ld hl, $ffb3 - ld b, $1 - call Function104d4e - ret nz - call Function10502e - ld a, [hPrintNum10] - cp $6c - ret nz - call Function104d43 - ret nz - ld hl, $ffb3 - ld b, $1 - call Function104d56 - ret nz - call Function105033 - ld a, [hPrintNum10] - cp $6c - ret nz - ld a, [$ffb3] - cp $90 - jp nz, Function104d32 - call Function104d38 - ret nz - ld hl, OverworldMap - ld a, [wca02] - ld b, a - call Function104d4e - ret nz - call Function10502e - ld a, [hPrintNum10] - cp $6c - ret - -Function104bd0: ; 104bd0 (41:4bd0) - nop - ld a, [hPrintNum10] - cp $10 - jr z, .asm_104c18 - cp $6c - jr nz, .asm_104c18 - ld hl, wca01 - dec [hl] - jr z, .asm_104c18 - ld hl, wc850 - ld de, wc900 - ld bc, $14 - call CopyBytes - ld a, [wc850] - cp $3 - jr nc, .asm_104c18 - callba Function10510b - call Function1050fb - ld a, $26 - ld [wca02], a - ld a, [hPrintNum9] - cp $2 - jr z, .asm_104c10 - call Function104d43 - jr nz, Function104bd0 - jp Function104b04 -.asm_104c10 - call Function104d38 - jr nz, Function104bd0 - jp Function104b22 -.asm_104c18 - ld a, [hPrintNum10] - push af - call Function104da0 - xor a - ld [rIF], a - ld a, [rIE] - or $1 - ld [rIE], a - ei - call DelayFrame - pop af - ret - -Function104c2d: ; 104c2d (41:4c2d) - di - callba ClearChannels - call Function104d5e -.asm_104c37 - call Function104d96 - call Function104ddd - ld a, [hPrintNum10] - cp $10 - jp z, Function104d1c - cp $6c - jr nz, .asm_104c37 - ld a, [hPrintNum9] - cp $2 - jr z, .asm_104c6c - call Function104c8a - jp nz, Function104d1c - call Function104d38 - jp nz, Function104d1c - call Function104cd2 - jp nz, Function104d1c - call Function104d43 - jp nz, Function104d1c - call Function105033 - jp Function104d1c -.asm_104c6c - call Function104cd2 - jp nz, Function104d1c - call Function104d43 - jp nz, Function104d1c - call Function104c8a - jp nz, Function104d1c - call Function104d38 - jp nz, Function104d1c - call Function10502e - jp Function104d1c - -Function104c8a: ; 104c8a (41:4c8a) - ld hl, $ffb3 - ld b, $1 - call Function104d56 - ret nz - call Function105033 - ld a, [hPrintNum10] - cp $6c - ret nz - ld a, [$ffb3] - cp $3c - jp nz, Function104d32 - swap a - ld [$ffb3], a - call Function104d38 - ret nz - ld hl, $ffb3 - ld b, $1 - call Function104d4e - ret nz - call Function10502e - ld a, [hPrintNum10] - cp $6c - ret nz - call Function104d43 - ret nz - ld hl, wc850 - ld a, [wca02] - ld b, a - call Function104d56 - ret nz - call Function105033 - ld a, [hPrintNum10] - cp $6c - ret - -Function104cd2: ; 104cd2 (41:4cd2) - ld a, $3c - ld [$ffb3], a - ld hl, $ffb3 - ld b, $1 - call Function104d4e - ret nz - call Function10502e - ld a, [hPrintNum10] - cp $6c - ret nz - call Function104d43 - ret nz - ld hl, $ffb3 - ld b, $1 - call Function104d56 - ret nz - call Function105033 - ld a, [hPrintNum10] - cp $6c - ret nz - ld a, [$ffb3] - swap a - cp $3c - jp nz, Function104d32 - call Function104d38 - ret nz - ld hl, OverworldMap - ld a, [wca02] - ld b, a - call Function104d4e - ret nz - call Function10502e - ld a, [hPrintNum10] - cp $6c - ret - -Function104d1c: ; 104d1c (41:4d1c) - nop - ld a, [hPrintNum10] - push af - call Function104da0 - xor a - ld [rIF], a - ld a, [rIE] - or $1 - ld [rIE], a - ei - call DelayFrame - pop af - ret - -Function104d32: ; 104d32 (41:4d32) - ld a, $80 - ld [hPrintNum10], a - and a - ret - -Function104d38: ; 104d38 (41:4d38) - call Function104d96 - call Function104e46 - ld a, [hPrintNum10] - cp $6c - ret - -Function104d43: ; 104d43 (41:4d43) - call Function104d96 - call Function104dfe - ld a, [hPrintNum10] - cp $6c - ret - -Function104d4e: ; 104d4e (41:4d4e) - call Function104e93 - ld a, [hPrintNum10] - cp $6c - ret - -Function104d56: ; 104d56 (41:4d56) - call Function104f57 - ld a, [hPrintNum10] - cp $6c - ret - -Function104d5e: ; 104d5e (41:4d5e) - call Function104d74 - ld a, $4 - ld [rIE], a - xor a - ld [rIF], a - call Function104d96 - xor a - ld b, a -.asm_104d6d - inc a - jr nz, .asm_104d6d - inc b - jr nz, .asm_104d6d - ret - -Function104d74: ; 104d74 (41:4d74) - xor a - ld [rTAC], a - ld a, $fe - ld [rTMA], a - ld [rTIMA], a - ld a, $2 - ld [rTAC], a - or $4 - ld [rTAC], a - ret - -Function104d86: ; 104d86 (41:4d86) - xor a - ld [rTAC], a - ld [rTMA], a - ld [rTIMA], a - ld a, $2 - ld [rTAC], a - or $4 - ld [rTAC], a - ret - -Function104d96: ; 104d96 (41:4d96) - ld a, $c0 - call Function104e8c - ld a, $1 - ld [hPrintNum9], a - ret - -Function104da0: ; 104da0 (41:4da0) - xor a - call Function104e8c - ld a, $2 - ld [rTAC], a - ret - -Function104da9: ; 104da9 (41:4da9) - inc d - ret z - xor a - ld [rIF], a - halt - ld a, [$ff00+c] - bit 1, a - jr z, Function104da9 - or a - ret - -Function104db7: ; 104db7 (41:4db7) - inc d - ret z - xor a - ld [rIF], a - halt - ld a, [$ff00+c] - bit 1, a - jr nz, Function104db7 - or a - ret - -Function104dc5: ; 104dc5 (41:4dc5) - ld a, $c1 - ld [$ff00+c], a -.asm_104dc8 - dec d - ret z - xor a - ld [rIF], a - halt - jr .asm_104dc8 - -Function104dd1: ; 104dd1 (41:4dd1) - ld a, $c0 - ld [$ff00+c], a -.asm_104dd4 - dec d - ret z - xor a - ld [rIF], a - halt - jr .asm_104dd4 - -Function104ddd: ; 104ddd (41:4ddd) - ld d, $0 - ld e, d - ld a, $1 - ld [hPrintNum9], a -.asm_104de4 - call Function105038 - ld b, $2 - ld c, rRP % $100 - ld a, [hMoneyTemp + 1] - bit 1, a - jr z, .asm_104df6 - ld a, $10 - ld [hPrintNum10], a - ret -.asm_104df6 - bit 0, a - jr nz, asm_104e3a - ld a, [$ff00+c] - and b - jr nz, .asm_104de4 - -Function104dfe: ; 104dfe (41:4dfe) - ld c, rRP % $100 - ld d, $0 - ld e, d - call Function104db7 - jp z, Function104f42 - ld d, e - call Function104da9 - jp z, Function104f42 - call Function104db7 - jp z, Function104f42 - call Function104da9 - jp z, Function104f42 - ld a, $6c - ld [hPrintNum10], a - ld d, $3d - call Function104dd1 - ld d, $5 - call Function104dc5 - ld d, $15 - call Function104dd1 - ld d, $5 - call Function104dc5 - ld d, $5 - call Function104dd1 - ret - -asm_104e3a: ; 104e3a (41:4e3a) - call Random - ld e, a - and $f - ld d, a -.asm_104e41 - dec de - ld a, d - or e - jr nz, .asm_104e41 - -Function104e46: ; 104e46 (41:4e46) - ld a, $2 - ld [hPrintNum9], a - ld c, $56 - ld d, $0 - ld e, d - ld d, $3d - call Function104dd1 - ld d, $5 - call Function104dc5 - ld d, $15 - call Function104dd1 - ld d, $5 - call Function104dc5 - ld d, $5 - call Function104dd1 - ld d, e - call Function104db7 - jp z, Function104f42 - ld d, e - call Function104da9 - jp z, Function104f42 - call Function104db7 - jp z, Function104f42 - call Function104da9 - jp z, Function104f42 - ld d, $3d - call Function104dd1 - ld a, $6c - ld [hPrintNum10], a - ret - -Function104e8c: ; 104e8c (41:4e8c) - ld [rRP], a - ld a, $ff - ld [hPrintNum10], a - ret - -Function104e93: ; 104e93 (41:4e93) - xor a - ld [hDivisor], a - ld [hMathBuffer], a - push hl - push bc - ld c, $56 - ld d, $3d - call Function104dd1 - ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) - ld a, $5a - ld [hli], a - ld [hl], b - dec hl - ld b, $2 - call Function104ed6 - pop bc - pop hl - call Function104ed6 - ld a, [hDivisor] - ld [hQuotient], a - ld a, [hMathBuffer] - ld [$ffb5], a - push hl - ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) - ld b, $2 - call Function104ed6 - ld hl, hPrintNum10 - ld b, $1 - call Function104faf - ld a, [hQuotient] - ld [hDivisor], a - ld a, [$ffb5] - ld [hMathBuffer], a - pop hl - ret - -Function104ed6: ; 104ed6 (41:4ed6) - ld c, $56 - ld d, $5 - call Function104dd1 - ld d, $5 - call Function104dc5 - ld d, $15 - call Function104dd1 - ld a, b - cpl - ld b, a - ld a, $f4 - ld [rTMA], a -.asm_104eee - inc b - jr z, .asm_104f2e - ld a, $8 - ld [$ffb6], a - ld a, [hli] - ld e, a - ld a, [hDivisor] - add e - ld [hDivisor], a - ld a, [hMathBuffer] - adc $0 - ld [hMathBuffer], a -.asm_104f02 - xor a - ld [rIF], a - halt - ld a, $c1 - ld [rRP], a - ld d, $1 - ld a, e - rlca - ld e, a - jr nc, .asm_104f13 - inc d -.asm_104f13 - ld a, [rTIMA] - cp $f8 - jr c, .asm_104f13 - ld a, $c0 - ld [rRP], a - dec d - jr z, .asm_104f25 - xor a - ld [rIF], a - halt -.asm_104f25 - ld a, [$ffb6] - dec a - jr z, .asm_104eee - ld [$ffb6], a - jr .asm_104f02 -.asm_104f2e - ld a, $fe - ld [rTMA], a - xor a - ld [rIF], a - halt - ld d, $5 - call Function104dc5 - ld d, $11 - call Function104dd1 - ret - -Function104f42: ; 104f42 (41:4f42) - ld a, [hPrintNum10] - or $2 - ld [hPrintNum10], a - ret - -Function104f49: ; 104f49 (41:4f49) - ld a, [hPrintNum10] - or $1 - ld [hPrintNum10], a - ret - -Function104f50: ; 104f50 (41:4f50) - ld a, [hPrintNum10] - or $80 - ld [hPrintNum10], a - ret - -Function104f57: ; 104f57 (41:4f57) - xor a - ld [hDivisor], a - ld [hMathBuffer], a - push bc - push hl - ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) - ld b, $2 - call Function104faf - ld a, [$ffb5] - ld [$ffba], a - ld b, a - pop hl - pop af - cp b - jp c, Function104f50 - ld a, [hQuotient] - cp $5a - jp nz, Function104f50 - call Function104faf - ld a, [hDivisor] - ld d, a - ld a, [hMathBuffer] - ld e, a - push hl - push de - ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) - ld b, $2 - call Function104faf - pop de - ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) - ld a, [hli] - xor d - ld b, a - ld a, [hl] - xor e - or b - call nz, Function104f49 - push de - ld d, $3d - call Function104dd1 - ld hl, hPrintNum10 - ld b, $1 - call Function104ed6 - pop de - pop hl - ld a, d - ld [hDivisor], a - ld a, e - ld [hMathBuffer], a - ret - -Function104faf: ; 104faf (41:4faf) - ld c, rRP % $100 - ld d, $0 - call Function104db7 - jp z, Function104f42 - ld d, $0 - call Function104da9 - jp z, Function104f42 - ld d, $0 - call Function104db7 - jp z, Function104f42 - ld a, b - cpl - ld b, a - xor a - ld [hMoneyTemp + 2], a - call Function104d86 -.asm_104fd2 - inc b - jr z, .asm_10501a - ld a, $8 - ld [$ffb6], a -.asm_104fd9 - ld d, $0 -.asm_104fdb - inc d - jr z, .asm_104fe5 - ld a, [$ff00+c] - bit 1, a - jr z, .asm_104fdb - ld d, $0 -.asm_104fe5 - inc d - jr z, .asm_104fed - ld a, [$ff00+c] - bit 1, a - jr nz, .asm_104fe5 -.asm_104fed - ld a, [hMoneyTemp + 2] - ld d, a - ld a, [rTIMA] - ld [hMoneyTemp + 2], a - sub d - cp $12 - jr c, .asm_104ffd - set 0, e - jr .asm_104fff -.asm_104ffd - res 0, e -.asm_104fff - ld a, [$ffb6] - dec a - ld [$ffb6], a - jr z, .asm_10500b - ld a, e - rlca - ld e, a - jr .asm_104fd9 -.asm_10500b - ld a, e - ld [hli], a - ld a, [hDivisor] - add e - ld [hDivisor], a - ld a, [hMathBuffer] - adc $0 - ld [hMathBuffer], a - jr .asm_104fd2 -.asm_10501a - call Function104d74 - xor a - ld [rIF], a - ld d, $0 - call Function104da9 - jp z, Function104f42 - ld d, $10 - call Function104dd1 - ret - -Function10502e: ; 10502e (41:502e) - ld b, $0 - jp Function104e93 - -Function105033: ; 105033 (41:5033) - ld b, $0 - jp Function104f57 - -Function105038: ; 105038 (41:5038) - ld a, $20 - ld [rJOYP], a -rept 2 - ld a, [rJOYP] -endr - cpl - and $f - swap a - ld b, a - ld a, $10 - ld [rJOYP], a -rept 6 - ld a, [rJOYP] -endr - cpl - and $f - or b - ld c, a - ld a, [hMoneyTemp] - xor c - and c - ld [hMoneyTemp + 1], a - ld a, c - ld [hMoneyTemp], a - ld a, $30 - ld [rJOYP], a - ret - -Function105069: ; 105069 (41:5069) - call GetMysteryGiftBank - ld d, $0 - ld b, $2 - ld hl, s0_abf0 - predef_id FlagPredef - push hl - push bc - call Predef - call CloseSRAM - ld a, c - and a - pop bc - pop hl - ret nz - call GetMysteryGiftBank - ld b, $1 - predef FlagPredef - call CloseSRAM - xor a - ret - -Function105091: ; 105091 (41:5091) - call GetMysteryGiftBank - ld c, $0 -.asm_105096 - push bc - ld d, $0 - ld b, $2 - ld hl, s0_abf0 - predef FlagPredef - ld a, c - and a - pop bc - jr z, .asm_1050b0 - push bc - callab SetSpecificDecorationFlag - pop bc -.asm_1050b0 - inc c - ld a, c - cp $2a + 1 - jr c, .asm_105096 - jp CloseSRAM - -Special_UnlockMysteryGift: ; 1050b9 - call GetMysteryGiftBank - ld hl, s0_abe3 - ld a, [hl] - inc a - jr nz, .ok - ld [hld], a - ld [hl], a -.ok - jp CloseSRAM -; 1050c8 - -Function1050c8: ; 1050c8 - call GetMysteryGiftBank - ld a, [s0_abe5] - cp $ff - jr z, .okay - xor a - ld [s0_abe5], a -.okay - jp CloseSRAM -; 1050d9 - - -Function1050d9: ; 1050d9 - call GetMysteryGiftBank - ld hl, sMysteryGiftItem - ld de, s0_abe4 - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - jp CloseSRAM -; 1050ea - - -Function1050ea: ; 1050ea (41:50ea) - call GetMysteryGiftBank - ld hl, s0_abe4 - ld de, sMysteryGiftItem - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - jp CloseSRAM - -Function1050fb: ; 1050fb (41:50fb) - ld hl, wc850 - xor a - ld b, $26 -.asm_105101 - ld [hli], a - dec b - jr nz, .asm_105101 - ret - - -GetMysteryGiftBank: ; 105106 - ld a, BANK(s0_abe4) - jp GetSRAMBank -; 10510b - - -Function10510b: ; 10510b (41:510b) - ld a, BANK(sPokemonData) - call GetSRAMBank - ld de, OverworldMap - ld bc, sPokemonData + PartyMons - wPokemonData - ld hl, sPokemonData + PartySpecies - wPokemonData -.asm_105119 - ld a, [hli] - cp $ff - jr z, .asm_105148 - cp EGG - jr z, .asm_10513e - push hl - ld hl, MON_LEVEL - add hl, bc - ld a, [hl] - ld [de], a - inc de - ld hl, MON_SPECIES - add hl, bc - ld a, [hl] - ld [de], a - inc de - ld hl, MON_MOVES - add hl, bc - push bc - ld bc, NUM_MOVES - call CopyBytes - pop bc - pop hl -.asm_10513e - push hl - ld hl, PARTYMON_STRUCT_LENGTH - add hl, bc - ld b, h - ld c, l - pop hl - jr .asm_105119 -.asm_105148 - ld a, $ff - ld [de], a - ld a, $26 - ld [wca00], a - jp CloseSRAM - -Function105153: ; 105153 (41:5153) - call ClearBGPalettes - call DisableLCD - ld hl, MysteryGiftGFX - ld de, VTiles2 tile $00 - ld a, BANK(MysteryGiftGFX) - ld bc, Function105688 - MysteryGiftGFX - call FarCopyBytes - hlcoord 0, 0 - ld a, $42 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - call ByteFill - hlcoord 3, 7 - lb bc, 9, 15 - call ClearBox - hlcoord 0, 0 - ld a, $0 - ld [hli], a - inc a - ld [hl], a - hlcoord 0, 1 - inc a - ld [hli], a - inc a - ld [hl], a - hlcoord 7, 1 - ld a, $12 - call Function10522e - hlcoord 2, 2 - ld a, $17 - call Function105236 - hlcoord 2, 3 - ld a, $27 - call Function105236 - hlcoord 9, 4 - ld a, $37 - ld [hli], a - inc a - ld [hl], a - hlcoord 1, 2 - ld [hl], $4 - hlcoord 1, 3 - ld a, $5 - call Function105246 - ld a, $9 - hlcoord 18, 5 - call Function105242 - hlcoord 2, 5 - ld a, $b - call Function105251 - hlcoord 2, 16 - ld a, $7 - call Function105251 - hlcoord 2, 5 - ld a, $d - call Function10522e - hlcoord 7, 5 - ld [hl], $c - hlcoord 18, 5 - ld [hl], $a - hlcoord 18, 16 - ld [hl], $8 - hlcoord 1, 16 - ld [hl], $6 - hlcoord 2, 6 - ld a, $3a - call Function105251 - hlcoord 2, 15 - ld a, $40 - call Function105251 - hlcoord 2, 6 - ld a, $3c - call Function10523e - hlcoord 17, 6 - ld a, $3e - call Function10523e - hlcoord 2, 6 - ld [hl], $39 - hlcoord 17, 6 - ld [hl], $3b - hlcoord 2, 15 - ld [hl], $3f - hlcoord 17, 15 - ld [hl], $41 - call EnableLCD - call WaitBGMap - ld b, $1d - call GetSGBLayout - call SetPalettes - ret - -Function10522e: ; 10522e (41:522e) - ld b, $5 - jr asm_105238 -; 105232 (41:5232) - -Function105232: ; unreferenced - ld b, 6 - jr asm_105238 - -Function105236: ; 105236 (41:5236) - ld b, $10 - -asm_105238: ; 105238 (41:5238) - ld [hli], a - inc a - dec b - jr nz, asm_105238 - ret - -Function10523e: ; 10523e (41:523e) - ld b, $9 - jr asm_105248 - -Function105242: ; 105242 (41:5242) - ld b, $b - jr asm_105248 - -Function105246: ; 105246 (41:5246) - ld b, $e - -asm_105248: ; 105248 (41:5248) - ld [hl], a - ld de, $14 - add hl, de - dec b - jr nz, asm_105248 - ret - -Function105251: ; 105251 (41:5251) - ld b, $10 -.asm_105253 - ld [hli], a - dec b - jr nz, .asm_105253 - ret - -MysteryGiftGFX: ; 105258 -INCBIN "gfx/misc/mystery_gift.2bpp" - - -Function105688: ; 105688 (41:5688) - call ClearTileMap - call ClearSprites - call WaitBGMap - call Function1057d7 - hlcoord 3, 8 - ld de, String_10572e - call PlaceString - call WaitBGMap - call Function10578c - call Function1050fb - ld a, $24 - ld [wca02], a - ld a, [rIE] - push af - call Function104c2d - ld d, a - xor a - ld [rIF], a - pop af - ld [rIE], a - ld a, d - cp $10 - jp z, Function105712 - cp $6c - jp nz, Function10571a - call Function1056eb - ld c, 60 - call DelayFrames - call Function105777 - ld hl, Text_10575e - call PrintText - ld de, wc850 - callba Function8ac70 - ld a, c - ld [wd265], a - ld hl, Text_105768 - jr c, asm_105726 - ld hl, Text_105763 - jr asm_105726 - -Function1056eb: ; 1056eb (41:56eb) - ld c, $10 -.asm_1056ed - ld hl, Sprites - ld b, $8 -.asm_1056f2 - dec [hl] -rept 4 - inc hl -endr - dec b - jr nz, .asm_1056f2 - ld hl, Sprites + $20 - ld b, $8 -.asm_1056ff - inc [hl] -rept 4 - inc hl -endr - dec b - jr nz, .asm_1056ff - dec c - ret z - push bc - ld c, 4 - call DelayFrames - pop bc - jr .asm_1056ed - -Function105712: ; 105712 (41:5712) - call Function105777 - ld hl, Text_10576d - jr asm_105726 - -Function10571a: ; 10571a (41:571a) - call Function105777 - ld hl, Text_105772 - call PrintText - jp Function105688 - -asm_105726: ; 105726 (41:5726) - call PrintText - ld a, $e3 - ld [rLCDC], a - ret -; 10572e (41:572e) - -String_10572e: ; 10572e - db "エーボタン¯おすと" - next "つうしん", $4a, "おこなわれるよ!" - next "ビーボタン¯おすと" - next "つうしん¯ちゅうし します" - db "@" - -; 10575e - -Text_10575e: ; 10575e - text_jump UnknownText_0x1c051a - db "@" - -Text_105763: ; 105763 - text_jump UnknownText_0x1c0531 - db "@" - -Text_105768: ; 105768 - text_jump UnknownText_0x1c0555 - db "@" - -Text_10576d: ; 10576d - text_jump UnknownText_0x1c0573 - db "@" - -Text_105772: ; 105772 - text_jump UnknownText_0x1c0591 - db "@" -; 105777 - -Function105777: ; 105777 (41:5777) - call ClearSprites - call ClearTileMap - call EnableLCD - call WaitBGMap - ld b, $8 - call GetSGBLayout - call SetPalettes - ret - -Function10578c: ; 10578c (41:578c) - ld de, OverworldMap - ld a, BANK(sPlayerData) - call GetSRAMBank - ld hl, sPlayerData + PlayerName - wPlayerData - ld bc, NAME_LENGTH - call CopyBytes - ld hl, sPlayerData + PlayerID - wPlayerData - ld bc, 2 - call CopyBytes - ld hl, sPlayerData + wSecretID - wPlayerData - ld bc, 2 - call CopyBytes - call CloseSRAM - ld a, BANK(sCrystalData) - call GetSRAMBank - ld a, [sCrystalData + 0] - ld [de], a - inc de - ld a, $4 - call GetSRAMBank - ld hl, $a603 - ld bc, $8 - call CopyBytes - ld hl, $a007 - ld bc, $c - call CopyBytes - call CloseSRAM - ret - -Function1057d7: ; 1057d7 (41:57d7) - call ClearBGPalettes - call DisableLCD - ld hl, MysteryGiftJP_GFX - ld de, VTiles2 tile $00 - ld a, BANK(MysteryGiftJP_GFX) - lb bc, 4, 0 - call FarCopyBytes - ld hl, MysteryGiftJP_GFX + $400 - ld de, VTiles0 tile $00 - ld a, BANK(MysteryGiftJP_GFX) - ld bc, $80 - call FarCopyBytes - hlcoord 0, 0 - ld a, $3f - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - call ByteFill - hlcoord 3, 7 - lb bc, 9, 15 - call ClearBox - hlcoord 0, 0 - ld a, $0 - ld [hli], a - inc a - ld [hl], a - hlcoord 0, 1 - inc a - ld [hli], a - inc a - ld [hl], a - hlcoord 4, 2 - ld a, $13 - call Function1058ca - hlcoord 4, 3 - ld a, $1e - call Function1058ce - hlcoord 4, 4 - ld a, $2a - call Function1058ce - hlcoord 1, 2 - ld [hl], $4 - hlcoord 1, 3 - ld a, $5 - call Function1058de - ld a, $9 - hlcoord 18, 5 - call Function1058da - hlcoord 2, 5 - ld a, $b - call Function1058e9 - hlcoord 2, 16 - ld a, $7 - call Function1058e9 - hlcoord 2, 5 - ld a, $d - call Function1058c6 - hlcoord 8, 5 - ld [hl], $c - hlcoord 18, 5 - ld [hl], $a - hlcoord 18, 16 - ld [hl], $8 - hlcoord 1, 16 - ld [hl], $6 - hlcoord 2, 6 - ld a, $37 - call Function1058e9 - hlcoord 2, 15 - ld a, $3d - call Function1058e9 - hlcoord 2, 6 - ld a, $39 - call Function1058d6 - hlcoord 17, 6 - ld a, $3b - call Function1058d6 - hlcoord 2, 6 - ld [hl], $36 - hlcoord 17, 6 - ld [hl], $38 - hlcoord 2, 15 - ld [hl], $3c - hlcoord 17, 15 - ld [hl], $3e - ld de, Sprites - ld hl, OAM_1058f0 - ld bc, $40 - call CopyBytes - call EnableLCD - call WaitBGMap - ld b, $2 - callba Function4930f - jp SetPalettes - -Function1058c6: ; 1058c6 (41:58c6) - ld b, $6 - jr asm_1058d0 - -Function1058ca: ; 1058ca (41:58ca) - ld b, $b - jr asm_1058d0 - -Function1058ce: ; 1058ce (41:58ce) - ld b, $c - -asm_1058d0: ; 1058d0 (41:58d0) - ld [hli], a - inc a - dec b - jr nz, asm_1058d0 - ret - -Function1058d6: ; 1058d6 (41:58d6) - ld b, $9 - jr asm_1058e0 - -Function1058da: ; 1058da (41:58da) - ld b, $b - jr asm_1058e0 - -Function1058de: ; 1058de (41:58de) - ld b, $e - -asm_1058e0: ; 1058e0 (41:58e0) - ld [hl], a - ld de, $14 - add hl, de - dec b - jr nz, asm_1058e0 - ret - -Function1058e9: ; 1058e9 (41:58e9) - ld b, $10 -.asm_1058eb - ld [hli], a - dec b - jr nz, .asm_1058eb - ret -; 1058f0 (41:58f0) - -OAM_1058f0: ; 1058f0 - db $11, $34, $00, $00 - db $11, $3c, $01, $00 - db $11, $44, $02, $00 - db $11, $4c, $03, $00 - db $19, $34, $04, $00 - db $19, $3c, $05, $00 - db $19, $44, $06, $00 - db $19, $4c, $07, $00 - db $01, $5c, $00, $00 - db $01, $64, $01, $00 - db $01, $6c, $02, $00 - db $01, $74, $03, $00 - db $09, $5c, $04, $00 - db $09, $64, $05, $00 - db $09, $6c, $06, $00 - db $09, $74, $07, $00 - -; japanese mystery gift gfx -MysteryGiftJP_GFX: ; 105930 -INCBIN "gfx/misc/mystery_gift_jp.2bpp" - - -DisplayUsedMoveText: ; 105db0 -; battle command 03 - ld hl, UsedMoveText - call BattleTextBox - jp WaitBGMap -; 105db9 - - -UsedMoveText: ; 105db9 -; this is a stream of text and asm from 105db9 to 105ef6 - - text_jump _ActorNameText - start_asm - - ld a, [hBattleTurn] - and a - jr nz, .start - - ld a, [wPlayerMoveStruct + MOVE_ANIM] - call UpdateUsedMoves - -.start - ld a, BATTLE_VARS_LAST_MOVE - call GetBattleVarAddr - ld d, h - ld e, l - - ld a, BATTLE_VARS_LAST_COUNTER_MOVE - call GetBattleVarAddr - - ld a, BATTLE_VARS_MOVE_ANIM - call GetBattleVar - ld [wd265], a - - push hl - callba CheckUserIsCharging - pop hl - jr nz, .grammar - - ; update last move - ld a, [wd265] - ld [hl], a - ld [de], a - -.grammar - call GetMoveGrammar -; wd265 now contains MoveGrammar - - -; everything except 'instead' made redundant in localization - - ; check obedience - ld a, [AlreadyDisobeyed] - and a - ld hl, UsedMove2Text - ret nz - - ; check move grammar - ld a, [wd265] - cp $3 - ld hl, UsedMove2Text - ret c - ld hl, UsedMove1Text - ret -; 105e04 - -UsedMove1Text: ; 105e04 - text_jump _UsedMove1Text - start_asm - jr Function105e10 -; 105e0b - -UsedMove2Text: ; 105e0b - text_jump _UsedMove2Text - start_asm -; 105e10 - -Function105e10: ; 105e10 -; check obedience - ld a, [AlreadyDisobeyed] - and a - jr z, GetMoveNameText -; print "instead," - ld hl, UsedInsteadText - ret -; 105e1a - -UsedInsteadText: ; 105e1a - text_jump _UsedInsteadText - start_asm -; 105e1f - -GetMoveNameText: ; 105e1f - ld hl, MoveNameText - ret -; 105e23 - -MoveNameText: ; 105e23 - text_jump _MoveNameText - start_asm -; 105e28 - -GetUsedMoveTextEnder: ; 105e28 -; get start address - ld hl, .endusedmovetexts - -; get move id - ld a, [wd265] - -; 2-byte pointer - add a - -; seek - push bc - ld b, $0 - ld c, a - add hl, bc - pop bc - -; get pointer to usedmovetext ender - ld a, [hli] - ld h, [hl] - ld l, a - ret -; 105e39 - -.endusedmovetexts ; 105e39 - dw EndUsedMove1Text - dw EndUsedMove2Text - dw EndUsedMove3Text - dw EndUsedMove4Text - dw EndUsedMove5Text -; 105e43 - -EndUsedMove1Text: ; 105e43 - text_jump _EndUsedMove1Text - db "@" -; 105e48 -EndUsedMove2Text: ; 105e48 - text_jump _EndUsedMove2Text - db "@" -; 105e4d -EndUsedMove3Text: ; 105e4d - text_jump _EndUsedMove3Text - db "@" -; 105e52 -EndUsedMove4Text: ; 105e52 - text_jump _EndUsedMove4Text - db "@" -; 105e57 -EndUsedMove5Text: ; 105e57 - text_jump _EndUsedMove5Text - db "@" -; 105e5c - - -GetMoveGrammar: ; 105e5c -; store move grammar type in wd265 - - push bc -; c = move id - ld a, [wd265] - ld c, a - ld b, $0 - -; read grammar table - ld hl, MoveGrammar -.loop - ld a, [hli] -; end of table? - cp $ff - jr z, .end -; match? - cp c - jr z, .end -; advance grammar type at $00 - and a - jr nz, .loop -; next grammar type - inc b - jr .loop - -.end -; wd265 now contains move grammar - ld a, b - ld [wd265], a - -; we're done - pop bc - ret -; 105e7a - -MoveGrammar: ; 105e7a -; made redundant in localization -; each move is given an identifier for what usedmovetext to use (0-4): - -; 0 - db SWORDS_DANCE - db GROWTH - db STRENGTH - db HARDEN - db MINIMIZE - db SMOKESCREEN - db WITHDRAW - db DEFENSE_CURL - db EGG_BOMB - db SMOG - db BONE_CLUB - db FLASH - db SPLASH - db ACID_ARMOR - db BONEMERANG - db REST - db SHARPEN - db SUBSTITUTE - db MIND_READER - db SNORE - db PROTECT - db SPIKES - db ENDURE - db ROLLOUT - db SWAGGER - db SLEEP_TALK - db HIDDEN_POWER - db PSYCH_UP - db EXTREMESPEED - db 0 ; end set - -; 1 - db RECOVER - db TELEPORT - db BIDE - db SELFDESTRUCT - db AMNESIA - db FLAIL - db 0 ; end set - -; 2 - db MEDITATE - db AGILITY - db MIMIC - db DOUBLE_TEAM - db BARRAGE - db TRANSFORM - db STRUGGLE - db SCARY_FACE - db 0 ; end set - -; 3 - db POUND - db SCRATCH - db VICEGRIP - db WING_ATTACK - db FLY - db BIND - db SLAM - db HORN_ATTACK - db WRAP - db THRASH - db TAIL_WHIP - db LEER - db BITE - db GROWL - db ROAR - db SING - db PECK - db ABSORB - db STRING_SHOT - db EARTHQUAKE - db FISSURE - db DIG - db TOXIC - db SCREECH - db METRONOME - db LICK - db CLAMP - db CONSTRICT - db POISON_GAS - db BUBBLE - db SLASH - db SPIDER_WEB - db NIGHTMARE - db CURSE - db FORESIGHT - db CHARM - db ATTRACT - db ROCK_SMASH - db 0 ; end set - -; all other moves = 4 - db $ff ; end -; 105ed0 - - -UpdateUsedMoves: ; 105ed0 -; append move a to PlayerUsedMoves unless it has already been used - - push bc -; start of list - ld hl, PlayerUsedMoves -; get move id - ld b, a -; next count - ld c, NUM_MOVES - -.loop -; get move from the list - ld a, [hli] -; not used yet? - and a - jr z, .add -; already used? - cp b - jr z, .quit -; next byte - dec c - jr nz, .loop - -; if the list is full and the move hasn't already been used -; shift the list back one byte, deleting the first move used -; this can occur with struggle or a new learned move - ld hl, PlayerUsedMoves + 1 -; 1 = 2 - ld a, [hld] - ld [hli], a -; 2 = 3 - inc hl - ld a, [hld] - ld [hli], a -; 3 = 4 - inc hl - ld a, [hld] - ld [hl], a -; 4 = new move - ld a, b - ld [PlayerUsedMoves + 3], a - jr .quit - -.add -; go back to the byte we just inced from - dec hl -; add the new move - ld [hl], b - -.quit -; list updated - pop bc - ret -; 105ef6 +INCLUDE "battle/used_move_text.asm" INCLUDE "misc/mobile_41.asm" @@ -55896,7 +24438,7 @@ Function1dc1b0: ; 1dc1b0 inc a ld [hl], a ld hl, wcb45 - ld a, $7f + ld a, " " ld [hli], a ld [hl], a ld hl, wcb59 @@ -56108,7 +24650,7 @@ Function1dc381: ; 1dc381 hlcoord 0, 0 call _PrepMonFrontpic call WaitBGMap - ld b, $3 + ld b, SCGB_03 call GetSGBLayout call SetPalettes ret @@ -56146,27 +24688,27 @@ Function1dc47b: ; 1dc47b call PlaceString hlcoord 16, 7 ld de, TempMonAttack - call Function1dc507 + call .PrintTempMonStats hlcoord 16, 9 ld de, TempMonDefense - call Function1dc507 + call .PrintTempMonStats hlcoord 16, 11 ld de, TempMonSpclAtk - call Function1dc507 + call .PrintTempMonStats hlcoord 16, 13 ld de, TempMonSpclDef - call Function1dc507 + call .PrintTempMonStats hlcoord 16, 15 ld de, TempMonSpeed - call Function1dc507 + call .PrintTempMonStats call WaitBGMap - ld b, $3 + ld b, SCGB_03 call GetSGBLayout call SetPalettes ret ; 1dc507 -Function1dc507: ; 1dc507 +.PrintTempMonStats: ; 1dc507 lb bc, 2, 3 call PrintNum ret @@ -56183,16 +24725,16 @@ Function1dc50e: ; 1dc50e Function1dc51a: ; 1dc51a and a - jr z, .asm_1dc525 + jr z, .no_move ld [wd265], a call GetMoveName - jr .asm_1dc528 + jr .got_string -.asm_1dc525 +.no_move ld de, String1dc584 -.asm_1dc528 +.got_string call PlaceString ret ; 1dc52c @@ -56381,7 +24923,7 @@ Function1de171: ; 1de171 (77:6171) ld [hl], $50 ld a, $51 hlcoord 11, 1 - ld b, $f + ld b, SCREEN_HEIGHT - 3 call Function1de27f ld [hl], $52 jr .asm_1de1d0 @@ -56390,7 +24932,7 @@ Function1de171: ; 1de171 (77:6171) ld [hl], $66 ld a, $67 hlcoord 11, 1 - ld b, $f + ld b, SCREEN_HEIGHT - 3 call Function1de27f ld [hl], $68 .asm_1de1d0 @@ -56413,7 +24955,7 @@ Function1de1d1: ; 1de1d1 (77:61d1) ld [hl], $66 ld a, $67 hlcoord 11, 1 - ld b, $9 + ld b, SCREEN_HEIGHT / 2 call Function1de27f ld [hl], $68 ld a, $34 @@ -56428,7 +24970,7 @@ Function1de1d1: ; 1de1d1 (77:61d1) ld [hl], $66 ld a, $67 hlcoord 11, 12 - ld b, $5 + ld b, 5 call Function1de27f ld [hl], $68 hlcoord 0, 12 @@ -56442,10 +24984,8 @@ Function1de1d1: ; 1de1d1 (77:61d1) String_1de23c: ; 1de23c ; At a glance, this is less coherent in the Japanese charset. - db "ESULTS" - db $4e - db $4e - db "D!@" + db "ESULTS<NEXT>" + next "D!@" ; 1de247 Function1de247: ; 1de247 @@ -56463,13 +25003,13 @@ Function1de247: ; 1de247 ld [hl], $66 hlcoord 19, 1 ld a, $67 - ld b, $f + ld b, SCREEN_HEIGHT - 3 call Function1de27f ld [hl], $68 hlcoord 19, 17 ld [hl], $3c xor a - ld b, $12 + ld b, SCREEN_HEIGHT hlcoord 19, 0, AttrMap call Function1de27f call Function3200 @@ -56484,11 +25024,11 @@ Function1de247: ; 1de247 Function1de27f: ; 1de27f push de ld de, SCREEN_WIDTH -.asm_1de283 +.loop ld [hl], a add hl, de dec b - jr nz, .asm_1de283 + jr nz, .loop pop de ret ; 1de28a @@ -56550,21 +25090,21 @@ DudeAutoInput_DownA: ; 1de2af Function1de2c5: ; 1de2c5 ld hl, StringBuffer1 -.asm_1de2c8 +.loop ld a, [hl] - cp $50 - jr z, .asm_1de2da - cp $25 - jr z, .asm_1de2d8 - cp $1f - jr z, .asm_1de2d8 + cp "@" + jr z, .end + cp "%" + jr z, .line_break + cp "¯" + jr z, .line_break inc hl - jr .asm_1de2c8 + jr .loop -.asm_1de2d8 - ld [hl], $22 +.line_break + ld [hl], "<LNBRK>" -.asm_1de2da +.end ld de, StringBuffer1 hlcoord 9, 0 call PlaceString @@ -56575,117 +25115,137 @@ PokegearGFX: ; 1de2e4 INCBIN "gfx/misc/pokegear.2bpp.lz" ; 1de5c8 -Function1de5c8: ; 1de5c8 +IsMailEuropean: ; 1de5c8 +; return 1 if French +; return 2 if German +; return 3 if Italian +; return 4 if Spanish +; return 0 if none of the above ld c, $0 - ld hl, $29 + ld hl, sPartyMon1MailAuthorNationality - sPartyMon1Mail add hl, de ld a, [hli] - cp $84 + cp "E" ret nz ld a, [hli] inc c - cp $85 + cp "F" ret z inc c - cp $86 + cp "G" ret z inc c - cp $88 + cp "I" ret z inc c - cp $92 + cp "S" ret z ld c, $0 ret ; 1de5e6 ; The regular font. -GFX_1de5e6: ; 1de5e6 -INCBIN "gfx/unknown/1de5e6.2bpp" +StandardEnglishFont: ; 1de5e6 +INCBIN "gfx/font/english.1bpp" ; An extended font. -GFX_1de9e6: ; 1de9e6 -INCBIN "gfx/unknown/1de9e6.2bpp" +FrenchGermanFont: ; 1de9e6 +INCBIN "gfx/font/french_german.1bpp" ; An even more extended font. -GFX_1dede6: ; 1dede6 -INCBIN "gfx/unknown/1dede6.2bpp" +SpanishItalianFont: ; 1dede6 +INCBIN "gfx/font/spanish_italian.1bpp" -Function1df1e6: ; 1df1e6 - ld b, $21 +HandleFrenchGermanMail: ; 1df1e6 +; called if mail is french or german +; fix 's 't 'v + ld b, sPartyMon1MailAuthor - sPartyMon1Mail ld h, d ld l, e -.asm_1df1ea +.loop ld a, [hl] - cp $dc - jr nz, .asm_1df1f3 - ld a, $d4 - jr .asm_1df1fd - -.asm_1df1f3 - sub $d4 - jr c, .asm_1df1fe - cp $3 - jr nc, .asm_1df1fe + cp $dc ; 's in french/german font + jr nz, .check_intermediate_chars + ld a, "'s" + jr .replace + +.check_intermediate_chars + sub "'s" + jr c, .dont_replace + cp "'v" - "'s" + 1 + jr nc, .dont_replace add $cd -.asm_1df1fd +.replace ld [hl], a -.asm_1df1fe +.dont_replace inc hl dec b - jr nz, .asm_1df1ea + jr nz, .loop ret ; 1df203 -Function1df203: ; 1df203 - ld b, $21 +LireLeCourrierAnglais: +DeutenEnglischenPost: ; 1df203 +; Cette fonction convertit certains des caractères anglais pour +; leur équivalent dans le jeu de caractères français. +; Diese Funktion wandelt bestimmte englische Zeichen, um ihre +; Entsprechung in der Deutschen-Zeichensatz. + ld b, sPartyMon1MailAuthor - sPartyMon1Mail ld h, d ld l, e -.asm_1df207 +.loop ld a, [hl] - cp $d4 - jr nz, .asm_1df210 + cp "'s" + jr nz, .check_intermediate_chars ld a, $dc - jr .asm_1df21a + jr .replace -.asm_1df210 +.check_intermediate_chars sub $cd - jr c, .asm_1df21b - cp $3 - jr nc, .asm_1df21b - add $d4 + jr c, .dont_replace + cp "'v" - "'s" + 1 + jr nc, .dont_replace + add "'s" -.asm_1df21a +.replace ld [hl], a -.asm_1df21b +.dont_replace inc hl dec b - jr nz, .asm_1df207 + jr nz, .loop ret ; 1df220 -Function1df220: ; 1df220 - ld b, $21 +HandleSpanishItalianMail: ; 1df220 +LeerCorreosIngleses: +LeggiPostaInglese: +; This function converts certain characters between +; the English and Spanish/Italian character sets. +; Esta función convierte ciertos caracteres entre +; el juego de caracteres Inglés y Español. +; Questa funzione converte alcuni caratteri tra +; l'inglese e il set di caratteri italiani. + ld b, sPartyMon1MailAuthor - sPartyMon1Mail ld h, d ld l, e -.asm_1df224 +.loop ld a, [hl] and $f0 cp $d0 - jr nz, .asm_1df233 + jr nz, .dont_replace ld a, [hl] add $8 and $f or $d0 ld [hl], a -.asm_1df233 +.dont_replace inc hl dec b - jr nz, .asm_1df224 + jr nz, .loop ret ; 1df238 @@ -56774,5 +25334,3 @@ INCBIN "misc/stadium2_2.bin" ELSE INCBIN "misc/stadium2_1.bin" ENDC - - |