ref: 5eed48f05d3634146deb2442cd8f62bbad0ae352
dir: /main.asm/
INCLUDE "includes.asm" SECTION "bank1", ROMX, BANK[$1] Function4000:: ; 4000 hlcoord 3, 10 ld b, 1 ld c, 11 ld a, [wBattleMode] and a jr z, .notinbattle call TextBox jr .incave .notinbattle predef Function28eef .incave hlcoord 4, 11 ld de, .Waiting call PlaceString ld c, 50 jp DelayFrames ; 4025 .Waiting ; 4025 db "Waiting...!@" ; 4031 LoadPushOAM:: ; 4031 ld c, hPushOAM - $ff00 ld b, PushOAMEnd - PushOAM ld hl, PushOAM .loop ld a, [hli] ld [$ff00+c], a inc c dec b jr nz, .loop ret ; 403f PushOAM: ; 403f ld a, Sprites >> 8 ld [rDMA], a ld a, $28 .loop dec a jr nz, .loop ret PushOAMEnd ; 4049 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 Function5b05: ; 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 Function5b44: ; 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 Function5b44 call AreYouABoyOrAreYouAGirl call OakSpeech call InitializeWorld ld a, 1 ld [wc2d8], a ld a, SPAWN_HOME ld [wd001], 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 LoadMenuDataHeader_0x1d75 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 WhiteBGMap call Function5df0 call WriteBackup call ClearTileMap ld c, 20 call DelayFrames callba JumpRoamMons callba Function105091 callba Function140ae ld a, [wSpawnAfterChampion] cp SPAWN_LANCE jr z, .SpawnAfterE4 ld a, MAPSETUP_02 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 $80 jr z, .pass callba Function20021 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, wd83e 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 ld de, $408 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 GetMemTileCoord 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 Function619c 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 Function3786 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 Function619c 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 Function116c1 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 Function1db8 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 Function619c: ; 619c ld de, VTiles2 callba GetTrainerPic xor a ld [$ffad], 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 [$ffad], 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 WhiteBGMap 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, [$ff9b] 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 WhiteBGMap 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 Function6454:: ; 6454 call DelayFrame ld a, [hOAMUpdate] push af ld a, $1 ld [hOAMUpdate], a ld a, [hBGMapMode] push af xor a ld [hBGMapMode], a call Function6473 pop af ld [hBGMapMode], a pop af ld [hOAMUpdate], a ld hl, VramState set 6, [hl] ret ; 6473 Function6473: ; 6473 xor a ld [hLCDStatCustom], a ld [hBGMapMode], a ld a, $90 ld [hWY], a call Function2173 ld a, VBGMap1 / $100 call Function64b9 call Function2e20 callba Function49409 callba Function96a4 ld a, $1 ld [hCGBPalUpdate], a xor a ld [hBGMapMode], a ld [hWY], a callba Function64db ; no need to callba ld a, VBGMap0 / $100 call Function64b9 xor a ld [wd152], a ld a, $98 ld [wd153], a xor a ld [hSCX], a ld [hSCY], a call Function5958 ret ; 64b9 Function64b9: ; 64b9 ld [hBGMapAddress + 1], a xor a ld [hBGMapAddress], a ret ; 64bf Function64bf:: ; 64bf ld a, [hOAMUpdate] push af ld a, $1 ld [hOAMUpdate], a call Function64cd pop af ld [hOAMUpdate], a ret ; 64cd Function64cd: ; 64cd call LoadFontsExtra ld a, $90 ld [hWY], a call Function2e31 call LoadStandardFont ret ; 64db Function64db: ; 64db ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a ld a, $60 ld hl, w6_d000 lb bc, 4, 0 call ByteFill ld a, w6_d000 / $100 ld [rHDMA1], a ld a, w6_d000 % $100 ld [rHDMA2], a ld a, (VBGMap0 % $8000) / $100 ld [rHDMA3], a ld a, (VBGMap0 % $8000) % $100 ld [rHDMA4], a ld a, $3f ld [hDMATransfer], a call DelayFrame pop af ld [rSVBK], a ret ; 6508 LearnMove: ; 6508 call LoadTileMapToTempTileMap ld a, [CurPartyMon] ld hl, PartyMonNicknames call GetNick ld hl, StringBuffer1 ld de, wd050 ld bc, PKMN_NAME_LENGTH call CopyBytes .loop ld hl, PartyMon1Moves ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes ld d, h ld e, l ld b, NUM_MOVES .next ld a, [hl] and a jr z, .learn inc hl dec b jr nz, .next push de call ForgetMove pop de jp c, .cancel push hl push de ld [wd265], a ld b, a ld a, [wBattleMode] and a jr z, .not_disabled ld a, [DisabledMove] cp b jr nz, .not_disabled xor a ld [DisabledMove], a ld [PlayerDisableCount], a .not_disabled call GetMoveName ld hl, UnknownText_0x6684 call PrintText pop de pop hl .learn ld a, [wd262] ld [hl], a ld bc, (MON_PP) - (MON_MOVES) add hl, bc push hl push de dec a ld hl, Moves + MOVE_PP ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte pop de pop hl ld [hl], a ld a, [wBattleMode] and a jp z, .learned ld a, [CurPartyMon] ld b, a ld a, [CurBattleMon] cp b jp nz, .learned ld a, [PlayerSubStatus5] bit SUBSTATUS_TRANSFORMED, a jp nz, .learned ld h, d ld l, e ld de, BattleMonMoves ld bc, NUM_MOVES call CopyBytes ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES) add hl, bc ld de, BattleMonPP ld bc, NUM_MOVES call CopyBytes jp .learned .cancel ld hl, UnknownText_0x6675 call PrintText call YesNoBox jp c, .loop ld hl, UnknownText_0x667a call PrintText ld b, 0 ret .learned ld hl, UnknownText_0x666b call PrintText ld b, 1 ret ; 65d3 ForgetMove: ; 65d3 push hl ld hl, UnknownText_0x667f call PrintText call YesNoBox pop hl ret c ld bc, -NUM_MOVES add hl, bc push hl ld de, wListMoves_MoveIndicesBuffer ld bc, NUM_MOVES call CopyBytes pop hl .loop push hl ld hl, UnknownText_0x6670 call PrintText hlcoord 5, 2 ld b, NUM_MOVES * 2 ld c, MOVE_NAME_LENGTH call TextBox hlcoord 5 + 2, 2 + 2 ld a, SCREEN_WIDTH * 2 ld [Buffer1], a predef ListMoves ld a, $4 ld [wcfa1], a ld a, $6 ld [wcfa2], a ld a, [wd0eb] inc a ld [wcfa3], a ld a, $1 ld [wcfa4], a ld [MenuSelection2], a ld [wcfaa], a ld a, $3 ld [wcfa8], a ld a, $20 ld [wcfa5], a xor a ld [wcfa6], a ld a, $20 ld [wcfa7], a call Function1bc9 push af call Call_LoadTempTileMapToTileMap pop af pop hl bit 1, a jr nz, .cancel push hl ld a, [MenuSelection2] dec a ld c, a ld b, 0 add hl, bc ld a, [hl] push af push bc call IsHMMove pop bc pop de ld a, d jr c, .hmmove pop hl add hl, bc and a ret .hmmove ld hl, UnknownText_0x669a call PrintText pop hl jr .loop .cancel scf ret ; 666b UnknownText_0x666b: ; 666b text_jump UnknownText_0x1c5660 db "@" ; 6670 UnknownText_0x6670: ; 6670 text_jump UnknownText_0x1c5678 db "@" ; 6675 UnknownText_0x6675: ; 6675 text_jump UnknownText_0x1c5699 db "@" ; 667a UnknownText_0x667a: ; 667a text_jump UnknownText_0x1c56af db "@" ; 667f UnknownText_0x667f: ; 667f text_jump UnknownText_0x1c56c9 db "@" ; 6684 UnknownText_0x6684: ; 6684 text_jump UnknownText_0x1c5740 start_asm push de ld de, SFX_SWITCH_POKEMON call PlaySFX pop de ld hl, UnknownText_0x6695 ret ; 6695 UnknownText_0x6695: ; 6695 text_jump UnknownText_0x1c574e db "@" ; 669a UnknownText_0x669a: ; 669a text_jump UnknownText_0x1c5772 db "@" ; 669f CheckNickErrors:: ; 669f ; error-check monster nick before use ; must be a peace offering to gamesharkers ; input: de = nick location push bc push de ld b, PKMN_NAME_LENGTH .checkchar ; end of nick? ld a, [de] cp "@" ; terminator jr z, .end ; check if this char is a text command ld hl, .textcommands dec hl .loop ; next entry inc hl ; reached end of commands table? ld a, [hl] cp a, -1 jr z, .done ; is the current char between this value (inclusive)... ld a, [de] cp [hl] inc hl jr c, .loop ; ...and this one? cp [hl] jr nc, .loop ; replace it with a "?" ld a, "?" ld [de], a jr .loop .done ; next char inc de ; reached end of nick without finding a terminator? dec b jr nz, .checkchar ; change nick to "?@" pop de push de ld a, "?" ld [de], a inc de ld a, "@" ld [de], a .end ; if the nick has any errors at this point it's out of our hands pop de pop bc ret ; 66cf .textcommands ; 66cf ; table defining which characters are actually text commands ; format: ; ≥ < db $00, $05 db $14, $19 db $1d, $26 db $35, $3a db $3f, $40 db $49, $5d db $5e, $7f db $ff ; end ; 66de _Multiply:: ; 66de ; hMultiplier is one byte. ld a, 8 ld b, a xor a ld [hMultiplicand - 1], a ld [hMathBuffer + 1], a ld [hMathBuffer + 2], a ld [hMathBuffer + 3], a ld [hMathBuffer + 4], a .loop ld a, [hMultiplier] srl a ld [hMultiplier], a jr nc, .next ld a, [hMathBuffer + 4] ld c, a ld a, [hMultiplicand + 2] add c ld [hMathBuffer + 4], a ld a, [hMathBuffer + 3] ld c, a ld a, [hMultiplicand + 1] adc c ld [hMathBuffer + 3], a ld a, [hMathBuffer + 2] ld c, a ld a, [hMultiplicand + 0] adc c ld [hMathBuffer + 2], a ld a, [hMathBuffer + 1] ld c, a ld a, [hMultiplicand - 1] adc c ld [hMathBuffer + 1], a .next dec b jr z, .done ; hMultiplicand <<= 1 ld a, [hMultiplicand + 2] add a ld [hMultiplicand + 2], a ld a, [hMultiplicand + 1] rla ld [hMultiplicand + 1], a ld a, [hMultiplicand + 0] rla ld [hMultiplicand + 0], a ld a, [hMultiplicand - 1] rla ld [hMultiplicand - 1], a jr .loop .done ld a, [hMathBuffer + 4] ld [hProduct + 3], a ld a, [hMathBuffer + 3] ld [hProduct + 2], a ld a, [hMathBuffer + 2] ld [hProduct + 1], a ld a, [hMathBuffer + 1] ld [hProduct + 0], a ret ; 673e _Divide:: ; 673e xor a ld [hMathBuffer + 0], a ld [hMathBuffer + 1], a ld [hMathBuffer + 2], a ld [hMathBuffer + 3], a ld [hMathBuffer + 4], a ld a, 9 ld e, a .loop ld a, [hMathBuffer + 0] ld c, a ld a, [hDividend + 1] sub c ld d, a ld a, [hDivisor] ld c, a ld a, [hDividend + 0] sbc c jr c, .asm_6767 ld [hDividend + 0], a ld a, d ld [hDividend + 1], a ld a, [hMathBuffer + 4] inc a ld [hMathBuffer + 4], a jr .loop .asm_6767 ld a, b cp 1 jr z, .done ld a, [hMathBuffer + 4] add a ld [hMathBuffer + 4], a ld a, [hMathBuffer + 3] rla ld [hMathBuffer + 3], a ld a, [hMathBuffer + 2] rla ld [hMathBuffer + 2], a ld a, [hMathBuffer + 1] rla ld [hMathBuffer + 1], a dec e jr nz, .asm_6798 ld e, 8 ld a, [hMathBuffer + 0] ld [hDivisor], a xor a ld [hMathBuffer + 0], a ld a, [hDividend + 1] ld [hDividend + 0], a ld a, [hDividend + 2] ld [hDividend + 1], a ld a, [hDividend + 3] ld [hDividend + 2], a .asm_6798 ld a, e cp 1 jr nz, .asm_679e dec b .asm_679e ld a, [hDivisor] srl a ld [hDivisor], a ld a, [hMathBuffer + 0] rr a ld [hMathBuffer + 0], a jr .loop .done ld a, [hDividend + 1] ld [hDivisor], a ld a, [hMathBuffer + 4] ld [hDividend + 3], a ld a, [hMathBuffer + 3] ld [hDividend + 2], a ld a, [hMathBuffer + 2] ld [hDividend + 1], a ld a, [hMathBuffer + 1] ld [hDividend + 0], a ret ; 67c1 ItemAttributes: ; 67c1 INCLUDE "items/item_attributes.asm" ; 6ec1 Function6ec1: ; 6ec1 ld hl, OBJECT_PALETTE add hl, bc bit 5, [hl] jr z, .asm_6ed9 ld hl, OBJECT_FLAGS1 add hl, bc bit 4, [hl] push hl push bc call Function6f2c pop bc pop hl ret c jr .asm_6ee9 .asm_6ed9 ld hl, OBJECT_FLAGS1 add hl, bc bit 4, [hl] jr nz, .asm_6ee9 push hl push bc call Function6f07 pop bc pop hl ret c .asm_6ee9 bit 6, [hl] jr nz, .asm_6ef5 push hl push bc call Function7009 pop bc pop hl ret c .asm_6ef5 bit 5, [hl] jr nz, .asm_6f05 push hl call Function70a4 pop hl ret c push hl call Function70ed pop hl ret c .asm_6f05 and a ret ; 6f07 Function6f07: ; 6f07 call Function6f5f ret c ld hl, OBJECT_MAP_X add hl, bc ld d, [hl] ld hl, OBJECT_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 add hl, bc ld a, [hl] ld d, a call GetTileCollision and a jr z, Function6f3e scf ret ; 6f2c Function6f2c: ; 6f2c call Function6f5f ret c ld hl, OBJECT_STANDING_TILE add hl, bc ld a, [hl] call GetTileCollision cp $1 jr z, Function6f3e scf ret ; 6f3e Function6f3e: ; 6f3e ld hl, OBJECT_STANDING_TILE add hl, bc ld a, [hl] call Function6f7f ret nc push af ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld a, [hl] and 3 ld e, a ld d, 0 ld hl, .data_6f5b add hl, de pop af and [hl] ret z scf ret ; 6f5b .data_6f5b db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT ; 6f5f Function6f5f: ; 6f5f ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call Function6f7f ret nc push af ld hl, OBJECT_DIRECTION_WALKING add hl, bc and 3 ld e, a ld d, 0 ld hl, .data_6f7b add hl, de pop af and [hl] ret z scf ret ; 6f7b .data_6f7b db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT ; 6f7f Function6f7f: ; 6f7f ld d, a and $f0 cp $b0 jr z, .done cp $c0 jr z, .done xor a ret .done ld a, d and 7 ld e, a ld d, 0 ld hl, .data_6f99 add hl, de ld a, [hl] scf ret ; 6f99 .data_6f99 db 8, 4, 1, 2 db 10, 6, 9, 5 ; 6fa1 Function6fa1: ; 6fa1 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld a, [hl] and 3 jr z, .asm_6fb2 dec a jr z, .asm_6fb7 dec a jr z, .asm_6fbb jr .asm_6fbf .asm_6fb2 inc e push de inc d jr .asm_6fc2 .asm_6fb7 push de inc d jr .asm_6fc2 .asm_6fbb push de inc e jr .asm_6fc2 .asm_6fbf inc d push de inc e .asm_6fc2 call Function2a3c call GetTileCollision pop de and a jr nz, .asm_6fd7 call Function2a3c call GetTileCollision and a jr nz, .asm_6fd7 xor a ret .asm_6fd7 scf ret ; 6fd9 CheckFacingObject:: ; 6fd9 call GetFacingTileCoord ; Double the distance for counter tiles. call CheckCounterTile jr nz, .asm_6ff1 ld a, [PlayerMapX] sub d cpl inc a add d ld d, a ld a, [PlayerMapY] sub e cpl inc a add e ld e, a .asm_6ff1 ld bc, ObjectStructs ; redundant ld a, 0 ld [hMapObjectIndexBuffer], a call Function7041 ret nc ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld a, [hl] cp STANDING jr z, .standing xor a ret .standing scf ret ; 7009 Function7009: ; 7009 ld hl, OBJECT_MAP_X add hl, bc ld d, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] jr Function7041 ; 7015 Function7015: ; unreferenced ld a, [hMapObjectIndexBuffer] call GetObjectStruct call Function7021 call Function7041 ret Function7021: ; 7021 ld hl, OBJECT_MAP_X add hl, bc ld d, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] call GetSpriteDirection and a jr z, .down cp OW_UP jr z, .up cp OW_LEFT jr z, .left inc d ret .down inc e ret .up dec e ret .left dec d ret ; 7041 Function7041: ; 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 add hl, bc ld a, [hl] cp d jr nz, .ok ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] cp e jr nz, .ok .ok2 ld a, [hMapObjectIndexBuffer] ld l, a ld a, [hObjectStructIndexBuffer] cp l jr nz, .setcarry .ok ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] cp d jr nz, .next ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] cp e jr nz, .next ld a, [hMapObjectIndexBuffer] ld l, a ld a, [hObjectStructIndexBuffer] cp l jr nz, .setcarry .next ld hl, OBJECT_STRUCT_LENGTH add hl, bc ld b, h ld c, l ld a, [hObjectStructIndexBuffer] inc a cp NUM_OBJECT_STRUCTS jr nz, .loop and a ret .setcarry scf ret ; 70a4 Function70a4: ; 70a4 ld hl, OBJECT_22 add hl, bc ld a, [hl] and a jr z, .asm_70e9 and $f jr z, .asm_70c7 ld e, a ld d, a ld hl, OBJECT_20 add hl, bc ld a, [hl] sub d ld d, a ld a, [hl] add e ld e, a ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] cp d jr z, .asm_70eb cp e jr z, .asm_70eb .asm_70c7 ld hl, OBJECT_22 add hl, bc ld a, [hl] swap a and $f jr z, .asm_70e9 ld e, a ld d, a ld hl, OBJECT_21 add hl, bc ld a, [hl] sub d ld d, a ld a, [hl] add e ld e, a ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] cp d jr z, .asm_70eb cp e jr z, .asm_70eb .asm_70e9 xor a ret .asm_70eb scf ret ; 70ed Function70ed: ; 70ed ld hl, OBJECT_MAP_X add hl, bc ld a, [XCoord] cp [hl] jr z, .asm_70fe jr nc, .asm_7111 add $9 cp [hl] jr c, .asm_7111 .asm_70fe ld hl, OBJECT_MAP_Y add hl, bc ld a, [YCoord] cp [hl] jr z, .asm_710f jr nc, .asm_7111 add $8 cp [hl] jr c, .asm_7111 .asm_710f and a ret .asm_7111 scf ret ; 7113 Function7113: ; unreferenced ld a, [PlayerMapX] ld d, a ld a, [PlayerMapY] ld e, a ld bc, ObjectStructs xor a .loop ld [hObjectStructIndexBuffer], a call GetObjectSprite jr z, .asm_7160 ld hl, OBJECT_MOVEMENTTYPE add hl, bc ld a, [hl] cp SPRITEMOVEDATA_15 jr nz, .asm_7136 call Function7171 jr c, .asm_716f jr .asm_7160 .asm_7136 ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] cp e jr nz, .asm_714e ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] cp d jr nz, .asm_714e ld a, [hObjectStructIndexBuffer] cp $0 jr z, .asm_7160 jr .asm_716f .asm_714e ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] cp e jr nz, .asm_7160 ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] cp d jr nz, .asm_7160 jr .asm_716f .asm_7160 ld hl, OBJECT_STRUCT_LENGTH add hl, bc ld b, h ld c, l ld a, [hObjectStructIndexBuffer] inc a cp NUM_OBJECT_STRUCTS jr nz, .loop xor a ret .asm_716f scf ret ; 7171 Function7171: ; 7171 ld hl, OBJECT_MAP_X add hl, bc ld a, d sub [hl] jr c, .asm_718b cp $2 jr nc, .asm_718b ld hl, OBJECT_MAP_Y add hl, bc ld a, e sub [hl] jr c, .asm_718b cp $2 jr nc, .asm_718b scf ret .asm_718b and a ret ; 718d GetFirstPokemonHappiness: ; 718d ld hl, PartyMon1Happiness ld bc, PARTYMON_STRUCT_LENGTH ld de, PartySpecies .loop ld a, [de] cp EGG jr nz, .done inc de add hl, bc jr .loop .done ld [wd265], a ld a, [hl] ld [ScriptVar], a call GetPokemonName jp CopyPokemonName_Buffer1_Buffer3 ; 71ac CheckFirstMonIsEgg: ; 71ac ld a, [PartySpecies] ld [wd265], a cp EGG ld a, $1 jr z, .egg xor a .egg ld [ScriptVar], a call GetPokemonName jp CopyPokemonName_Buffer1_Buffer3 ; 71c2 ChangeHappiness: ; 71c2 ; Perform happiness action c on CurPartyMon ld a, [CurPartyMon] inc a ld e, a ld d, 0 ld hl, PartySpecies - 1 add hl, de ld a, [hl] cp EGG ret z push bc ld hl, PartyMon1Happiness ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes pop bc ld d, h ld e, l push de ld a, [de] cp 100 ld e, 0 jr c, .ok inc e cp 200 jr c, .ok inc e .ok dec c ld b, 0 ld hl, .Actions rept 3 add hl, bc endr ld d, 0 add hl, de ld a, [hl] cp 100 pop de ld a, [de] jr nc, .negative add [hl] jr nc, .done ld a, -1 jr .done .negative add [hl] jr c, .done xor a .done ld [de], a ld a, [wBattleMode] and a ret z ld a, [CurPartyMon] ld b, a ld a, [wd0d8] cp b ret nz ld a, [de] ld [BattleMonHappiness], a ret ; 7221 .Actions db +5, +3, +2 ; Gained a level db +5, +3, +2 ; Vitamin db +1, +1, +0 ; X Item db +3, +2, +1 ; Battled a Gym Leader db +1, +1, +0 ; Learned a move db -1, -1, -1 ; Lost to an enemy db -5, -5, -10 ; Fainted due to poison db -5, -5, -10 ; Lost to a much stronger enemy db +1, +1, +1 ; Haircut (Y1) db +3, +3, +1 ; Haircut (Y2) db +5, +5, +2 ; Haircut (Y3) db +1, +1, +1 ; Haircut (O1) db +3, +3, +1 ; Haircut (O2) db +10, +10, +4 ; Haircut (O3) db -5, -5, -10 ; Used Heal Powder or Energypowder (bitter) db -10, -10, -15 ; Used Energy Root (bitter) db -15, -15, -20 ; Used Revival Herb (bitter) db +3, +3, +1 ; Grooming db +10, +6, +4 ; Gained a level in the place where it was caught ; 725a StepHappiness:: ; 725a ; Raise the party's happiness by 1 point every other step cycle. ld hl, wdc77 ld a, [hl] inc a and 1 ld [hl], a ret nz ld de, PartyCount ld a, [de] and a ret z ld c, a ld hl, PartyMon1Happiness .loop inc de ld a, [de] cp EGG jr z, .next inc [hl] jr nz, .next ld [hl], $ff .next push de ld de, PARTYMON_STRUCT_LENGTH add hl, de pop de dec c jr nz, .loop ret ; 7282 DaycareStep:: ; 7282 ld a, [wDaycareMan] bit 0, a jr z, .asm_72a4 ld a, [wBreedMon1Level] ; level cp 100 jr nc, .asm_72a4 ld hl, wBreedMon1Exp + 2 ; exp inc [hl] jr nz, .asm_72a4 dec hl inc [hl] jr nz, .asm_72a4 dec hl inc [hl] ld a, [hl] cp $50 jr c, .asm_72a4 ld a, $50 ld [hl], a .asm_72a4 ld a, [wDaycareLady] bit 0, a jr z, .asm_72c6 ld a, [wBreedMon2Level] ; level cp 100 jr nc, .asm_72c6 ld hl, wBreedMon2Exp + 2 ; exp inc [hl] jr nz, .asm_72c6 dec hl inc [hl] jr nz, .asm_72c6 dec hl inc [hl] ld a, [hl] cp $50 jr c, .asm_72c6 ld a, $50 ld [hl], a .asm_72c6 ld hl, wDaycareMan bit 5, [hl] ; egg ret z ld hl, wStepsToEgg dec [hl] ret nz call Random ld [hl], a callab Function16e1d ld a, [wd265] cp $e6 ld b, $50 jr nc, .asm_72f8 ld a, [wd265] cp $aa ld b, $28 jr nc, .asm_72f8 ld a, [wd265] cp $6e ld b, $1e jr nc, .asm_72f8 ld b, $a .asm_72f8 call Random cp b ret nc ld hl, wDaycareMan res 5, [hl] set 6, [hl] ret ; 7305 SpecialGiveShuckle: ; 7305 ; Adding to the party. xor a ld [MonType], a ; Level 15 Shuckle. ld a, SHUCKLE ld [CurPartySpecies], a ld a, 15 ld [CurPartyLevel], a predef TryAddMonToParty jr nc, .NotGiven ; Caught data. ld b, 0 callba SetPartymonCaughtData ; Holding a Berry. ld bc, PARTYMON_STRUCT_LENGTH ld a, [PartyCount] dec a push af push bc ld hl, PartyMon1Item call AddNTimes ld [hl], BERRY pop bc pop af ; OT ID. ld hl, PartyMon1ID call AddNTimes ld a, $2 ld [hli], a ld [hl], $6 ; Nickname. ld a, [PartyCount] dec a ld hl, PartyMonNicknames call SkipNames ld de, SpecialShuckleNick call CopyName2 ; OT. ld a, [PartyCount] dec a ld hl, PartyMonOT call SkipNames ld de, SpecialShuckleOT call CopyName2 ; Engine flag for this event. ld hl, DailyFlags set 5, [hl] ; setflag ENGINE_SHUCKLE_GIVEN ld a, 1 ld [ScriptVar], a ret .NotGiven xor a ld [ScriptVar], a ret SpecialShuckleOT: db "MANIA@" SpecialShuckleNick: db "SHUCKIE@" ; 737e SpecialReturnShuckle: ; 737e callba SelectMonFromParty jr c, .refused ld a, [CurPartySpecies] cp SHUCKLE jr nz, .DontReturn ld a, [CurPartyMon] ld hl, PartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ; OT ID ; 00518 ld a, [hli] cp 00518 / $100 jr nz, .DontReturn ld a, [hl] cp 00518 % $100 jr nz, .DontReturn ; OT ld a, [CurPartyMon] ld hl, PartyMonOT call SkipNames ld de, SpecialShuckleOT .CheckOT ld a, [de] cp [hl] jr nz, .DontReturn cp "@" jr z, .done inc de inc hl jr .CheckOT .done callba CheckCurPartyMonFainted jr c, .fainted ld a, [CurPartyMon] ld hl, PartyMon1Happiness ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [hl] cp 150 ld a, $3 jr nc, .HappyToStayWithYou xor a ld [wd10b], a callab Functione039 ld a, $2 .HappyToStayWithYou ld [ScriptVar], a ret .refused ld a, $1 ld [ScriptVar], a ret .DontReturn xor a ld [ScriptVar], a ret .fainted ld a, $4 ld [ScriptVar], a ret ; 73f7 Special_BillsGrandfather: ; 73f7 callba SelectMonFromParty jr c, .cancel ld a, [CurPartySpecies] ld [ScriptVar], a ld [wNamedObjectIndexBuffer], a call GetPokemonName jp CopyPokemonName_Buffer1_Buffer3 .cancel xor a ld [ScriptVar], a ret ; 7413 Special_YoungerHaircutBrother: ; 7413 ld hl, Data_YoungerHaircutBrother jr MassageOrHaircut Special_OlderHaircutBrother: ; 7418 ld hl, Data_OlderHaircutBrother jr MassageOrHaircut Special_DaisyMassage: ; 741d ld hl, Data_DaisyMassage MassageOrHaircut: ; 7420 push hl callba SelectMonFromParty pop hl jr c, .nope ld a, [CurPartySpecies] cp EGG jr z, .egg push hl call GetCurNick call CopyPokemonName_Buffer1_Buffer3 pop hl call Random ; Bug: Subtracting $ff from $ff fails to set c. ; This can result in overflow into the next data array. ; In the case of getting a massage from Daisy, we bleed ; into CopyPokemonName_Buffer1_Buffer3, which passes ; $d0 to ChangeHappiness and returns $73 to the script. ; The end result is that there is a 0.4% chance your ; Pokemon's happiness will not change at all. .loop sub [hl] jr c, .ok rept 3 inc hl endr jr .loop .ok inc hl ld a, [hli] ld [ScriptVar], a ld c, [hl] call ChangeHappiness ret .nope xor a ld [ScriptVar], a ret .egg ld a, 1 ld [ScriptVar], a ret ; 7459 Data_YoungerHaircutBrother: ; 7459 db $4c, 2, HAPPINESS_YOUNGCUT1 ; 30% chance db $80, 3, HAPPINESS_YOUNGCUT2 ; 20% chance db $ff, 4, HAPPINESS_YOUNGCUT3 ; 50% chance Data_OlderHaircutBrother: ; 7462 db $9a, 2, HAPPINESS_OLDERCUT1 ; 60% chance db $4c, 3, HAPPINESS_OLDERCUT2 ; 10% chance db $ff, 4, HAPPINESS_OLDERCUT3 ; 30% chance Data_DaisyMassage: ; 746b db $ff, 2, HAPPINESS_MASSAGE ; 99.6% chance ; 746e CopyPokemonName_Buffer1_Buffer3: ; 746e ld hl, StringBuffer1 ld de, StringBuffer3 ld bc, PKMN_NAME_LENGTH jp CopyBytes ; 747a Predef1: ; 747a ; not used ret ; 747b SECTION "bank2", ROMX, BANK[$2] Function8000: ; 8000 call DisableSpriteUpdates xor a ld [hBGMapMode], a call WhiteBGMap call ClearSprites hlcoord 0, 0 ld bc, TileMapEnd - TileMap ld a, " " call ByteFill hlcoord 0, 0, AttrMap ld bc, AttrMapEnd - AttrMap ld a, $7 call ByteFill call Function3200 call SetPalettes ret ; 8029 GetSpawnCoord: ; 8029 ld a, -1 ld [wObjectFollow_Leader], a ld [wObjectFollow_Follower], a ld a, $0 ld hl, PlayerObjectTemplate call Function19a6 ld b, $0 call PlayerSpawn_ConvertCoords ld a, $0 call GetMapObject ld hl, MAPOBJECT_COLOR add hl, bc ln e, (1 << 3) | PAL_OW_RED, $0 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 .ok ld [hl], e ld a, $0 ld [hMapObjectIndexBuffer], a ld bc, MapObjects ld a, $0 ld [hObjectStructIndexBuffer], a ld de, ObjectStructs call Function8116 ld a, $0 ld [wd4cf], a ret ; 8071 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_0B, 15, 15, -1, -1, 0, 0, 0, 0, -1 ; 807e CopyDECoordsToMapObject:: ; 807e push de ld a, b call GetMapObject pop de ld hl, MAPOBJECT_X_COORD add hl, bc ld [hl], d ld hl, MAPOBJECT_Y_COORD add hl, bc ld [hl], e ret ; 808f PlayerSpawn_ConvertCoords: ; 808f push bc ld a, [XCoord] add 4 ld d, a ld a, [YCoord] add 4 ld e, a pop bc call CopyDECoordsToMapObject ret ; 80a1 Function80a1:: ; 80a1 ld a, b call CheckObjectVisibility ret c ld hl, OBJECT_MAP_X add hl, bc ld d, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] ld a, [hMapObjectIndexBuffer] ld b, a call CopyDECoordsToMapObject and a ret ; 80b8 RefreshPlayerCoords: ; 80b8 ld a, [XCoord] add 4 ld d, a ld hl, PlayerMapX sub [hl] ld [hl], d ld hl, MapObjects + MAPOBJECT_X_COORD ld [hl], d ld hl, PlayerNextMapX ld [hl], d ld d, a ld a, [YCoord] add 4 ld e, a ld hl, PlayerMapY sub [hl] ld [hl], e ld hl, MapObjects + MAPOBJECT_Y_COORD ld [hl], e ld hl, PlayerNextMapY ld [hl], e ld e, a ld a, [wObjectFollow_Leader] cp $0 ret nz ret ; 80e7 CopyObjectStruct:: ; 80e7 call CheckObjectMask and a ret nz ; masked ld hl, ObjectStructs + OBJECT_STRUCT_LENGTH * 1 ld a, 1 ld de, OBJECT_STRUCT_LENGTH .loop ld [hObjectStructIndexBuffer], a ld a, [hl] and a jr z, .done add hl, de ld a, [hObjectStructIndexBuffer] inc a cp NUM_OBJECT_STRUCTS jr nz, .loop scf ret .done ld d, h ld e, l call Function8116 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 ret ; 811d Function811d: ; 811d ld a, [hObjectStructIndexBuffer] ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld [hl], a ld a, [hMapObjectIndexBuffer] ld [wc2f0], a ld hl, MAPOBJECT_SPRITE add hl, bc ld a, [hl] ld [wc2f1], a call Function180e ld [wc2f2], a ld a, [hl] call GetSpritePalette ld [wc2f3], a ld hl, MAPOBJECT_COLOR add hl, bc ld a, [hl] and $f0 jr z, .no_color swap a and $7 ld [wc2f3], a .no_color ld hl, MAPOBJECT_MOVEMENT add hl, bc ld a, [hl] ld [wc2f4], a ld hl, MAPOBJECT_RANGE add hl, bc ld a, [hl] ld [wc2f5], a ld hl, MAPOBJECT_X_COORD add hl, bc ld a, [hl] ld [wc2f6], a ld hl, MAPOBJECT_Y_COORD add hl, bc ld a, [hl] ld [wc2f7], a ld hl, MAPOBJECT_RADIUS add hl, bc ld a, [hl] ld [wc2f8], a ret ; 8177 Function8177: ; 8177 ld bc, MapObjects + OBJECT_LENGTH ld a, 1 .loop ld [hMapObjectIndexBuffer], a ld hl, MAPOBJECT_SPRITE add hl, bc 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 .next ld hl, OBJECT_LENGTH add hl, bc ld b, h ld c, l ld a, [hMapObjectIndexBuffer] inc a cp NUM_OBJECTS jr nz, .loop ret ; 81c9 Function81c9: ; 81c9 ret ; 81ca Function81ca:: ; 81ca nop ld a, [wd151] cp $ff ret z ld hl, Table81d6 rst JumpTable ret ; 81d6 Table81d6: ; 81d6 dw Function81e5 dw Function81de dw Function8232 dw Function8239 ; 81de Function81de: ; 81de ld a, [YCoord] sub $1 jr Function81ea Function81e5: ; 81e5 ld a, [YCoord] add $9 Function81ea: ; 81ea ld d, a ld a, [XCoord] ld e, a ld bc, MapObjects + OBJECT_LENGTH ld a, 1 .loop ld [hMapObjectIndexBuffer], a ld hl, MAPOBJECT_SPRITE add hl, bc ld a, [hl] and a jr z, .next ld hl, MAPOBJECT_Y_COORD add hl, bc ld a, d cp [hl] jr nz, .next ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] cp -1 jr nz, .next ld hl, MAPOBJECT_X_COORD add hl, bc ld a, [hl] add 1 sub e jr c, .next cp MAPOBJECT_SCREEN_WIDTH jr nc, .next push de push bc call CopyObjectStruct pop bc pop de .next ld hl, OBJECT_LENGTH add hl, bc ld b, h ld c, l ld a, [hMapObjectIndexBuffer] inc a cp NUM_OBJECTS jr nz, .loop ret ; 8232 Function8232: ; 8232 ld a, [XCoord] sub 1 jr Function823e Function8239: ; 8239 ld a, [XCoord] add $a Function823e: ; 823e ld e, a ld a, [YCoord] ld d, a ld bc, MapObjects + OBJECT_LENGTH ld a, 1 .loop ld [hMapObjectIndexBuffer], a ld hl, MAPOBJECT_SPRITE add hl, bc ld a, [hl] and a jr z, .next ld hl, MAPOBJECT_X_COORD add hl, bc ld a, e cp [hl] jr nz, .next ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] cp -1 jr nz, .next ld hl, MAPOBJECT_Y_COORD add hl, bc ld a, [hl] add 1 sub d jr c, .next cp MAPOBJECT_SCREEN_HEIGHT jr nc, .next push de push bc call CopyObjectStruct pop bc pop de .next ld hl, OBJECT_LENGTH add hl, bc ld b, h ld c, l ld a, [hMapObjectIndexBuffer] inc a cp NUM_OBJECTS jr nz, .loop ret ; 8286 Function8286: ; 8286 ld a, [wc2f0] ld hl, OBJECT_MAP_OBJECT_INDEX add hl, de ld [hl], a ld a, [wc2f4] call Function1a61 ld a, [wc2f3] ld hl, OBJECT_PALETTE add hl, de or [hl] ld [hl], a ld a, [wc2f7] call Function82d5 ld a, [wc2f6] call Function82f1 ld a, [wc2f1] ld hl, OBJECT_SPRITE add hl, de ld [hl], a ld a, [wc2f2] ld hl, OBJECT_SPRITE_TILE add hl, de ld [hl], a ld hl, OBJECT_09 add hl, de ld [hl], $0 ld hl, OBJECT_FACING_STEP add hl, de ld [hl], $ff ld a, [wc2f8] call Function830d ld a, [wc2f5] ld hl, OBJECT_32 add hl, de ld [hl], a and a ret ; 82d5 Function82d5: ; 82d5 ld hl, OBJECT_21 add hl, de ld [hl], a ld hl, OBJECT_MAP_Y add hl, de ld [hl], a ld hl, YCoord sub [hl] and $f swap a ld hl, wd14d sub [hl] ld hl, OBJECT_SPRITE_Y add hl, de ld [hl], a ret ; 82f1 Function82f1: ; 82f1 ld hl, OBJECT_20 add hl, de ld [hl], a ld hl, OBJECT_MAP_X add hl, de ld [hl], a ld hl, XCoord sub [hl] and $f swap a ld hl, wd14c sub [hl] ld hl, OBJECT_SPRITE_X add hl, de ld [hl], a ret ; 830d Function830d: ; 830d ld h, a inc a and $f ld l, a ld a, h add $10 and $f0 or l ld hl, OBJECT_22 add hl, de ld [hl], a ret ; 831e Function831e: ; 831e ld a, [hLastTalked] call Function1b1e ld a, $3e call Function1b3f ld a, [wd03f] dec a jr z, Function833b ld a, [hLastTalked] ld b, a ld c, 0 ld d, 1 call Function8341 call Function1b35 Function833b ld a, $47 call Function1b3f ret ; 8341 Function8341: ; 8341 push de push bc ld a, c call GetMapObject ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] call GetObjectStruct ld d, b ld e, c pop bc ld a, b call GetMapObject ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] call GetObjectStruct ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld c, [hl] ld b, a ld hl, OBJECT_MAP_X add hl, de ld a, [hl] ld hl, OBJECT_MAP_Y add hl, de ld e, [hl] ld d, a pop af call Function1b5f ret ; 8379 Special_SurfStartStep: ; 8379 call Function1b1e call Function8388 call Function1b3f ld a, $47 call Function1b3f ret ; 8388 Function8388: ; 8388 ld a, [PlayerDirection] srl a srl a and 3 ld e, a ld d, 0 ld hl, .data_839a add hl, de ld a, [hl] ret ; 839a .data_839a db 8 + DOWN, 8 + UP, 8 + LEFT, 8 + RIGHT ; 839e Function839e:: ; 839e push bc ld a, c call CheckObjectVisibility ld d, b ld e, c pop bc ret c ld a, b call CheckObjectVisibility ret c ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld c, [hl] ld b, a ld hl, OBJECT_MAP_X add hl, de ld a, [hl] cp b jr z, .asm_83c7 jr c, .asm_83c4 inc b jr .asm_83d5 .asm_83c4 dec b jr .asm_83d5 .asm_83c7 ld hl, OBJECT_MAP_Y add hl, de ld a, [hl] cp c jr z, .asm_83d5 jr c, .asm_83d4 inc c jr .asm_83d5 .asm_83d4 dec c .asm_83d5 ld hl, OBJECT_MAP_X add hl, de ld [hl], b ld a, b ld hl, XCoord sub [hl] and $f swap a ld hl, wd14c sub [hl] ld hl, OBJECT_SPRITE_X add hl, de ld [hl], a ld hl, OBJECT_MAP_Y add hl, de ld [hl], c ld a, c ld hl, YCoord sub [hl] and $f swap a ld hl, wd14d sub [hl] ld hl, OBJECT_SPRITE_Y add hl, de ld [hl], a ld a, [hObjectStructIndexBuffer] ld hl, OBJECT_32 add hl, de ld [hl], a ld hl, OBJECT_MOVEMENTTYPE add hl, de ld [hl], SPRITEMOVEDATA_1A ld hl, OBJECT_09 add hl, de ld [hl], $0 ret ; 8417 GetRelativeFacing:: ; 8417 ; Determines which way map object e would have to turn to face map object d. Returns carry if it's impossible for whatever reason. ld a, d call GetMapObject ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] cp NUM_OBJECT_STRUCTS jr nc, .carry ld d, a ld a, e call GetMapObject ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc ld a, [hl] cp NUM_OBJECT_STRUCTS jr nc, .carry ld e, a call .GetFacing_e_relativeto_d ret .carry scf ret ; 8439 .GetFacing_e_relativeto_d: ; 8439 ; Determines which way object e would have to turn to face object d. Returns carry if it's impossible. ; load the coordinates of object d into bc ld a, d call GetObjectStruct ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld c, [hl] ld b, a push bc ; load the coordinates of object e into de ld a, e call GetObjectStruct ld hl, OBJECT_MAP_X add hl, bc ld d, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] pop bc ; |x1 - x2| ld a, b sub d jr z, .same_x_1 jr nc, .b_right_of_d_1 cpl inc a .b_right_of_d_1 ; |y1 - y2| ld h, a ld a, c sub e jr z, .same_y_1 jr nc, .c_below_e_1 cpl inc a .c_below_e_1 ; |y1 - y2| - |x1 - x2| sub h jr c, .same_y_1 .same_x_1 ; compare the y coordinates ld a, c cp e jr z, .same_x_and_y jr c, .c_directly_below_e ; c directly above e ld d, DOWN and a ret .c_directly_below_e ld d, UP and a ret .same_y_1 ld a, b cp d jr z, .same_x_and_y jr c, .b_directly_right_of_d ; b directly left of d ld d, RIGHT and a ret .b_directly_right_of_d ld d, LEFT and a ret .same_x_and_y scf ret ; 848a Function848a: ; 848a call Function849d jr c, .same ld [wd4d1], a xor a ld [wd4d0], a ret .same ld a, -1 ld [wd4d0], a ret ; 849d Function849d: ; 849d ld a, [wObjectFollow_Leader] call GetObjectStruct ld hl, OBJECT_MAP_X add hl, bc ld d, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] ld a, [wObjectFollow_Follower] call GetObjectStruct ld hl, OBJECT_MAP_X add hl, bc ld a, d cp [hl] jr z, .check_y jr c, .left and a ld a, $c + RIGHT ret .left and a ld a, $c + LEFT ret .check_y ld hl, OBJECT_MAP_Y add hl, bc ld a, e cp [hl] jr z, .same_xy jr c, .up and a ld a, $c + DOWN ret .up and a ld a, $c + UP ret .same_xy scf ret ; 84d9 _Sine:: ; 84d9 ; A simple sine function. ; Return d * sin(e) in hl. ; e is a signed 6-bit value. ld a, e and %111111 cp %100000 jr nc, .negative call Function84ef ld a, h ret .negative and %011111 call Function84ef ld a, h xor -1 inc a ret ; 84ef Function84ef: ; 84ef ld e, a ld a, d ld d, 0 ld hl, SineWave rept 2 add hl, de endr ld e, [hl] inc hl ld d, [hl] ld hl, 0 ; Factor amplitude .multiply srl a jr nc, .even add hl, de .even sla e rl d and a jr nz, .multiply ret ; 850b SineWave: ; 850b ; A $20-word table representing a sine wave. ; 90 degrees is index $10 at a base amplitude of $100. sine_wave $100 ; 854b INCLUDE "engine/predef.asm" INCLUDE "engine/color.asm" SECTION "bank3", ROMX, BANK[$3] CheckTime:: ; c000 ld a, [TimeOfDay] ld hl, TimeOfDayTable ld de, 2 call IsInArray inc hl ld c, [hl] ret c xor a ld c, a ret ; c012 TimeOfDayTable: ; c012 db MORN, 1 << MORN db DAY, 1 << DAY db NITE, 1 << NITE db NITE, 1 << NITE db -1 ; c01b INCLUDE "engine/specials.asm" _PrintNum:: ; c4c7 ; Print c digits of the b-byte value from de to hl. ; Allows 2 to 7 digits. For 1-digit numbers, add ; the value to char "0" instead of calling PrintNum. ; Some extra flags can be given in bits 5-7 of b. ; Bit 5: money if set (unless left-aligned without leading zeros) ; Bit 6: right-aligned if set ; Bit 7: print leading zeros if set push bc bit 5, b jr z, .main bit 7, b jr nz, .moneyflag bit 6, b jr z, .main .moneyflag ; 101xxxxx or 011xxxxx ld a, "¥" ld [hli], a res 5, b ; 100xxxxx or 010xxxxx .main xor a ld [hPrintNum1], a ld [hPrintNum2], a ld [hPrintNum3], a ld a, b and $f cp 1 jr z, .byte cp 2 jr z, .word ; maximum 3 bytes .long ld a, [de] ld [hPrintNum2], a inc de ld a, [de] ld [hPrintNum3], a inc de ld a, [de] ld [hPrintNum4], a jr .start .word ld a, [de] ld [hPrintNum3], a inc de ld a, [de] ld [hPrintNum4], a jr .start .byte ld a, [de] ld [hPrintNum4], a .start push de ld d, b ld a, c swap a and $f ld e, a ld a, c and $f ld b, a ld c, 0 cp 2 jr z, .two cp 3 jr z, .three cp 4 jr z, .four cp 5 jr z, .five cp 6 jr z, .six .seven ld a, 1000000 / $10000 % $100 ld [hPrintNum5], a ld a, 1000000 / $100 % $100 ld [hPrintNum6], a ld a, 1000000 % $100 ld [hPrintNum7], a call .PrintDigit call .AdvancePointer .six ld a, 100000 / $10000 % $100 ld [hPrintNum5], a ld a, 100000 / $100 % $100 ld [hPrintNum6], a ld a, 100000 % $100 ld [hPrintNum7], a call .PrintDigit call .AdvancePointer .five xor a ld [hPrintNum5], a ld a, 10000 / $100 ld [hPrintNum6], a ld a, 10000 % $100 ld [hPrintNum7], a call .PrintDigit call .AdvancePointer .four xor a ld [hPrintNum5], a ld a, 1000 / $100 ld [hPrintNum6], a ld a, 1000 % $100 ld [hPrintNum7], a call .PrintDigit call .AdvancePointer .three xor a ld [hPrintNum5], a xor a ld [hPrintNum6], a ld a, 100 ld [hPrintNum7], a call .PrintDigit call .AdvancePointer .two dec e jr nz, .two_skip ld a, "0" ld [hPrintNum1], a .two_skip ld c, 0 ld a, [hPrintNum4] .mod_10 cp 10 jr c, .modded_10 sub 10 inc c jr .mod_10 .modded_10 ld b, a ld a, [hPrintNum1] or c jr nz, .money call .PrintLeadingZero jr .money_leading_zero .money call .PrintYen push af ld a, "0" add c ld [hl], a pop af ld [hPrintNum1], a inc e dec e jr nz, .money_leading_zero inc hl ld [hl], $f2 ; XXX .money_leading_zero call .AdvancePointer call .PrintYen ld a, "0" add b ld [hli], a pop de pop bc ret ; c5ba .PrintYen: ; c5ba push af ld a, [hPrintNum1] and a jr nz, .stop bit 5, d jr z, .stop ld a, "¥" ld [hli], a res 5, d .stop pop af ret ; c5cb .PrintDigit: ; c5cb (3:45cb) dec e jr nz, .ok ld a, "0" ld [hPrintNum1], a .ok ld c, 0 .loop ld a, [hPrintNum5] ld b, a ld a, [hPrintNum2] ld [$ffba], a cp b jr c, .skip1 sub b ld [hPrintNum2], a ld a, [hPrintNum6] ld b, a ld a, [hPrintNum3] ld [hPrintNum9], a cp b jr nc, .skip2 ld a, [hPrintNum2] or 0 jr z, .skip3 dec a ld [hPrintNum2], a ld a, [hPrintNum3] .skip2 sub b ld [hPrintNum3], a ld a, [hPrintNum7] ld b, a ld a, [hPrintNum4] ld [hPrintNum10], a cp b jr nc, .skip4 ld a, [hPrintNum3] and a jr nz, .skip5 ld a, [hPrintNum2] and a jr z, .skip6 dec a ld [hPrintNum2], a xor a .skip5 dec a ld [hPrintNum3], a ld a, [hPrintNum4] .skip4 sub b ld [hPrintNum4], a inc c jr .loop .skip6 ld a, [hPrintNum9] ld [hPrintNum3], a .skip3 ld a, [$ffba] ld [hPrintNum2], a .skip1 ld a, [hPrintNum1] or c jr z, .PrintLeadingZero ld a, [hPrintNum1] and a jr nz, .done bit 5, d jr z, .done ld a, $f0 ld [hli], a res 5, d .done ld a, "0" add c ld [hl], a ld [hPrintNum1], a inc e dec e ret nz inc hl ld [hl], $f2 ret .PrintLeadingZero: ; c644 ; prints a leading zero unless they are turned off in the flags bit 7, d ; print leading zeroes? ret z ld [hl], "0" ret .AdvancePointer: ; c64a ; increments the pointer unless leading zeroes are not being printed, ; the number is left-aligned, and no nonzero digits have been printed yet bit 7, d ; print leading zeroes? jr nz, .inc bit 6, d ; left alignment or right alignment? jr z, .inc ld a, [hPrintNum1] and a ret z .inc inc hl ret ; c658 HealParty: ; c658 xor a ld [CurPartyMon], a ld hl, PartySpecies .loop ld a, [hli] cp -1 jr z, .done cp EGG jr z, .next push hl call HealPartyMon pop hl .next ld a, [CurPartyMon] inc a ld [CurPartyMon], a jr .loop .done ret ; c677 HealPartyMon: ; c677 ld a, MON_SPECIES call GetPartyParamLocation ld d, h ld e, l ld hl, MON_STATUS add hl, de xor a ld [hli], a ld [hl], a ld hl, MON_MAXHP add hl, de ; bc = MON_HP ld b, h ld c, l rept 2 dec bc endr ld a, [hli] ld [bc], a inc bc ld a, [hl] ld [bc], a callba Functionf8b9 ret ; c699 Functionc699: ; c699 ld a, b or c jr z, .zero push hl xor a ld [hMultiplicand + 0], a ld a, b ld [hMultiplicand + 1], a ld a, c ld [hMultiplicand + 2], a ld a, $30 ld [hMultiplier], a call Multiply ld a, d and a jr z, .divide srl d rr e srl d rr e ld a, [hProduct + 2] ld b, a ld a, [hProduct + 3] srl b rr a srl b rr a ld [hDividend + 3], a ld a, b ld [hDividend + 2], a .divide ld a, e ld [hDivisor], a ld b, $4 call Divide ld a, [hQuotient + 2] ld e, a pop hl and a ret nz ld e, $1 ret .zero ld e, $0 ret ; c6e0 Functionc6e0: ; c6e0 call WaitBGMap call Functiond627 call WaitBGMap ret ; c6ea ClearBuffer1: ; c6ea xor a ld hl, Buffer1 ld bc, 7 call ByteFill ret ; c6f5 FieldMoveJumptable: ; c6f5 ld a, [Buffer1] rst JumpTable ld [Buffer1], a bit 7, a jr nz, .okay and a ret .okay and $7f scf ret ; c706 GetPartyNick: ; c706 ; write CurPartyMon nickname to StringBuffer1-3 ld hl, PartyMonNicknames ld a, BOXMON ld [MonType], a ld a, [CurPartyMon] call GetNick call CopyName1 ; copy text from StringBuffer2 to StringBuffer3 ld de, StringBuffer2 ld hl, StringBuffer3 call CopyName2 ret ; c721 CheckEngineFlag: ; c721 ; Check engine flag de ; Return carry if flag is not set ld b, CHECK_FLAG callba EngineFlagAction ld a, c and a jr nz, .isset scf ret .isset xor a ret ; c731 CheckBadge: ; c731 ; Check engine flag a (ENGINE_ZEPHYRBADGE thru ENGINE_EARTHBADGE) ; Display "Badge required" text and return carry if the badge is not owned call CheckEngineFlag ret nc ld hl, BadgeRequiredText call MenuTextBoxBackup ; push text to queue scf ret ; c73d BadgeRequiredText: ; c73d ; Sorry! A new BADGE ; is required. text_jump _BadgeRequiredText db "@" ; c742 CheckPartyMove: ; c742 ; Check if a monster in your party has move d. ld e, 0 xor a ld [CurPartyMon], a .loop ld c, e ld b, 0 ld hl, PartySpecies add hl, bc ld a, [hl] and a jr z, .no cp a, -1 jr z, .no cp a, EGG jr z, .next ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1Moves ld a, e call AddNTimes ld b, NUM_MOVES .check ld a, [hli] cp d jr z, .yes dec b jr nz, .check .next inc e jr .loop .yes ld a, e ld [CurPartyMon], a ; which mon has the move xor a ret .no scf ret ; c779 FieldMoveFailed: ; c779 ld hl, UnknownText_0xc780 call MenuTextBoxBackup ret ; c780 UnknownText_0xc780: ; 0xc780 text_jump UnknownText_0x1c05c8 db "@" ; 0xc785 CutFunction: ; c785 call ClearBuffer1 .loop ld hl, .Jumptable call FieldMoveJumptable jr nc, .loop and $7f ld [wd0ec], a ret ; c796 .Jumptable: ; c796 (3:4796) dw .CheckAble dw .DoCut dw .FailCut .CheckAble: ; c79c (3:479c) ld de, ENGINE_HIVEBADGE call CheckBadge jr c, .nohivebadge call CheckMapForSomethingToCut jr c, .nothingtocut ld a, $1 ret .nohivebadge ld a, $80 ret .nothingtocut ld a, $2 ret .DoCut: ; c7b2 (3:47b2) ld hl, Script_CutFromMenu call QueueScript ld a, $81 ret .FailCut: ; c7bb (3:47bb) ld hl, UnknownText_0xc7c9 call MenuTextBoxBackup ld a, $80 ret UnknownText_0xc7c4: ; 0xc7c4 ; used CUT! text_jump UnknownText_0x1c05dd db "@" ; 0xc7c9 UnknownText_0xc7c9: ; 0xc7c9 ; There's nothing to CUT here. text_jump UnknownText_0x1c05ec db "@" ; 0xc7ce CheckMapForSomethingToCut: ; c7ce call GetFacingTileCoord ld c, a push de callba CheckCutCollision pop de jr nc, .fail call GetBlockLocation ld c, [hl] push hl ld hl, CutTreeBlockPointers call CheckOverworldTileArrays pop hl jr nc, .fail ld a, l ld [wd1ec], a ld a, h ld [wd1ed], a ld a, b ld [wd1ee], a ld a, c ld [wd1ef], a xor a ret .fail scf ret ; c7fe Script_CutFromMenu: ; c7fe reloadmappart special UpdateTimePals Script_Cut: ; 0xc802 callasm GetPartyNick writetext UnknownText_0xc7c4 reloadmappart callasm CutDownTreeOrGrass loadmovesprites end ; 0xc810 CutDownTreeOrGrass: ; c810 ld hl, wd1ec ld a, [hli] ld h, [hl] ld l, a ld a, [wd1ee] ld [hl], a xor a ld [hBGMapMode], a call Function2173 call UpdateSprites call DelayFrame ld a, [wd1ef] ld e, a callba Function8c940 call BufferScreen call Function2914 call UpdateSprites call DelayFrame call LoadStandardFont ret ; c840 CheckOverworldTileArrays: ; c840 push bc ld a, [wd199] ld de, 3 call IsInArray pop bc jr nc, .nope inc hl ld a, [hli] ld h, [hl] ld l, a ld de, 3 ld a, c call IsInArray jr nc, .nope inc hl ld b, [hl] inc hl ld c, [hl] scf ret .nope xor a ret ; c862 CutTreeBlockPointers: ; c862 ; Which tileset are we in? dbw $01, .one dbw $02, .two dbw $03, .three dbw $19, .twentyfive dbw $1f, .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 -1 ; c882 .two: ; Goldenrod area db $03, $02, $01 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 -1 ; c899 .twentyfive: ; National Park db $13, $03, $01 db $03, $04, $01 db -1 ; c8a0 .thirtyone: ; Ilex Forest db $0f, $17, $00 db -1 ; c8a4 WhirlpoolBlockPointers: ; c8a4 dbw $01, .one db -1 ; c8a8 .one: ; c8a8 db $07, $36, $00 db -1 ; c8ac Functionc8ac: ; c8ac call Functionc8b5 and $7f ld [wd0ec], a ret ; c8b5 Functionc8b5: ; c8b5 ; Flash ld de, ENGINE_ZEPHYRBADGE callba CheckBadge jr c, .nozephyrbadge push hl callba SpecialAerodactylChamber pop hl jr c, .useflash ld a, [wd847] cp -1 jr nz, .notadarkcave .useflash call UseFlash ld a, $81 ret .notadarkcave call FieldMoveFailed ld a, $80 ret .nozephyrbadge ld a, $80 ret ; c8e0 UseFlash: ; c8e0 ld hl, Script_UseFlash jp QueueScript ; c8e6 Script_UseFlash: ; 0xc8e6 reloadmappart special UpdateTimePals writetext UnknownText_0xc8f3 callasm BlindingFlash loadmovesprites end ; 0xc8f3 UnknownText_0xc8f3: ; 0xc8f3 text_jump UnknownText_0x1c0609 start_asm call WaitSFX ld de, SFX_FLASH call PlaySFX call WaitSFX ld hl, UnknownText_0xc908 ret ; c908 UnknownText_0xc908: ; 0xc908 db "@" ; 0xc909 SurfFunction: ; c909 call ClearBuffer1 .loop ld hl, .Jumptable call FieldMoveJumptable jr nc, .loop and $7f ld [wd0ec], a ret ; c91a .Jumptable: ; c91a (3:491a) dw .TrySurf dw .DoSurf dw .FailSurf dw .AlreadySurfing .TrySurf: ; c922 (3:4922) ld de, ENGINE_FOGBADGE call CheckBadge jr c, .asm_c956 ld hl, BikeFlags bit 1, [hl] ; always on bike jr nz, .cannotsurf ld a, [PlayerState] cp PLAYER_SURF jr z, .alreadysurfing cp PLAYER_SURF_PIKA jr z, .alreadysurfing call GetFacingTileCoord call GetTileCollision cp $1 jr nz, .cannotsurf call CheckDirection jr c, .cannotsurf callba CheckFacingObject jr c, .cannotsurf ld a, $1 ret .asm_c956 ld a, $80 ret .alreadysurfing ld a, $3 ret .cannotsurf ld a, $2 ret .DoSurf: ; c95f (3:495f) call GetSurfType ld [Buffer2], a ; wd1eb (aliases: MovementType) call GetPartyNick ld hl, SurfFromMenuScript call QueueScript ld a, $81 ret .FailSurf: ; c971 (3:4971) ld hl, CantSurfText call MenuTextBoxBackup ld a, $80 ret .AlreadySurfing: ; c97a (3:497a) ld hl, AlreadySurfingText call MenuTextBoxBackup ld a, $80 ret ; c983 (3:4983) SurfFromMenuScript: ; c983 special UpdateTimePals UsedSurfScript: ; c986 writetext UsedSurfText ; "used SURF!" closetext loadmovesprites callasm Functionc9a2 ; empty function copybytetovar Buffer2 writevarcode VAR_MOVEMENT special ReplaceKrisSprite special PlayMapMusic ; step into the water special Special_SurfStartStep ; (slow_step_x, step_end) applymovement PLAYER, MovementBuffer ; PLAYER, MovementBuffer end ; c9a2 Functionc9a2: ; c9a2 callba MobileFn_1060bb ; empty ret ; c9a9 UsedSurfText: ; c9a9 text_jump _UsedSurfText db "@" ; c9ae CantSurfText: ; c9ae text_jump _CantSurfText db "@" ; c9b3 AlreadySurfingText: ; c9b3 text_jump _AlreadySurfingText db "@" ; c9b8 GetSurfType: ; c9b8 ; Surfing on Pikachu uses an alternate sprite. ; This is done by using a separate movement type. ld a, [CurPartyMon] ld e, a ld d, 0 ld hl, PartySpecies add hl, de ld a, [hl] cp PIKACHU ld a, PLAYER_SURF_PIKA ret z ld a, PLAYER_SURF ret ; c9cb CheckDirection: ; c9cb ; Return carry if a tile permission prevents you ; from moving in the direction you're facing. ; Get player direction ld a, [PlayerDirection] and a, %00001100 ; bits 2 and 3 contain direction rrca rrca ld e, a ld d, 0 ld hl, .Directions add hl, de ; Can you walk in this direction? ld a, [TilePermissions] and [hl] jr nz, .quit xor a ret .quit scf ret .Directions db FACE_DOWN db FACE_UP db FACE_LEFT db FACE_RIGHT ; c9e7 TrySurfOW:: ; c9e7 ; Checking a tile in the overworld. ; Return carry if surfing is allowed. ; Don't ask to surf if already surfing. ld a, [PlayerState] cp PLAYER_SURF_PIKA jr z, .quit cp PLAYER_SURF jr z, .quit ; Must be facing water. ld a, [EngineBuffer1] call GetTileCollision cp 1 ; surfable jr nz, .quit ; Check tile permissions. call CheckDirection jr c, .quit ld de, ENGINE_FOGBADGE call CheckEngineFlag jr c, .quit ld d, SURF call CheckPartyMove jr c, .quit ld hl, BikeFlags bit 1, [hl] ; always on bike (can't surf) jr nz, .quit call GetSurfType ld [MovementType], a call GetPartyNick ld a, BANK(AskSurfScript) ld hl, AskSurfScript call CallScript scf ret .quit xor a ret ; ca2c AskSurfScript: ; ca2c loadfont writetext AskSurfText yesorno iftrue UsedSurfScript loadmovesprites end ; ca36 AskSurfText: ; ca36 text_jump _AskSurfText ; The water is calm. db "@" ; Want to SURF? ; ca3b FlyFunction: ; ca3b call ClearBuffer1 .asm_ca3e ld hl, .data_ca4c call FieldMoveJumptable jr nc, .asm_ca3e and $7f ld [wd0ec], a ret ; ca4c .data_ca4c dw .TryFly dw .DoFly dw .FailFly ; ca52 .TryFly: ; ca52 ; Fly ld de, ENGINE_STORMBADGE call CheckBadge jr c, .nostormbadge call GetMapPermission call CheckOutdoorMap jr z, .outdoors jr .indoors .outdoors xor a ld [hMapAnims], a call LoadMenuDataHeader_0x1d75 call ClearSprites callba _FlyMap ld a, e cp -1 jr z, .illegal cp $1c ; NUM_SPAWNS jr nc, .illegal ld [wd001], a call WriteBackup ld a, $1 ret .nostormbadge ld a, $82 ret .indoors ld a, $2 ret .illegal call WriteBackup call WaitBGMap ld a, $80 ret ; ca94 .DoFly: ; ca94 ld hl, .FlyScript call QueueScript ld a, $81 ret ; ca9d .FailFly: ; ca9d call FieldMoveFailed ld a, $82 ret ; caa3 .FlyScript: ; 0xcaa3 reloadmappart callasm HideSprites special UpdateTimePals callasm Function8caed farscall UnknownScript_0x122c1 special WarpToSpawnPoint callasm DelayLoadingNewSprites writecode VAR_MOVEMENT, $0 newloadmap MAPSETUP_12 callasm Function8cb33 special WaitSFX callasm Functioncacb end ; 0xcacb Functioncacb: ; cacb callba Function561d call DelayFrame call ReplaceKrisSprite callba Function106594 ret ; cade Functioncade: ; cade call AttemptToWaterfall and $7f ld [wd0ec], a ret ; cae7 AttemptToWaterfall: ; cae7 ; Waterfall ld de, ENGINE_RISINGBADGE callba CheckBadge ld a, $80 ret c call CheckMapCanWaterfall jr c, .failed ld hl, Script_WaterfallFromMenu call QueueScript ld a, $81 ret .failed call FieldMoveFailed ld a, $80 ret ; cb07 CheckMapCanWaterfall: ; cb07 ld a, [PlayerDirection] and $c cp FACE_UP jr nz, .failed ld a, [TileUp] call CheckWaterfallTile jr nz, .failed xor a ret .failed scf ret ; cb1c Script_WaterfallFromMenu: ; 0xcb1c reloadmappart special UpdateTimePals Script_UsedWaterfall: ; 0xcb20 callasm GetPartyNick writetext UnknownText_0xcb51 closetext loadmovesprites playsound SFX_BUBBLEBEAM .loop applymovement PLAYER, WaterfallStep callasm CheckContinueWaterfall iffalse .loop end ; 0xcb38 CheckContinueWaterfall: ; cb38 xor a ld [ScriptVar], a ld a, [PlayerStandingTile] call CheckWaterfallTile ret z callba MobileFn_1060c1 ld a, $1 ld [ScriptVar], a ret ; cb4f WaterfallStep: ; cb4f turn_waterfall_up step_end ; cb51 UnknownText_0xcb51: ; 0xcb51 text_jump UnknownText_0x1c068e db "@" ; 0xcb56 TryWaterfallOW:: ; cb56 ld d, WATERFALL call CheckPartyMove jr c, .failed ld de, ENGINE_RISINGBADGE call CheckEngineFlag jr c, .failed call CheckMapCanWaterfall jr c, .failed ld a, BANK(Script_AskWaterfall) ld hl, Script_AskWaterfall call CallScript scf ret .failed ld a, BANK(Script_CantDoWaterfall) ld hl, Script_CantDoWaterfall call CallScript scf ret ; cb7e Script_CantDoWaterfall: ; 0xcb7e jumptext UnknownText_0xcb81 ; 0xcb81 UnknownText_0xcb81: ; 0xcb81 text_jump UnknownText_0x1c06a3 db "@" ; 0xcb86 Script_AskWaterfall: ; 0xcb86 loadfont writetext UnknownText_0xcb90 yesorno iftrue Script_UsedWaterfall loadmovesprites end ; 0xcb90 UnknownText_0xcb90: ; 0xcb90 text_jump UnknownText_0x1c06bf db "@" ; 0xcb95 EscapeRopeFunction: ; cb95 call ClearBuffer1 ld a, $1 jr dig_incave DigFunction: ; cb9c call ClearBuffer1 ld a, $2 dig_incave ld [Buffer2], a .loop ld hl, .DigTable call FieldMoveJumptable jr nc, .loop and $7f ld [wd0ec], a ret ; cbb2 .DigTable: ; cbb2 dw .CheckCanDig dw .DoDig dw .FailDig ; cbb8 .CheckCanDig: ; cbb8 call GetMapPermission cp $4 jr z, .incave cp $7 jr z, .incave .fail ld a, $2 ret .incave ld hl, wdca9 ld a, [hli] and a jr z, .fail ld a, [hli] and a jr z, .fail ld a, [hl] and a jr z, .fail ld a, $1 ret ; cbd8 .DoDig: ; cbd8 ld hl, wdca9 ld de, wd146 ld bc, 3 call CopyBytes call GetPartyNick ld a, [Buffer2] cp $2 jr nz, .escaperope ld hl, UsedDigScript call QueueScript ld a, $81 ret .escaperope callba SpecialKabutoChamber ld hl, UsedEscapeRopeScript call QueueScript ld a, $81 ret ; cc06 .FailDig: ; cc06 ld a, [Buffer2] cp $2 jr nz, .failescaperope ld hl, UnknownText_0xcc26 call MenuTextBox call Functiona80 call WriteBackup .failescaperope ld a, $80 ret ; cc1c UnknownText_0xcc1c: ; 0xcc1c ; used DIG! text_jump UnknownText_0x1c06de db "@" ; 0xcc21 UnknownText_0xcc21: ; 0xcc21 ; used an ESCAPE ROPE. text_jump UnknownText_0x1c06ed db "@" ; 0xcc26 UnknownText_0xcc26: ; 0xcc26 ; Can't use that here. text_jump UnknownText_0x1c0705 db "@" ; 0xcc2b UsedEscapeRopeScript: ; 0xcc2b reloadmappart special UpdateTimePals writetext UnknownText_0xcc21 jump UsedDigOrEscapeRopeScript ; 0xcc35 UsedDigScript: ; 0xcc35 reloadmappart special UpdateTimePals writetext UnknownText_0xcc1c UsedDigOrEscapeRopeScript: ; 0xcc3c closetext loadmovesprites playsound SFX_WARP_TO applymovement PLAYER, MovementData_0xcc59 farscall UnknownScript_0x122c1 special WarpToSpawnPoint writecode VAR_MOVEMENT, $0 newloadmap MAPSETUP_05 playsound SFX_WARP_FROM applymovement PLAYER, MovementData_0xcc5d end ; 0xcc59 MovementData_0xcc59: ; 0xcc59 step_wait5 turn_away_down hide_person step_end ; 0xcc5d MovementData_0xcc5d: ; 0xcc5d return_dig $58 turn_away_down step_end ; 0xcc61 TeleportFunction: ; cc61 call ClearBuffer1 .loop ld hl, .Jumptable call FieldMoveJumptable jr nc, .loop and $7f ld [wd0ec], a ret ; cc72 .Jumptable: ; cc72 dw .TryTeleport dw .DoTeleport dw .FailTeleport ; cc78 .TryTeleport: ; cc78 call GetMapPermission call CheckOutdoorMap jr z, .CheckIfSpawnPoint jr .nope .CheckIfSpawnPoint ld a, [wdcb2] ld d, a ld a, [wdcb3] ld e, a callba IsSpawnPoint jr nc, .nope ld a, c ld [wd001], a ld a, $1 ret .nope ld a, $2 ret ; cc9c .DoTeleport: ; cc9c call GetPartyNick ld hl, Script_UsedTeleport call QueueScript ld a, $81 ret ; cca8 .FailTeleport: ; cca8 ld hl, UnknownText_0xccb6 call MenuTextBoxBackup ld a, $80 ret ; ccb1 UnknownText_0xccb1: ; 0xccb1 ; Return to the last #MON CENTER. text_jump UnknownText_0x1c071a db "@" ; 0xccb6 UnknownText_0xccb6: ; 0xccb6 ; Can't use that here. text_jump UnknownText_0x1c073b db "@" ; 0xccbb Script_UsedTeleport: ; 0xccbb reloadmappart special UpdateTimePals writetext UnknownText_0xccb1 pause 60 reloadmappart loadmovesprites playsound SFX_WARP_TO applymovement PLAYER, MovementData_0xcce1 farscall UnknownScript_0x122c1 special WarpToSpawnPoint writecode VAR_MOVEMENT, $0 newloadmap MAPSETUP_04 playsound SFX_WARP_FROM applymovement PLAYER, MovementData_0xcce3 end ; 0xcce1 MovementData_0xcce1: ; cce1 teleport_from step_end ; cce3 MovementData_0xcce3: ; cce3 teleport_to step_end ; cce5 StrengthFunction: ; cce5 call .TryStrength and $7f ld [wd0ec], a ret ; ccee .TryStrength: ; ccee ; Strength ld de, ENGINE_PLAINBADGE call CheckBadge jr c, FailedStrength jr StartToUseStrength ; ccf8 AlreadyUsingStrength: ; unreferenced ld hl, UnknownText_0xcd01 call MenuTextBoxBackup ld a, $80 ret ; cd01 UnknownText_0xcd01: ; 0xcd01 text_jump UnknownText_0x1c0751 db "@" ; 0xcd06 FailedStrength: ; cd06 ld a, $80 ret ; cd09 StartToUseStrength: ; cd09 ld hl, Script_StrengthFromMenu call QueueScript ld a, $81 ret ; cd12 Functioncd12: ; cd12 ld hl, BikeFlags set 0, [hl] ld a, [CurPartyMon] ld e, a ld d, 0 ; fallthrough ; cd1d Functioncd1d: ; cd1d ld hl, PartySpecies add hl, de ld a, [hl] ld [wd1ef], a call GetPartyNick ret ; cd29 Script_StrengthFromMenu: ; 0xcd29 reloadmappart special UpdateTimePals Script_UsedStrength: ; 0xcd2d callasm Functioncd12 writetext UnknownText_0xcd41 copybytetovar wd1ef cry 0 pause 3 writetext UnknownText_0xcd46 loadmovesprites end ; 0xcd41 UnknownText_0xcd41: ; 0xcd41 text_jump UnknownText_0x1c0774 db "@" ; 0xcd46 UnknownText_0xcd46: ; 0xcd46 text_jump UnknownText_0x1c0788 db "@" ; 0xcd4b AskStrengthScript: callasm TryStrengthOW iffalse .AskStrength if_equal $1, .DontMeetRequirements jump .AlreadyUsedStrength ; 0xcd59 .DontMeetRequirements: ; 0xcd59 jumptext UnknownText_0xcd73 ; 0xcd5c .AlreadyUsedStrength: ; 0xcd5c jumptext UnknownText_0xcd6e ; 0xcd5f .AskStrength: ; 0xcd5f loadfont writetext UnknownText_0xcd69 yesorno iftrue Script_UsedStrength loadmovesprites end ; 0xcd69 UnknownText_0xcd69: ; 0xcd69 ; A #MON may be able to move this. Want to use STRENGTH? text_jump UnknownText_0x1c07a0 db "@" ; 0xcd6e UnknownText_0xcd6e: ; 0xcd6e ; Boulders may now be moved! text_jump UnknownText_0x1c07d8 db "@" ; 0xcd73 UnknownText_0xcd73: ; 0xcd73 ; A #MON may be able to move this. text_jump UnknownText_0x1c07f4 db "@" ; 0xcd78 TryStrengthOW: ; cd78 ld d, STRENGTH call CheckPartyMove jr c, .nope ld de, ENGINE_PLAINBADGE call CheckEngineFlag jr c, .nope ld hl, BikeFlags bit 0, [hl] jr z, .already_using ld a, 2 jr .done .nope ld a, 1 jr .done .already_using xor a jr .done .done ld [ScriptVar], a ret ; cd9d WhirlpoolFunction: ; cd9d call ClearBuffer1 .loop ld hl, Jumptable_cdae call FieldMoveJumptable jr nc, .loop and $7f ld [wd0ec], a ret ; cdae Jumptable_cdae: ; cdae dw .TryWhirlpool dw .DoWhirlpool dw .FailWhirlpool ; cdb4 .TryWhirlpool: ; cdb4 ld de, ENGINE_GLACIERBADGE call CheckBadge jr c, .noglacierbadge call TryWhirlpoolMenu jr c, .failed ld a, $1 ret .failed ld a, $2 ret .noglacierbadge ld a, $80 ret ; cdca .DoWhirlpool: ; cdca ld hl, Script_WhirlpoolFromMenu call QueueScript ld a, $81 ret ; cdd3 .FailWhirlpool: ; cdd3 call FieldMoveFailed ld a, $80 ret ; cdd9 UnknownText_0xcdd9: ; 0xcdd9 ; used WHIRLPOOL! text_jump UnknownText_0x1c0816 db "@" ; 0xcdde TryWhirlpoolMenu: ; cdde call GetFacingTileCoord ld c, a push de call CheckWhirlpoolTile pop de jr c, .failed call GetBlockLocation ld c, [hl] push hl ld hl, WhirlpoolBlockPointers call CheckOverworldTileArrays pop hl jr nc, .failed ld a, l ld [wd1ec], a ld a, h ld [wd1ed], a ld a, b ld [wd1ee], a ld a, c ld [wd1ef], a xor a ret .failed scf ret ; ce0b Script_WhirlpoolFromMenu: ; 0xce0b reloadmappart special UpdateTimePals Script_UsedWhirlpool: ; 0xce0f callasm GetPartyNick writetext UnknownText_0xcdd9 reloadmappart callasm DisappearWhirlpool loadmovesprites end ; 0xce1d DisappearWhirlpool: ; ce1d ld hl, wd1ec ld a, [hli] ld h, [hl] ld l, a ld a, [wd1ee] ld [hl], a xor a ld [hBGMapMode], a call Function2173 ld a, [wd1ef] ld e, a callba Function8c7d4 call BufferScreen call Function2914 ret ; ce3e TryWhirlpoolOW:: ; ce3e ld d, WHIRLPOOL call CheckPartyMove jr c, .failed ld de, ENGINE_GLACIERBADGE call CheckEngineFlag jr c, .failed call TryWhirlpoolMenu jr c, .failed ld a, BANK(Script_AskWhirlpoolOW) ld hl, Script_AskWhirlpoolOW call CallScript scf ret .failed ld a, BANK(Script_MightyWhirlpool) ld hl, Script_MightyWhirlpool call CallScript scf ret ; ce66 Script_MightyWhirlpool: ; 0xce66 jumptext UnknownText_0xce69 ; 0xce69 UnknownText_0xce69: ; 0xce69 text_jump UnknownText_0x1c082b db "@" ; 0xce6e Script_AskWhirlpoolOW: ; 0xce6e loadfont writetext UnknownText_0xce78 yesorno iftrue Script_UsedWhirlpool loadmovesprites end ; 0xce78 UnknownText_0xce78: ; 0xce78 text_jump UnknownText_0x1c0864 db "@" ; 0xce7d HeadbuttFunction: ; ce7d call TryHeadbuttFromMenu and $7f ld [wd0ec], a ret ; ce86 TryHeadbuttFromMenu: ; ce86 call GetFacingTileCoord call CheckHeadbuttTreeTile jr nz, .no_tree ld hl, HeadbuttFromMenuScript call QueueScript ld a, $81 ret .no_tree call FieldMoveFailed ld a, $80 ret ; ce9d UnknownText_0xce9d: ; 0xce9d ; did a HEADBUTT! text_jump UnknownText_0x1c0897 db "@" ; 0xcea2 UnknownText_0xcea2: ; 0xcea2 ; Nope. Nothing… text_jump UnknownText_0x1c08ac db "@" ; 0xcea7 HeadbuttFromMenuScript: ; 0xcea7 reloadmappart special UpdateTimePals HeadbuttScript: ; 0xceab callasm GetPartyNick writetext UnknownText_0xce9d reloadmappart callasm ShakeHeadbuttTree callasm TreeMonEncounter iffalse .no_battle loadmovesprites battlecheck startbattle returnafterbattle end .no_battle writetext UnknownText_0xcea2 closetext loadmovesprites end ; 0xcec9 TryHeadbuttOW:: ; cec9 ld d, HEADBUTT call CheckPartyMove jr c, .no ld a, BANK(AskHeadbuttScript) ld hl, AskHeadbuttScript call CallScript scf ret .no xor a ret ; cedc AskHeadbuttScript: ; 0xcedc loadfont writetext UnknownText_0xcee6 yesorno iftrue HeadbuttScript loadmovesprites end ; 0xcee6 UnknownText_0xcee6: ; 0xcee6 ; A #MON could be in this tree. Want to HEADBUTT it? text_jump UnknownText_0x1c08bc db "@" ; 0xceeb RockSmashFunction: ; ceeb call TryRockSmashFromMenu and $7f ld [wd0ec], a ret ; cef4 TryRockSmashFromMenu: ; cef4 call GetFacingObject jr c, .no_rock ld a, d cp $18 jr nz, .no_rock ld hl, RockSmashFromMenuScript call QueueScript ld a, $81 ret .no_rock call FieldMoveFailed ld a, $80 ret ; cf0d GetFacingObject: ; cf0d callba CheckFacingObject jr nc, .fail ld a, [hObjectStructIndexBuffer] call GetObjectStruct ld hl, OBJECT_MAP_OBJECT_INDEX add hl, bc ld a, [hl] ld [hLastTalked], a call GetMapObject ld hl, MAPOBJECT_MOVEMENT add hl, bc ld a, [hl] ld d, a and a ret .fail scf ret ; cf2e RockSmashFromMenuScript: ; 0xcf2e reloadmappart special UpdateTimePals RockSmashScript: ; cf32 callasm GetPartyNick writetext UnknownText_0xcf58 loadmovesprites special WaitSFX playsound SFX_STRENGTH earthquake 84 applymovement2 MovementData_0xcf55 disappear -2 callasm RockMonEncounter copybytetovar TempWildMonSpecies iffalse .done battlecheck startbattle returnafterbattle .done end ; 0xcf55 MovementData_0xcf55: ; 0xcf55 rock_smash 10 step_end UnknownText_0xcf58: ; 0xcf58 text_jump UnknownText_0x1c08f0 db "@" ; 0xcf5d AskRockSmashScript: ; 0xcf5d callasm HasRockSmash if_equal 1, .no loadfont writetext UnknownText_0xcf77 yesorno iftrue RockSmashScript loadmovesprites end .no jumptext UnknownText_0xcf72 ; 0xcf72 UnknownText_0xcf72: ; 0xcf72 ; Maybe a #MON can break this. text_jump UnknownText_0x1c0906 db "@" ; 0xcf77 UnknownText_0xcf77: ; 0xcf77 ; This rock looks breakable. Want to use ROCK SMASH? text_jump UnknownText_0x1c0924 db "@" ; 0xcf7c HasRockSmash: ; cf7c ld d, ROCK_SMASH call CheckPartyMove jr nc, .yes .no ld a, 1 jr .done .yes xor a jr .done .done ld [ScriptVar], a ret FishFunction: ; cf8e ld a, e push af call ClearBuffer1 pop af ld [Buffer2], a .loop ld hl, .FishTable call FieldMoveJumptable jr nc, .loop and $7f ld [wd0ec], a ret ; cfa5 .FishTable: ; cfa5 dw .TryFish dw .FishNoBite dw .FishGotSomething dw .SurfingFish dw .FailFish ; cfaf .TryFish: ; cfaf ld a, [PlayerState] cp PLAYER_SURF jr z, .surfing cp PLAYER_SURF_PIKA jr z, .surfing call GetFacingTileCoord call GetTileCollision cp $1 jr z, .facingwater .surfing ld a, $3 ret .facingwater call Function2d19 and a jr nz, .goodtofish ld a, $4 ret .goodtofish ld d, a ld a, [Buffer2] ld e, a callba FishAction ld a, d and a jr z, .nonibble ld [TempWildMonSpecies], a ld a, e ld [CurPartyLevel], a ld a, BATTLETYPE_FISH ld [BattleType], a ld a, $2 ret .nonibble ld a, $1 ret ; cff1 .SurfingFish: ; cff1 ld a, $80 ret ; cff4 .FishGotSomething: ; cff4 ld a, $1 ld [wd1ef], a ld hl, Script_GotABite call QueueScript ld a, $81 ret ; d002 .FishNoBite: ; d002 ld a, $2 ld [wd1ef], a ld hl, Script_NotEvenANibble call QueueScript ld a, $81 ret ; d010 .FailFish: ; d010 ld a, $0 ld [wd1ef], a ld hl, Script_NotEvenANibble2 call QueueScript ld a, $81 ret ; d01e Script_NotEvenANibble: ; 0xd01e scall Script_FishCastRod writetext UnknownText_0xd0a9 jump Script_NotEvenANibble_FallThrough ; 0xd027 Script_NotEvenANibble2: ; 0xd027 scall Script_FishCastRod writetext UnknownText_0xd0a9 Script_NotEvenANibble_FallThrough: ; 0xd02d loademote EMOTE_08 callasm PutTheRodAway loadmovesprites end ; 0xd035 Script_GotABite: ; 0xd035 scall Script_FishCastRod callasm Fishing_CheckFacingUp iffalse .FacingUp applymovement PLAYER, MovementData_0xd062 jump .FightTheHookedPokemon ; 0xd046 .FacingUp: ; 0xd046 applymovement PLAYER, MovementData_0xd05c .FightTheHookedPokemon: ; 0xd04a pause 40 applymovement PLAYER, MovementData_0xd069 writetext UnknownText_0xd0a4 callasm PutTheRodAway loadmovesprites battlecheck startbattle returnafterbattle end ; 0xd05c MovementData_0xd05c: ; d05c fish_got_bite fish_got_bite fish_got_bite fish_got_bite show_emote step_end ; d062 MovementData_0xd062: ; d062 fish_got_bite fish_got_bite fish_got_bite fish_got_bite show_person show_emote step_end ; d069 MovementData_0xd069: ; d069 hide_emote fish_got_bite_2 step_end ; d06c Fishing_CheckFacingUp: ; d06c ld a, [PlayerDirection] and $c cp $4 ld a, $1 jr z, .up xor a .up ld [ScriptVar], a ret ; d07c Script_FishCastRod: ; 0xd07c reloadmappart loadvar hBGMapMode, $0 special UpdateTimePals loademote EMOTE_09 callasm Functionb84b3 loademote EMOTE_SHOCK applymovement PLAYER, MovementData_0xd093 pause 40 end ; 0xd093 MovementData_0xd093: ; d093 fish_got_bite_2 step_end ; d095 PutTheRodAway: ; d095 xor a ld [hBGMapMode], a ld a, $1 ld [PlayerAction], a call UpdateSprites call ReplaceKrisSprite ret ; d0a4 UnknownText_0xd0a4: ; 0xd0a4 ; Oh! A bite! text_jump UnknownText_0x1c0958 db "@" ; 0xd0a9 UnknownText_0xd0a9: ; 0xd0a9 ; Not even a nibble! text_jump UnknownText_0x1c0965 db "@" ; 0xd0ae UnknownText_0xd0ae: ; unused ; Looks like there's nothing here. text_jump UnknownText_0x1c0979 db "@" ; 0xd0b3 BikeFunction: ; d0b3 call .TryBike and $7f ld [wd0ec], a ret ; d0bc .TryBike: ; d0bc call .CheckEnvironment jr c, .CannotUseBike ld a, [PlayerState] cp PLAYER_NORMAL jr z, .GetOnBike cp PLAYER_BIKE jr z, .GetOffBike jr .CannotUseBike .GetOnBike ld hl, Script_GetOnBike ld de, Script_GetOnBike_Register call .CheckIfRegistered call QueueScript xor a ld [MusicFade], a ld de, MUSIC_NONE call PlayMusic call DelayFrame call MaxVolume ld de, MUSIC_BICYCLE ld a, e ld [wMapMusic], a call PlayMusic ld a, $1 ret .GetOffBike ld hl, BikeFlags bit 1, [hl] jr nz, .CantGetOffBike ld hl, Script_GetOffBike ld de, Script_GetOffBike_Register call .CheckIfRegistered ld a, $3 jr .done .CantGetOffBike ld hl, UnknownScript_0xd171 jr .done .CannotUseBike ld a, $0 ret .done call QueueScript ld a, $1 ret ; d119 .CheckIfRegistered: ; d119 ld a, [wd0ef] and a ret z ld h, d ld l, e ret ; d121 .CheckEnvironment: ; d121 call GetMapPermission call CheckOutdoorMap jr z, .ok cp CAVE jr z, .ok cp GATE jr z, .ok jr .nope .ok call Function184a and $f jr nz, .nope xor a ret .nope scf ret ; d13e Script_GetOnBike: ; 0xd13e reloadmappart special UpdateTimePals writecode VAR_MOVEMENT, $1 writetext UnknownText_0xd17c closetext loadmovesprites special ReplaceKrisSprite end ; 0xd14e Script_GetOnBike_Register: ; 0xd14e writecode VAR_MOVEMENT, $1 loadmovesprites special ReplaceKrisSprite end ; 0xd156 Functiond156: ; unreferenced nop ret Script_GetOffBike: ; 0xd158 reloadmappart special UpdateTimePals writecode VAR_MOVEMENT, $0 writetext UnknownText_0xd181 closetext UnknownScript_0xd163: loadmovesprites special ReplaceKrisSprite special PlayMapMusic end ; 0xd16b Script_GetOffBike_Register: ; 0xd16b writecode VAR_MOVEMENT, $0 jump UnknownScript_0xd163 ; 0xd171 UnknownScript_0xd171: ; 0xd171 writetext UnknownText_0xd177 closetext loadmovesprites end ; 0xd177 UnknownText_0xd177: ; 0xd177 ; You can't get off here! text_jump UnknownText_0x1c099a db "@" ; 0xd17c UnknownText_0xd17c: ; 0xd17c ; got on the @ . text_jump UnknownText_0x1c09b2 db "@" ; 0xd181 UnknownText_0xd181: ; 0xd181 ; got off the @ . text_jump UnknownText_0x1c09c7 db "@" ; 0xd186 TryCutOW:: ; d186 ld d, CUT call CheckPartyMove jr c, .cant_cut ld de, ENGINE_HIVEBADGE call CheckEngineFlag jr c, .cant_cut ld a, BANK(AskCutScript) ld hl, AskCutScript call CallScript scf ret .cant_cut ld a, BANK(CantCutScript) ld hl, CantCutScript call CallScript scf ret ; d1a9 AskCutScript: ; 0xd1a9 loadfont writetext UnknownText_0xd1c8 yesorno iffalse .script_d1b8 callasm .CheckMap iftrue Script_Cut .script_d1b8 loadmovesprites end ; 0xd1ba .CheckMap: ; d1ba xor a ld [ScriptVar], a call CheckMapForSomethingToCut ret c ld a, 1 ld [ScriptVar], a ret ; d1c8 UnknownText_0xd1c8: ; 0xd1c8 text_jump UnknownText_0x1c09dd db "@" ; 0xd1cd CantCutScript: ; 0xd1cd jumptext UnknownText_0xd1d0 ; 0xd1d0 UnknownText_0xd1d0: ; 0xd1d0 text_jump UnknownText_0x1c0a05 db "@" ; 0xd1d5 _ReceiveItem:: ; d1d5 call DoesHLEqualNumItems jp nz, PutItemInPocket push hl call CheckItemPocket pop de ld a, [wItemAttributeParamBuffer] dec a ld hl, .Pockets rst JumpTable ret ; d1e9 .Pockets: ; d1e9 dw .Item dw .KeyItem dw .Ball dw .TMHM ; d1f1 .Item: ; d1f1 ld h, d ld l, e jp PutItemInPocket ; d1f6 .KeyItem: ; d1f6 ld h, d ld l, e jp ReceiveKeyItem ; d1fb .Ball: ; d1fb ld hl, NumBalls jp PutItemInPocket ; d201 .TMHM: ; d201 ld h, d ld l, e ld a, [CurItem] ld c, a call GetTMHMNumber jp ReceiveTMHM ; d20d _TossItem:: ; d20d call DoesHLEqualNumItems jr nz, .remove push hl call CheckItemPocket pop de ld a, [wItemAttributeParamBuffer] dec a ld hl, .Pockets rst JumpTable ret .Pockets dw .Item dw .KeyItem dw .Ball dw .TMHM ; d228 .Ball ; d228 ld hl, NumBalls jp RemoveItemFromPocket ; d22e .TMHM ; d22e ld h, d ld l, e ld a, [CurItem] ld c, a call GetTMHMNumber jp TossTMHM ; d23a .KeyItem ; d23a ld h, d ld l, e jp TossKeyItem ; d23f .Item ; d23f ld h, d ld l, e ; d241 .remove jp RemoveItemFromPocket ; d244 _CheckItem:: ; d244 call DoesHLEqualNumItems jr nz, .nope push hl call CheckItemPocket pop de ld a, [wItemAttributeParamBuffer] dec a ld hl, .Pockets rst JumpTable ret .Pockets dw .Item dw .KeyItem dw .Ball dw .TMHM ; d25f .Ball ; d25f ld hl, NumBalls jp CheckTheItem ; d265 .TMHM ; d265 ld h, d ld l, e ld a, [CurItem] ld c, a call GetTMHMNumber jp CheckTMHM ; d271 .KeyItem ; d271 ld h, d ld l, e jp CheckKeyItems ; d276 .Item ; d276 ld h, d ld l, e ; d278 .nope jp CheckTheItem ; d27b DoesHLEqualNumItems: ; d27b ld a, l cp NumItems % $100 ret nz ld a, h cp NumItems / $100 ret ; d283 GetPocketCapacity: ; d283 ld c, MAX_ITEMS ld a, e cp NumItems % $100 jr nz, .not_bag ld a, d cp NumItems / $100 ret z .not_bag ld c, MAX_PC_ITEMS ld a, e cp PCItems % $100 jr nz, .not_pc ld a, d cp PCItems / $100 ret z .not_pc ld c, MAX_BALLS ret ; d29c PutItemInPocket: ; d29c ld d, h ld e, l inc hl ld a, [CurItem] ld c, a ld b, 0 .loop ld a, [hli] cp -1 jr z, .terminator cp c jr nz, .next ld a, 99 sub [hl] add b ld b, a ld a, [wItemQuantityChangeBuffer] cp b jr z, .ok jr c, .ok .next inc hl jr .loop .terminator call GetPocketCapacity ld a, [de] cp c jr c, .ok and a ret .ok ld h, d ld l, e ld a, [CurItem] ld c, a ld a, [wItemQuantityChangeBuffer] ld [wItemQuantityBuffer], a .loop2 inc hl ld a, [hli] cp -1 jr z, .terminator2 cp c jr nz, .loop2 ld a, [wItemQuantityBuffer] add [hl] cp 100 jr nc, .newstack ld [hl], a jr .done .newstack ld [hl], 99 sub 99 ld [wItemQuantityBuffer], a jr .loop2 .terminator2 dec hl ld a, [CurItem] ld [hli], a ld a, [wItemQuantityBuffer] ld [hli], a ld [hl], -1 ld h, d ld l, e inc [hl] .done scf ret ; d2ff RemoveItemFromPocket: ; d2ff ld d, h ld e, l ld a, [hli] ld c, a ld a, [ItemCountBuffer] cp c jr nc, .ok ; memory ld c, a ld b, $0 rept 2 add hl, bc endr ld a, [CurItem] cp [hl] inc hl jr z, .skip ld h, d ld l, e inc hl .ok ld a, [CurItem] ld b, a .loop ld a, [hli] cp b jr z, .skip cp -1 jr z, .nope inc hl jr .loop .skip ld a, [wItemQuantityChangeBuffer] ld b, a ld a, [hl] sub b jr c, .nope ld [hl], a ld [wItemQuantityBuffer], a and a jr nz, .yup dec hl ld b, h ld c, l rept 2 inc hl endr .loop2 ld a, [hli] ld [bc], a inc bc cp -1 jr nz, .loop2 ld h, d ld l, e dec [hl] .yup scf ret .nope and a ret ; d349 CheckTheItem: ; d349 ld a, [CurItem] ld c, a .loop inc hl ld a, [hli] cp -1 jr z, .done cp c jr nz, .loop scf ret .done and a ret ; d35a ReceiveKeyItem: ; d35a ld hl, NumKeyItems ld a, [hli] cp MAX_KEY_ITEMS jr nc, .nope ld c, a ld b, 0 add hl, bc ld a, [CurItem] ld [hli], a ld [hl], -1 ld hl, NumKeyItems inc [hl] scf ret .nope and a ret ; d374 TossKeyItem: ; d374 ld a, [wd107] ld e, a ld d, 0 ld hl, NumKeyItems ld a, [hl] cp e jr nc, .ok call .Toss ret nc jr .ok2 .ok dec [hl] inc hl add hl, de .ok2 ld d, h ld e, l inc hl .loop ld a, [hli] ld [de], a inc de cp -1 jr nz, .loop scf ret ; d396 .Toss: ; d396 ld hl, NumKeyItems ld a, [CurItem] ld c, a .loop3 inc hl ld a, [hl] cp c jr z, .ok3 cp -1 jr nz, .loop3 xor a ret .ok3 ld a, [NumKeyItems] dec a ld [NumKeyItems], a scf ret ; d3b1 CheckKeyItems: ; d3b1 ld a, [CurItem] ld c, a ld hl, KeyItems .loop ld a, [hli] cp c jr z, .done cp -1 jr nz, .loop and a ret .done scf ret ; d3c4 ReceiveTMHM: ; d3c4 dec c ld b, 0 ld hl, TMsHMs add hl, bc ld a, [wItemQuantityChangeBuffer] add [hl] cp 100 jr nc, .toomany ld [hl], a scf ret .toomany and a ret ; d3d8 TossTMHM: ; d3d8 dec c ld b, 0 ld hl, TMsHMs add hl, bc ld a, [wItemQuantityChangeBuffer] ld b, a ld a, [hl] sub b jr c, .nope ld [hl], a ld [wItemQuantityBuffer], a jr nz, .yup ld a, [wd0e2] and a jr z, .yup dec a ld [wd0e2], a .yup scf ret .nope and a ret ; d3fb CheckTMHM: ; d3fb dec c ld b, $0 ld hl, TMsHMs add hl, bc ld a, [hl] and a ret z scf ret ; d407 GetTMHMNumber:: ; d407 ; Return the number of a TM/HM by item id c. ld a, c ; Skip any dummy items. cp ITEM_C3 ; TM04-05 jr c, .done cp ITEM_DC ; TM28-29 jr c, .skip dec a .skip dec a .done sub TM01 inc a ld c, a ret ; d417 GetNumberedTMHM: ; d417 ; Return the item id of a TM/HM by number c. ld a, c ; Skip any gaps. cp ITEM_C3 - (TM01 - 1) jr c, .done cp ITEM_DC - (TM01 - 1) - 1 jr c, .skip_one .skip_two inc a .skip_one inc a .done add TM01 dec a ld c, a ret ; d427 _CheckTossableItem:: ; d427 ; Return 1 in wItemAttributeParamBuffer and carry if CurItem can't be removed from the bag. ld a, ITEMATTR_PERMISSIONS call GetItemAttr bit 7, a jr nz, ItemAttr_ReturnCarry and a ret ; d432 CheckSelectableItem: ; d432 ; Return 1 in wItemAttributeParamBuffer and carry if CurItem can't be selected. ld a, ITEMATTR_PERMISSIONS call GetItemAttr bit 6, a jr nz, ItemAttr_ReturnCarry and a ret ; d43d CheckItemPocket:: ; d43d ; Return the pocket for CurItem in wItemAttributeParamBuffer. ld a, ITEMATTR_POCKET call GetItemAttr and $f ld [wItemAttributeParamBuffer], a ret ; d448 CheckItemContext: ; d448 ; Return the context for CurItem in wItemAttributeParamBuffer. ld a, ITEMATTR_HELP call GetItemAttr and $f ld [wItemAttributeParamBuffer], a ret ; d453 CheckItemMenu: ; d453 ; Return the menu for CurItem in wItemAttributeParamBuffer. ld a, ITEMATTR_HELP call GetItemAttr swap a and $f ld [wItemAttributeParamBuffer], a ret ; d460 GetItemAttr: ; d460 ; Get attribute a of CurItem. push hl push bc ld hl, ItemAttributes ld c, a ld b, 0 add hl, bc xor a ld [wItemAttributeParamBuffer], a ld a, [CurItem] dec a ld c, a ld a, NUM_ITEMATTRS call AddNTimes ld a, BANK(ItemAttributes) call GetFarByte pop bc pop hl ret ; d47f ItemAttr_ReturnCarry: ; d47f ld a, 1 ld [wItemAttributeParamBuffer], a scf ret ; d486 GetItemPrice: ; d486 ; Return the price of CurItem in de. push hl push bc ld a, ITEMATTR_PRICE call GetItemAttr ld e, a ld a, ITEMATTR_PRICE_HI call GetItemAttr ld d, a pop bc pop hl ret ; d497 Functiond497:: ; d497 (3:5497) ld a, [wd150] and a ret z bit 7, a jr nz, .asm_d4a9 bit 6, a jr nz, .asm_d4b3 bit 5, a jr nz, .asm_d4b8 ret .asm_d4a9 ld a, $4 ld [wd13f], a call Functiond536 jr .asm_d4b8 .asm_d4b3 call Functiond511 jr .asm_d4b8 .asm_d4b8 call Functiond4e5 ld a, [wd14e] ld d, a ld a, [wd14f] ld e, a ld a, [wd14c] sub d ld [wd14c], a ld a, [wd14d] sub e ld [wd14d], a ret Functiond4d2:: ; d4d2 (3:54d2) ld a, [wd14e] ld d, a ld a, [wd14f] ld e, a ld a, [hSCX] ; $ff00+$cf add d ld [hSCX], a ; $ff00+$cf ld a, [hSCY] ; $ff00+$d0 add e ld [hSCY], a ; $ff00+$d0 ret Functiond4e5: ; d4e5 (3:54e5) ld hl, wd13f ld a, [hl] and a ret z dec [hl] ld a, [hl] ld hl, Jumptable_d4f2 rst JumpTable ret Jumptable_d4f2: ; d4f2 (3:54f2) dw Function2914 dw BufferScreen dw Functiond509 dw Functiond510 dw Functiond508 dw Functiond508 dw Functiond508 dw Functiond508 dw Functiond508 dw Functiond508 dw Functiond508 Functiond508: ; d508 (3:5508) ret Functiond509: ; d509 (3:5509) callba MobileFn_10602e ret Functiond510: ; d510 (3:5510) ret Functiond511: ; d511 (3:5511) ld a, [wd151] and a jr nz, .asm_d51c ld hl, YCoord inc [hl] ret .asm_d51c cp $1 jr nz, .asm_d525 ld hl, YCoord dec [hl] ret .asm_d525 cp $2 jr nz, .asm_d52e ld hl, XCoord dec [hl] ret .asm_d52e cp $3 ret nz ld hl, XCoord inc [hl] ret Functiond536: ; d536 (3:5536) ld a, [wd151] and a jr z, .asm_d549 cp $1 jr z, .asm_d553 cp $2 jr z, .asm_d55d cp $3 jr z, .asm_d567 ret .asm_d549 call Functiond571 call LoadMapPart call Function2748 ret .asm_d553 call Functiond5a2 call LoadMapPart call Function272a ret .asm_d55d call Functiond5d5 call LoadMapPart call Function2771 ret .asm_d567 call Functiond5fe call LoadMapPart call Function278f ret Functiond571: ; d571 (3:5571) ld a, [wd152] add $40 ld [wd152], a jr nc, .asm_d586 ld a, [wd153] inc a and $3 or $98 ld [wd153], a .asm_d586 ld hl, wd196 inc [hl] ld a, [hl] cp $2 jr nz, .asm_d594 ld [hl], $0 call Functiond595 .asm_d594 ret Functiond595: ; d595 (3:5595) ld hl, wd194 ld a, [MapWidth] add $6 add [hl] ld [hli], a ret nc inc [hl] ret Functiond5a2: ; d5a2 (3:55a2) ld a, [wd152] sub $40 ld [wd152], a jr nc, .asm_d5b7 ld a, [wd153] dec a and $3 or $98 ld [wd153], a .asm_d5b7 ld hl, wd196 dec [hl] ld a, [hl] cp $ff jr nz, .asm_d5c5 ld [hl], $1 call Functiond5c6 .asm_d5c5 ret Functiond5c6: ; d5c6 (3:55c6) ld hl, wd194 ld a, [MapWidth] add $6 ld b, a ld a, [hl] sub b ld [hli], a ret nc dec [hl] ret Functiond5d5: ; d5d5 (3:55d5) ld a, [wd152] ld e, a and $e0 ld d, a ld a, e sub $2 and $1f or d ld [wd152], a ld hl, wd197 dec [hl] ld a, [hl] cp $ff jr nz, .asm_d5f3 ld [hl], $1 call Functiond5f4 .asm_d5f3 ret Functiond5f4: ; d5f4 (3:55f4) ld hl, wd194 ld a, [hl] sub $1 ld [hli], a ret nc dec [hl] ret Functiond5fe: ; d5fe (3:55fe) ld a, [wd152] ld e, a and $e0 ld d, a ld a, e add $2 and $1f or d ld [wd152], a ld hl, wd197 inc [hl] ld a, [hl] cp $2 jr nz, .asm_d61c ld [hl], $0 call Functiond61d .asm_d61c ret Functiond61d: ; d61d (3:561d) ld hl, wd194 ld a, [hl] add $1 ld [hli], a ret nc inc [hl] ret Functiond627: ; d627 call Functiond65f jr c, .asm_d645 call Functiond670 .asm_d62f push bc push hl call Functiond6e2 pop hl pop bc push af push bc push hl call Functiond730 call Functiond7c9 pop hl pop bc pop af jr nc, .asm_d62f ret .asm_d645 call Functiond670 .asm_d648 push bc push hl call Functiond6f5 pop hl pop bc ret c push af push bc push hl call Functiond749 call Functiond7c9 pop hl pop bc pop af jr nc, .asm_d648 ret ; d65f Functiond65f: ; d65f ld a, [Buffer2] and a jr nz, .asm_d66e ld a, [Buffer1] cp $30 jr nc, .asm_d66e and a ret .asm_d66e scf ret ; d670 Functiond670: ; d670 push hl ld hl, Buffer1 ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld c, a ld a, [hli] ld b, a pop hl call Functionc699 ld a, e ld [wd1f1], a ld a, [wd1ee] ld c, a ld a, [wd1ef] ld b, a ld a, [Buffer1] ld e, a ld a, [Buffer2] ld d, a call Functionc699 ld a, e ld [wd1f2], a push hl ld hl, wd1ec ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld e, a ld a, [hli] ld d, a pop hl ld a, e sub c ld e, a ld a, d sbc b ld d, a jr c, .asm_d6c1 ld a, [wd1ec] ld [wd1f5], a ld a, [wd1ee] ld [wd1f6], a ld bc, 1 jr .asm_d6d9 .asm_d6c1 ld a, [wd1ec] ld [wd1f6], a ld a, [wd1ee] ld [wd1f5], a ld a, e xor $ff inc a ld e, a ld a, d xor $ff ld d, a ld bc, rIE .asm_d6d9 ld a, d ld [wd1f3], a ld a, e ld [wd1f4], a ret ; d6e2 Functiond6e2: ; d6e2 ld hl, wd1f1 ld a, [wd1f2] cp [hl] jr nz, .asm_d6ed scf ret .asm_d6ed ld a, c add [hl] ld [hl], a call Functiond839 and a ret ; d6f5 Functiond6f5: ; d6f5 .asm_d6f5 ld hl, wd1ec ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, e cp [hl] jr nz, .asm_d707 inc hl ld a, d cp [hl] jr nz, .asm_d707 scf ret .asm_d707 ld l, e ld h, d add hl, bc ld a, l ld [wd1ec], a ld a, h ld [wd1ed], a push hl push de push bc ld hl, Buffer1 ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld c, a ld a, [hli] ld b, a call Functionc699 pop bc pop de pop hl ld a, e ld hl, wd1f1 cp [hl] jr z, .asm_d6f5 ld [hl], a and a ret ; d730 Functiond730: ; d730 call Functiond784 ld d, $6 ld a, [wd10a] and $1 ld b, a ld a, [wd1f1] ld e, a ld c, a push de call Functiond771 pop de call Functiond7b4 ret ; d749 Functiond749: ; d749 call Functiond784 ld a, [wd1ec] ld c, a ld a, [wd1ed] ld b, a ld a, [Buffer1] ld e, a ld a, [Buffer2] ld d, a call Functionc699 ld c, e ld d, $6 ld a, [wd10a] and $1 ld b, a push de call Functiond771 pop de call Functiond7b4 ret ; d771 Functiond771: ; d771 ld a, [wd10a] cp $2 jr nz, .asm_d780 ld a, $28 add l ld l, a ld a, $0 adc h ld h, a .asm_d780 call DrawHPBar ret ; d784 Functiond784: ; d784 ld a, [wd10a] and a ret z cp $1 jr z, .asm_d792 ld de, $16 jr .asm_d795 .asm_d792 ld de, $15 .asm_d795 push hl add hl, de ld a, " " rept 2 ld [hli], a endr ld [hld], a dec hl ld a, [wd1ec] ld [StringBuffer2 + 1], a ld a, [wd1ed] ld [StringBuffer2], a ld de, StringBuffer2 lb bc, 2, 3 call PrintNum pop hl ret ; d7b4 Functiond7b4: ; d7b4 ld a, [hCGB] and a ret z ld hl, wd1f0 call SetHPPal ld a, [wd1f0] ld c, a callba Function8c43 ret ; d7c9 Functiond7c9: ; d7c9 ld a, [hCGB] and a jr nz, .asm_d7d5 call DelayFrame call DelayFrame ret .asm_d7d5 ld a, [wd10a] and a jr z, .asm_d829 cp $1 jr z, .asm_d82d ld a, [CurPartyMon] cp $3 jr nc, .asm_d7ea ld c, $0 jr .asm_d7ec .asm_d7ea ld c, $1 .asm_d7ec push af cp $2 jr z, .asm_d7ff cp $5 jr z, .asm_d7ff ld a, $2 ld [hBGMapMode], a ld a, c ld [hBGMapThird], a call DelayFrame .asm_d7ff ld a, $1 ld [hBGMapMode], a ld a, c ld [hBGMapThird], a call DelayFrame pop af cp $2 jr z, .asm_d813 cp $5 jr z, .asm_d813 ret .asm_d813 inc c ld a, $2 ld [hBGMapMode], a ld a, c ld [hBGMapThird], a call DelayFrame ld a, $1 ld [hBGMapMode], a ld a, c ld [hBGMapThird], a call DelayFrame ret .asm_d829 ld c, $0 jr .asm_d82f .asm_d82d ld c, $1 .asm_d82f call DelayFrame ld a, c ld [hBGMapThird], a call DelayFrame ret ; d839 Functiond839: ; d839 ld a, [Buffer1] ld c, a ld b, $0 ld hl, 0 ld a, [wd1f1] cp $30 jr nc, .asm_d885 and a jr z, .asm_d880 call AddNTimes ld b, $0 .asm_d851 ld a, l sub $30 ld l, a ld a, h sbc $0 ld h, a jr c, .asm_d85e inc b jr .asm_d851 .asm_d85e push bc ld bc, $80 add hl, bc pop bc ld a, l sub $30 ld l, a ld a, h sbc $0 ld h, a jr c, .asm_d86f inc b .asm_d86f ld a, [wd1f5] cp b jr nc, .asm_d87c ld a, [wd1f6] cp b jr c, .asm_d87c ld a, b .asm_d87c ld [wd1ec], a ret .asm_d880 xor a ld [wd1ec], a ret .asm_d885 ld a, [Buffer1] ld [wd1ec], a ret ; d88c TryAddMonToParty: ; d88c ; Check if to copy wild Pkmn or generate new Pkmn ; Whose is it? ld de, PartyCount ld a, [MonType] and $f jr z, .getpartylocation ; PARTYMON ld de, OTPartyCount .getpartylocation ; Do we have room for it? ld a, [de] inc a cp PARTY_LENGTH + 1 ret nc ; Increase the party count ld [de], a ld a, [de] ; Why are we doing this? ld [$ffae], a ; HRAM backup add e ld e, a jr nc, .loadspecies inc d .loadspecies ; Load the species of the Pokemon into the party list. ; The terminator is usually here, but it'll be back. ld a, [CurPartySpecies] ld [de], a ; Load the terminator into the next slot. inc de ld a, -1 ld [de], a ; Now let's load the OT name. ld hl, PartyMonOT ld a, [MonType] and $f jr z, .loadOTname ld hl, OTPartyMonOT .loadOTname ld a, [$ffae] ; Restore index from backup dec a call SkipNames ld d, h ld e, l ld hl, PlayerName ld bc, NAME_LENGTH call CopyBytes ld a, [MonType] and a jr nz, .skipnickname ld a, [CurPartySpecies] ld [wd265], a call GetPokemonName ld hl, PartyMonNicknames ld a, [$ffae] dec a call SkipNames ld d, h ld e, l ld hl, StringBuffer1 ld bc, PKMN_NAME_LENGTH call CopyBytes .skipnickname ld hl, PartyMon1Species ld a, [MonType] and $f jr z, .initializeStats ld hl, OTPartyMon1Species .initializeStats ld a, [$ffae] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes GeneratePartyMonStats: ; d906 ld e, l ld d, h push hl ld a, [CurPartySpecies] ld [CurSpecies], a call GetBaseData ld a, [BaseDexNo] ld [de], a inc de ld a, [wBattleMode] and a ld a, $0 jr z, .skipitem ld a, [EnemyMonItem] .skipitem ld [de], a inc de push de ld h, d ld l, e ld a, [wBattleMode] and a jr z, .randomlygeneratemoves ld a, [MonType] and a jr nz, .randomlygeneratemoves ld de, EnemyMonMoves rept NUM_MOVES + -1 ld a, [de] inc de ld [hli], a endr ld a, [de] ld [hl], a jr .next .randomlygeneratemoves xor a rept NUM_MOVES + -1 ld [hli], a endr ld [hl], a ld [Buffer1], a predef FillMoves .next pop de rept 4 inc de endr ld a, [PlayerID] ld [de], a inc de ld a, [PlayerID + 1] ld [de], a inc de push de ld a, [CurPartyLevel] ld d, a callab CalcExpAtLevel pop de ld a, [hMultiplicand] ld [de], a inc de ld a, [$ffb5] ld [de], a inc de ld a, [$ffb6] ld [de], a inc de xor a ld b, $a .loop ld [de], a inc de dec b jr nz, .loop pop hl push hl ld a, [MonType] and $f jr z, .generateDVs push hl callba GetTrainerDVs pop hl jr .initializetrainermonstats .generateDVs ld a, [CurPartySpecies] ld [wd265], a dec a push de call CheckCaughtMon ld a, [wd265] dec a call SetSeenAndCaughtMon pop de pop hl push hl ld a, [wBattleMode] and a jr nz, .copywildmonstats call Random ld b, a call Random ld c, a .initializetrainermonstats ld a, b ld [de], a inc de ld a, c ld [de], a inc de push hl push de rept 2 inc hl endr call FillPP pop de pop hl rept 4 inc de endr ld a, 70 ld [de], a inc de xor a ld [de], a inc de ld [de], a inc de ld [de], a inc de ld a, [CurPartyLevel] ld [de], a inc de xor a ld [de], a inc de ld [de], a inc de ld bc, 10 add hl, bc ld a, $1 ld c, a ld b, $0 call CalcPkmnStatC ld a, [$ffb5] ld [de], a inc de ld a, [$ffb6] ld [de], a inc de jr .next2 .copywildmonstats ld a, [EnemyMonDVs] ld [de], a inc de ld a, [EnemyMonDVs + 1] ld [de], a inc de push hl ld hl, EnemyMonPP ld b, NUM_MOVES .wildmonpploop ld a, [hli] ld [de], a inc de dec b jr nz, .wildmonpploop pop hl ld a, BASE_HAPPINESS ld [de], a inc de xor a ld [de], a inc de ld [de], a inc de ld [de], a inc de ld a, [CurPartyLevel] ld [de], a inc de ld hl, EnemyMonStatus ; Copy EnemyMonStatus ld a, [hli] ld [de], a inc de ; Copy EnemyMonUnused ld a, [hli] ld [de], a inc de ; Copy EnemyMonHP ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a inc de .next2 ld a, [wBattleMode] dec a jr nz, .generatestats ld hl, EnemyMonMaxHP ld bc, 2*6 ; MaxHP + 5 Stats call CopyBytes pop hl jr .next3 .generatestats pop hl ld bc, 2*5 ; 5 Stats add hl, bc ld b, $0 ; if b = 1, then the Stats of the Pkmn are calculated ; only the current HP aren't set to MaxHP after this call CalcPkmnStats .next3 ld a, [MonType] and $f jr nz, .done ld a, [CurPartySpecies] cp UNOWN jr nz, .done ld hl, PartyMon1DVs ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes predef GetUnownLetter callab Functionfba18 .done scf ; When this function returns, the carry flag indicates success vs failure. ret ; da6d FillPP: ; da6d push bc ld b, NUM_MOVES .asm_da70 ld a, [hli] and a jr z, .asm_da8f dec a push hl push de push bc ld hl, Moves ld bc, MOVE_LENGTH call AddNTimes ld de, StringBuffer1 ld a, BANK(Moves) call FarCopyBytes pop bc pop de pop hl ld a, [StringBuffer1 + MOVE_PP] .asm_da8f ld [de], a inc de dec b jr nz, .asm_da70 pop bc ret ; da96 Functionda96: ; da96 ld hl, PartyCount ld a, [hl] cp PARTY_LENGTH scf ret z inc a ld [hl], a ld c, a ld b, 0 add hl, bc ld a, [CurPartySpecies] ld [hli], a ld [hl], $ff ld hl, PartyMon1Species ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld e, l ld d, h ld hl, TempMonSpecies call CopyBytes ld hl, PartyMonOT ld a, [PartyCount] dec a call SkipNames ld d, h ld e, l ld hl, OTPartyMonOT ld a, [CurPartyMon] call SkipNames ld bc, NAME_LENGTH call CopyBytes ld hl, PartyMonNicknames ld a, [PartyCount] dec a call SkipNames ld d, h ld e, l ld hl, OTPartyMonNicknames ld a, [CurPartyMon] call SkipNames ld bc, PKMN_NAME_LENGTH call CopyBytes ld a, [CurPartySpecies] ld [wd265], a cp EGG jr z, .owned dec a call SetSeenAndCaughtMon ld hl, PartyMon1Happiness ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld [hl], BASE_HAPPINESS .owned ld a, [CurPartySpecies] cp UNOWN jr nz, .done ld hl, PartyMon1DVs ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes predef GetUnownLetter callab Functionfba18 ld a, [wdef4] and a jr nz, .done ld a, [UnownLetter] ld [wdef4], a .done and a ret SentGetPkmnIntoFromBox: ; db3f ; Sents/Gets Pkmn into/from Box depending on Parameter ; wd10b == 0: get Pkmn into Party ; wd10b == 1: sent Pkmn into Box ld a, BANK(sBoxCount) call GetSRAMBank ld a, [wd10b] and a jr z, .check_IfPartyIsFull cp $2 jr z, .check_IfPartyIsFull cp $3 ld hl, wBreedMon1Species jr z, .asm_db9b ; we want to sent a Pkmn into the Box ; so check if there's enough space ld hl, sBoxCount ld a, [hl] cp MONS_PER_BOX jr nz, .asm_db69 jp CloseSRAM_And_SetCFlag .check_IfPartyIsFull ld hl, PartyCount ld a, [hl] cp PARTY_LENGTH jp z, CloseSRAM_And_SetCFlag .asm_db69 inc a ld [hl], a ld c, a ld b, 0 add hl, bc ld a, [wd10b] cp $2 ld a, [wBreedMon1Species] jr z, .asm_db7c ld a, [CurPartySpecies] .asm_db7c ld [hli], a ld [hl], $ff ld a, [wd10b] dec a ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH ld a, [PartyCount] jr nz, .asm_db97 ld hl, sBoxMon1Species ld bc, BOXMON_STRUCT_LENGTH ld a, [sBoxCount] .asm_db97 dec a ; PartyCount - 1 call AddNTimes .asm_db9b push hl ld e, l ld d, h ld a, [wd10b] and a ld hl, sBoxMon1Species ld bc, BOXMON_STRUCT_LENGTH jr z, .asm_dbb7 cp $2 ld hl, wBreedMon1Species jr z, .asm_dbbd ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH .asm_dbb7 ld a, [CurPartyMon] call AddNTimes .asm_dbbd ld bc, BOXMON_STRUCT_LENGTH call CopyBytes ld a, [wd10b] cp $3 ld de, wBreedMon1OT jr z, .asm_dbe2 dec a ld hl, PartyMonOT ld a, [PartyCount] jr nz, .asm_dbdc ld hl, sBoxMonOT ld a, [sBoxCount] .asm_dbdc dec a call SkipNames ld d, h ld e, l .asm_dbe2 ld hl, sBoxMonOT ld a, [wd10b] and a jr z, .asm_dbf5 ld hl, wBreedMon1OT cp $2 jr z, .asm_dbfb ld hl, PartyMonOT .asm_dbf5 ld a, [CurPartyMon] call SkipNames .asm_dbfb ld bc, NAME_LENGTH call CopyBytes ld a, [wd10b] cp $3 ld de, wBreedMon1Nick jr z, .asm_dc20 dec a ld hl, PartyMonNicknames ld a, [PartyCount] jr nz, .asm_dc1a ld hl, sBoxMonNicknames ld a, [sBoxCount] .asm_dc1a dec a call SkipNames ld d, h ld e, l .asm_dc20 ld hl, sBoxMonNicknames ld a, [wd10b] and a jr z, .asm_dc33 ld hl, wBreedMon1Nick cp $2 jr z, .asm_dc39 ld hl, PartyMonNicknames .asm_dc33 ld a, [CurPartyMon] call SkipNames .asm_dc39 ld bc, PKMN_NAME_LENGTH call CopyBytes pop hl ld a, [wd10b] cp $1 jr z, .asm_dca4 cp $3 jp z, .asm_dcac push hl srl a add $2 ld [MonType], a predef CopyPkmnToTempMon callab CalcLevel ld a, d ld [CurPartyLevel], a pop hl ld b, h ld c, l ld hl, $1f add hl, bc ld [hl], a ld hl, $24 add hl, bc ld d, h ld e, l ld hl, $a add hl, bc push bc ld b, $1 call CalcPkmnStats pop bc ld a, [wd10b] and a jr nz, .asm_dcac ld hl, $20 add hl, bc xor a ld [hl], a ld hl, $22 add hl, bc ld d, h ld e, l ld a, [CurPartySpecies] cp EGG jr z, .asm_dc9e rept 2 inc hl endr ld a, [hli] ld [de], a ld a, [hl] inc de ld [de], a jr .asm_dcac .asm_dc9e xor a ld [de], a inc de ld [de], a jr .asm_dcac .asm_dca4 ld a, [sBoxCount] dec a ld b, a call Functiondcb6 .asm_dcac call CloseSRAM and a ret ; dcb1 CloseSRAM_And_SetCFlag: ; dcb1 call CloseSRAM scf ret ; dcb6 Functiondcb6: ; dcb6 ld a, b ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH call AddNTimes ld b, h ld c, l ld hl, MON_PP add hl, bc push hl push bc ld de, TempMonPP ld bc, NUM_MOVES call CopyBytes pop bc ld hl, MON_MOVES add hl, bc push hl ld de, TempMonMoves ld bc, NUM_MOVES call CopyBytes pop hl pop de ld a, [MenuSelection2] push af ld a, [MonType] push af ld b, 0 .asm_dcec ld a, [hli] and a jr z, .asm_dd18 ld [TempMonMoves+0], a ld a, BOXMON ld [MonType], a ld a, b ld [MenuSelection2], a push bc push hl push de callba Functionf8ec pop de pop hl ld a, [wd265] ld b, a ld a, [de] and $c0 add b ld [de], a pop bc inc de inc b ld a, b cp NUM_MOVES jr c, .asm_dcec .asm_dd18 pop af ld [MonType], a pop af ld [MenuSelection2], a ret ; dd21 Functiondd21: ; dd21 ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld de, SFX_TRANSACTION call PlaySFX call WaitSFX call Functione698 ld a, b ld [DefaultFlypoint], a ld a, e ld [CurPartyLevel], a xor a ld [wd10b], a jp Functiondd64 ; dd42 Functiondd42: ; dd42 ld a, [wBreedMon2Species] ld [CurPartySpecies], a ld de, SFX_TRANSACTION call PlaySFX call WaitSFX call Functione6b3 ld a, b ld [DefaultFlypoint], a ld a, e ld [CurPartyLevel], a ld a, $1 ld [wd10b], a jp Functiondd64 ; dd64 Functiondd64: ; dd64 ld hl, PartyCount ld a, [hl] cp PARTY_LENGTH jr nz, .asm_dd6e scf ret .asm_dd6e inc a ld [hl], a ld c, a ld b, 0 add hl, bc ld a, [wd10b] and a ld a, [wBreedMon1Species] ld de, wBreedMon1Nick jr z, .asm_dd86 ld a, [wBreedMon2Species] ld de, wBreedMon2Nick .asm_dd86 ld [hli], a ld [CurSpecies], a ld a, $ff ld [hl], a ld hl, PartyMonNicknames ld a, [PartyCount] dec a call SkipNames push hl ld h, d ld l, e pop de call CopyBytes push hl ld hl, PartyMonOT ld a, [PartyCount] dec a call SkipNames ld d, h ld e, l pop hl call CopyBytes push hl call Functionde1a pop hl ld bc, $20 call CopyBytes call GetBaseData call Functionde1a ld b, d ld c, e ld hl, $1f add hl, bc ld a, [CurPartyLevel] ld [hl], a ld hl, $24 add hl, bc ld d, h ld e, l ld hl, $a add hl, bc push bc ld b, $1 call CalcPkmnStats ld hl, PartyMon1Moves ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ld a, $1 ld [Buffer1], a predef FillMoves ld a, [PartyCount] dec a ld [CurPartyMon], a callba HealPartyMon ld a, [CurPartyLevel] ld d, a callab CalcExpAtLevel pop bc ld hl, $8 add hl, bc ld a, [hMultiplicand] ld [hli], a ld a, [$ffb5] ld [hli], a ld a, [$ffb6] ld [hl], a and a ret ; de1a Functionde1a: ; de1a ld a, [PartyCount] dec a ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ret ; de2a Functionde2a: ; de2a ld de, wBreedMon1Nick call Functionde44 xor a ld [wd10b], a jp Functione039 ; de37 Functionde37: ; de37 ld de, wBreedMon2Nick call Functionde44 xor a ld [wd10b], a jp Functione039 ; de44 Functionde44: ; de44 ld a, [CurPartyMon] ld hl, PartyMonNicknames call SkipNames call CopyBytes ld a, [CurPartyMon] ld hl, PartyMonOT call SkipNames call CopyBytes ld a, [CurPartyMon] ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld bc, BOXMON_STRUCT_LENGTH jp CopyBytes SentPkmnIntoBox: ; de6e ; Sents the Pkmn into one of Bills Boxes ; the data comes mainly from 'EnemyMon:' ld a, BANK(sBoxCount) call GetSRAMBank ld de, sBoxCount ld a, [de] cp MONS_PER_BOX jp nc, Functiondf42 inc a ld [de], a ld a, [CurPartySpecies] ld [CurSpecies], a ld c, a .asm_de85 inc de ld a, [de] ld b, a ld a, c ld c, b ld [de], a inc a jr nz, .asm_de85 call GetBaseData call ShiftBoxMon ld hl, PlayerName ld de, sBoxMonOT ld bc, NAME_LENGTH call CopyBytes ld a, [CurPartySpecies] ld [wd265], a call GetPokemonName ld de, sBoxMonNicknames ld hl, StringBuffer1 ld bc, PKMN_NAME_LENGTH call CopyBytes ld hl, EnemyMon ld de, sBoxMon1 ld bc, 1 + 1 + NUM_MOVES ; species + item + moves call CopyBytes ld hl, PlayerID ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a inc de push de ld a, [CurPartyLevel] ld d, a callab CalcExpAtLevel pop de ld a, [hMultiplicand] ld [de], a inc de ld a, [$ffb5] ld [de], a inc de ld a, [$ffb6] ld [de], a inc de ; Set all 5 Experience Values to 0 xor a ld b, 2*5 .asm_dee5 ld [de], a inc de dec b jr nz, .asm_dee5 ld hl, EnemyMonDVs ld b, 2 + NUM_MOVES ; DVs and PP ; EnemyMonHappiness - EnemyMonDVs .asm_deef ld a, [hli] ld [de], a inc de dec b jr nz, .asm_deef ld a, BASE_HAPPINESS ld [de], a inc de xor a ld [de], a inc de ld [de], a inc de ld [de], a inc de ld a, [CurPartyLevel] ld [de], a ld a, [CurPartySpecies] dec a call SetSeenAndCaughtMon ld a, [CurPartySpecies] cp UNOWN jr nz, .asm_df20 ld hl, sBoxMon1DVs predef GetUnownLetter callab Functionfba18 .asm_df20 ld hl, sBoxMon1Moves ld de, TempMonMoves ld bc, NUM_MOVES call CopyBytes ld hl, sBoxMon1PP ld de, TempMonPP ld bc, NUM_MOVES call CopyBytes ld b, 0 call Functiondcb6 call CloseSRAM scf ret ; df42 Functiondf42: ; df42 call CloseSRAM and a ret ; df47 ShiftBoxMon: ; df47 ld hl, sBoxMonOT ld bc, NAME_LENGTH call .asm_df5f ld hl, sBoxMonNicknames ld bc, PKMN_NAME_LENGTH call .asm_df5f ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH .asm_df5f ld a, [sBoxCount] cp 2 ret c push hl call AddNTimes dec hl ld e, l ld d, h pop hl ld a, [sBoxCount] dec a call AddNTimes dec hl push hl ld a, [sBoxCount] dec a ld hl, 0 call AddNTimes ld c, l ld b, h pop hl .loop ld a, [hld] ld [de], a dec de dec bc ld a, c or b jr nz, .loop ret ; df8c GiveEgg:: ; df8c ld a, [CurPartySpecies] push af callab GetPreEvolution callab GetPreEvolution ld a, [CurPartySpecies] dec a push af call CheckCaughtMon pop af push bc call CheckSeenMon push bc call TryAddMonToParty pop bc ld a, c and a jr nz, .asm_dfc3 ld a, [CurPartySpecies] dec a ld c, a ld d, $0 ld hl, PokedexCaught ld b, $0 predef FlagPredef .asm_dfc3 pop bc ld a, c and a jr nz, .asm_dfd9 ld a, [CurPartySpecies] dec a ld c, a ld d, $0 ld hl, PokedexSeen ld b, $0 predef FlagPredef .asm_dfd9 pop af ld [CurPartySpecies], a ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1Species call AddNTimes ld a, [CurPartySpecies] ld [hl], a ld hl, PartyCount ld a, [hl] ld b, 0 ld c, a add hl, bc ld a, EGG ld [hl], a ld a, [PartyCount] dec a ld hl, PartyMonNicknames call SkipNames ld de, String_Egg call CopyName2 ld a, [PartyCount] dec a ld hl, PartyMon1Happiness ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [wc2cc] bit 1, a ld a, $1 jr nz, .asm_e022 ld a, [BaseEggSteps] .asm_e022 ld [hl], a ld a, [PartyCount] dec a ld hl, PartyMon1HP ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes xor a ld [hli], a ld [hl], a and a ret ; e035 String_Egg: ; e035 db "EGG@" ; e039 Functione039: ; e039 ld hl, PartyCount ld a, [wd10b] and a jr z, .asm_e04a ld a, BANK(sBoxCount) call GetSRAMBank ld hl, sBoxCount .asm_e04a ld a, [hl] dec a ld [hli], a ld a, [CurPartyMon] ld c, a ld b, 0 add hl, bc ld e, l ld d, h inc de .asm_e057 ld a, [de] inc de ld [hli], a inc a jr nz, .asm_e057 ld hl, PartyMonOT ld d, PARTY_LENGTH - 1 ld a, [wd10b] and a jr z, .asm_e06d ld hl, sBoxMonOT ld d, MONS_PER_BOX - 1 .asm_e06d ld a, [CurPartyMon] call SkipNames ld a, [CurPartyMon] cp d jr nz, .asm_e07e ld [hl], $ff jp .asm_60f0 .asm_e07e ld d, h ld e, l ld bc, PKMN_NAME_LENGTH add hl, bc ld bc, PartyMonNicknames ld a, [wd10b] and a jr z, .asm_e090 ld bc, sBoxMonNicknames .asm_e090 call CopyDataUntil ld hl, PartyMons ld bc, PARTYMON_STRUCT_LENGTH ld a, [wd10b] and a jr z, .asm_e0a5 ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH .asm_e0a5 ld a, [CurPartyMon] call AddNTimes ld d, h ld e, l ld a, [wd10b] and a jr z, .asm_e0bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc ld bc, sBoxMonOT jr .asm_e0c3 .asm_e0bc ld bc, PARTYMON_STRUCT_LENGTH add hl, bc ld bc, PartyMonOT .asm_e0c3 call CopyDataUntil ld hl, PartyMonNicknames ld a, [wd10b] and a jr z, .asm_e0d2 ld hl, sBoxMonNicknames .asm_e0d2 ld bc, PKMN_NAME_LENGTH ld a, [CurPartyMon] call AddNTimes ld d, h ld e, l ld bc, PKMN_NAME_LENGTH add hl, bc ld bc, PartyMonNicknamesEnd ld a, [wd10b] and a jr z, .asm_e0ed ld bc, sBoxMonNicknamesEnd .asm_e0ed call CopyDataUntil .asm_60f0 ld a, [wd10b] and a jp nz, CloseSRAM ld a, [wLinkMode] and a ret nz ld a, BANK(sPartyScratch1) call GetSRAMBank ld hl, PartyCount ld a, [CurPartyMon] cp [hl] jr z, .asm_e131 ld hl, sPartyScratch1 ld bc, (SCRATCHMON_STRUCT_LENGTH) call AddNTimes push hl add hl, bc pop de ld a, [CurPartyMon] ld b, a .asm_e11a push bc push hl ld bc, (SCRATCHMON_STRUCT_LENGTH) call CopyBytes pop hl push hl ld bc, (SCRATCHMON_STRUCT_LENGTH) add hl, bc pop de pop bc inc b ld a, [PartyCount] cp b jr nz, .asm_e11a .asm_e131 jp CloseSRAM ; e134 Functione134: ; e134 ld a, MON_LEVEL call GetPartyParamLocation ld a, [hl] ld [MON_LEVEL], a ; wow ld a, MON_SPECIES call GetPartyParamLocation ld a, [hl] ld [CurSpecies], a call GetBaseData ld a, MON_MAXHP call GetPartyParamLocation ld d, h ld e, l push de ld a, MON_EXP + 2 call GetPartyParamLocation ld b, $1 call CalcPkmnStats pop de ld a, MON_HP call GetPartyParamLocation ld a, [de] inc de ld [hli], a ld a, [de] ld [hl], a ret ; e167 CalcPkmnStats: ; e167 ; Calculates all 6 Stats of a Pkmn ; b = 0 or 1 ; 'c' counts from 1-6 and points with 'BaseStats' to the base value ; results in $ffb5 and $ffb6 are saved in [de] ld c, $0 .loop inc c call CalcPkmnStatC ld a, [hMultiplicand + 1] ld [de], a inc de ld a, [hMultiplicand + 2] ld [de], a inc de ld a, c cp STAT_SDEF jr nz, .loop ret ; e17b CalcPkmnStatC: ; e17b ; 'c' is 1-6 and points to the BaseStat ; 1: HP ; 2: Attack ; 3: Defense ; 4: Speed ; 5: SpAtk ; 6: SpDef push hl push de push bc ld a, b ld d, a push hl ld hl, BaseStats dec hl ; has to be decreased, because 'c' begins with 1 ld b, $0 add hl, bc ld a, [hl] ld e, a pop hl push hl ld a, c cp STAT_SDEF jr nz, .not_spdef rept 2 dec hl endr .not_spdef sla c ld a, d and a jr z, .SkipSqrt add hl, bc push de ld a, [hld] ld e, a ld d, [hl] callba GetSquareRoot pop de .SkipSqrt srl c pop hl push bc ld bc, (MON_DVS) - (MON_HP_EXP) + 1 add hl, bc pop bc ld a, c cp STAT_ATK jr z, .Attack cp STAT_DEF jr z, .Defense cp STAT_SPD jr z, .Speed cp STAT_SATK jr z, .Special cp STAT_SDEF jr z, .Special ; DV_HP = (DV_ATK & 1) << 3 + (DV_DEF & 1) << 2 + (DV_SPD & 1) << 1 + (DV_SPC & 1) push bc ld a, [hl] swap a and $1 rept 3 add a endr ld b, a ld a, [hli] and $1 rept 2 add a endr add b ld b, a ld a, [hl] swap a and $1 add a add b ld b, a ld a, [hl] and $1 add b pop bc jr .GotDV .Attack ld a, [hl] swap a and $f jr .GotDV .Defense ld a, [hl] and $f jr .GotDV .Speed inc hl ld a, [hl] swap a and $f jr .GotDV .Special inc hl ld a, [hl] and $f .GotDV ld d, 0 add e ld e, a jr nc, .no_overflow_1 inc d .no_overflow_1 sla e rl d srl b srl b ld a, b add e jr nc, .no_overflow_2 inc d .no_overflow_2 ld [hMultiplicand + 2], a ld a, d ld [hMultiplicand + 1], a xor a ld [hMultiplicand + 0], a ld a, [CurPartyLevel] ld [hMultiplier], a call Multiply ld a, [hProduct + 1] ld [hDividend + 0], a ld a, [hProduct + 2] ld [hDividend + 1], a ld a, [hProduct + 3] ld [hDividend + 2], a ld a, 100 ld [hDivisor], a ld a, 3 ld b, a call Divide ld a, c cp STAT_HP ld a, 5 jr nz, .not_hp ld a, [CurPartyLevel] ld b, a ld a, [hQuotient + 2] add b ld [hMultiplicand + 2], a jr nc, .no_overflow_3 ld a, [hQuotient + 1] inc a ld [hMultiplicand + 1], a .no_overflow_3 ld a, 10 .not_hp ld b, a ld a, [hQuotient + 2] add b ld [hMultiplicand + 2], a jr nc, .no_overflow_4 ld a, [hQuotient + 1] inc a ld [hMultiplicand + 1], a .no_overflow_4 ld a, [hQuotient + 1] cp (1000 / $100) + 1 jr nc, .max_stat cp 1000 / $100 jr c, .stat_value_okay ld a, [hQuotient + 2] cp 1000 % $100 jr c, .stat_value_okay .max_stat ld a, 999 / $100 ld [hMultiplicand + 1], a ld a, 999 % $100 ld [hMultiplicand + 2], a .stat_value_okay pop bc pop de pop hl ret ; e277 GivePoke:: ; e277 push de push bc xor a ; PARTYMON ld [MonType], a call TryAddMonToParty jr nc, .failed ld hl, PartyMonNicknames ld a, [PartyCount] dec a ld [CurPartyMon], a call SkipNames ld d, h ld e, l pop bc ld a, b ld b, $0 push bc push de push af ld a, [CurItem] and a jr z, .done ld a, [CurPartyMon] ld hl, PartyMon1Item ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [CurItem] ld [hl], a jr .done .failed ld a, [CurPartySpecies] ld [TempEnemyMonSpecies], a callab LoadEnemyMon call SentPkmnIntoBox jp nc, Functione3d4 ld a, $2 ld [MonType], a xor a ld [CurPartyMon], a ld de, wd050 pop bc ld a, b ld b, $1 push bc push de push af ld a, [CurItem] and a jr z, .done ld a, [CurItem] ld [sBoxMon1Item], a .done ld a, [CurPartySpecies] ld [wd265], a ld [TempEnemyMonSpecies], a call GetPokemonName ld hl, StringBuffer1 ld de, wd050 ld bc, PKMN_NAME_LENGTH call CopyBytes pop af and a jp z, .asm_e390 pop de pop bc pop hl push bc push hl ld a, [ScriptBank] call GetFarHalfword ld bc, PKMN_NAME_LENGTH ld a, [ScriptBank] call FarCopyBytes pop hl rept 2 inc hl endr ld a, [ScriptBank] call GetFarHalfword pop bc ld a, b and a push de push bc jr nz, .asm_e35e push hl ld a, [CurPartyMon] ld hl, PartyMonOT call SkipNames ld d, h ld e, l pop hl .otnameloop ld a, [ScriptBank] call GetFarByte ld [de], a inc hl inc de cp "@" jr nz, .otnameloop ld a, [ScriptBank] call GetFarByte ld b, a push bc ld a, [CurPartyMon] ld hl, PartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, 01001 / $100 ld [hli], a ld [hl], 01001 % $100 pop bc callba SetPartymonCaughtData jr .skip_nickname .asm_e35e ld a, BANK(sBoxMonOT) call GetSRAMBank ld de, sBoxMonOT .loop ld a, [ScriptBank] call GetFarByte ld [de], a inc hl inc de cp "@" jr nz, .loop ld a, [ScriptBank] call GetFarByte ld b, a ld hl, sBoxMon1ID call Random ld [hli], a call Random ld [hl], a call CloseSRAM callba SetBoxMonCaughtData jr .skip_nickname .asm_e390 pop de pop bc push bc push de ld a, b and a jr z, .asm_e3a0 callba Function4db83 jr .asm_e3a6 .asm_e3a0 callba Function4db49 .asm_e3a6 callba GiveANickname_YesNo pop de jr c, .skip_nickname call InitNickname .skip_nickname pop bc pop de ld a, b and a ret z ld hl, TextJump_WasSentToBillsPC call PrintText ld a, BANK(sBoxMonNicknames) call GetSRAMBank ld hl, wd050 ld de, sBoxMonNicknames ld bc, PKMN_NAME_LENGTH call CopyBytes call CloseSRAM ld b, $1 ret ; e3d4 Functione3d4: ; e3d4 pop bc pop de ld b, $2 ret ; e3d9 TextJump_WasSentToBillsPC: ; 0xe3d9 ; was sent to BILL's PC. text_jump Text_WasSentToBillsPC db "@" ; 0xe3de InitNickname: ; e3de push de call LoadMenuDataHeader_0x1d75 call DisableSpriteUpdates pop de push de ld b, $0 callba Function116c1 pop hl ld de, StringBuffer1 call InitName ld a, $4 ; XXX could this be in bank 4 in pokered? ld hl, Function2b4d rst FarCall ret ; e3fd Functione3fd: ; e3fd call Functione40a ret c call Functione41c call Functione443 jp Functione43f Functione40a: ; e40a (3:640a) ld a, [PartyCount] and a ret nz ld hl, UnknownText_0xe417 call MenuTextBoxBackup scf ret ; e417 (3:6417) UnknownText_0xe417: ; 0xe417 ; You gotta have #MON to call! text_jump UnknownText_0x1c1006 db "@" ; 0xe41c Functione41c: ; e41c (3:641c) xor a ld [hBGMapMode], a ; $ff00+$d4 call LoadMenuDataHeader_0x1d75 call ClearPCItemScreen ld hl, Options ld a, [hl] push af set 4, [hl] ld hl, UnknownText_0xe43a call PrintText pop af ld [Options], a call LoadFontsBattleExtra ret ; e43a (3:643a) UnknownText_0xe43a: ; 0xe43a ; What? text_jump UnknownText_0x1c1024 db "@" ; 0xe43f Functione43f: ; e43f (3:643f) call Function2b3c ret Functione443: ; e443 (3:6443) ld hl, MenuDataHeader_0xe46f call LoadMenuDataHeader ld a, $1 .loop ld [wMenuCursorBuffer], a call SetPalettes xor a ld [wcf76], a ld [hBGMapMode], a ; $ff00+$d4 call Function1e5d jr c, .cancel ld a, [wMenuCursorBuffer] push af ld a, [MenuSelection] ld hl, Jumptable_e4ba rst JumpTable pop bc ld a, b jr nc, .loop .cancel call WriteBackup ret ; e46f (3:646f) MenuDataHeader_0xe46f: ; 0xe46f db $40 ; flags db 00, 00 ; start coords db 17, 19 ; end coords dw MenuData2_0xe477 db 1 ; default option ; 0xe477 MenuData2_0xe477: ; 0xe477 db $80 ; flags db 0 ; items dw MenuItems_e4c4 dw Function1f79 dw Strings_e47f ; 0xe47f Strings_e47f: ; e47f db "WITHDRAW <PK><MN>@" db "DEPOSIT <PK><MN>@" db "CHANGE BOX@" db "MOVE <PK><MN> W/O MAIL@" db "SEE YA!@" Jumptable_e4ba: ; e4ba (3:64ba) dw Functione559 dw Functione4fe dw Functione583 dw Functione4cd dw Functione4cb ; e4c4 MenuItems_e4c4: ; e4c4 db 5 db 0 ; WITHDRAW db 1; DEPOSIT db 2 ; CHANGE BOX db 3 ; MOVE PKMN db 4 ; SEE YA! db -1 ; e4cb Functione4cb: ; e4cb scf ret ; e4cd Functione4cd: ; e4cd call LoadMenuDataHeader_0x1d75 callba Function44781 jr nc, .asm_e4e0 ld hl, UnknownText_0xe4f9 call PrintText jr .asm_e4f4 .asm_e4e0 callba Function14b34 jr c, .asm_e4f4 callba Functione2759 call Function222a call ClearPCItemScreen .asm_e4f4 call WriteBackup and a ret ; e4f9 UnknownText_0xe4f9: ; 0xe4f9 ; There is a #MON holding MAIL. Please remove the MAIL. text_jump UnknownText_0x1c102b db "@" ; 0xe4fe Functione4fe: ; e4fe (3:64fe) call LoadMenuDataHeader_0x1d75 callba Functione2391 call Function222a call ClearPCItemScreen call WriteBackup and a ret ; e512 (3:6512) Functione512: ; unused ld a, [PartyCount] and a jr z, .asm_e51e cp 2 jr c, .asm_e526 and a ret .asm_e51e ld hl, UnknownText_0xe52e call MenuTextBoxBackup scf ret .asm_e526 ld hl, UnknownText_0xe533 call MenuTextBoxBackup scf ret ; e52e UnknownText_0xe52e: ; 0xe52e ; You don't have a single #MON! text_jump UnknownText_0x1c1062 db "@" ; 0xe533 UnknownText_0xe533: ; 0xe533 ; You can't deposit your last #MON! text_jump UnknownText_0x1c1080 db "@" ; 0xe538 CheckCurPartyMonFainted: ; e538 ld hl, PartyMon1HP ld de, PARTYMON_STRUCT_LENGTH ld b, $0 .loop ld a, [CurPartyMon] cp b jr z, .skip ld a, [hli] or [hl] jr nz, .notfainted dec hl .skip inc b ld a, [PartyCount] cp b jr z, .done add hl, de jr .loop .done scf ret .notfainted and a ret ; e559 Functione559: ; e559 (3:6559) call LoadMenuDataHeader_0x1d75 callba Functione2583 call Function222a call ClearPCItemScreen call WriteBackup and a ret ; e56d (3:656d) Functione56d: ; unused ld a, [PartyCount] cp PARTY_LENGTH jr nc, .asm_e576 and a ret .asm_e576 ld hl, UnknownText_0xe57e call MenuTextBoxBackup scf ret ; e57e UnknownText_0xe57e: ; 0xe57e ; You can't take any more #MON. text_jump UnknownText_0x1c10a2 db "@" ; 0xe583 Functione583: ; e583 (3:6583) callba Functione35aa and a ret ClearPCItemScreen: ; e58b call DisableSpriteUpdates xor a ld [hBGMapMode], a call WhiteBGMap call ClearSprites hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill hlcoord 0,0 lb bc, 10, 18 call TextBox hlcoord 0,12 lb bc, 4, 18 call TextBox call Function3200 call SetPalettes ; load regular palettes? ret ; 0xe5bb Functione5bb: ; e5bb ld a, [CurPartyMon] ld hl, sBoxMon1Species ld bc, $20 call AddNTimes ld de, TempMonSpecies ld bc, $20 ld a, BANK(sBoxMon1Species) call GetSRAMBank call CopyBytes call CloseSRAM ret ; e5d9 Functione5d9: ; unreferenced ld a, [wCurBox] cp b jr z, .asm_e5f1 ld a, b ld hl, Unknown_e66e ld bc, 3 call AddNTimes ld a, [hli] push af ld a, [hli] ld h, [hl] ld l, a pop af jr .asm_e5f6 .asm_e5f1 ld a, BANK(sBoxCount) ld hl, sBoxCount .asm_e5f6 call GetSRAMBank ld a, [hl] ld bc, $16 add hl, bc ld b, a ld c, $0 ld de, wc608 ld a, b and a jr z, .asm_e66a .asm_e608 push hl push bc ld a, c ld bc, 0 add hl, bc ld bc, $20 call AddNTimes ld a, [hl] ld [de], a inc de ld [CurSpecies], a call GetBaseData pop bc pop hl push hl push bc ld a, c ld bc, $35c add hl, bc call SkipNames call CopyBytes pop bc pop hl push hl push bc ld a, c ld bc, $1f add hl, bc ld bc, $20 call AddNTimes ld a, [hl] ld [de], a inc de pop bc pop hl push hl push bc ld a, c ld bc, $15 add hl, bc ld bc, $20 call AddNTimes ld a, [hli] and $f0 ld b, a ld a, [hl] and $f0 swap a or b ld b, a ld a, [BaseGender] cp b ld a, $1 jr c, .asm_e662 xor a .asm_e662 ld [de], a inc de pop bc pop hl inc c dec b jr nz, .asm_e608 .asm_e66a call CloseSRAM ret ; e66e Unknown_e66e: ; e66e dba sBox1 dba sBox2 dba sBox3 dba sBox4 dba sBox5 dba sBox6 dba sBox7 dba sBox8 dba sBox9 dba sBox10 dba sBox11 dba sBox12 dba sBox13 dba sBox14 ; e698 Functione698: ; e698 ld hl, wBreedMon1Stats ld de, TempMon ld bc, $20 call CopyBytes callab CalcLevel ld a, [wBreedMon1Level] ld b, a ld a, d ld e, a sub b ld d, a ret ; e6b3 Functione6b3: ; e6b3 ld hl, wBreedMon2Stats ld de, TempMon ld bc, $20 call CopyBytes callab CalcLevel ld a, [wBreedMon2Level] ld b, a ld a, d ld e, a sub b ld d, a ret ; e6ce BugContest_SetCaughtContestMon: ; e6ce ld a, [wContestMon] and a jr z, .firstcatch ld [wd265], a callba DisplayAlreadyCaughtText callba DisplayCaughtContestMonStats lb bc, 14, 7 call PlaceYesNoBox ret c .firstcatch call .generatestats ld a, [TempEnemyMonSpecies] ld [wd265], a call GetPokemonName ld hl, .caughttext call PrintText ret ; e6fd .generatestats: ; e6fd ld a, [TempEnemyMonSpecies] ld [CurSpecies], a ld [CurPartySpecies], a call GetBaseData xor a ld bc, PARTYMON_STRUCT_LENGTH ld hl, wContestMon call ByteFill xor a ld [MonType], a ld hl, wContestMon jp GeneratePartyMonStats ; e71d .caughttext: ; 0xe71d ; Caught @ ! text_jump UnknownText_0x1c10c0 db "@" ; 0xe722 INCLUDE "items/item_effects.asm" GetPokeBallWobble: ; f971 (3:7971) ; Returns whether a Poke Ball will wobble in the catch animation. ; Whether a Pokemon is caught is determined beforehand. push de ld a, [rSVBK] ld d, a push de ld a, 1 ; BANK(Buffer2) ld [rSVBK], a ld a, [Buffer2] inc a ld [Buffer2], a ; Wobble up to 3 times. cp 3 + 1 jr z, .finished ld a, [wc64e] and a ld c, 0 ; next jr nz, .done ld hl, WobbleChances ld a, [Buffer1] ld b, a .loop ld a, [hli] cp b jr nc, .checkwobble inc hl jr .loop .checkwobble ld b, [hl] call Random cp b ld c, 0 ; next jr c, .done ld c, 2 ; escaped jr .done .finished ld a, [wc64e] and a ld c, 1 ; caught jr nz, .done ld c, 2 ; escaped .done pop de ld e, a ld a, d ld [rSVBK], a ld a, e pop de ret ; f9ba (3:79ba) WobbleChances: ; f9ba ; catch rate, chance of wobbling / 255 db 1, 63 db 2, 75 db 3, 84 db 4, 90 db 5, 95 db 7, 103 db 10, 113 db 15, 126 db 20, 134 db 30, 149 db 40, 160 db 50, 169 db 60, 177 db 80, 191 db 100, 201 db 120, 211 db 140, 220 db 160, 227 db 180, 234 db 200, 240 db 220, 246 db 240, 251 db 254, 253 db 255, 255 ; f9ea KnowsMove: ; f9ea ld a, MON_MOVES call GetPartyParamLocation ld a, [wd262] ld b, a ld c, NUM_MOVES .asm_f9f5 ld a, [hli] cp b jr z, .asm_f9fe dec c jr nz, .asm_f9f5 and a ret .asm_f9fe ld hl, UnknownText_0xfa06 call PrintText scf ret ; fa06 UnknownText_0xfa06: ; 0xfa06 ; knows @ . text_jump UnknownText_0x1c5ea8 db "@" ; 0xfa0b SECTION "bank4", ROMX, BANK[$4] INCLUDE "engine/pack.asm" INCLUDE "engine/time.asm" CanLearnTMHMMove: ; 11639 ld a, [CurPartySpecies] ld [CurSpecies], a call GetBaseData ld hl, BaseTMHM push hl ld a, [wd262] ld b, a ld c, 0 ld hl, TMHMMoves .loop ld a, [hli] and a jr z, .end cp b jr z, .asm_11659 inc c jr .loop .asm_11659 pop hl ld b, CHECK_FLAG push de ld d, 0 predef FlagPredef pop de ret .end pop hl ld c, 0 ret ; 1166a GetTMHMMove: ; 1166a ld a, [wd265] dec a ld hl, TMHMMoves ld b, 0 ld c, a add hl, bc ld a, [hl] ld [wd265], a ret ; 1167a TMHMMoves: ; 1167a db DYNAMICPUNCH db HEADBUTT db CURSE db ROLLOUT db ROAR db TOXIC db ZAP_CANNON db ROCK_SMASH db PSYCH_UP db HIDDEN_POWER db SUNNY_DAY db SWEET_SCENT db SNORE db BLIZZARD db HYPER_BEAM db ICY_WIND db PROTECT db RAIN_DANCE db GIGA_DRAIN db ENDURE db FRUSTRATION db SOLARBEAM db IRON_TAIL db DRAGONBREATH db THUNDER db EARTHQUAKE db RETURN db DIG db PSYCHIC_M db SHADOW_BALL db MUD_SLAP db DOUBLE_TEAM db ICE_PUNCH db SWAGGER db SLEEP_TALK db SLUDGE_BOMB db SANDSTORM db FIRE_BLAST db SWIFT db DEFENSE_CURL db THUNDERPUNCH db DREAM_EATER db DETECT db REST db ATTRACT db THIEF db STEEL_WING db FIRE_PUNCH db FURY_CUTTER db NIGHTMARE db CUT db FLY db SURF db STRENGTH db FLASH db WHIRLPOOL db WATERFALL ; Move tutor db FLAMETHROWER db THUNDERBOLT db ICE_BEAM db 0 ; end ; 116b7 _NamingScreen: ; 0x116b7 call DisableSpriteUpdates call Function116c1 call Function2b74 ret ; 0x116c1 Function116c1: ; 116c1 ld hl, wc6d0 ld [hl], e inc hl ld [hl], d ld hl, wc6d4 ld [hl], b ld hl, Options ld a, [hl] push af set 4, [hl] ld a, [hMapAnims] push af xor a ld [hMapAnims], a ld a, [hInMenu] push af ld a, $1 ld [hInMenu], a call Function116f8 call DelayFrame .asm_116e5 call Function11915 jr nc, .asm_116e5 pop af ld [hInMenu], a pop af ld [hMapAnims], a pop af ld [Options], a call ClearJoypad ret ; 116f8 Function116f8: ; 116f8 call WhiteBGMap ld b, $8 call GetSGBLayout call DisableLCD call Function11c51 call Function118a8 ld a, $e3 ld [rLCDC], a call Function1171d call WaitBGMap call WaitTop call SetPalettes call Function11be0 ret ; 1171d Function1171d: ; 1171d ld a, [wc6d4] and 7 ld e, a ld d, 0 ld hl, Jumptable_1172e rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 1172e Jumptable_1172e: ; 1172e (4:572e) dw Function1173e dw Function1178d dw Function117ae dw Function117d1 dw Function117f5 dw Function1182c dw Function1173e dw Function1173e Function1173e: ; 1173e (4:573e) ld a, [CurPartySpecies] ld [wd265], a ld hl, Function8e83f ld a, BANK(Function8e83f) ld e, $1 rst FarCall ; ; indirect jump to Function8e83f (8e83f (23:683f)) ld a, [CurPartySpecies] ld [wd265], a call GetPokemonName hlcoord 5, 2 call PlaceString ld l, c ld h, b ld de, Strings_11780 call PlaceString inc de hlcoord 5, 4 call PlaceString callba GetGender jr c, .asm_1177c ld a, $ef jr nz, .asm_11778 ld a, $f5 .asm_11778 hlcoord 1, 2 ld [hl], a .asm_1177c call Function1187b ret ; 11780 (4:5780) Strings_11780: ; 11780 db "'S@" db "NICKNAME?@" ; 1178d Function1178d: ; 1178d (4:578d) callba GetPlayerIcon call Function11847 hlcoord 5, 2 ld de, String_117a3 call PlaceString call Function11882 ret ; 117a3 (4:57a3) String_117a3: ; 117a3 db "YOUR NAME?@" ; 117ae Function117ae: ; 117ae (4:57ae) ld de, SilverSpriteGFX ld b, BANK(SilverSpriteGFX) call Function11847 hlcoord 5, 2 ld de, String_117c3 call PlaceString call Function11882 ret ; 117c3 (4:57c3) String_117c3: ; 117c3 db "RIVAL'S NAME?@" ; 117d1 Function117d1: ; 117d1 (4:57d1) ld de, MomSpriteGFX ld b, BANK(MomSpriteGFX) call Function11847 hlcoord 5, 2 ld de, String_117e6 call PlaceString call Function11882 ret ; 117e6 (4:57e6) String_117e6: ; 117e6 db "MOTHER'S NAME?@" ; 117f5 Function117f5: ; 117f5 (4:57f5) ld de, PokeBallSpriteGFX ld hl, VTiles0 tile $00 lb bc, BANK(PokeBallSpriteGFX), $4 call Request2bpp xor a ld hl, wc300 ld [hli], a ld [hl], a ld de, $2420 ld a, $a call Function3b2a ld hl, $1 add hl, bc ld [hl], $0 hlcoord 5, 2 ld de, String_11822 call PlaceString call Function11889 ret ; 11822 (4:5822) String_11822: ; 11822 db "BOX NAME?@" ; 1182c Function1182c: ; 1182c (4:582c) hlcoord 3, 2 ld de, String_11839 call PlaceString call Function11882 ret ; 11839 (4:5839) String_11839: ; 11839 db "おともだち の なまえは?@" ; 11847 Function11847: ; 11847 (4:5847) push de ld hl, VTiles0 tile $00 ld c, $4 push bc call Request2bpp pop bc ld hl, $c0 add hl, de ld e, l ld d, h ld hl, VTiles0 tile $04 call Request2bpp xor a ld hl, wc300 ld [hli], a ld [hl], a pop de ld b, $a ld a, d cp $7a jr nz, .asm_11873 ld a, e cp $40 jr nz, .asm_11873 ld b, $1e .asm_11873 ld a, b ld de, $2420 call Function3b2a ret Function1187b: ; 1187b (4:587b) ld a, $a hlcoord 5, 6 jr Function11890 Function11882: ; 11882 (4:5882) ld a, $7 hlcoord 5, 6 jr Function11890 Function11889: ; 11889 (4:5889) ld a, $8 hlcoord 5, 4 jr Function11890 Function11890: ; 11890 (4:5890) ld [wc6d3], a ld a, l ld [wc6d8], a ld a, h ld [wc6d9], a ret Function1189c: ; 1189c push bc push af ld a, [wc6d4] sub $3 ld b, a pop af dec b pop bc ret ; 118a8 Function118a8: ; 118a8 call WaitTop hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, $60 call ByteFill hlcoord 1, 1 lb bc, 6, 18 call Function1189c jr nz, .asm_118c4 lb bc, 4, 18 .asm_118c4 call ClearBox ld de, NameInputUpper Function118ca: ; 118ca call Function1189c jr nz, .asm_118d5 ld hl, BoxNameInputLower - NameInputLower add hl, de ld d, h ld e, l .asm_118d5 push de hlcoord 1, 8 lb bc, 7, 18 call Function1189c jr nz, .asm_118e7 hlcoord 1, 6 lb bc, 9, 18 .asm_118e7 call ClearBox hlcoord 1, 16 lb bc, 1, 18 call ClearBox pop de hlcoord 2, 8 ld b, $5 call Function1189c jr nz, .asm_11903 hlcoord 2, 6 ld b, $6 .asm_11903 ld c, $11 .asm_11905 ld a, [de] ld [hli], a inc de dec c jr nz, .asm_11905 push de ld de, $17 add hl, de pop de dec b jr nz, .asm_11903 ret ; 11915 Function11915: ; 11915 call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .asm_11930 call Function11968 callba Function8cf62 call Function11940 call DelayFrame and a ret .asm_11930 callab Function8cf53 call ClearSprites xor a ld [hSCX], a ld [hSCY], a scf ret ; 11940 Function11940: ; 11940 xor a ld [hBGMapMode], a hlcoord 1, 5 call Function1189c jr nz, .asm_1194e hlcoord 1, 3 .asm_1194e lb bc, 1, 18 call ClearBox ld hl, wc6d0 ld e, [hl] inc hl ld d, [hl] ld hl, wc6d8 ld a, [hli] ld h, [hl] ld l, a call PlaceString ld a, $1 ld [hBGMapMode], a ret ; 11968 Function11968: ; 11968 ld a, [wJumptableIndex] ld e, a ld d, $0 ld hl, Jumptable_11977 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 11977 Jumptable_11977: ; 11977 (4:5977) dw Function1197b dw Function119a1 Function1197b: ; 1197b (4:597b) lb de, $50, $18 call Function1189c jr nz, .asm_11985 ld d, $40 .asm_11985 ld a, $2 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 Function119a1: ; 119a1 (4:59a1) 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 Function11a0b cp $1 jr z, .select cp $2 jr z, .b cp $3 jr z, .asm_119eb call Function11c11 call Function11b14 ret nc .start ld hl, wc6d5 ld c, [hl] inc hl ld b, [hl] ld hl, $c add hl, bc ld [hl], $8 ld hl, $d add hl, bc ld [hl], $4 call Function1189c ret nz inc [hl] ret .b call Function11bbc ret .asm_119eb call Function11bf7 ld hl, wJumptableIndex set 7, [hl] ret .select ld hl, wcf64 ld a, [hl] xor 1 ld [hl], a jr z, .asm_11a04 ld de, NameInputLower call Function118ca ret .asm_11a04 ld de, NameInputUpper call Function118ca ret Function11a0b: ; 11a0b (4:5a0b) ld hl, wc6d5 ld c, [hl] inc hl ld b, [hl] Function11a11: ; 11a11 (4:5a11) ld hl, $d add hl, bc ld a, [hl] push bc ld b, $4 call Function1189c jr nz, .asm_11a1f inc b .asm_11a1f cp b pop bc jr nz, .asm_11a39 ld hl, $c add hl, bc ld a, [hl] cp $3 jr c, .asm_11a33 cp $6 jr c, .asm_11a36 ld a, $3 ret .asm_11a33 ld a, $1 ret .asm_11a36 ld a, $2 ret .asm_11a39 xor a ret Function11a3b: ; 11a3b (4:5a3b) call Function11a8b ld hl, $d add hl, bc ld a, [hl] ld e, a swap e ld hl, $7 add hl, bc ld [hl], e ld d, $4 call Function1189c jr nz, .asm_11a53 inc d .asm_11a53 cp d ld de, Unknown_11a79 ld a, $0 jr nz, .asm_11a60 ld de, Unknown_11a82 ld a, $1 .asm_11a60 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 ; 11a79 (4:5a79) Unknown_11a79: ; 11a79 db $00, $10, $20, $30, $40, $50, $60, $70, $80 Unknown_11a82: ; 11a82 db $00, $00, $00, $30, $30, $30, $60, $60, $60 ; 11a8b Function11a8b: ; 11a8b (4:5a8b) 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 Function11a11 and a jr nz, .asm_11ab7 ld hl, $c add hl, bc ld a, [hl] cp $8 jr nc, .asm_11ab4 inc [hl] ret .asm_11ab4 ld [hl], $0 ret .asm_11ab7 cp $3 jr nz, .asm_11abc xor a .asm_11abc ld e, a add a add e ld hl, $c add hl, bc ld [hl], a ret .left call Function11a11 and a jr nz, .asm_11ad8 ld hl, $c add hl, bc ld a, [hl] and a jr z, .asm_11ad5 dec [hl] ret .asm_11ad5 ld [hl], $8 ret .asm_11ad8 cp $1 jr nz, .asm_11ade ld a, $4 .asm_11ade 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] call Function1189c jr nz, .asm_11af9 cp $5 jr nc, .asm_11aff inc [hl] ret .asm_11af9 cp $4 jr nc, .asm_11aff inc [hl] ret .asm_11aff ld [hl], $0 ret .up ld hl, $d add hl, bc ld a, [hl] and a jr z, .asm_11b0c dec [hl] ret .asm_11b0c ld [hl], $4 call Function1189c ret nz inc [hl] ret Function11b14: ; 11b14 (4:5b14) ld a, [wc6d7] Function11b17: ; 11b17 (4:5b17) ld a, [wc6d3] ld c, a ld a, [wc6d2] cp c ret nc ld a, [wc6d7] Function11b23: ; 11b23 call Function11bd0 ld [hl], a Function11b27: ; 11b27 ld hl, wc6d2 inc [hl] call Function11bd0 ld a, [hl] cp $50 jr z, .asm_11b37 ld [hl], $f2 and a ret .asm_11b37 scf ret ; 11b39 (4:5b39) Function11b39: ; 11b39 ld a, [wc6d2] and a ret z push hl ld hl, wc6d2 dec [hl] call Function11bd0 ld c, [hl] pop hl .asm_11b48 ld a, [hli] cp $ff jr z, Function11b27 cp c jr z, .asm_11b53 inc hl jr .asm_11b48 .asm_11b53 ld a, [hl] jr Function11b23 ; 11b56 Dakutens: ; Dummied out db "かが", "きぎ", "くぐ", "けげ", "こご" db "さざ", "しじ", "すず", "せぜ", "そぞ" db "ただ", "ちぢ", "つづ", "てで", "とど" db "はば", "ひび", "ふぶ", "へべ", "ほぼ" db "カガ", "キギ", "クグ", "ケゲ", "コゴ" db "サザ", "シジ", "スズ", "セゼ", "ソゾ" db "タダ", "チヂ", "ツヅ", "テデ", "トド" db "ハバ", "ヒビ", "フブ", "へべ", "ホボ" db $ff Handakutens: ; Dummied out db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ" db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ" db $ff ; 11bbc Function11bbc: ; 11bbc (4:5bbc) ld hl, wc6d2 ld a, [hl] and a ret z dec [hl] call Function11bd0 ld [hl], $f2 inc hl ld a, [hl] cp $f2 ret nz ld [hl], $eb ret Function11bd0: ; 11bd0 (4:5bd0) push af ld hl, wc6d0 ld a, [hli] ld h, [hl] ld l, a ld a, [wc6d2] ld e, a ld d, 0 add hl, de pop af ret ; 11be0 Function11be0: ; 11be0 ; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0 ld hl, wc6d0 ld a, [hli] ld h, [hl] ld l, a ld [hl], "·" inc hl ld a, [wc6d3] dec a ld c, a ld a, "→" .loop ld [hli], a dec c jr nz, .loop ld [hl], "@" ret ; 11bf7 Function11bf7: ; 11bf7 (4:5bf7) ld hl, wc6d0 ld a, [hli] ld h, [hl] ld l, a ld a, [wc6d3] ld c, a .asm_11c01 ld a, [hl] cp $eb jr z, .asm_11c0a cp $f2 jr nz, .asm_11c0c .asm_11c0a ld [hl], $50 .asm_11c0c inc hl dec c jr nz, .asm_11c01 ret Function11c11: ; 11c11 (4:5c11) ld hl, wc6d5 ld c, [hl] inc hl ld b, [hl] ld hl, $6 add hl, bc ld a, [hl] ld hl, $4 add hl, bc add [hl] sub $8 srl a srl a srl a ld e, a ld hl, $7 add hl, bc ld a, [hl] ld hl, $5 add hl, bc add [hl] sub $10 srl a srl a srl a ld d, a hlcoord 0, 0 ld bc, $14 .asm_11c43 ld a, d and a jr z, .asm_11c4b add hl, bc dec d jr .asm_11c43 .asm_11c4b add hl, de ld a, [hl] ld [wc6d7], a ret Function11c51: ; 11c51 call ClearSprites callab Function8cf53 call LoadStandardFont call LoadFontsExtra ld de, GFX_11e65 ld hl, VTiles1 tile $6b lb bc, BANK(GFX_11e65), 1 call Get1bpp ld de, GFX_11e6d ld hl, VTiles1 tile $72 lb bc, BANK(GFX_11e6d), 1 call Get1bpp ld de, VTiles2 tile $60 ld hl, GFX_11cb7 ld bc, $10 ld a, BANK(GFX_11cb7) call FarCopyBytes ld de, VTiles0 tile $7e ld hl, GFX_11cc7 ld bc, $20 ld a, BANK(GFX_11cc7) call FarCopyBytes ld a, $5 ld hl, wc312 ld [hli], a ld [hl], $7e xor a ld [hSCY], a ld [wc3bf], a ld [hSCX], a ld [wc3c0], a ld [wJumptableIndex], a ld [wcf64], a ld [hBGMapMode], a ld [wc6d2], a ld a, $7 ld [hWX], a ret ; 11cb7 GFX_11cb7: ; 11cb7 INCBIN "gfx/unknown/011cb7.2bpp" ; 11cc7 GFX_11cc7: ; 11cc7 INCBIN "gfx/unknown/011cc7.2bpp" ; 11ce7 NameInputLower: db "a b c d e f g h i" db "j k l m n o p q r" db "s t u v w x y z " db "× ( ) : ; [ ] <PK> <MN>" db "UPPER DEL END " BoxNameInputLower: db "a b c d e f g h i" db "j k l m n o p q r" db "s t u v w x y z " db "é 'd 'l 'm 'r 's 't 'v 0" db "1 2 3 4 5 6 7 8 9" db "UPPER DEL END " NameInputUpper: ; Unreferenced? db "A B C D E F G H I" db "J K L M N O P Q R" db "S T U V W X Y Z " db "- ? ! / . , " db "lower DEL END " BoxNameInputUpper: db "A B C D E F G H I" db "J K L M N O P Q R" db "S T U V W X Y Z " db "× ( ) : ; [ ] <PK> <MN>" db "- ? ! ♂ ♀ / . , &" db "lower DEL END " ; 11e5d GFX_11e5d: ; ???? INCBIN "gfx/unknown/011e5d.2bpp" ; 11e6d GFX_11e65: INCBIN "gfx/unknown/011e65.2bpp" ; 11e6d GFX_11e6d: ; 11e6d INCBIN "gfx/unknown/011e6d.2bpp" ; 11e75 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 WhiteBGMap 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 ; $ff00+$40 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 ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 scf ret Function11feb: ; 11feb (4:5feb) xor a ld [hBGMapMode], a ; $ff00+$d4 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 ; $ff00+$d4 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 "ゅ ょ ", $70, " ", $71, " é ♂ ♀ ¥ … ×" 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 $72, " ", $73, " [ ] ' : ; " db "UPPER DEL END " ; 122c1 UnknownScript_0x122c1: ; 0x122c1 checkflag ENGINE_BUG_CONTEST_TIMER iffalse .script_122cd setflag ENGINE_DAILY_BUG_CONTEST special ContestReturnMons .script_122cd end ; 0x122ce FindItemInBallScript:: ; 0x122ce callasm Function122f8 iffalse NoRoomForItemInBallScript disappear LAST_TALKED loadfont writetext UnknownText_0x122ee playsound SFX_ITEM pause 60 itemnotify loadmovesprites end ; 0x122e3 NoRoomForItemInBallScript: ; 0x122e3 loadfont writetext UnknownText_0x122ee closetext writetext UnknownText_0x122f3 closetext loadmovesprites end ; 0x122ee UnknownText_0x122ee: ; 0x122ee ; found @ ! text_jump UnknownText_0x1c0a1c db "@" ; 0x122f3 UnknownText_0x122f3: ; 0x122f3 ; But can't carry any more items. text_jump UnknownText_0x1c0a2c db "@" ; 0x122f8 Function122f8: ; 122f8 xor a ld [ScriptVar], a ld a, [EngineBuffer1] ld [wd265], a call GetItemName ld hl, StringBuffer3 call CopyName2 ld a, [EngineBuffer1] ld [CurItem], a ld a, [CurFruit] ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem ret nc ld a, $1 ld [ScriptVar], a ret ; 12324 HealMachineAnim: ; 12324 ; If you have no Pokemon, don't change the buffer. This can lead to some glitchy effects if you have no Pokemon. ld a, [PartyCount] and a ret z ; The location of the healing machine relative to the player is stored in ScriptVar. ; 0: Up and left (Pokemon Center) ; 1: Left (Elm's Lab) ; 2: Up (Hall of Fame) ld a, [ScriptVar] ld [Buffer1], a ld a, [rOBP1] ld [Buffer2], a call Function1233e ld a, [Buffer2] call Functiond24 ret ; 1233e Function1233e: ; 1233e xor a ld [wd1ec], a .asm_12342 ld a, [Buffer1] ld e, a ld d, 0 ld hl, Unknown_12365 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ld a, [wd1ec] ld e, a inc a ld [wd1ec], a add hl, de ld a, [hl] cp 5 jr z, .asm_12364 ld hl, Jumptable_12377 rst JumpTable jr .asm_12342 .asm_12364 ret ; 12365 Unknown_12365: ; 12365 dw Unknown_1236b dw Unknown_1236f dw Unknown_12373 ; 1236b Unknown_1236b: ; 1236b db 0, 1, 3, 5 Unknown_1236f: ; 1236f db 0, 1, 3, 5 Unknown_12373: ; 12373 db 0, 2, 4, 5 ; 12377 Jumptable_12377: ; 12377 dw Function12383 dw Function12393 dw Function123a1 dw Function123bf dw Function123c8 dw Function123db ; 12383 Function12383: ; 12383 call Function12434 ld de, GFX_123fc ld hl, VTiles0 tile $7c lb bc, BANK(GFX_123fc), $2 call Request2bpp ret ; 12393 Function12393: ; 12393 ld hl, Sprites + $80 ld de, Unknown_123dc call Function124a3 call Function124a3 jr Function123a7 Function123a1: ; 123a1 ld hl, Sprites + $80 ld de, Unknown_1241c Function123a7: ; 123a7 ld a, [PartyCount] ld b, a .asm_123ab call Function124a3 push de ld de, SFX_SECOND_PART_OF_ITEMFINDER call PlaySFX pop de ld c, 30 call DelayFrames dec b jr nz, .asm_123ab ret ; 123bf Function123bf: ; 123bf ld de, MUSIC_HEAL call PlayMusic jp Function12459 ; 123c8 Function123c8: ; 123c8 ld de, SFX_GAME_FREAK_LOGO_GS call PlaySFX call Function12459 call WaitSFX ld de, SFX_BOOT_PC call PlaySFX ret ; 123db Function123db: ; 123db ret ; 123dc Unknown_123dc: ; 123dc db $20, $22, $7c, $16 db $20, $26, $7c, $16 db $26, $20, $7d, $16 db $26, $28, $7d, $36 db $2b, $20, $7d, $16 db $2b, $28, $7d, $36 db $30, $20, $7d, $16 db $30, $28, $7d, $36 ; 123fc GFX_123fc: ; 123fc INCBIN "gfx/unknown/0123fc.2bpp" ; 1241c Unknown_1241c: ; 1241c db $3c, $51, $7d, $16 db $3c, $56, $7d, $16 db $3b, $4d, $7d, $16 db $3b, $5a, $7d, $16 db $39, $49, $7d, $16 db $39, $5d, $7d, $16 ; 12434 Function12434: ; 12434 call Function3218 jr nz, .asm_1243e ld a, $e0 ld [rOBP1], a ret .asm_1243e ld hl, Palette_12451 ld de, OBPals + 8 * 6 ld bc, 8 ld a, $5 call FarCopyWRAM ld a, $1 ld [hCGBPalUpdate], a ret ; 12451 Palette_12451: ; 12451 RGB 31, 31, 31 RGB 31, 19, 10 RGB 31, 07, 01 RGB 00, 00, 00 ; 12459 Function12459: ; 12459 ld c, $8 .asm_1245b push bc call Function12469 ld c, $a call DelayFrames pop bc dec c jr nz, .asm_1245b ret ; 12469 Function12469: ; 12469 call Function3218 jr nz, .asm_12475 ld a, [rOBP1] xor $28 ld [rOBP1], a ret .asm_12475 ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld hl, OBPals + 8 * 6 ld a, [hli] ld e, a ld a, [hli] ld d, a push de ld c, $3 .asm_12486 ld a, [hli] ld e, a ld a, [hld] ld d, a dec hl ld a, d ld [hld], a ld a, e ld [hli], a rept 3 inc hl endr dec c jr nz, .asm_12486 pop de dec hl ld a, d ld [hld], a ld a, e ld [hl], a pop af ld [rSVBK], a ld a, $1 ld [hCGBPalUpdate], a ret ; 124a3 Function124a3: ; 124a3 push bc ld a, [Buffer1] lb bc, $10, $20 cp $1 jr z, .asm_124b1 lb bc, $00, $00 .asm_124b1 ld a, [de] add c inc de ld [hli], a ld a, [de] add b inc de ld [hli], a ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a pop bc ret ; 124c1 UnknownScript_0x124c1:: ; 0x124c1 callasm Function1250a jump UnknownScript_0x124ce ; 0x124c8 UnknownScript_0x124c8:: ; 0x124c8 refreshscreen $0 callasm Function124fa UnknownScript_0x124ce: ; 0x124ce writetext UnknownText_0x124f5 closetext special FadeBlackBGMap pause 40 special HealParty checkflag ENGINE_BUG_CONTEST_TIMER iftrue .script_64f2 callasm HalveMoney callasm Function12527 farscall UnknownScript_0x122c1 special WarpToSpawnPoint newloadmap MAPSETUP_WARP resetfuncs .script_64f2 jumpstd bugcontestresultswarp ; 0x124f5 UnknownText_0x124f5: ; 0x124f5 ; is out of useable #MON! whited out! text_jump UnknownText_0x1c0a4e db "@" ; 0x124fa Function124fa: ; 124fa call ClearPalettes call ClearScreen call Function3200 call HideSprites call Function4f0 ret ; 1250a Function1250a: ; 1250a ld b, $0 call GetSGBLayout call SetPalettes ret ; 12513 HalveMoney: ; 12513 ; Empty function... callba MobileFn_1060c7 ; Halve the player's money. ld hl, Money ld a, [hl] srl a ld [hli], a ld a, [hl] rra ld [hli], a ld a, [hl] rra ld [hl], a ret ; 12527 Function12527: ; 12527 ld a, [wdcb2] ld d, a ld a, [wdcb3] ld e, a callba IsSpawnPoint ld a, c jr c, .yes xor a .yes ld [wd001], a ret ; 1253d Script_ForcedMovement:: ; 0x1253d checkcode VAR_FACING if_equal DOWN, UnknownScript_0x12555 if_equal UP, UnknownScript_0x12550 if_equal LEFT, UnknownScript_0x1255f if_equal RIGHT, UnknownScript_0x1255a end ; 0x12550 UnknownScript_0x12550: ; 0x12550 applymovement PLAYER, MovementData_0x12564 end ; 0x12555 UnknownScript_0x12555: ; 0x12555 applymovement PLAYER, MovementData_0x1256b end ; 0x1255a UnknownScript_0x1255a: ; 0x1255a applymovement PLAYER, MovementData_0x12572 end ; 0x1255f UnknownScript_0x1255f: ; 0x1255f applymovement PLAYER, MovementData_0x12579 end ; 0x12564 MovementData_0x12564: ; 0x12564 step_wait5 big_step_down turn_in_down step_wait5 big_step_down turn_head_down step_end ; 0x1256b MovementData_0x1256b: ; 0x1256b step_wait5 big_step_down turn_in_up step_wait5 big_step_down turn_head_up step_end ; 0x12572 MovementData_0x12572: ; 0x12572 step_wait5 big_step_down turn_in_left step_wait5 big_step_down turn_head_left step_end ; 0x12579 MovementData_0x12579: ; 0x12579 step_wait5 big_step_down turn_in_right step_wait5 big_step_down turn_head_right step_end ; 0x12580 ItemFinder: ; 12580 callba CheckForSignpostItems jr c, .asm_1258d ld hl, UnknownScript_0x125ba jr .asm_12590 .asm_1258d ld hl, UnknownScript_0x125ad .asm_12590 call QueueScript ld a, $1 ld [wd0ec], a ret ; 12599 Function12599: ; 12599 ld c, $4 .asm_1259b push bc ld de, SFX_SECOND_PART_OF_ITEMFINDER call WaitPlaySFX ld de, SFX_TRANSACTION call WaitPlaySFX pop bc dec c jr nz, .asm_1259b ret ; 125ad UnknownScript_0x125ad: ; 0x125ad reloadmappart special UpdateTimePals callasm Function12599 writetext UnknownText_0x125c3 loadmovesprites end ; 0x125ba UnknownScript_0x125ba: ; 0x125ba reloadmappart special UpdateTimePals writetext UnknownText_0x125c8 loadmovesprites end ; 0x125c3 UnknownText_0x125c3: ; 0x125c3 ; Yes! ITEMFINDER indicates there's an item nearby. text_jump UnknownText_0x1c0a77 db "@" ; 0x125c8 UnknownText_0x125c8: ; 0x125c8 ; Nope! ITEMFINDER isn't responding. text_jump UnknownText_0x1c0aa9 db "@" ; 0x125cd StartMenu:: ; 125cd call ResetTextRelatedRAM ld de, SFX_MENU call PlaySFX callba Function6454 ld hl, StatusFlags2 bit 2, [hl] ; bug catching contest ld hl, .MenuDataHeader jr z, .GotMenuData ld hl, .ContestMenuDataHeader .GotMenuData call LoadMenuDataHeader call .SetUpMenuItems ld a, [wd0d2] ld [wMenuCursorBuffer], a call .DrawMenuAccount_ call MenuFunc_1e7f call .DrawBugContestStatusBox call Function2e31 call Function2e20 callba Function64bf call .DrawBugContestStatus call UpdateTimePals jr .Select .Reopen call UpdateSprites call UpdateTimePals call .SetUpMenuItems ld a, [wd0d2] ld [wMenuCursorBuffer], a .Select call .GetInput jr c, .Exit call .DrawMenuAccount ld a, [wMenuCursorBuffer] ld [wd0d2], a call PlayClickSFX call Function1bee call .OpenMenu ; Menu items have different return functions. ; For example, saving exits the menu. ld hl, .MenuReturns ld e, a ld d, 0 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] .MenuReturns dw .Reopen dw .Exit dw .ExitMenuCallFuncLoadMoveSprites dw .ExitMenuRunScriptLoadMoveSprites dw .ExitMenuRunScript dw .ReturnEnd dw .ReturnRedraw .Exit ld a, [hOAMUpdate] push af ld a, 1 ld [hOAMUpdate], a call LoadFontsExtra pop af ld [hOAMUpdate], a .ReturnEnd call ExitMenu .ReturnEnd2 call LoadMoveSprites call UpdateTimePals ret .GetInput ; Return carry on exit, and no-carry on selection. xor a ld [hBGMapMode], a call .DrawMenuAccount call SetUpMenu ld a, $ff ld [MenuSelection], a .loop call .PrintMenuAccount call Function1f1a ld a, [wcf73] cp B_BUTTON jr z, .b cp A_BUTTON jr z, .a jr .loop .a call PlayClickSFX and a ret .b scf ret ; 12691 .ExitMenuRunScript ; 12691 call ExitMenu ld a, HMENURETURN_SCRIPT ld [hMenuReturn], a ret ; 12699 .ExitMenuRunScriptLoadMoveSprites ; 12699 call ExitMenu ld a, HMENURETURN_SCRIPT ld [hMenuReturn], a jr .ReturnEnd2 ; 126a2 .ExitMenuCallFuncLoadMoveSprites ; 126a2 call ExitMenu ld hl, wQueuedScriptAddr ld a, [hli] ld h, [hl] ld l, a ld a, [wQueuedScriptBank] rst FarCall jr .ReturnEnd2 ; 126b1 .ReturnRedraw ; 126b1 call .Clear jp .Reopen ; 126b7 .Clear ; 126b7 call WhiteBGMap call Call_ExitMenu call Function2bae call .DrawMenuAccount_ call MenuFunc_1e7f call .DrawBugContestStatus call UpdateSprites call Functiond90 call Function2b5c ret ; 126d3 .MenuDataHeader db $40 ; tile backup db 0, 10 ; start coords db 17, 19 ; end coords dw .MenuData db 1 ; default selection .ContestMenuDataHeader db $40 ; tile backup db 2, 10 ; start coords db 17, 19 ; end coords dw .MenuData db 1 ; default selection .MenuData db %10101000 ; x padding, wrap around, start can close dn 0, 0 ; rows, columns dw MenuItemsList dw .MenuString dw .Items .Items dw StartMenu_Pokedex, .PokedexString, .PokedexDesc dw StartMenu_Pokemon, .PartyString, .PartyDesc dw StartMenu_Pack, .PackString, .PackDesc dw StartMenu_Status, .StatusString, .StatusDesc dw StartMenu_Save, .SaveString, .SaveDesc dw StartMenu_Option, .OptionString, .OptionDesc dw StartMenu_Exit, .ExitString, .ExitDesc dw StartMenu_Pokegear, .PokegearString, .PokegearDesc dw StartMenu_Quit, .QuitString, .QuitDesc .PokedexString db "#DEX@" .PartyString db "#MON@" .PackString db "PACK@" .StatusString db "<PLAYER>@" .SaveString db "SAVE@" .OptionString db "OPTION@" .ExitString db "EXIT@" .PokegearString db $24, "GEAR@" .QuitString db "QUIT@" .PokedexDesc db "#MON" next "database@" .PartyDesc db "Party ", $4a next "status@" .PackDesc db "Contains" next "items@" .PokegearDesc db "Trainer's" next "key device@" .StatusDesc db "Your own" next "status@" .SaveDesc db "Save your" next "progress@" .OptionDesc db "Change" next "settings@" .ExitDesc db "Close this" next "menu@" .QuitDesc db "Quit and" next "be judged.@" .OpenMenu ; 127e5 ld a, [MenuSelection] call .GetMenuAccountTextPointer ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 127ef .MenuString ; 127ef push de ld a, [MenuSelection] call .GetMenuAccountTextPointer rept 2 inc hl endr ld a, [hli] ld d, [hl] ld e, a pop hl call PlaceString ret ; 12800 .MenuDesc ; 12800 push de ld a, [MenuSelection] cp $ff jr z, .none call .GetMenuAccountTextPointer rept 4 inc hl endr ld a, [hli] ld d, [hl] ld e, a pop hl call PlaceString ret .none pop de ret ; 12819 .GetMenuAccountTextPointer ; 12819 ld e, a ld d, 0 ld hl, wcf97 ld a, [hli] ld h, [hl] ld l, a rept 6 add hl, de endr ret ; 12829 .SetUpMenuItems ; 12829 xor a ld [wcf76], a call .FillMenuList ld hl, StatusFlags bit 0, [hl] jr z, .no_pokedex ld a, 0 ; pokedex call .AppendMenuList .no_pokedex ld a, [PartyCount] and a jr z, .no_pokemon ld a, 1 ; pokemon call .AppendMenuList .no_pokemon ld a, [wLinkMode] and a jr nz, .no_pack ld hl, StatusFlags2 bit 2, [hl] ; bug catching contest jr nz, .no_pack ld a, 2 ; pack call .AppendMenuList .no_pack ld hl, wPokegearFlags bit 7, [hl] jr z, .no_pokegear ld a, 7 ; pokegear call .AppendMenuList .no_pokegear ld a, 3 ; status call .AppendMenuList ld a, [wLinkMode] and a jr nz, .no_save ld hl, StatusFlags2 bit 2, [hl] ; bug catching contest ld a, 8 ; quit jr nz, .write ld a, 4 ; save .write call .AppendMenuList .no_save ld a, 5 ; option call .AppendMenuList ld a, 6 ; exit call .AppendMenuList ld a, c ld [MenuItemsList], a ret ; 1288d .FillMenuList ; 1288d xor a ld hl, MenuItemsList ld [hli], a ld a, -1 ld bc, MenuItemsListEnd - (MenuItemsList + 1) call ByteFill ld de, MenuItemsList + 1 ld c, 0 ret ; 128a0 .AppendMenuList ; 128a0 ld [de], a inc de inc c ret ; 128a4 .DrawMenuAccount_ ; 128a4 jp .DrawMenuAccount ; 128a7 .PrintMenuAccount ; 128a7 call .IsMenuAccountOn ret z call .DrawMenuAccount decoord 0, 14 jp .MenuDesc ; 128b4 .DrawMenuAccount ; 128b4 call .IsMenuAccountOn ret z hlcoord 0, 13 lb bc, 5, 10 call ClearBox hlcoord 0, 13 ld b, 3 ld c, 8 jp TextBoxPalette ; 128cb .IsMenuAccountOn ; 128cb ld a, [Options2] and 1 ret ; 128d1 .DrawBugContestStatusBox ; 128d1 ld hl, StatusFlags2 bit 2, [hl] ; bug catching contest ret z callba Function24bdc ret ; 128de .DrawBugContestStatus ; 128de ld hl, StatusFlags2 bit 2, [hl] ; bug catching contest jr nz, .contest ret .contest callba Function24be7 ret ; 128ed StartMenu_Exit: ; 128ed ; Exit the menu. ld a, 1 ret ; 128f0 StartMenu_Quit: ; 128f0 ; Retire from the bug catching contest. ld hl, .EndTheContestText call Function12cf5 jr c, .DontEndContest ld a, BANK(BugCatchingContestReturnToGateScript) ld hl, BugCatchingContestReturnToGateScript call FarQueueScript ld a, 4 ret .DontEndContest ld a, 0 ret .EndTheContestText text_jump UnknownText_0x1c1a6c db "@" ; 1290b StartMenu_Save: ; 1290b ; Save the game. call BufferScreen callba Function14a1a jr nc, .asm_12919 ld a, 0 ret .asm_12919 ld a, 1 ret ; 1291c StartMenu_Option: ; 1291c ; Game options. call FadeToMenu callba OptionsMenu ld a, 6 ret ; 12928 StartMenu_Status: ; 12928 ; Player status. call FadeToMenu callba Function25105 call Function2b3c ld a, 0 ret ; 12937 StartMenu_Pokedex: ; 12937 ld a, [PartyCount] and a jr z, .asm_12949 call FadeToMenu callba Pokedex call Function2b3c .asm_12949 ld a, 0 ret ; 1294c StartMenu_Pokegear: ; 1294c call FadeToMenu callba Function90b8d call Function2b3c ld a, 0 ret ; 1295b StartMenu_Pack: ; 1295b call FadeToMenu callba Pack ld a, [wcf66] and a jr nz, .asm_12970 call Function2b3c ld a, 0 ret .asm_12970 call Function2b4d ld a, 4 ret ; 12976 StartMenu_Pokemon: ; 12976 ld a, [PartyCount] and a jr z, .return call FadeToMenu .choosemenu xor a ld [PartyMenuActionText], a ; Choose a POKéMON. call WhiteBGMap .menu callba Function5004f callba Function50405 callba Function503e0 .menunoreload callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap call SetPalettes ; load regular palettes? call DelayFrame callba PartyMenuSelect jr c, .return ; if cancelled or pressed B call PokemonActionSubmenu cp 3 jr z, .menu cp 0 jr z, .choosemenu cp 1 jr z, .menunoreload cp 2 jr z, .quit .return call Function2b3c ld a, 0 ret .quit ld a, b push af call Function2b4d pop af ret ; 129d5 Function129d5: ; 129d5 ld a, [NumItems] and a ret nz ld a, [NumKeyItems] and a ret nz ld a, [NumBalls] and a ret nz ld hl, TMsHMs ld b, NUM_TMS + NUM_HMS .asm_129e9 ld a, [hli] and a jr nz, .asm_129f2 dec b jr nz, .asm_129e9 scf ret .asm_129f2 and a ret Function129f4: ; 129f4 push de call PartyMonItemName callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a jr nz, .asm_12a3f ld hl, UnknownText_0x12a45 call MenuTextBox callba Function24fbf push af call WriteBackup call ExitMenu pop af jr c, .asm_12a42 ld hl, UnknownText_0x12a4a call MenuTextBox call YesNoBox push af call ExitMenu pop af jr c, .asm_12a42 pop hl ld a, [wd107] call TossItem call PartyMonItemName ld hl, UnknownText_0x12a4f call MenuTextBox call ExitMenu and a ret .asm_12a3f call Function12a54 .asm_12a42 pop hl scf ret ; 12a45 (4:6a45) UnknownText_0x12a45: ; 0x12a45 ; Toss out how many @ (S)? text_jump UnknownText_0x1c1a90 db "@" ; 0x12a4a UnknownText_0x12a4a: ; 0x12a4a ; Throw away @ @ (S)? text_jump UnknownText_0x1c1aad db "@" ; 0x12a4f UnknownText_0x12a4f: ; 0x12a4f ; Discarded @ (S). text_jump UnknownText_0x1c1aca db "@" ; 0x12a54 Function12a54: ; 12a54 (4:6a54) ld hl, UnknownText_0x12a5b call MenuTextBoxBackup ret ; 12a5b (4:6a5b) UnknownText_0x12a5b: ; 0x12a5b ; That's too impor- tant to toss out! text_jump UnknownText_0x1c1adf db "@" ; 0x12a60 CantUseItem: ; 12a60 ld hl, CantUseItemText call Function2012 ret ; 12a67 CantUseItemText: ; 12a67 text_jump UnknownText_0x1c1b03 db "@" ; 12a6c PartyMonItemName: ; 12a6c ld a, [CurItem] ld [wd265], a call GetItemName call CopyName1 ret ; 12a79 CancelPokemonAction: ; 12a79 callba Function50405 callba Function8ea71 ld a, 1 ret ; 12a88 PokemonActionSubmenu: ; 12a88 hlcoord 1, 15 lb bc, 2, 18 call ClearBox callba MonSubmenu call GetCurNick ld a, [MenuSelection] ld hl, .Actions ld de, 3 call IsInArray jr nc, .nothing inc hl ld a, [hli] ld h, [hl] ld l, a jp [hl] .nothing ld a, 0 ret .Actions dbw MONMENU_CUT, MonMenu_Cut ; Cut dbw MONMENU_FLY, MonMenu_Fly ; Fly dbw MONMENU_SURF, MonMenu_Surf ; Surf dbw MONMENU_STRENGTH, MonMenu_Strength ; Strength dbw MONMENU_FLASH, MonMenu_Flash ; Flash dbw MONMENU_WHIRLPOOL, MonMenu_Whirlpool ; Whirlpool dbw MONMENU_DIG, MonMenu_Dig ; Dig dbw MONMENU_TELEPORT, MonMenu_Teleport ; Teleport dbw MONMENU_SOFTBOILED, MonMenu_Softboiled_MilkDrink ; Softboiled dbw MONMENU_MILKDRINK, MonMenu_Softboiled_MilkDrink ; MilkDrink dbw MONMENU_HEADBUTT, MonMenu_Headbutt ; Headbutt dbw MONMENU_WATERFALL, MonMenu_Waterfall ; Waterfall dbw MONMENU_ROCKSMASH, MonMenu_RockSmash ; RockSmash dbw MONMENU_SWEETSCENT, MonMenu_SweetScent ; SweetScent dbw MONMENU_STATS, OpenPartyStats dbw MONMENU_SWITCH, SwitchPartyMons dbw MONMENU_ITEM, GiveTakePartyMonItem dbw MONMENU_CANCEL, CancelPokemonAction dbw MONMENU_MOVE, ManagePokemonMoves ; move dbw MONMENU_MAIL, MonMailAction ; mail ; 12aec SwitchPartyMons: ; 12aec ; Don't try if there's nothing to switch! ld a, [PartyCount] cp 2 jr c, .DontSwitch ld a, [CurPartyMon] inc a ld [wd0e3], a callba Function8ea8c callba Function5042d ld a, 4 ld [PartyMenuActionText], a callba WritePartyMenuTilemap callba PrintPartyMenuText hlcoord 0, 1 ld bc, 20 * 2 ld a, [wd0e3] dec a call AddNTimes ld [hl], "▷" call WaitBGMap call SetPalettes call DelayFrame callba PartyMenuSelect bit 1, b jr c, .DontSwitch callba _SwitchPartyMons xor a ld [PartyMenuActionText], a callba Function5004f callba Function50405 callba Function503e0 ld a, 1 ret .DontSwitch xor a ld [PartyMenuActionText], a call CancelPokemonAction ret ; 12b60 GiveTakePartyMonItem: ; 12b60 ; Eggs can't hold items! ld a, [CurPartySpecies] cp EGG jr z, .asm_12ba6 ld hl, GiveTakeItemMenuData call LoadMenuDataHeader call InterpretMenu2 call ExitMenu jr c, .asm_12ba6 call GetCurNick ld hl, StringBuffer1 ld de, wd050 ld bc, $b call CopyBytes ld a, [MenuSelection2] cp 1 jr nz, .asm_12ba0 call LoadMenuDataHeader_0x1d75 call ClearPalettes call Function12ba9 call ClearPalettes call LoadFontsBattleExtra call ExitMenu ld a, 0 ret .asm_12ba0 call TakePartyItem ld a, 3 ret .asm_12ba6 ld a, 3 ret ; 12ba9 Function12ba9: ; 12ba9 callba Function106a5 .loop callba Function106be ld a, [wcf66] and a jr z, .quit ld a, [wcf65] cp 2 jr z, .next call CheckTossableItem ld a, [wItemAttributeParamBuffer] and a jr nz, .next call Function12bd9 jr .quit .next ld hl, CantBeHeldText call MenuTextBoxBackup jr .loop .quit ret ; 12bd9 Function12bd9: ; 12bd9 call SpeechTextBox call PartyMonItemName call GetPartyItemLocation ld a, [hl] and a jr z, .asm_12bf4 push hl ld d, a callba ItemIsMail pop hl jr c, .asm_12c01 ld a, [hl] jr .asm_12c08 .asm_12bf4 call Function12cea ld hl, MadeHoldText call MenuTextBoxBackup call GivePartyItem ret .asm_12c01 ld hl, PleaseRemoveMailText call MenuTextBoxBackup ret .asm_12c08 ld [wd265], a call GetItemName ld hl, SwitchAlreadyHoldingText call Function12cf5 jr c, .asm_12c4b call Function12cea ld a, [wd265] push af ld a, [CurItem] ld [wd265], a pop af ld [CurItem], a call Function12cdf jr nc, .asm_12c3c ld hl, TookAndMadeHoldText call MenuTextBoxBackup ld a, [wd265] ld [CurItem], a call GivePartyItem ret .asm_12c3c ld a, [wd265] ld [CurItem], a call Function12cdf ld hl, ItemStorageIsFullText call MenuTextBoxBackup .asm_12c4b ret ; 12c4c GivePartyItem: ; 12c4c call GetPartyItemLocation ld a, [CurItem] ld [hl], a ld d, a callba ItemIsMail jr nc, .asm_12c5f call Function12cfe .asm_12c5f ret ; 12c60 TakePartyItem: ; 12c60 call SpeechTextBox call GetPartyItemLocation ld a, [hl] and a jr z, .asm_12c8c ld [CurItem], a call Function12cdf jr nc, .asm_12c94 callba ItemIsMail call GetPartyItemLocation ld a, [hl] ld [wd265], a ld [hl], NO_ITEM call GetItemName ld hl, TookFromText call MenuTextBoxBackup jr .asm_12c9a .asm_12c8c ld hl, IsntHoldingAnythingText call MenuTextBoxBackup jr .asm_12c9a .asm_12c94 ld hl, ItemStorageIsFullText call MenuTextBoxBackup .asm_12c9a ret ; 12c9b GiveTakeItemMenuData: ; 12c9b db %01010000 db 12, 12 ; start coords db 17, 19 ; end coords dw .Items db 1 ; default option .Items db %10000000 ; x padding db 2 ; # items db "GIVE@" db "TAKE@" ; 12caf TookAndMadeHoldText: ; 12caf text_jump UnknownText_0x1c1b2c db "@" ; 12cb4 MadeHoldText: ; 12cb4 text_jump UnknownText_0x1c1b57 db "@" ; 12cb9 PleaseRemoveMailText: ; 12cb9 text_jump UnknownText_0x1c1b6f db "@" ; 12cbe IsntHoldingAnythingText: ; 12cbe text_jump UnknownText_0x1c1b8e db "@" ; 12cc3 ItemStorageIsFullText: ; 12cc3 text_jump UnknownText_0x1c1baa db "@" ; 12cc8 TookFromText: ; 12cc8 text_jump UnknownText_0x1c1bc4 db "@" ; 12ccd SwitchAlreadyHoldingText: ; 12ccd text_jump UnknownText_0x1c1bdc db "@" ; 12cd2 CantBeHeldText: ; 12cd2 text_jump UnknownText_0x1c1c09 db "@" ; 12cd7 GetPartyItemLocation: ; 12cd7 push af ld a, MON_ITEM call GetPartyParamLocation pop af ret ; 12cdf Function12cdf: ; 12cdf ld a, $1 ld [wItemQuantityChangeBuffer], a ld hl, NumItems jp ReceiveItem ; 12cea Function12cea: ; 12cea (4:6cea) ld a, $1 ld [wItemQuantityChangeBuffer], a ld hl, NumItems jp TossItem Function12cf5: ; 12cf5 call MenuTextBox call YesNoBox jp ExitMenu ; 12cfe Function12cfe: ; 12cfe (4:6cfe) ld de, DefaultFlypoint callba Function11e75 ld hl, PlayerName ld de, wd023 ld bc, $a call CopyBytes ld hl, PlayerID ld bc, $2 call CopyBytes ld a, [CurPartySpecies] ld [de], a inc de ld a, [CurItem] ld [de], a ld a, [CurPartyMon] ld hl, sPartyScratch1 ld bc, (SCRATCHMON_STRUCT_LENGTH) call AddNTimes ld d, h ld e, l ld hl, DefaultFlypoint ld bc, (SCRATCHMON_STRUCT_LENGTH) ld a, BANK(sPartyScratch1) call GetSRAMBank call CopyBytes call CloseSRAM ret MonMailAction: ; 12d45 ; If in the time capsule or trade center, ; selecting the mail only allows you to ; read the mail. ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .read cp LINK_TRADECENTER jr z, .read ; Show the READ/TAKE/QUIT menu. ld hl, .MenuDataHeader call LoadMenuDataHeader call InterpretMenu2 call ExitMenu ; Interpret the menu. jp c, .done ld a, [MenuSelection2] cp $1 jr z, .read cp $2 jr z, .take jp .done .read callba ReadPartyMonMail ld a, $0 ret .take ld hl, .sendmailtopctext call Function12cf5 jr c, .RemoveMailToBag ld a, [CurPartyMon] ld b, a callba Function4456e jr c, .MailboxFull ld hl, .sentmailtopctext call MenuTextBoxBackup jr .done .MailboxFull ld hl, .mailboxfulltext call MenuTextBoxBackup jr .done .RemoveMailToBag ld hl, .mailwilllosemessagetext call Function12cf5 jr c, .done call GetPartyItemLocation ld a, [hl] ld [CurItem], a call Function12cdf jr nc, .BagIsFull call GetPartyItemLocation ld [hl], $0 call GetCurNick ld hl, .tookmailfrommontext call MenuTextBoxBackup jr .done .BagIsFull ld hl, .bagfulltext call MenuTextBoxBackup jr .done .done ld a, $3 ret ; 12dc9 .MenuDataHeader: ; 0x12dc9 db $40 ; flags db 10, 12 ; start coords db 17, 19 ; end coords dw .MenuData2 db 1 ; default option ; 0x12dd1 .MenuData2: ; 0x12dd1 db $80 ; flags db 3 ; items db "READ@" db "TAKE@" db "QUIT@" ; 0x12de2 .mailwilllosemessagetext: ; 0x12de2 ; The MAIL will lose its message. OK? text_jump UnknownText_0x1c1c22 db "@" ; 0x12de7 .tookmailfrommontext: ; 0x12de7 ; MAIL detached from <POKEMON>. text_jump UnknownText_0x1c1c47 db "@" ; 0x12dec .bagfulltext: ; 0x12dec ; There's no space for removing MAIL. text_jump UnknownText_0x1c1c62 db "@" ; 0x12df1 .sendmailtopctext: ; 0x12df1 ; Send the removed MAIL to your PC? text_jump UnknownText_0x1c1c86 db "@" ; 0x12df6 .mailboxfulltext: ; 0x12df6 ; Your PC's MAILBOX is full. text_jump UnknownText_0x1c1ca9 db "@" ; 0x12dfb .sentmailtopctext: ; 0x12dfb ; The MAIL was sent to your PC. text_jump UnknownText_0x1c1cc4 db "@" ; 0x12e00 OpenPartyStats: ; 12e00 call LoadMenuDataHeader_0x1d75 call ClearSprites ; PartyMon xor a ld [MonType], a call LowVolume predef StatsScreenInit call MaxVolume call Call_ExitMenu ld a, 0 ret ; 12e1b MonMenu_Cut: ; 12e1b callba CutFunction ld a, [wd0ec] cp $1 jr nz, .asm_12e2d ld b, $4 ld a, $2 ret .asm_12e2d ld a, $3 ret ; 12e30 MonMenu_Fly: ; 12e30 callba FlyFunction ld a, [wd0ec] cp $2 jr z, .asm_12e4c cp $0 jr z, .asm_12e4f callba MobileFn_1060b5 ld b, $4 ld a, $2 ret .asm_12e4c ld a, $3 ret .asm_12e4f ld a, $0 ret .asm_12e52 ld a, $1 ret ; 12e55 MonMenu_Flash: ; 12e55 callba Functionc8ac ld a, [wd0ec] cp $1 jr nz, .asm_12e67 ld b, $4 ld a, $2 ret .asm_12e67 ld a, $3 ret ; 12e6a MonMenu_Strength: ; 12e6a callba StrengthFunction ld a, [wd0ec] cp $1 jr nz, .asm_12e7c ld b, $4 ld a, $2 ret .asm_12e7c ld a, $3 ret ; 12e7f MonMenu_Whirlpool: ; 12e7f callba WhirlpoolFunction ld a, [wd0ec] cp $1 jr nz, .asm_12e91 ld b, $4 ld a, $2 ret .asm_12e91 ld a, $3 ret ; 12e94 MonMenu_Waterfall: ; 12e94 callba Functioncade ld a, [wd0ec] cp $1 jr nz, .asm_12ea6 ld b, $4 ld a, $2 ret .asm_12ea6 ld a, $3 ret ; 12ea9 MonMenu_Teleport: ; 12ea9 callba TeleportFunction ld a, [wd0ec] and a jr z, .asm_12eba ld b, $4 ld a, $2 ret .asm_12eba ld a, $3 ret ; 12ebd MonMenu_Surf: ; 12ebd callba SurfFunction ld a, [wd0ec] and a jr z, .asm_12ece ld b, $4 ld a, $2 ret .asm_12ece ld a, $3 ret ; 12ed1 MonMenu_Dig: ; 12ed1 callba DigFunction ld a, [wd0ec] cp $1 jr nz, .asm_12ee3 ld b, $4 ld a, $2 ret .asm_12ee3 ld a, $3 ret ; 12ee6 MonMenu_Softboiled_MilkDrink: ; 12ee6 call Function12f05 jr nc, .asm_12ef3 callba Functionf3df jr .asm_12ef9 .asm_12ef3 ld hl, UnknownText_0x12f00 call PrintText .asm_12ef9 xor a ld [PartyMenuActionText], a ld a, $3 ret ; 12f00 UnknownText_0x12f00: ; 0x12f00 ; Not enough HP! text_jump UnknownText_0x1c1ce3 db "@" ; 0x12f05 Function12f05: ; 12f05 ld a, MON_MAXHP call GetPartyParamLocation ld a, [hli] ld [hDividend + 0], a ld a, [hl] ld [hDividend + 1], a ld a, $5 ld [hDivisor], a ld b, $2 call Divide ld a, MON_HP + 1 call GetPartyParamLocation ld a, [hQuotient + 2] sub [hl] dec hl ld a, [hQuotient + 1] sbc [hl] ret ; 12f26 MonMenu_Headbutt: ; 12f26 callba HeadbuttFunction ld a, [wd0ec] cp $1 jr nz, .asm_12f38 ld b, $4 ld a, $2 ret .asm_12f38 ld a, $3 ret ; 12f3b MonMenu_RockSmash: ; 12f3b callba RockSmashFunction ld a, [wd0ec] cp $1 jr nz, .asm_12f4d ld b, $4 ld a, $2 ret .asm_12f4d ld a, $3 ret ; 12f50 MonMenu_SweetScent: ; 12f50 callba DoMovementFunctionc ld b, $4 ld a, $2 ret ; 12f5b Function12f5b: ; 12f5b ld hl, Options ld a, [hl] push af set 4, [hl] call LoadFontsBattleExtra call Function12f73 pop bc ld a, b ld [Options], a push af call WhiteBGMap pop af ret ; 12f73 Function12f73: ; 12f73 call SetUpMoveScreenBG ld de, Unknown_12fb2 call Function1bb1 call Function131ef ld hl, wcfa5 set 6, [hl] jr Function12f93 Function12f86: ; 12f86 call Function1bd3 bit 1, a jp nz, Function12f9f bit 0, a jp nz, Function12f9c Function12f93: ; 12f93 call PrepareToPlaceMoveData call PlaceMoveData jp Function12f86 ; 12f9c Function12f9c: ; 12f9c and a jr Function12fa0 Function12f9f: ; 12f9f scf Function12fa0: ; 12fa0 push af xor a ld [wd0e3], a ld hl, wcfa5 res 6, [hl] call ClearSprites call ClearTileMap pop af ret ; 12fb2 Unknown_12fb2: ; 12fb2 db $03, $01, $03, $01, $40, $00, $20, $c3 ; 12fba ManagePokemonMoves: ; 12fba ld a, [CurPartySpecies] cp EGG jr z, .egg ld hl, Options ld a, [hl] push af set 4, [hl] call MoveScreenLoop pop af ld [Options], a call WhiteBGMap .egg ld a, $0 ret ; 12fd5 MoveScreenLoop: ; 12fd5 ld a, [CurPartyMon] inc a ld [wd0d8], a call SetUpMoveScreenBG call Function132d3 ld de, Unknown_13163 call Function1bb1 .loop call Function131ef ld hl, wcfa5 set 6, [hl] jr .skip_joy .joy_loop call Function1bd3 bit 1, a jp nz, .b_button bit 0, a jp nz, .a_button bit 4, a jp nz, .d_right bit 5, a jp nz, .d_left .skip_joy call PrepareToPlaceMoveData ld a, [wMoveSwapBuffer] and a jr nz, .moving_move call PlaceMoveData jp .joy_loop .moving_move ld a, " " hlcoord 1, 11 ld bc, 5 call ByteFill hlcoord 1, 12 lb bc, 5, SCREEN_WIDTH - 2 call ClearBox hlcoord 1, 12 ld de, String_1316b call PlaceString jp .joy_loop .b_button: ; 13038 call PlayClickSFX call WaitSFX ld a, [wMoveSwapBuffer] and a jp z, .exit ld a, [wMoveSwapBuffer] ld [MenuSelection2], a xor a ld [wMoveSwapBuffer], a hlcoord 1, 2 lb bc, 8, SCREEN_WIDTH - 2 call ClearBox jp .loop ; 1305b .d_right: ; 1305b ld a, [wMoveSwapBuffer] and a jp nz, .joy_loop ld a, [CurPartyMon] ld b, a push bc call .cycle_right pop bc ld a, [CurPartyMon] cp b jp z, .joy_loop jp MoveScreenLoop .d_left: ; 13075 ld a, [wMoveSwapBuffer] and a jp nz, .joy_loop ld a, [CurPartyMon] ld b, a push bc call .cycle_left pop bc ld a, [CurPartyMon] cp b jp z, .joy_loop jp MoveScreenLoop .cycle_right ld a, [CurPartyMon] inc a ld [CurPartyMon], a ld c, a ld b, 0 ld hl, PartySpecies add hl, bc ld a, [hl] cp -1 jr z, .cycle_left cp EGG ret nz jr .cycle_right .cycle_left ld a, [CurPartyMon] and a ret z .cycle_left_loop ld a, [CurPartyMon] dec a ld [CurPartyMon], a ld c, a ld b, 0 ld hl, PartySpecies add hl, bc ld a, [hl] cp EGG ret nz ld a, [CurPartyMon] and a jr z, .cycle_right jr .cycle_left_loop ; 130c6 .a_button: ; 130c6 call PlayClickSFX call WaitSFX ld a, [wMoveSwapBuffer] and a jr nz, .place_move ld a, [MenuSelection2] ld [wMoveSwapBuffer], a call Function1bee jp .moving_move .place_move ld hl, PartyMon1Moves ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes push hl call .copy_move pop hl ld bc, $15 add hl, bc call .copy_move ld a, [wBattleMode] jr z, .swap_moves ld hl, BattleMonMoves ld bc, $20 ld a, [CurPartyMon] call AddNTimes push hl call .copy_move pop hl ld bc, 6 add hl, bc call .copy_move .swap_moves ld de, SFX_SWITCH_POKEMON call PlaySFX call WaitSFX ld de, SFX_SWITCH_POKEMON call PlaySFX call WaitSFX hlcoord 1, 2 lb bc, 8, 18 call ClearBox hlcoord 10, 10 lb bc, 1, 9 call ClearBox jp .loop ; 1313a .copy_move: ; 1313a push hl ld a, [MenuSelection2] dec a ld c, a ld b, $0 add hl, bc ld d, h ld e, l pop hl ld a, [wMoveSwapBuffer] dec a ld c, a ld b, $0 add hl, bc ld a, [de] ld b, [hl] ld [hl], a ld a, b ld [de], a ret ; 13154 .exit: ; 13154 xor a ld [wMoveSwapBuffer], a ld hl, wcfa5 res 6, [hl] call ClearSprites jp ClearTileMap ; 13163 Unknown_13163: ; 13163 db $03, $01, $03, $01, $40, $00, $20, $f3 ; 1316b String_1316b: ; 1316b db "Where?@" ; 13172 SetUpMoveScreenBG: ; 13172 call WhiteBGMap call ClearTileMap call ClearSprites xor a ld [hBGMapMode], a callba Functionfb571 callba InefficientlyClear121BytesAtwc300 ld a, [CurPartyMon] ld e, a ld d, $0 ld hl, PartySpecies add hl, de ld a, [hl] ld [wd265], a ld e, $2 callba Function8e83f hlcoord 0, 1 ld b, 9 ld c, 18 call TextBox hlcoord 0, 11 ld b, 5 ld c, 18 call TextBox hlcoord 2, 0 lb bc, 2, 3 call ClearBox xor a ld [MonType], a ld hl, PartyMonNicknames ld a, [CurPartyMon] call GetNick hlcoord 5, 1 call PlaceString push bc callba CopyPkmnToTempMon pop hl call PrintLevel ld hl, PlayerHPPal call SetHPPal ld b, $e call GetSGBLayout hlcoord 16, 0 lb bc, 1, 3 jp ClearBox ; 131ef Function131ef: ; 131ef xor a ld [hBGMapMode], a ld [wMoveSwapBuffer], a ld [MonType], a predef CopyPkmnToTempMon ld hl, TempMonMoves ld de, wListMoves_MoveIndicesBuffer ld bc, NUM_MOVES call CopyBytes ld a, SCREEN_WIDTH * 2 ld [Buffer1], a hlcoord 2, 3 predef ListMoves hlcoord 10, 4 predef Function50c50 call WaitBGMap call SetPalettes ld a, [wd0eb] inc a ld [wcfa3], a hlcoord 0, 11 ld b, 5 ld c, 18 jp TextBox ; 13235 PrepareToPlaceMoveData: ; 13235 ld hl, PartyMon1Moves ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes ld a, [MenuSelection2] dec a ld c, a ld b, $0 add hl, bc ld a, [hl] ld [CurMove], a hlcoord 1, 12 lb bc, 5, 18 jp ClearBox ; 13256 PlaceMoveData: ; 13256 xor a ld [hBGMapMode], a hlcoord 0, 10 ld de, String_132ba call PlaceString hlcoord 0, 11 ld de, String_132c2 call PlaceString hlcoord 12, 12 ld de, String_132ca call PlaceString ld a, [CurMove] ld b, a hlcoord 2, 12 predef PrintMoveType ld a, [CurMove] dec a ld hl, Moves + MOVE_POWER ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte hlcoord 16, 12 cp 2 jr c, .no_power ld [wd265], a ld de, wd265 lb bc, 1, 3 call PrintNum jr .description .no_power ld de, String_132cf call PlaceString .description hlcoord 1, 14 predef PrintMoveDesc ld a, $1 ld [hBGMapMode], a ret ; 132ba String_132ba: ; 132ba db "┌─────┐@" ; 132c2 String_132c2: ; 132c2 db "│TYPE/└@" ; 132ca String_132ca: ; 132ca db "ATK/@" ; 132cf String_132cf: ; 132cf db "---@" ; 132d3 Function132d3: ; 132d3 call Function132da call Function132fe ret ; 132da Function132da: ; 132da ld a, [CurPartyMon] and a ret z ld c, a ld e, a ld d, 0 ld hl, PartyCount add hl, de .loop ld a, [hl] and a jr z, .prev cp EGG jr z, .prev cp NUM_POKEMON + 1 jr c, .legal .prev dec hl dec c jr nz, .loop ret .legal hlcoord 16, 0 ld [hl], "◀" ret ; 132fe Function132fe: ; 132fe ld a, [CurPartyMon] inc a ld c, a ld a, [PartyCount] cp c ret z ld e, c ld d, 0 ld hl, PartySpecies add hl, de .loop ld a, [hl] cp -1 ret z and a jr z, .next cp EGG jr z, .next cp NUM_POKEMON + 1 jr c, .legal .next inc hl jr .loop .legal hlcoord 18, 0 ld [hl], "▶" ret ; 13327 SelectMenu:: ; 13327 call CheckRegisteredItem jr c, .NotRegistered jp UseRegisteredItem .NotRegistered call LoadFont ld b, BANK(ItemMayBeRegisteredText) ld hl, ItemMayBeRegisteredText call MapTextbox call CloseText jp LoadMoveSprites ; 13340 ItemMayBeRegisteredText: ; 13340 text_jump UnknownText_0x1c1cf3 db "@" ; 13345 CheckRegisteredItem: ; 13345 ld a, [WhichRegisteredItem] and a jr z, .NoRegisteredItem and REGISTERED_POCKET rlca rlca ld hl, .Pockets rst JumpTable ret .Pockets dw .CheckItem dw .CheckBall dw .CheckKeyItem dw .CheckTMHM .CheckItem ld hl, NumItems call .CheckRegisteredNo jr c, .NoRegisteredItem inc hl ld e, a ld d, 0 rept 2 add hl, de endr call .IsSameItem jr c, .NoRegisteredItem and a ret .CheckKeyItem ld a, [RegisteredItem] ld hl, KeyItems ld de, 1 call IsInArray jr nc, .NoRegisteredItem ld a, [RegisteredItem] ld [CurItem], a and a ret .CheckBall ld hl, NumBalls call .CheckRegisteredNo jr nc, .NoRegisteredItem inc hl ld e, a ld d, 0 rept 2 add hl, de endr call .IsSameItem jr c, .NoRegisteredItem ret .CheckTMHM jr .NoRegisteredItem .NoRegisteredItem xor a ld [WhichRegisteredItem], a ld [RegisteredItem], a scf ret ; 133a6 .CheckRegisteredNo ; 133a6 ld a, [WhichRegisteredItem] and REGISTERED_NUMBER dec a cp [hl] jr nc, .NotEnoughItems ld [wd107], a and a ret .NotEnoughItems scf ret ; 133b6 .IsSameItem ; 133b6 ld a, [RegisteredItem] cp [hl] jr nz, .NotSameItem ld [CurItem], a and a ret .NotSameItem scf ret ; 133c3 UseRegisteredItem: ; 133c3 callba CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .SwitchTo rst JumpTable ret .SwitchTo dw .CantUse dw .NoFunction dw .NoFunction dw .NoFunction dw .Current dw .Party dw .Overworld ; 133df .NoFunction ; 133df call LoadFont call CantUseItem call LoadMoveSprites and a ret ; 133ea .Current ; 133ea call LoadFont call DoItemEffect call LoadMoveSprites and a ret ; 133f5 .Party ; 133f5 call ResetWindow call FadeToMenu call DoItemEffect call Function2b3c call LoadMoveSprites and a ret ; 13406 .Overworld ; 13406 call ResetWindow ld a, 1 ld [wd0ef], a call DoItemEffect xor a ld [wd0ef], a ld a, [wd0ec] cp 1 jr nz, ._cantuse scf ld a, HMENURETURN_SCRIPT ld [hMenuReturn], a ret ; 13422 .CantUse ; 13422 call ResetWindow ._cantuse call CantUseItem call LoadMoveSprites and a ret ; 1342d Elevator:: ; 1342d call Function1344a call Function1347d jr c, .asm_13448 ld [wd041], a call Function134dd jr c, .asm_13448 ld hl, wd041 cp [hl] jr z, .asm_13448 call Function134c0 and a ret .asm_13448 scf ret ; 1344a Function1344a: ; 1344a ld a, b ld [EngineBuffer1], a ld a, e ld [wd03f], a ld a, d ld [wd040], a call Function1345a ret ; 1345a Function1345a: ; 1345a ld de, OBPals + 8 * 6 ld bc, 4 ld hl, wd03f ld a, [hli] ld h, [hl] ld l, a ld a, [EngineBuffer1] call GetFarByte inc hl ld [de], a inc de .asm_1346f ld a, [EngineBuffer1] call GetFarByte ld [de], a inc de add hl, bc cp $ff jr nz, .asm_1346f ret ; 1347d Function1347d: ; 1347d ld hl, wd03f ld a, [hli] ld h, [hl] ld l, a ld a, [EngineBuffer1] call GetFarByte ld c, a inc hl ld a, [BackupMapGroup] ld d, a ld a, [BackupMapNumber] ld e, a ld b, $0 .asm_13495 ld a, [EngineBuffer1] call GetFarByte cp $ff jr z, .asm_134be rept 2 inc hl endr ld a, [EngineBuffer1] call GetFarByte inc hl cp d jr nz, .asm_134b7 ld a, [EngineBuffer1] call GetFarByte inc hl cp e jr nz, .asm_134b8 jr .asm_134bb .asm_134b7 inc hl .asm_134b8 inc b jr .asm_13495 .asm_134bb xor a ld a, b ret .asm_134be scf ret ; 134c0 Function134c0: ; 134c0 push af ld hl, wd03f ld a, [hli] ld h, [hl] ld l, a inc hl pop af ld bc, 4 call AddNTimes inc hl ld de, wdcac ld a, [EngineBuffer1] ld bc, 3 call FarCopyBytes ret ; 134dd Function134dd: ; 134dd call LoadMenuDataHeader_0x1d75 ld hl, Elevator_WhichFloorText call PrintText call Elevator_GetCurrentFloorText ld hl, Elevator_MenuDataHeader call CopyMenuDataHeader call Function352f call UpdateSprites xor a ld [wd0e4], a call Function350c call WriteBackup ld a, [wcf73] cp $2 jr z, .asm_1350b xor a ld a, [wcf77] ret .asm_1350b scf ret ; 1350d Elevator_WhichFloorText: ; 0x1350d ; Which floor? text_jump UnknownText_0x1bd2bc db "@" ; 0x13512 Elevator_GetCurrentFloorText: ; 13512 ld hl, Options ld a, [hl] push af set 4, [hl] hlcoord 0, 0 ld b, $4 ld c, $8 call TextBox hlcoord 1, 2 ld de, Elevator_CurrentFloorText call PlaceString hlcoord 4, 4 call Elevator_GetCurrentFloorString pop af ld [Options], a ret ; 13537 Elevator_CurrentFloorText: ; 13537 db "Now on:@" ; 1353f Elevator_GetCurrentFloorString: ; 1353f push hl ld a, [wd041] ld e, a ld d, 0 ld hl, wd0f1 add hl, de ld a, [hl] pop de call GetFloorString ret ; 13550 Elevator_MenuDataHeader: ; 0x13550 db $40 ; flags db 01, 12 ; start coords db 09, 18 ; end coords dw Elevator_MenuData2 db 1 ; default option ; 0x13558 Elevator_MenuData2: ; 0x13558 db $10 ; flags db 4, 0 ; rows, columns db 1 ; horizontal spacing dbw 0, OBPals + 8 * 6 dba GetElevatorFlorStrings dba NULL dba NULL ; 13568 GetElevatorFlorStrings: ; 13568 ld a, [MenuSelection] GetFloorString: ; 1356b push de call FloorToString ld d, h ld e, l pop hl jp PlaceString ; 13575 FloorToString: ; 13575 push de ld e, a ld d, 0 ld hl, .floors rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a pop de ret ; 13583 .floors dw .b4f dw .b3f dw .b2f dw .b1f dw ._1f dw ._2f dw ._3f dw ._4f dw ._5f dw ._6f dw ._7f dw ._8f dw ._9f dw ._10f dw ._11f dw .roof .b4f db "B4F@" .b3f db "B3F@" .b2f db "B2F@" .b1f db "B1F@" ._1f db "1F@" ._2f db "2F@" ._3f db "3F@" ._4f db "4F@" ._5f db "5F@" ._6f db "6F@" ._7f db "7F@" ._8f db "8F@" ._9f db "9F@" ._10f db "10F@" ._11f db "11F@" .roof db "ROOF@" ; 135db Special_GiveParkBalls: ; 135db xor a ld [wContestMon], a ld a, 20 ld [wdc79], a callba StartBugContestTimer ret ; 135eb BugCatchingContestBattleScript:: ; 0x135eb writecode VAR_BATTLETYPE, BATTLETYPE_CONTEST battlecheck startbattle returnafterbattle copybytetovar wdc79 iffalse BugCatchingContestOutOfBallsScript end ; 0x135f8 BugCatchingContestOverScript:: ; 0x135f8 playsound SFX_ELEVATOR_END loadfont writetext UnknownText_0x1360f closetext jump BugCatchingContestReturnToGateScript ; 0x13603 BugCatchingContestOutOfBallsScript: ; 0x13603 playsound SFX_ELEVATOR_END loadfont writetext UnknownText_0x13614 closetext BugCatchingContestReturnToGateScript: ; 0x1360b loadmovesprites jumpstd bugcontestresultswarp ; 0x1360f UnknownText_0x1360f: ; 0x1360f ; ANNOUNCER: BEEEP! Time's up! text_jump UnknownText_0x1bd2ca db "@" ; 0x13614 UnknownText_0x13614: ; 0x13614 ; ANNOUNCER: The Contest is over! text_jump UnknownText_0x1bd2e7 db "@" ; 0x13619 RepelWoreOffScript:: ; 0x13619 loadfont writetext UnknownText_0x13620 closetext loadmovesprites end ; 0x13620 UnknownText_0x13620: ; 0x13620 ; REPEL's effect wore off. text_jump UnknownText_0x1bd308 db "@" ; 0x13625 SignpostItemScript:: ; 0x13625 loadfont copybytetovar Unkn2Pals itemtotext 0, 0 writetext UnknownText_0x13645 giveitem -1 iffalse UnknownScript_0x1363e callasm SetMemEvent specialsound itemnotify jump UnknownScript_0x13643 ; 0x1363e UnknownScript_0x1363e: ; 0x1363e keeptextopen writetext UnknownText_0x1364a closetext UnknownScript_0x13643: ; 13643 loadmovesprites end ; 0x13645 UnknownText_0x13645: ; 0x13645 ; found @ ! text_jump UnknownText_0x1bd321 db "@" ; 0x1364a UnknownText_0x1364a: ; 0x1364a ; But has no space left… text_jump UnknownText_0x1bd331 db "@" ; 0x1364f SetMemEvent: ; 1364f ld hl, EngineBuffer1 ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput) ld a, [hli] ld d, [hl] ld e, a ld b, SET_FLAG call EventFlagAction ret CheckFacingTileForStd:: ; 1365b ; Checks to see if the tile you're facing has a std script associated with it. If so, executes the script and returns carry. ld a, c ld de, 3 ld hl, .table1 call IsInArray jr nc, .notintable ld a, jumpstd_command ld [wd03f], a inc hl ld a, [hli] ld [wd03f + 1], a ld a, [hli] ld [wd03f + 2], a ld a, BANK(Script_JumpStdFromRAM) ld hl, Script_JumpStdFromRAM call CallScript scf ret .notintable xor a ret ; 13681 .table1 dbw $91, magazinebookshelf dbw $93, pcscript dbw $94, radio1 dbw $95, townmap dbw $96, merchandiseshelf dbw $97, tv dbw $9d, window dbw $9f, incenseburner db $ff ; end ; 1369a Script_JumpStdFromRAM: ; 0x1369a jump wd03f ; 0x1369d _BugContestJudging: ; 1369d call ContestScore callba MobileFn_105f79 call Function13819 ld a, [wd00a] call LoadContestantName ld a, [wd00b] ld [wd265], a call GetPokemonName ld hl, BugContest_ThirdPlaceText call PrintText ld a, [EndFlypoint] call LoadContestantName ld a, [MovementBuffer] ld [wd265], a call GetPokemonName ld hl, BugContest_SecondPlaceText call PrintText ld a, [DefaultFlypoint] call LoadContestantName ld a, [wd003] ld [wd265], a call GetPokemonName ld hl, BugContest_FirstPlaceText call PrintText jp Function13807 ; 136eb BugContest_FirstPlaceText: ; 0x136eb text_jump ContestJudging_FirstPlaceText start_asm BugContest_FirstPlace: ; 136f0 ld de, SFX_1ST_PLACE call PlaySFX call WaitSFX ld hl, BugContest_FirstPlaceScoreText ret ; 136fd BugContest_FirstPlaceScoreText: ; 0x136fd ; The winning score was @ points! text_jump ContestJudging_FirstPlaceScoreText db "@" ; 0x13702 BugContest_SecondPlaceText: ; 0x13702 ; Placing second was @ , who caught a @ !@ @ text_jump ContestJudging_SecondPlaceText start_asm BugContest_SecondPlace: ; 13707 ld de, SFX_2ND_PLACE call PlaySFX call WaitSFX ld hl, BugContest_SecondPlaceScoreText ret ; 13714 BugContest_SecondPlaceScoreText: ; 0x13714 ; The score was @ points! text_jump ContestJudging_SecondPlaceScoreText db "@" ; 0x13719 BugContest_ThirdPlaceText: ; 0x13719 ; Placing third was @ , who caught a @ !@ @ text_jump ContestJudging_ThirdPlaceText start_asm ; 0x1371e BugContest_ThirdPlace: ; 1371e ld de, SFX_3RD_PLACE call PlaySFX call WaitSFX ld hl, BugContest_ThirdPlaceScoreText ret ; 1372b BugContest_ThirdPlaceScoreText: ; 0x1372b ; The score was @ points! text_jump ContestJudging_ThirdPlaceScoreText db "@" ; 0x13730 LoadContestantName: ; 13730 ; If a = 0, get your name. dec a jr z, .done ; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a. ld c, a ld b, 0 ld hl, BugContestantPointers rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ; Copy the Trainer Class to c. ld a, [hli] ld c, a ; Save hl and bc for later. push hl push bc ; Get the Trainer Class name and copy it into wd016. callab GetTrainerClassName ld hl, StringBuffer1 ld de, wd016 ld bc, TRAINER_CLASS_NAME_LENGTH call CopyBytes ld hl, wd016 ; Delete the trailing terminator and replace it with a space. .next ld a, [hli] cp "@" jr nz, .next dec hl ld [hl], " " inc hl ld d, h ld e, l ; Restore the Trainer Class ID and Trainer ID pointer. Save de for later. pop bc pop hl push de ; Get the name of the trainer with class c and ID b. ld a, [hl] ld b, a callab GetTrainerName ; Append the name to wd016. ld hl, StringBuffer1 pop de ld bc, NAME_LENGTH - 1 jp CopyBytes .done ld hl, PlayerName ld de, wd016 ld bc, NAME_LENGTH jp CopyBytes ; 13783 BugContestantPointers: ; 13783 dw BugContestant_BugCatcherDon ; This reverts back to the player dw BugContestant_BugCatcherDon dw BugContestant_BugCatcherEd dw BugContestant_CooltrainerMNick dw BugContestant_PokefanMWilliam dw BugContestant_BugCatcherBenny dw BugContestant_CamperBarry dw BugContestant_PicnickerCindy dw BugContestant_BugCatcherJosh dw BugContestant_YoungsterSamuel dw BugContestant_SchoolboyKipp ; 13799 BugContestant_BugCatcherDon: db BUG_CATCHER, DON dbw KAKUNA, 300 dbw METAPOD, 285 dbw CATERPIE, 226 BugContestant_BugCatcherEd: db BUG_CATCHER, ED dbw BUTTERFREE, 286 dbw BUTTERFREE, 251 dbw CATERPIE, 237 BugContestant_CooltrainerMNick: db COOLTRAINERM, NICK dbw SCYTHER, 357 dbw BUTTERFREE, 349 dbw PINSIR, 368 BugContestant_PokefanMWilliam: db POKEFANM, WILLIAM dbw PINSIR, 332 dbw BUTTERFREE, 324 dbw VENONAT, 321 BugContestant_BugCatcherBenny: db BUG_CATCHER, BUG_CATCHER_BENNY dbw BUTTERFREE, 318 dbw WEEDLE, 295 dbw CATERPIE, 285 BugContestant_CamperBarry: db CAMPER, BARRY dbw PINSIR, 366 dbw VENONAT, 329 dbw KAKUNA, 314 BugContestant_PicnickerCindy: db PICNICKER, CINDY dbw BUTTERFREE, 341 dbw METAPOD, 301 dbw CATERPIE, 264 BugContestant_BugCatcherJosh: db BUG_CATCHER, JOSH dbw SCYTHER, 326 dbw BUTTERFREE, 292 dbw METAPOD, 282 BugContestant_YoungsterSamuel: db YOUNGSTER, SAMUEL dbw WEEDLE, 270 dbw PINSIR, 282 dbw CATERPIE, 251 BugContestant_SchoolboyKipp: db SCHOOLBOY, KIPP dbw VENONAT, 267 dbw PARAS, 254 dbw KAKUNA, 259 ; 13807 Function13807: ; 13807 ld hl, wd00a ld de, -4 ld b, 3 .loop ld a, [hl] cp 1 jr z, .done add hl, de dec b jr nz, .loop .done ret ; 13819 Function13819: ; 13819 call Function13833 call Function138b0 ld hl, wd00e ld a, 1 ld [hli], a ld a, [wContestMon] ld [hli], a ld a, [hProduct] ld [hli], a ld a, [hMultiplicand] ld [hl], a call Function1383e ret ; 13833 Function13833: ; 13833 ld hl, DefaultFlypoint ld b, 12 xor a .loop ld [hli], a dec b jr nz, .loop ret ; 1383e Function1383e: ; 1383e ld de, wd010 ld hl, wd004 ld c, 2 call StringCmp jr c, .next ld hl, EndFlypoint ld de, wd00a ld bc, 4 call CopyBytes ld hl, DefaultFlypoint ld de, EndFlypoint ld bc, 4 call CopyBytes ld hl, DefaultFlypoint call Function138a0 jr .done .next ld de, wd010 ld hl, wd008 ld c, 2 call StringCmp jr c, .next2 ld hl, EndFlypoint ld de, wd00a ld bc, 4 call CopyBytes ld hl, EndFlypoint call Function138a0 jr .done .next2 ld de, wd010 ld hl, wd00c ld c, 2 call StringCmp jr c, .done ld hl, wd00a call Function138a0 .done ret ; 138a0 Function138a0: ; 138a0 ld de, wd00e 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 [hl], a ret ; 138b0 Function138b0: ; 138b0 ld e, 0 .loop push de call Special_CheckBugContestContestantFlag pop de jr nz, .done ld a, e rept 2 inc a endr ld [wd00e], a dec a ld c, a ld b, 0 ld hl, BugContestantPointers rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a rept 2 inc hl endr .loop2 call Random and 3 cp 3 jr z, .loop2 ld c, a ld b, 0 rept 3 add hl, bc endr ld a, [hli] ld [wd00f], a ld a, [hli] ld h, [hl] ld l, a call Random and 7 ld c, a ld b, 0 add hl, bc ld a, h ld [wd010], a ld a, l ld [wd011], a push de call Function1383e pop de .done inc e ld a, e cp 10 jr nz, .loop ret ; 13900 ContestScore: ; 13900 ; Determine the player's score in the Bug Catching Contest. xor a ld [hProduct], a ld [hMultiplicand], a ld a, [wContestMonSpecies] ; Species and a jr z, .done ; Tally the following: ; Max HP * 4 ld a, [wContestMonMaxHP + 1] call .AddContestStat ld a, [wContestMonMaxHP + 1] call .AddContestStat ld a, [wContestMonMaxHP + 1] call .AddContestStat ld a, [wContestMonMaxHP + 1] call .AddContestStat ; Stats ld a, [wContestMonAttack + 1] call .AddContestStat ld a, [wContestMonDefense + 1] call .AddContestStat ld a, [wContestMonSpeed + 1] call .AddContestStat ld a, [wContestMonSpclAtk + 1] call .AddContestStat ld a, [wContestMonSpclDef + 1] call .AddContestStat ; DVs ld a, [wContestMonDVs + 0] ld b, a and 2 rept 2 add a endr ld c, a swap b ld a, b and 2 add a add c ld d, a ld a, [wContestMonDVs + 1] ld b, a and 2 ld c, a swap b ld a, b and 2 srl a rept 2 add c endr rept 2 add d endr call .AddContestStat ; Remaining HP / 8 ld a, [wContestMonHP + 1] srl a srl a srl a call .AddContestStat ; Whether it's holding an item ld a, [wContestMonItem] and a jr z, .done ld a, 1 call .AddContestStat .done ret ; 1397f .AddContestStat: ; 1397f ld hl, hMultiplicand add [hl] ld [hl], a ret nc dec hl inc [hl] ret ; 13988 ; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured. ApplyPokerusTick: ; 13988 ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS ld a, [PartyCount] and a ret z ld c, a .loop ld a, [hl] and $f jr z, .does_not_have_pokerus sub b jr nc, .ok xor a .ok ld d, a ld a, [hl] and $f0 add d ld [hl], a .does_not_have_pokerus ld de, PARTYMON_STRUCT_LENGTH add hl, de dec c jr nz, .loop ret ; 139a8 Special_SelectRandomBugContestContestants: ; 139a8 ; Select five random people to participate in the current contest. ; First we have to make sure that any old data is cleared away. ld c, 10 ; Number of people to choose from. ld hl, BugCatchingContestantEventFlagTable .loop1 push bc push hl ld e, [hl] inc hl ld d, [hl] ld b, RESET_FLAG call EventFlagAction pop hl rept 2 inc hl endr pop bc dec c jr nz, .loop1 ; Now that that's out of the way, we can get on to the good stuff. ld c, 5 .loop2 push bc .next ; Choose a flag at uniform random to be set. call Random cp $fa ; 250 jr nc, .next ld c, $19 ; 25 call SimpleDivide ld e, b ld d, 0 ld hl, BugCatchingContestantEventFlagTable rept 2 add hl, de endr ld e, [hl] inc hl ld d, [hl] push de ; If we've already set it, it doesn't count. ld b, CHECK_FLAG call EventFlagAction pop de ld a, c and a jr nz, .next ; Set the flag. This will cause that sprite to not be visible in the contest. ld b, SET_FLAG call EventFlagAction pop bc ; Check if we're done. If so, return. Otherwise, choose the next victim. dec c jr nz, .loop2 ret ; 139ed Special_CheckBugContestContestantFlag: ; 139ed ; Checks the flag of the Bug Catching Contestant whose index is loaded in a. ; Bug: If a >= 10 when this is called, it will read beyond the table. ld hl, BugCatchingContestantEventFlagTable ld e, a ld d, 0 rept 2 add hl, de endr ld e, [hl] inc hl ld d, [hl] ld b, CHECK_FLAG call EventFlagAction ret ; 139fe BugCatchingContestantEventFlagTable: ; 139fe dw EVENT_BUG_CATCHING_CONTESTANT_1A dw EVENT_BUG_CATCHING_CONTESTANT_2A dw EVENT_BUG_CATCHING_CONTESTANT_3A dw EVENT_BUG_CATCHING_CONTESTANT_4A dw EVENT_BUG_CATCHING_CONTESTANT_5A dw EVENT_BUG_CATCHING_CONTESTANT_6A dw EVENT_BUG_CATCHING_CONTESTANT_7A dw EVENT_BUG_CATCHING_CONTESTANT_8A dw EVENT_BUG_CATCHING_CONTESTANT_9A dw EVENT_BUG_CATCHING_CONTESTANT_10A ; 13a12 CheckFirstMonFainted: ; 13a12 ld hl, PartyMon1HP ld a, [hli] or [hl] jr z, .fainted ld hl, PartyCount ld a, 1 ld [hli], a inc hl ld a, [hl] ld [wdf9b], a ld [hl], $ff xor a ld [ScriptVar], a ret .fainted ld a, $1 ld [ScriptVar], a ret ; 13a31 ContestReturnMons: ; 13a31 ld hl, PartySpecies + 1 ld a, [wdf9b] ld [hl], a ld b, $1 .asm_13a3a ld a, [hli] cp $ff jr z, .asm_13a42 inc b jr .asm_13a3a .asm_13a42 ld a, b ld [PartyCount], a ret ; 13a47 Function13a47: ; unreferenced ld hl, PartyCount ld a, [hl] and a ret z cp PARTY_LENGTH + 1 jr c, .asm_13a54 ld a, PARTY_LENGTH ld [hl], a .asm_13a54 inc hl ld b, a ld c, 0 .asm_13a58 ld a, [hl] and a jr z, .asm_13a64 cp $fc jr z, .asm_13a64 cp $fe jr c, .asm_13a73 .asm_13a64 ld [hl], SMEARGLE push hl push bc ld a, c ld hl, PartyMon1Species call GetPartyLocation ld [hl], SMEARGLE pop bc pop hl .asm_13a73 inc hl inc c dec b jr nz, .asm_13a58 ld [hl], $ff ld hl, PartyMon1 ld a, [PartyCount] ld d, a ld e, 0 .asm_13a83 push de push hl ld b, h ld c, l ld a, [hl] and a jr z, .asm_13a8f cp NUM_POKEMON + 1 jr c, .asm_13a9c .asm_13a8f ld [hl], SMEARGLE push de ld d, 0 ld hl, PartySpecies add hl, de pop de ld a, SMEARGLE ld [hl], a .asm_13a9c ld [CurSpecies], a call GetBaseData ld hl, MON_LEVEL add hl, bc ld a, [hl] cp MIN_LEVEL ld a, MIN_LEVEL jr c, .asm_13ab4 ld a, [hl] cp MAX_LEVEL jr c, .asm_13ab5 ld a, MAX_LEVEL .asm_13ab4 ld [hl], a .asm_13ab5 ld [CurPartyLevel], a ld hl, MON_MAXHP add hl, bc ld d, h ld e, l ld hl, MON_EXP + 2 add hl, bc ld b, $1 predef CalcPkmnStats pop hl ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop de inc e dec d jr nz, .asm_13a83 ld de, PartyMonNicknames ld a, [PartyCount] ld b, a ld c, 0 .asm_13adc push bc call Function13b71 push de callba Function17d073 pop hl pop bc jr nc, .asm_13b0e push bc push hl ld hl, PartySpecies push bc ld b, 0 add hl, bc pop bc ld a, [hl] cp EGG ld hl, String_13b6b jr z, .asm_13b06 ld [wd265], a call GetPokemonName ld hl, StringBuffer1 .asm_13b06 pop de ld bc, PKMN_NAME_LENGTH call CopyBytes pop bc .asm_13b0e inc c dec b jr nz, .asm_13adc ld de, PartyMonOT ld a, [PartyCount] ld b, a ld c, 0 .asm_13b1b push bc call Function13b71 push de callba Function17d073 pop hl jr nc, .asm_13b34 ld d, h ld e, l ld hl, PlayerName ld bc, NAME_LENGTH call CopyBytes .asm_13b34 pop bc inc c dec b jr nz, .asm_13b1b ld hl, PartyMon1Moves ld a, [PartyCount] ld b, a .asm_13b40 push hl ld c, NUM_MOVES ld a, [hl] and a jr z, .asm_13b4b cp NUM_ATTACKS + 1 jr c, .asm_13b4d .asm_13b4b ld [hl], POUND .asm_13b4d ld a, [hl] and a jr z, .asm_13b55 cp NUM_ATTACKS + 1 jr c, .asm_13b5c .asm_13b55 xor a ld [hli], a dec c jr nz, .asm_13b55 jr .asm_13b60 .asm_13b5c inc hl dec c jr nz, .asm_13b4d .asm_13b60 pop hl push bc ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc dec b jr nz, .asm_13b40 ret ; 13b6b String_13b6b: ; 13b6b db "タマゴ@@@" ; 13b71 Function13b71: ; 13b71 push de ld c, 1 ld b, 6 .asm_13b76 ld a, [de] cp "@" jr z, .asm_13b85 inc de inc c dec b jr nz, .asm_13b76 dec c dec de ld a, "@" ld [de], a .asm_13b85 pop de ret ; 13b87 GetSquareRoot: ; 13b87 ; Return the square root of de in b. ; Rather than calculating the result, we take the index of the ; first value in a table of squares that isn't lower than de. ld hl, Squares ld b, 0 .loop ; Make sure we don't go past the end of the table. inc b ld a, b cp $ff ret z ; Iterate over the table until b**2 >= de. ld a, [hli] sub e ld a, [hli] sbc d jr c, .loop ret Squares: ; 13b98 root set 1 rept $ff dw root*root root set root+1 endr ; 13d96 SECTION "bank5", ROMX, BANK[$5] StopRTC: ; Unreferenced??? ld a, SRAM_ENABLE ld [MBC3SRamEnable], a call LatchClock ld a, RTC_DH ld [MBC3SRamBank], a ld a, [MBC3RTC] set 6, a ; halt ld [MBC3RTC], a call CloseSRAM ret ; 14019 StartRTC: ; 14019 ld a, SRAM_ENABLE ld [MBC3SRamEnable], a call LatchClock ld a, RTC_DH ld [MBC3SRamBank], a ld a, [MBC3RTC] res 6, a ; halt ld [MBC3RTC], a call CloseSRAM ret ; 14032 GetTimeOfDay:: ; 14032 ; get time of day based on the current hour ld a, [hHours] ; hour ld hl, TimesOfDay .check ; if we're within the given time period, ; get the corresponding time of day cp [hl] jr c, .match ; else, get the next entry rept 2 inc hl endr ; try again jr .check .match ; get time of day inc hl ld a, [hl] ld [TimeOfDay], a ret ; 14044 TimesOfDay: ; 14044 ; hours for the time of day ; 04-09 morn | 10-17 day | 18-03 nite db 04, NITE db 10, MORN db 18, DAY db 24, NITE db -1, MORN ; 1404e Unknown_1404e: ; Unreferenced db 20, 2 db 40, 0 db 60, 1 db -1, 0 ; 14056 Function14056: ; 14056 call UpdateTime ld hl, wRTC ld a, [CurDay] ld [hli], a ld a, [hHours] ld [hli], a ld a, [hMinutes] ld [hli], a ld a, [hSeconds] ld [hli], a ret ; 1406a Function1406a: ; 1406a ld a, $a ld [MBC3SRamEnable], a call LatchClock ld hl, MBC3RTC ld a, $c ld [MBC3SRamBank], a res 7, [hl] ld a, BANK(s0_ac60) ld [MBC3SRamBank], a xor a ld [s0_ac60], a call CloseSRAM ret ; 14089 StartClock:: ; 14089 call GetClock call Function1409b call FixDays jr nc, .asm_14097 call Function6d3 .asm_14097 call StartRTC ret ; 1409b Function1409b: ; 1409b ld hl, hRTCDayHi bit 7, [hl] jr nz, .asm_140a8 bit 6, [hl] jr nz, .asm_140a8 xor a ret .asm_140a8 ld a, $80 call Function6d3 ret ; 140ae Function140ae: ; 140ae call Function6e3 ld c, a and %11000000 jr nz, .asm_140c8 ld a, c and %00100000 jr z, .asm_140eb call UpdateTime ld a, [wRTC + 0] ld b, a ld a, [CurDay] cp b jr c, .asm_140eb .asm_140c8 callba ClearDailyTimers callba Function170923 ld a, $5 call GetSRAMBank ld a, [$aa8c] inc a ld [$aa8c], a ld a, [$b2fa] inc a ld [$b2fa], a call CloseSRAM ret .asm_140eb xor a ret ; 140ed Function140ed:: ; 140ed call GetClock call FixDays ld hl, hRTCSeconds ld de, StartSecond ld a, [StringBuffer2 + 3] sub [hl] dec hl jr nc, .asm_14102 add 60 .asm_14102 ld [de], a dec de ld a, [StringBuffer2 + 2] sbc [hl] dec hl jr nc, .asm_1410d add 60 .asm_1410d ld [de], a dec de ld a, [StringBuffer2 + 1] sbc [hl] dec hl jr nc, .asm_14118 add 24 .asm_14118 ld [de], a dec de ld a, [StringBuffer2] sbc [hl] dec hl jr nc, .asm_14128 add 140 ld c, 7 call SimpleDivide .asm_14128 ld [de], a ret ; 1412a INCLUDE "engine/sprites.asm" Function1499a:: ; 1499a ld a, [PlayerStandingTile] cp $60 jr z, .asm_149ad cp $68 jr z, .asm_149ad and $f0 cp $70 jr z, .asm_149ad and a ret .asm_149ad scf ret ; 149af Function149af:: ; 149af ld a, [PlayerStandingTile] cp $70 jr z, .asm_149c4 cp $76 jr z, .asm_149c4 cp $78 jr z, .asm_149c4 cp $7e jr z, .asm_149c4 scf ret .asm_149c4 xor a ret ; 149c6 CheckWarpCollision: ; 149c6 ld de, 1 ld hl, .blocks ld a, [PlayerStandingTile] call IsInArray ret ; 149d3 .blocks: ; 149d3 db $71 ; door db $79 db $7a ; stairs db $73 db $7b ; cave entrance db $74 db $7c ; warp pad db $75 db $7d db -1 ; 149dd CheckGrassCollision:: ; 149dd ld a, [PlayerStandingTile] ld hl, .blocks ld de, 1 call IsInArray ret ; 149ea .blocks: ; 149ea db $08 db $18 ; tall grass db $14 ; tall grass db $28 db $29 db $48 db $49 db $4a db $4b db $4c db -1 ; 149f5 CheckCutCollision: ; 149f5 ld a, c ld hl, .blocks ld de, 1 call IsInArray ret ; 14a00 .blocks: ; 14a00 db $12 ; cut tree db $1a ; cut tree db $10 ; tall grass db $18 ; tall grass db $14 ; tall grass db $1c ; tall grass db -1 ; 14a07 Function14a07:: ; 14a07 ld a, [PlayerStandingTile] ld de, $1f cp $71 ; door ret z ld de, $13 cp $7c ; warp pad ret z ld de, $23 ret ; 14a1a INCLUDE "engine/save.asm" 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 Function2ead 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 Function2173 call Function321c call UpdateSprites call Function156b8 ld c, $0 ret .asm_156f9 call WhiteBGMap 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 4, 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 LoadMenuDataHeader_0x1d75 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 LoadMenuDataHeader_0x1d75 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 LoadMenuDataHeader_0x1d75 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 Function350c 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 OpenMartDialog:: ; 15a45 call GetMart ld a, c ld [EngineBuffer1], a call LoadMartPointer ld a, [EngineBuffer1] ld hl, .dialogs rst JumpTable ret ; 15a57 .dialogs dw MartDialog dw HerbShop dw BargainShop dw Pharmacist dw RooftopSale ; 15a61 MartDialog: ; 15a61 ld a, 0 ld [EngineBuffer1], a xor a ld [MovementAnimation], a call StandardMart ret ; 15a6e HerbShop: ; 15a6e call ReadMart call LoadMenuDataHeader_0x1d75 ld hl, UnknownText_0x15e4a call Function15fcd call Function15c62 ld hl, UnknownText_0x15e68 call Function15fcd ret ; 15a84 BargainShop: ; 15a84 ld b, BANK(BargainShopData) ld de, BargainShopData call LoadMartPointer call Function15c25 call LoadMenuDataHeader_0x1d75 ld hl, UnknownText_0x15e6d call Function15fcd call Function15c62 ld hl, WalkingDirection ld a, [hli] or [hl] jr z, .asm_15aa7 ld hl, DailyFlags set 6, [hl] .asm_15aa7 ld hl, UnknownText_0x15e8b call Function15fcd ret ; 15aae Pharmacist: ; 15aae call ReadMart call LoadMenuDataHeader_0x1d75 ld hl, UnknownText_0x15e90 call Function15fcd call Function15c62 ld hl, UnknownText_0x15eae call Function15fcd ret ; 15ac4 RooftopSale: ; 15ac4 ld b, BANK(RooftopSaleData1) ld de, RooftopSaleData1 ld hl, StatusFlags bit 6, [hl] ; hall of fame jr z, .ok ld b, BANK(RooftopSaleData2) ld de, RooftopSaleData2 .ok call LoadMartPointer call Function15c25 call LoadMenuDataHeader_0x1d75 ld hl, UnknownText_0x15f83 call Function15fcd call Function15c62 ld hl, UnknownText_0x15fb4 call Function15fcd ret ; 15aee RooftopSaleData1: ; 15aee db 5 dbw POKE_BALL, 150 dbw GREAT_BALL, 500 dbw SUPER_POTION, 500 dbw FULL_HEAL, 500 dbw REVIVE, 1200 db -1 RooftopSaleData2: ; 15aff db 5 dbw HYPER_POTION, 1000 dbw FULL_RESTORE, 2000 dbw FULL_HEAL, 500 dbw ULTRA_BALL, 1000 dbw PROTEIN, 7800 db -1 ; 15b10 LoadMartPointer: ; 15b10 ld a, b ld [MartPointerBank], a ld a, e ld [MartPointer], a ld a, d ld [MartPointer + 1], a ld hl, CurMart xor a ld bc, 16 call ByteFill xor a ld [MovementAnimation], a ld [WalkingDirection], a ld [FacingDirection], a ret ; 15b31 GetMart: ; 15b31 ld a, e cp (MartsEnd - Marts) / 2 jr c, .IsAMart ld b, $5 ld de, DefaultMart ret .IsAMart ld hl, Marts rept 2 add hl, de endr ld e, [hl] inc hl ld d, [hl] ld b, $5 ret ; 15b47 StandardMart: ; 15b47 .loop ld a, [MovementAnimation] ld hl, .MartFunctions rst JumpTable ld [MovementAnimation], a cp $ff jr nz, .loop ret .MartFunctions dw .HowMayIHelpYou dw .TopMenu dw .Buy dw .Sell dw .Quit dw .AnythingElse ; 15b62 .HowMayIHelpYou: ; 15b62 call LoadMenuDataHeader_0x1d75 ld hl, UnknownText_0x15f83 call PrintText ld a, $1 ret ; 15b6e .TopMenu: ; 15b6e ld hl, MenuDataHeader_0x15f88 call CopyMenuDataHeader call InterpretMenu2 jr c, .quit ld a, [MenuSelection2] cp $1 jr z, .buy cp $2 jr z, .sell .quit ld a, $4 ret .buy ld a, $2 ret .sell ld a, $3 ret ; 15b8d .Buy: ; 15b8d call ExitMenu call ReadMart call Function15c62 and a ld a, $5 ret ; 15b9a .Sell: ; 15b9a call ExitMenu call Function15eb3 ld a, $5 ret ; 15ba3 .Quit: ; 15ba3 call ExitMenu ld hl, UnknownText_0x15fb4 call Function15fcd ld a, $ff ret ; 15baf .AnythingElse: ; 15baf call LoadMenuDataHeader_0x1d75 ld hl, UnknownText_0x15fb9 call PrintText ld a, $1 ret ; 15bbb ReadMart: ; 15bbb ld hl, MartPointer ld a, [hli] ld h, [hl] ld l, a ld de, CurMart .CopyMart ld a, [MartPointerBank] call GetFarByte ld [de], a inc hl inc de cp -1 jr nz, .CopyMart ld hl, DefaultFlypoint ld de, CurMart + 1 .ReadMartItem ld a, [de] inc de cp -1 jr z, .done push de call GetMartItemPrice pop de jr .ReadMartItem .done ret ; 15be5 GetMartItemPrice: ; 15be5 ; Return the price of item a in BCD at hl and in tiles at StringBuffer1. push hl ld [CurItem], a callba GetItemPrice pop hl GetMartPrice: ; 15bf0 ; Return price de in BCD at hl and in tiles at StringBuffer1. push hl ld a, d ld [StringBuffer2], a ld a, e ld [StringBuffer2 + 1], a ld hl, StringBuffer1 ld de, StringBuffer2 lb bc, PRINTNUM_LEADINGZEROS | 2, 6 ; 6 digits call PrintNum pop hl ld de, StringBuffer1 ld c, 6 / 2 ; 6 digits .loop call .TileToNum swap a ld b, a call .TileToNum or b ld [hli], a dec c jr nz, .loop ret ; 15c1a .TileToNum ; 15c1a ld a, [de] inc de cp " " jr nz, .asm_15c22 ld a, "0" .asm_15c22 sub "0" ret ; 15c25 Function15c25: ; 15c25 ld hl, MartPointer ld a, [hli] ld h, [hl] ld l, a push hl inc hl ld bc, wd002 ld de, CurMart + 1 .loop ld a, [hli] ld [de], a inc de cp -1 jr z, .done push de ld a, [hli] ld e, a ld a, [hli] ld d, a push hl ld h, b ld l, c call GetMartPrice ld b, h ld c, l pop hl pop de jr .loop .done pop hl ld a, [hl] ld [CurMart], a ret ; 15c51 BargainShopData: ; 15c51 db 5 dbw NUGGET, 4500 dbw PEARL, 650 dbw BIG_PEARL, 3500 dbw STARDUST, 900 dbw STAR_PIECE, 4600 db -1 ; 15c62 Function15c62: ; 15c62 call FadeToMenu callba Function8000 xor a ld [WalkingY], a ld a, 1 ld [WalkingX], a .asm_15c74 call Function15cef jr nc, .asm_15c74 call Function2b3c ret ; 15c7d Function15c7d: ; 15c7d push af call Function15ca3 ld a, [hli] ld h, [hl] ld l, a pop af ld e, a ld d, 0 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a call PrintText ret ; 15c91 Function15c91: ; 15c91 call Function15ca3 rept 2 inc hl endr ld a, [hl] and a jp z, Function15d83 cp 1 jp z, Function15da5 jp Function15de2 ; 15ca3 Function15ca3: ; 15ca3 ld a, [EngineBuffer1] ld e, a ld d, 0 ld hl, .data_15cb0 rept 3 add hl, de endr ret ; 15cb0 .data_15cb0 ; 15cb0 dwb Unknown_15cbf, 0 dwb Unknown_15ccb, 0 dwb Unknown_15cd7, 1 dwb Unknown_15ce3, 0 dwb Unknown_15cbf, 2 ; 15cbf Unknown_15cbf: ; 15cbf dw UnknownText_0x15e0e dw UnknownText_0x15e13 dw UnknownText_0x15fa5 dw UnknownText_0x15faa dw UnknownText_0x15fa0 dw Function15cef Unknown_15ccb: ; 15ccb dw UnknownText_0x15e4f dw UnknownText_0x15e54 dw UnknownText_0x15e63 dw UnknownText_0x15e5e dw UnknownText_0x15e59 dw Function15cef Unknown_15cd7: ; 15cd7 dw Function15cef dw UnknownText_0x15e72 dw UnknownText_0x15e86 dw UnknownText_0x15e7c dw UnknownText_0x15e77 dw UnknownText_0x15e81 Unknown_15ce3: ; 15ce3 dw UnknownText_0x15e95 dw UnknownText_0x15e9a dw UnknownText_0x15ea9 dw UnknownText_0x15ea4 dw UnknownText_0x15e9f dw Function15cef ; 15cef Function15cef: ; 15cef callba Function24ae8 call UpdateSprites ld hl, MenuDataHeader_0x15e18 call CopyMenuDataHeader ld a, [WalkingX] ld [wMenuCursorBuffer], a ld a, [WalkingY] ld [wd0e4], a call Function350c ld a, [wd0e4] ld [WalkingY], a ld a, [MenuSelection2] ld [WalkingX], a call SpeechTextBox ld a, [wcf73] cp $2 jr z, .asm_15d6d cp $1 jr z, .asm_15d27 .asm_15d27 call Function15c91 jr c, .asm_15d68 call Function15d97 jr c, .asm_15d68 ld de, Money ld bc, hMoneyTemp ld a, $3 call CompareMoney jr c, .asm_15d79 ld hl, NumItems call ReceiveItem jr nc, .asm_15d6f ld a, [wd107] ld e, a ld d, $0 ld b, $1 ld hl, WalkingDirection call FlagAction call Function15fc3 ld de, Money ld bc, hMoneyTemp call TakeMoney ld a, $4 call Function15c7d call JoyWaitAorB .asm_15d68 call SpeechTextBox and a ret .asm_15d6d scf ret .asm_15d6f ld a, $3 call Function15c7d call JoyWaitAorB and a ret .asm_15d79 ld a, $2 call Function15c7d call JoyWaitAorB and a ret ; 15d83 Function15d83: ; 15d83 ld a, $63 ld [wItemQuantityBuffer], a ld a, $0 call Function15c7d callba Function24fc9 call ExitMenu ret ; 15d97 Function15d97: ; 15d97 predef PartyMonItemName ld a, $1 call Function15c7d call YesNoBox ret ; 15da5 Function15da5: ; 15da5 ld a, $1 ld [wItemQuantityChangeBuffer], a ld a, [wd107] ld e, a ld d, $0 ld b, $2 ld hl, WalkingDirection call FlagAction ld a, c and a jr nz, .asm_15dd8 ld a, [wd107] ld e, a ld d, $0 ld hl, wd040 ld a, [hli] ld h, [hl] ld l, a inc hl rept 3 add hl, de endr inc hl ld a, [hli] ld [$ffc5], a ld a, [hl] ld [$ffc4], a xor a ld [hMoneyTemp], a and a ret .asm_15dd8 ld a, $5 call Function15c7d call JoyWaitAorB scf ret ; 15de2 Function15de2: ; 15de2 ld a, $0 call Function15c7d call Function15df9 ld a, $63 ld [wItemQuantityBuffer], a callba Function24fcf call ExitMenu ret ; 15df9 Function15df9: ; 15df9 ld a, [wd107] ld e, a ld d, 0 ld hl, wd040 ld a, [hli] ld h, [hl] ld l, a inc hl rept 3 add hl, de endr inc hl ld e, [hl] inc hl ld d, [hl] ret ; 15e0e UnknownText_0x15e0e: ; 0x15e0e ; How many? text_jump UnknownText_0x1c4bfd db "@" ; 0x15e13 UnknownText_0x15e13: ; 0x15e13 ; @ (S) will be ¥@ . text_jump UnknownText_0x1c4c08 db "@" ; 0x15e18 MenuDataHeader_0x15e18: ; 0x15e18 db $40 ; flags db 03, 01 ; start coords db 11, 19 ; end coords dw MenuData2_0x15e20 db 1 ; default option ; 0x15e20 MenuData2_0x15e20: ; 0x15e20 db $30 ; flags db 4, 8 ; rows, columns db 1 ; horizontal spacing dbw 0, OBPals + 8 * 6 dba PlaceMenuItemName dba Function15e30 dba Function244c3 ; 15e30 Function15e30: ; 15e30 ld a, [wcf77] ld c, a ld b, 0 ld hl, DefaultFlypoint rept 3 add hl, bc endr push de ld d, h ld e, l pop hl ld bc, $14 add hl, bc ld c, $a3 call PrintBCDNumber ret ; 15e4a (5:5e4a) UnknownText_0x15e4a: ; 0x15e4a ; Hello, dear. I sell inexpensive herbal medicine. They're good, but a trifle bitter. Your #MON may not like them. Hehehehe… text_jump UnknownText_0x1c4c28 db "@" ; 0x15e4f UnknownText_0x15e4f: ; 0x15e4f ; How many? text_jump UnknownText_0x1c4ca3 db "@" ; 0x15e54 UnknownText_0x15e54: ; 0x15e54 ; @ (S) will be ¥@ . text_jump UnknownText_0x1c4cae db "@" ; 0x15e59 UnknownText_0x15e59: ; 0x15e59 ; Thank you, dear. Hehehehe… text_jump UnknownText_0x1c4cce db "@" ; 0x15e5e UnknownText_0x15e5e: ; 0x15e5e ; Oh? Your PACK is full, dear. text_jump UnknownText_0x1c4cea db "@" ; 0x15e63 UnknownText_0x15e63: ; 0x15e63 ; Hehehe… You don't have the money. text_jump UnknownText_0x1c4d08 db "@" ; 0x15e68 UnknownText_0x15e68: ; 0x15e68 ; Come again, dear. Hehehehe… text_jump UnknownText_0x1c4d2a db "@" ; 0x15e6d UnknownText_0x15e6d: ; 0x15e6d ; Hiya! Care to see some bargains? I sell rare items that nobody else carries--but only one of each item. text_jump UnknownText_0x1c4d47 db "@" ; 0x15e72 UnknownText_0x15e72: ; 0x15e72 ; costs ¥@ . Want it? text_jump UnknownText_0x1c4db0 db "@" ; 0x15e77 UnknownText_0x15e77: ; 0x15e77 ; Thanks. text_jump UnknownText_0x1c4dcd db "@" ; 0x15e7c UnknownText_0x15e7c: ; 0x15e7c ; Uh-oh, your PACK is chock-full. text_jump UnknownText_0x1c4dd6 db "@" ; 0x15e81 UnknownText_0x15e81: ; 0x15e81 ; You bought that already. I'm all sold out of it. text_jump UnknownText_0x1c4df7 db "@" ; 0x15e86 UnknownText_0x15e86: ; 0x15e86 ; Uh-oh, you're short on funds. text_jump UnknownText_0x1c4e28 db "@" ; 0x15e8b UnknownText_0x15e8b: ; 0x15e8b ; Come by again sometime. text_jump UnknownText_0x1c4e46 db "@" ; 0x15e90 UnknownText_0x15e90: ; 0x15e90 ; What's up? Need some medicine? text_jump UnknownText_0x1c4e5f db "@" ; 0x15e95 UnknownText_0x15e95: ; 0x15e95 ; How many? text_jump UnknownText_0x1c4e7e db "@" ; 0x15e9a UnknownText_0x15e9a: ; 0x15e9a ; @ (S) will cost ¥@ . text_jump UnknownText_0x1c4e89 db "@" ; 0x15e9f UnknownText_0x15e9f: ; 0x15e9f ; Thanks much! text_jump UnknownText_0x1c4eab db "@" ; 0x15ea4 UnknownText_0x15ea4: ; 0x15ea4 ; You don't have any more space. text_jump UnknownText_0x1c4eb9 db "@" ; 0x15ea9 UnknownText_0x15ea9: ; 0x15ea9 ; Huh? That's not enough money. text_jump UnknownText_0x1c4ed8 db "@" ; 0x15eae UnknownText_0x15eae: ; 0x15eae ; All right. See you around. text_jump UnknownText_0x1c4ef6 db "@" ; 0x15eb3 Function15eb3: ; 15eb3 call DisableSpriteUpdates callba Function106a5 .asm_15ebc callba Function106be ld a, [wcf66] and a jp z, Function15ece call Function15ee0 jr .asm_15ebc ; 15ece Function15ece: ; 15ece call Function2b74 and a ret ; 15ed3 Function15ed3: ; unreferenced ld hl, UnknownText_0x15edb call MenuTextBoxBackup and a ret ; 15edb UnknownText_0x15edb: ; 0x15edb ; You don't have anything to sell. text_jump UnknownText_0x1c4f12 db "@" ; 0x15ee0 Function15ee0: ; 15ee0 callba CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .jumptable rst JumpTable ret ; 15eee .jumptable: ; 15eee dw .maybe_use dw .no_use dw .no_use dw .no_use dw .maybe_use dw .maybe_use dw .maybe_use ; 15efc .no_use: ; 15efc ret ; 15efd .maybe_use: ; 15efd callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a jr z, .asm_15f11 ld hl, UnknownText_0x15faf call PrintText and a ret .asm_15f11 ld hl, UnknownText_0x15f73 call PrintText callba Function24af8 callba Function24fe1 call ExitMenu jr c, .asm_15f6e hlcoord 1, 14 lb bc, 3, 18 call ClearBox ld hl, UnknownText_0x15f78 call PrintTextBoxText call YesNoBox jr c, .asm_15f6e ld de, Money ld bc, hMoneyTemp call GiveMoney ld a, [wd107] ld hl, NumItems call TossItem predef PartyMonItemName hlcoord 1, 14 lb bc, 3, 18 call ClearBox ld hl, UnknownText_0x15fbe call PrintTextBoxText call Function15fc3 callba Function24af0 call JoyWaitAorB .asm_15f6e call ExitMenu and a ret ; 15f73 UnknownText_0x15f73: ; 0x15f73 ; How many? text_jump UnknownText_0x1c4f33 db "@" ; 0x15f78 UnknownText_0x15f78: ; 0x15f78 ; I can pay you ¥@ . Is that OK? text_jump UnknownText_0x1c4f3e db "@" ; 0x15f7d String15f7d: ; 15f7d db "!ダミー!@" UnknownText_0x15f83: ; 0x15f83 ; Welcome! How may I help you? text_jump UnknownText_0x1c4f62 db "@" ; 0x15f88 MenuDataHeader_0x15f88: ; 0x15f88 db $40 ; flags db 00, 00 ; start coords db 08, 07 ; end coords dw MenuData2_0x15f90 db 1 ; default option ; 0x15f90 MenuData2_0x15f90: ; 0x15f90 db $80 ; flags db 3 ; items db "BUY@" db "SELL@" db "QUIT@" ; 0x15f96 UnknownText_0x15fa0: ; 0x15fa0 ; Here you are. Thank you! text_jump UnknownText_0x1c4f80 db "@" ; 0x15fa5 UnknownText_0x15fa5: ; 0x15fa5 ; You don't have enough money. text_jump UnknownText_0x1c4f9a db "@" ; 0x15faa UnknownText_0x15faa: ; 0x15faa ; You can't carry any more items. text_jump UnknownText_0x1c4fb7 db "@" ; 0x15faf UnknownText_0x15faf: ; 0x15faf ; Sorry, I can't buy that from you. text_jump UnknownText_0x1c4fd7 db "@" ; 0x15fb4 UnknownText_0x15fb4: ; 0x15fb4 ; Please come again! text_jump UnknownText_0x1c4ff9 db "@" ; 0x15fb9 UnknownText_0x15fb9: ; 0x15fb9 text_jump UnknownText_0x1c500d db "@" ; 0x15fbe UnknownText_0x15fbe: ; 0x15fbe text_jump UnknownText_0x1c502e db "@" ; 0x15fc3 Function15fc3: ; 15fc3 call WaitSFX ld de, SFX_TRANSACTION call PlaySFX ret ; 15fcd Function15fcd: ; 15fcd call MenuTextBox call JoyWaitAorB call ExitMenu ret ; 15fd7 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 "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, $78 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 4, a ld [Options], a call WhiteBGMap 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 .asm_16c6b call JoyTextDelay ld a, [hJoyPressed] and B_BUTTON jr nz, .asm_16c95 ld a, [hJoyPressed] and A_BUTTON jr nz, .asm_16c82 call Function16ca0 call DelayFrame jr .asm_16c6b .asm_16c82 ld a, [wJumptableIndex] push af callba Function84560 call RestartMapMusic pop af ld [wJumptableIndex], a jr .asm_16c6b .asm_16c95 pop af ld [Options], a pop af ld [hInMenu], a call Function222a ret ; 16ca0 Function16ca0: ; 16ca0 ld a, [hJoyLast] and D_RIGHT jr nz, .asm_16cb9 ld a, [hJoyLast] and D_LEFT jr nz, .asm_16cad ret .asm_16cad ld hl, wJumptableIndex ld a, [hl] and a jr nz, .asm_16cb6 ld [hl], $1b .asm_16cb6 dec [hl] jr .asm_16cc4 .asm_16cb9 ld hl, wJumptableIndex ld a, [hl] cp $1a jr c, .asm_16cc3 ld [hl], $ff .asm_16cc3 inc [hl] .asm_16cc4 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 [$ffad], 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, $310 ; 784 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 $ef, " PRINT" next $f5, " CANCEL" next $df, " PREVIOUS" next $eb, " 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 [$ffad], 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 .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 Function16e1d: ; 16e1d call Function16ed6 ld c, $0 jp nc, .asm_16eb7 ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld a, [wBreedMon1DVs] ld [TempMonDVs], a ld a, [wBreedMon1DVs + 1] ld [TempMonDVs + 1], a ld a, $3 ld [MonType], a predef GetGender jr c, .asm_16e70 ld b, $1 jr nz, .asm_16e48 inc b .asm_16e48 push bc ld a, [wBreedMon2Species] ld [CurPartySpecies], a ld a, [wBreedMon2DVs] ld [TempMonDVs], a ld a, [wBreedMon2DVs + 1] ld [TempMonDVs + 1], a ld a, $3 ld [MonType], a predef GetGender pop bc jr c, .asm_16e70 ld a, $1 jr nz, .asm_16e6d inc a .asm_16e6d cp b jr nz, .asm_16e89 .asm_16e70 ld c, $0 ld a, [wBreedMon1Species] cp DITTO jr z, .asm_16e82 ld a, [wBreedMon2Species] cp DITTO jr nz, .asm_16eb7 jr .asm_16e89 .asm_16e82 ld a, [wBreedMon2Species] cp DITTO jr z, .asm_16eb7 .asm_16e89 call Function16ebc ld c, $ff jp z, .asm_16eb7 ld a, [wBreedMon2Species] ld b, a ld a, [wBreedMon1Species] cp b ld c, $fe jr z, .asm_16e9f ld c, $80 .asm_16e9f ld a, [wBreedMon1ID] ld b, a ld a, [wBreedMon2ID] cp b jr nz, .asm_16eb7 ld a, [wBreedMon1ID + 1] ld b, a ld a, [wBreedMon2ID + 1] cp b jr nz, .asm_16eb7 ld a, c sub $4d ld c, a .asm_16eb7 ld a, c ld [wd265], a ret ; 16ebc Function16ebc: ; 16ebc (5:6ebc) ld a, [wBreedMon1DVs] and $f ld b, a ld a, [wBreedMon2DVs] and $f cp b ret nz ld a, [wBreedMon1DVs + 1] and $7 ld b, a ld a, [wBreedMon2DVs + 1] and $7 cp b ret ; 16ed6 Function16ed6: ; 16ed6 ld a, [wBreedMon2Species] ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] cp $ff jr z, .asm_16f3a ld a, [wBreedMon1Species] ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] cp $ff jr z, .asm_16f3a ld a, [wBreedMon2Species] cp DITTO jr z, .asm_16f3c ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] push af and $f ld b, a pop af and $f0 swap a ld c, a ld a, [wBreedMon1Species] cp DITTO jr z, .asm_16f3c ld [CurSpecies], a push bc call GetBaseData pop bc ld a, [BaseEggGroups] push af and $f ld d, a pop af and $f0 swap a ld e, a ld a, d cp b jr z, .asm_16f3c cp c jr z, .asm_16f3c ld a, e cp b jr z, .asm_16f3c cp c jr z, .asm_16f3c .asm_16f3a and a ret .asm_16f3c scf ret ; 16f3e DoEggStep:: ; 16f3e ld de, PartySpecies ld hl, PartyMon1Happiness ld c, 0 .loop ld a, [de] inc de cp -1 ret z cp EGG jr nz, .next dec [hl] jr nz, .next ld a, 1 and a ret .next push de ld de, PARTYMON_STRUCT_LENGTH add hl, de pop de jr .loop ; 16f5e OverworldHatchEgg:: ; 16f5e call ResetWindow call LoadMenuDataHeader_0x1d75 call Function16f70 call Function2b4d call RestartMapMusic jp LoadMoveSprites ; 16f70 Function16f70: ; 16f70 (5:6f70) ld de, PartySpecies ld hl, PartyMon1Happiness xor a ld [CurPartyMon], a Function16f7a: ; 16f7a (5:6f7a) ld a, [de] inc de cp -1 jp z, Function1708a push de push hl cp EGG jp nz, Function1707d ld a, [hl] and a jp nz, Function1707d ld [hl], $78 push de callba Function4dbb8 callba MobileFn_10608d ld a, [CurPartyMon] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [hl] ld [CurPartySpecies], a dec a call SetSeenAndCaughtMon ld a, [CurPartySpecies] cp TOGEPI jr nz, .nottogepi ; set the event flag for hatching togepi ld de, EVENT_TOGEPI_HATCHED ld b, SET_FLAG call EventFlagAction .nottogepi pop de ld a, [CurPartySpecies] dec de ld [de], a ld [wd265], a ld [CurSpecies], a call GetPokemonName xor a ld [wd26b], a call GetBaseData ld a, [CurPartyMon] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes push hl ld bc, MON_MAXHP add hl, bc ld d, h ld e, l pop hl push hl ld bc, MON_LEVEL add hl, bc ld a, [hl] ld [CurPartyLevel], a pop hl push hl ld bc, MON_STATUS add hl, bc xor a ld [hli], a ld [hl], a pop hl push hl ld bc, MON_EXP + 2 add hl, bc ld b, $0 predef CalcPkmnStats pop bc ld hl, MON_MAXHP add hl, bc ld d, h ld e, l ld hl, MON_HP add hl, bc ld a, [de] inc de ld [hli], a ld a, [de] ld [hl], a ld hl, MON_ID add hl, bc ld a, [PlayerID] ld [hli], a ld a, [PlayerID + 1] ld [hl], a ld a, [CurPartyMon] ld hl, PartyMonOT ; wddff (aliases: PartyMonOT) ld bc, NAME_LENGTH call AddNTimes ld d, h ld e, l ld hl, PlayerName call CopyBytes ld hl, UnknownText_0x1708b call PrintText ld a, [CurPartyMon] ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH call AddNTimes ld d, h ld e, l push de ld hl, UnknownText_0x170ba call PrintText call YesNoBox pop de jr c, .nonickname ld a, $1 ld [wd26b], a xor a ld [MonType], a push de ld b, $0 callba Function116c1 pop hl ld de, StringBuffer1 call InitName jr Function1707d .nonickname ld hl, StringBuffer1 ld bc, PKMN_NAME_LENGTH call CopyBytes Function1707d: ; 1707d (5:707d) ld hl, CurPartyMon inc [hl] pop hl ld de, PARTYMON_STRUCT_LENGTH add hl, de pop de jp Function16f7a Function1708a: ; 1708a (5:708a) ret ; 1708b (5:708b) UnknownText_0x1708b: ; 0x1708b ; Huh? @ @ text_jump UnknownText_0x1c0db0 start_asm ; 0x17090 Function17090: ; 17090 ld hl, VramState res 0, [hl] push hl push de push bc ld a, [CurPartySpecies] push af call Function1728f ld hl, UnknownText_0x170b0 call PrintText pop af ld [CurPartySpecies], a pop bc pop de pop hl ld hl, UnknownText_0x170b5 ret ; 170b0 (5:70b0) UnknownText_0x170b0: ; 0x170b0 ; text_jump UnknownText_0x1c0db8 db "@" ; 0x170b5 UnknownText_0x170b5: ; 0x170b5 ; came out of its EGG!@ @ text_jump UnknownText_0x1c0dba db "@" ; 0x170ba UnknownText_0x170ba: ; 0x170ba ; Give a nickname to @ ? text_jump UnknownText_0x1c0dd8 db "@" ; 0x170bf Function170bf: ; 170bf call Function17197 ld d, h ld e, l ld b, NUM_MOVES .loop ld a, [de] and a jr z, .done ld hl, wEggMonMoves ld c, NUM_MOVES .next ld a, [de] cp [hl] jr z, .skip inc hl dec c jr nz, .next call Function170e4 jr nc, .skip call Function17169 .skip inc de dec b jr nz, .loop .done ret ; 170e4 Function170e4: ; 170e4 GLOBAL EggMoves push bc ld a, [wEggMonSpecies] dec a ld c, a ld b, 0 ld hl, EggMovePointers rept 2 add hl, bc endr ld a, BANK(EggMovePointers) call GetFarHalfword .loop ld a, BANK(EggMoves) call GetFarByte cp -1 jr z, .found_mon ld b, a ld a, [de] cp b jr z, .done_carry inc hl jr .loop .found_mon call Function1720b ld b, NUM_MOVES .loop2 ld a, [de] cp [hl] jr z, .found_eggmove inc hl dec b jr z, .inherit_tmhm jr .loop2 .found_eggmove ld a, [wEggMonSpecies] dec a ld c, a ld b, 0 ld hl, EvosAttacksPointers rept 2 add hl, bc endr ld a, BANK(EvosAttacksPointers) call GetFarHalfword .loop3 ld a, BANK(EvosAttacks) call GetFarByte inc hl and a jr nz, .loop3 .loop4 ld a, BANK(EvosAttacks) call GetFarByte and a jr z, .inherit_tmhm inc hl ld a, BANK(EvosAttacks) call GetFarByte ld b, a ld a, [de] cp b jr z, .done_carry inc hl jr .loop4 .inherit_tmhm ld hl, TMHMMoves .loop5 ld a, BANK(TMHMMoves) call GetFarByte inc hl and a jr z, .done ld b, a ld a, [de] cp b jr nz, .loop5 ld [wd262], a predef CanLearnTMHMMove ld a, c and a jr z, .done .done_carry pop bc scf ret .done pop bc and a ret ; 17169 Function17169: ; 17169 push de push bc ld a, [de] ld b, a ld hl, wEggMonMoves ld c, NUM_MOVES .loop ld a, [hli] and a jr z, .done dec c jr nz, .loop ld de, wEggMonMoves ld hl, wEggMonMoves + 1 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a .done dec hl ld [hl], b ld hl, wEggMonMoves ld de, wEggMonPP predef FillPP pop bc pop de ret ; 17197 Function17197: ; 17197 ld hl, wBreedMon2Moves ld a, [wBreedMon1Species] cp DITTO jr z, .ditto1 ld a, [wBreedMon2Species] cp DITTO jr z, .ditto2 ld a, [wDittoInDaycare] and a ret z ld hl, wBreedMon1Moves ret .ditto1 ld a, [CurPartySpecies] push af ld a, [wBreedMon2Species] ld [CurPartySpecies], a ld a, [wBreedMon2DVs] ld [TempMonDVs], a ld a, [wBreedMon2DVs + 1] ld [TempMonDVs + 1], a ld a, $3 ld [MonType], a predef GetGender jr c, .inherit_mon2_moves jr nz, .inherit_mon2_moves jr .inherit_mon1_moves .ditto2 ld a, [CurPartySpecies] push af ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld a, [wBreedMon1DVs] ld [TempMonDVs], a ld a, [wBreedMon1DVs + 1] ld [TempMonDVs + 1], a ld a, $3 ld [MonType], a predef GetGender jr c, .inherit_mon1_moves jr nz, .inherit_mon1_moves .inherit_mon2_moves ld hl, wBreedMon2Moves pop af ld [CurPartySpecies], a ret .inherit_mon1_moves ld hl, wBreedMon1Moves pop af ld [CurPartySpecies], a ret ; 1720b Function1720b: ; 1720b ld hl, wBreedMon1Moves ld a, [wBreedMon1Species] cp DITTO ret z ld a, [wBreedMon2Species] cp DITTO jr z, .ditto ld a, [wDittoInDaycare] and a ret z .ditto ld hl, wBreedMon2Moves ret ; 17224 Function17224: ; 17224 (5:7224) push de ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData ld hl, BattleMonDVs predef GetUnownLetter pop de predef_jump GetFrontpic Function1723c: ; 1723c (5:723c) push de ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData ld hl, BattleMonDVs predef GetUnownLetter pop de predef_jump Function5108b Function17254: ; 17254 (5:7254) push af call WaitTop push hl push bc hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill pop bc pop hl ld a, b ld [hBGMapAddress + 1], a ld a, c ld [$ffad], a lb bc, 7, 7 predef FillBox pop af call Function17363 call SetPalettes jp WaitBGMap Function1727f: ; 1727f (5:727f) push hl push de push bc callab Function8cf69 call DelayFrame pop bc pop de pop hl ret Function1728f: ; 1728f (5:728f) ld a, [wd265] ld [wJumptableIndex], a ld a, [CurSpecies] push af ld de, MUSIC_NONE call PlayMusic callba Function8000 call DisableLCD ld hl, EggHatchGFX ld de, VTiles0 tile $00 ld bc, $20 ld a, BANK(EggHatchGFX) call FarCopyBytes callba Function8cf53 ld de, VTiles2 tile $00 ld a, [wJumptableIndex] call Function1723c ld de, VTiles2 tile $31 ld a, EGG call Function17224 ld de, MUSIC_EVOLUTION call PlayMusic call EnableLCD hlcoord 7, 4 ld b, $98 ld c, $31 ld a, EGG call Function17254 ld c, $50 call DelayFrames xor a ld [wcf64], a ld a, [hSCX] ; $ff00+$cf ld b, a .asm_172ee ld hl, wcf64 ld a, [hl] inc [hl] cp $8 jr nc, .asm_17327 ld e, [hl] .asm_172f8 ld a, $2 ld [hSCX], a ; $ff00+$cf ld a, $fe ld [wc3c0], a call Function1727f ld c, $2 call DelayFrames ld a, $fe ld [hSCX], a ; $ff00+$cf ld a, $2 ld [wc3c0], a call Function1727f ld c, $2 call DelayFrames dec e jr nz, .asm_172f8 ld c, $10 call DelayFrames call Function1736d jr .asm_172ee .asm_17327 ld de, SFX_EGG_HATCH call PlaySFX xor a ld [hSCX], a ; $ff00+$cf ld [wc3c0], a call ClearSprites call Function173b3 hlcoord 6, 3 ld b, $98 ld c, $0 ld a, [wJumptableIndex] call Function17254 call Function17418 call WaitSFX ld a, [wJumptableIndex] ld [CurPartySpecies], a hlcoord 6, 3 ld d, $0 ld e, $5 predef Functiond008e pop af ld [CurSpecies], a ret Function17363: ; 17363 (5:7363) ld [PlayerHPPal], a ld b, $b ld c, $0 jp GetSGBLayout Function1736d: ; 1736d (5:736d) ld a, [wcf64] dec a and $7 cp $7 ret z srl a ret nc swap a srl a add $4c ld d, a ld e, $58 ld a, $19 call Function3b2a ld hl, $3 add hl, bc ld [hl], $0 ld de, SFX_EGG_CRACK jp PlaySFX ; 17393 (5:7393) EggHatchGFX: ; 17393 INCBIN "gfx/unknown/017393.2bpp" ; 173b3 Function173b3: ; 173b3 (5:73b3) callba Function8cf53 ld hl, Unknown_173ef .loop ld a, [hli] cp $ff jr z, .done ld e, a ld a, [hli] ld d, a ld a, [hli] ld c, a ld a, [hli] ld b, a push hl push bc ld a, $1c call Function3b2a ld hl, $3 add hl, bc ld [hl], $0 pop de ld a, e ld hl, $1 add hl, bc add [hl] ld [hl], a ld hl, $b add hl, bc ld [hl], d pop hl jr .loop .done ld de, SFX_EGG_HATCH call PlaySFX call Function1727f ret ; 173ef (5:73ef) Unknown_173ef: ; 173ef ; Probably OAM. db $54, $48, $00, $3c db $5c, $48, $01, $04 db $54, $50, $00, $30 db $5c, $50, $01, $10 db $54, $58, $02, $24 db $5c, $58, $03, $1c db $50, $4c, $00, $36 db $60, $4c, $01, $0a db $50, $54, $02, $2a db $60, $54, $03, $16 db $ff ; 17418 Function17418: ; 17418 (5:7418) ld c, $81 .asm_1741a call Function1727f dec c jr nz, .asm_1741a ret Special_DayCareMon1: ; 17421 ld hl, UnknownText_0x17467 call PrintText ld a, [wBreedMon1Species] call PlayCry ld a, [wDaycareLady] bit 0, a jr z, Function1745f call KeepTextOpen ld hl, wBreedMon2Nick call Function1746c jp PrintText Special_DayCareMon2: ; 17440 ld hl, UnknownText_0x17462 call PrintText ld a, [wBreedMon2Species] call PlayCry ld a, [wDaycareMan] bit 0, a jr z, Function1745f call KeepTextOpen ld hl, wBreedMon1Nick call Function1746c jp PrintText Function1745f: ; 1745f jp Functiona80 ; 17462 UnknownText_0x17462: ; 0x17462 ; It's @ that was left with the DAY-CARE LADY. text_jump UnknownText_0x1c0df3 db "@" ; 0x17467 UnknownText_0x17467: ; 0x17467 ; It's @ that was left with the DAY-CARE MAN. text_jump UnknownText_0x1c0e24 db "@" ; 0x1746c Function1746c: ; 1746c push bc ld de, StringBuffer1 ld bc, NAME_LENGTH call CopyBytes call Function16e1d pop bc ld a, [wd265] ld hl, UnknownText_0x1749c cp $ff jr z, .asm_1749b ld hl, UnknownText_0x174a1 and a jr z, .asm_1749b ld hl, UnknownText_0x174a6 cp 230 jr nc, .asm_1749b cp 70 ld hl, UnknownText_0x174ab jr nc, .asm_1749b ld hl, UnknownText_0x174b0 .asm_1749b ret ; 1749c UnknownText_0x1749c: ; 0x1749c ; It's brimming with energy. text_jump UnknownText_0x1c0e54 db "@" ; 0x174a1 UnknownText_0x174a1: ; 0x174a1 ; It has no interest in @ . text_jump UnknownText_0x1c0e6f db "@" ; 0x174a6 UnknownText_0x174a6: ; 0x174a6 ; It appears to care for @ . text_jump UnknownText_0x1c0e8d db "@" ; 0x174ab UnknownText_0x174ab: ; 0x174ab ; It's friendly with @ . text_jump UnknownText_0x1c0eac db "@" ; 0x174b0 UnknownText_0x174b0: ; 0x174b0 ; It shows interest in @ . text_jump UnknownText_0x1c0ec6 db "@" ; 0x174b5 Function_174b5: ; 174b5 ld hl, String_174b9 ret ; 174b9 String_174b9: ; 174b9 db "@" ; 174ba SECTION "Tileset Data 1", ROMX, BANK[TILESETS_1] INCLUDE "tilesets/data_1.asm" SECTION "Roofs", ROMX, BANK[ROOFS] INCLUDE "tilesets/roofs.asm" SECTION "Tileset Data 2", ROMX, BANK[TILESETS_2] INCLUDE "tilesets/data_2.asm" SECTION "bank8", ROMX, BANK[$8] Function20000: ; 20000 (8:4000) push hl dec a ld e, a ld d, 0 ld hl, Unknown_20015 rept 4 add hl, de endr ld e, [hl] inc hl ld d, [hl] inc hl ld b, [hl] inc hl ld c, [hl] pop hl ret ; 20015 (8:4015) Unknown_20015: ; 20015 dw wd1ed db $07, $04 dw wd1ee db $18, $0c dw wd1ef db $3c, $0f ; 20021 Function20021: ; 20021 (8:4021) ld hl, UnknownText_0x20047 call PrintText ld hl, Options ld a, [hl] push af set 4, [hl] call LoadMenuDataHeader_0x1d75 call ClearTileMap ld hl, UnknownText_0x2004c call PrintText call Function20051 call ExitMenu pop bc ld hl, Options ld [hl], b ld c, a ret ; 20047 (8:4047) UnknownText_0x20047: ; 0x20047 ; The clock's time may be wrong. Please reset the time. text_jump UnknownText_0x1c40e6 db "@" ; 0x2004c UnknownText_0x2004c: ; 0x2004c ; Set with the Control Pad. Confirm: A Button Cancel: B Button text_jump UnknownText_0x1c411c db "@" ; 0x20051 Function20051: ; 20051 (8:4051) ld a, $1 ld [Buffer1], a ; wd1ea (aliases: MagikarpLength) ld [Buffer2], a ; wd1eb (aliases: MovementType) ld a, $8 ld [wd1ec], a call UpdateTime call GetWeekday ld [wd1ed], a ld a, [hHours] ; $ff00+$94 ld [wd1ee], a ld a, [hMinutes] ; $ff00+$96 ld [wd1ef], a .asm_20071 call Function200ba jr nc, .asm_20071 and a ret nz call Function2011f ld hl, UnknownText_0x200b0 call PrintText call YesNoBox jr c, .asm_200ad ld a, [wd1ed] ld [StringBuffer2], a ld a, [wd1ee] ld [StringBuffer2 + 1], a ld a, [wd1ef] ld [StringBuffer2 + 2], a xor a ld [StringBuffer2 + 3], a call Function677 call Function2011f ld hl, UnknownText_0x200b5 call PrintText call Functiona80 xor a ret .asm_200ad ld a, $1 ret ; 200b0 (8:40b0) UnknownText_0x200b0: ; 0x200b0 ; Is this OK? text_jump UnknownText_0x1c415b db "@" ; 0x200b5 UnknownText_0x200b5: ; 0x200b5 ; The clock has been reset. text_jump UnknownText_0x1c4168 db "@" ; 0x200ba Function200ba: ; 200ba (8:40ba) call Function354b ld c, a push af call Function2011f pop af bit 0, a jr nz, .asm_200dd bit 1, a jr nz, .asm_200e1 bit 6, a jr nz, .asm_200e5 bit 7, a jr nz, .asm_200f6 bit 5, a jr nz, .asm_20108 bit 4, a jr nz, .asm_20112 jr Function200ba .asm_200dd ld a, $0 scf ret .asm_200e1 ld a, $1 scf ret .asm_200e5 ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength) call Function20000 ld a, [de] inc a ld [de], a cp b jr c, .asm_2011d ld a, $0 ld [de], a jr .asm_2011d .asm_200f6 ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength) call Function20000 ld a, [de] dec a ld [de], a cp $ff jr nz, .asm_2011d ld a, b dec a ld [de], a jr .asm_2011d .asm_20108 ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) dec [hl] jr nz, .asm_2011d ld [hl], $3 jr .asm_2011d .asm_20112 ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) inc [hl] ld a, [hl] cp $4 jr c, .asm_2011d ld [hl], $1 .asm_2011d xor a ret Function2011f: ; 2011f (8:411f) hlcoord 0, 5 ld b, $5 ld c, $12 call TextBox decoord 1, 8 ld a, [wd1ed] ld b, a callba Function5b05 ld a, [wd1ee] ld b, a ld a, [wd1ef] ld c, a decoord 11, 8 callba Function1dd6bb ld a, [Buffer2] ; wd1eb (aliases: MovementType) lb de, $7f, $7f call Function20168 ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength) lb de, $61, $ee call Function20168 ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength) ld [Buffer2], a ; wd1eb (aliases: MovementType) ret ; 20160 (8:4160) Function20160: ; 20160 ld a, [wd1ec] ld b, a call GetTileCoord ret ; 20168 Function20168: ; 20168 (8:4168) push de call Function20000 ld a, [wd1ec] dec a ld b, a call GetTileCoord pop de ld [hl], d ld bc, $28 add hl, bc ld [hl], e ret ; 2017c (8:417c) String_2017c: ; 2017c db "じ@" ; HR ; 2017e String_2017e: ; 2017e db "ふん@" ; MIN ; 20181 SECTION "Tileset Data 3", ROMX, BANK[TILESETS_3] INCLUDE "tilesets/data_3.asm" SECTION "bank9", ROMX, BANK[$9] StringBufferPointers:: ; 24000 dw StringBuffer3 dw StringBuffer4 dw StringBuffer5 dw StringBuffer2 dw StringBuffer1 dw EnemyMonNick dw BattleMonNick ; 2400e INCLUDE "engine/menu.asm" _BackUpTiles:: ; 24374 ld a, [rSVBK] push af ld a, $7 ld [rSVBK], a ld hl, wcf71 ld e, [hl] inc hl ld d, [hl] push de ld b, $10 ld hl, wcf81 .loop ld a, [hli] ld [de], a dec de dec b jr nz, .loop ; If bit 6 or 7 of the menu flags is set, set bit 0 of the address ; at 7:[wcf71], and draw the menu using the coordinates from the header. ; Otherwise, reset bit 0 of 7:[wcf71]. ld a, [wcf81] bit 6, a jr nz, .bit_6 bit 7, a jr z, .not_bit_7 .bit_6 ld hl, wcf71 ld a, [hli] ld h, [hl] ld l, a set 0, [hl] call GetMemTileCoord call .copy call GetMemAttrCoord call .copy jr .done .not_bit_7 pop hl ; last-pushed register was de push hl ld a, [hld] ld l, [hl] ld h, a res 0, [hl] .done pop hl call .ret ; empty function ld a, h ld [de], a dec de ld a, l ld [de], a dec de ld hl, wcf71 ld [hl], e inc hl ld [hl], d pop af ld [rSVBK], a ld hl, wcf78 inc [hl] ret ; 243cd .copy: ; 243cd call GetMenuBoxDims inc b inc c call .ret ; empty function .row push bc push hl .col ld a, [hli] ld [de], a dec de dec c jr nz, .col pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .row ret ; 243e7 .ret: ; 243e7 ret ; 243e8 Function243e8:: ; 243e8 xor a ld [hBGMapMode], a ld a, [rSVBK] push af ld a, $7 ld [rSVBK], a call Function1c7e ld a, l or h jp z, Function2445d ld a, l ld [wcf71], a ld a, h ld [wcf72], a call Function1c47 ld a, [wcf81] bit 0, a jr z, .next ld d, h ld e, l call RestoreTileBackup .next call Function1c7e ld a, h or l jr z, .next2 call Function1c47 .next2 pop af ld [rSVBK], a ld hl, wcf78 dec [hl] ret ; 24423 Function24423: ; 24423 ld a, [VramState] bit 0, a ret z xor a call GetSRAMBank hlcoord 0, 0 ld de, sScratch ld bc, SCREEN_WIDTH * SCREEN_HEIGHT call CopyBytes call CloseSRAM call Function2173 xor a call GetSRAMBank ld hl, sScratch decoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT .asm_2444c ld a, [hl] cp $61 jr c, .asm_24452 ld [de], a .asm_24452 inc hl inc de dec bc ld a, c or b jr nz, .asm_2444c call CloseSRAM ret ; 2445d Function2445d: ; 2445d ld hl, UnknownText_0x24468 call PrintText call WaitBGMap .asm_24466 jr .asm_24466 ; 24468 UnknownText_0x24468: ; 24468 text_jump UnknownText_0x1c46b7 db "@" ; 2446d Function2446d:: ; 2446d ld a, [wMenuData2Flags] ld b, a ld hl, wcfa1 ld a, [wMenuBorderTopCoord] inc a bit 6, b jr nz, .asm_2447d inc a .asm_2447d ld [hli], a ld a, [wMenuBorderLeftCoord] inc a ld [hli], a ld a, [wMenuData2Items] ld [hli], a ld a, $1 ld [hli], a ld [hl], $0 bit 5, b jr z, .asm_24492 set 5, [hl] .asm_24492 ld a, [wcf81] bit 4, a jr z, .asm_2449b set 6, [hl] .asm_2449b inc hl xor a ld [hli], a ld a, $20 ld [hli], a ld a, $1 bit 0, b jr nz, .asm_244a9 add $2 .asm_244a9 ld [hli], a ld a, [wMenuCursorBuffer] and a jr z, .asm_244b7 ld c, a ld a, [wMenuData2Items] cp c jr nc, .asm_244b9 .asm_244b7 ld c, $1 .asm_244b9 ld [hl], c inc hl ld a, $1 ld [hli], a xor a rept 3 ld [hli], a endr ret ; 244c3 Function244c3: ; 0x244c3 ld a, [MenuSelection] ld [CurSpecies], a hlcoord 0, 12 ld b, 4 ld c, SCREEN_WIDTH - 2 call TextBox ld a, [MenuSelection] cp -1 ret z decoord 1, 14 callba PrintItemDescription ret ; 0x244e3 Pokepic:: ; 244e3 ld hl, MenuDataHeader_0x24547 call CopyMenuDataHeader call MenuBox call UpdateSprites call Function321c ld b, $12 call GetSGBLayout xor a ld [hBGMapMode], a ld a, [CurPartySpecies] ld [CurSpecies], a call GetBaseData ld de, VTiles1 predef GetFrontpic ld a, [wMenuBorderTopCoord] inc a ld b, a ld a, [wMenuBorderLeftCoord] inc a ld c, a call GetTileCoord ld a, $80 ld [$ffad], a lb bc, 7, 7 predef FillBox call WaitBGMap ret ; 24528 PokepicYesOrNo:: ; 24528 ld hl, MenuDataHeader_0x24547 call CopyMenuDataHeader call Function1ce1 call WaitBGMap call ClearSGB xor a ld [hBGMapMode], a call Function2173 call Function321c call UpdateSprites call LoadStandardFont ret ; 24547 MenuDataHeader_0x24547: ; 0x24547 db $40 ; flags db 04, 06 ; start coords db 13, 14 ; end coords dw NULL db 1 ; default option ; 0x2454f LoadObjectMasks: ; 2454f ld hl, wObjectMasks xor a ld bc, NUM_OBJECTS call ByteFill nop ld bc, MapObjects ld de, wObjectMasks xor a .loop push af push bc push de call GetObjectTimeMask jr c, .next call CheckObjectFlag .next pop de ld [de], a inc de pop bc ld hl, OBJECT_LENGTH add hl, bc ld b, h ld c, l pop af inc a cp NUM_OBJECTS jr nz, .loop ret CheckObjectFlag: ; 2457d (9:457d) ld hl, MAPOBJECT_SPRITE add hl, bc ld a, [hl] and a jr z, .masked ld hl, MAPOBJECT_EVENT_FLAG add hl, bc ld a, [hli] ld e, a ld a, [hl] ld d, a cp -1 jr nz, .check ld a, e cp -1 jr z, .unmasked jr .masked .check ld b, CHECK_FLAG call EventFlagAction ld a, c and a jr nz, .masked .unmasked xor a ret .masked ld a, -1 scf ret GetObjectTimeMask: ; 245a7 (9:45a7) call CheckObjectTime ld a, -1 ret c xor a ret Function245af:: ; 245af xor a ld [wcf73], a ld [hBGMapMode], a inc a ld [hInMenu], a call Function2471a call Function24764 call Function247dd call Function245f1 call Function321c xor a ld [hBGMapMode], a ret ; 245cb Function245cb:: ; 245cb .loop call MenuJoyAction jp c, .exit call z, .zero jr .loop ; 245d6 .exit: ; 245d6 call Function1ff8 ld [wcf73], a ld a, 0 ld [hInMenu], a ret ; 245e1 .zero: ; 245e1 call Function245f1 ld a, 1 ld [hBGMapMode], a ld c, 3 call DelayFrames xor a ld [hBGMapMode], a ret ; 245f1 Function245f1: ; 245f1 xor a ld [hBGMapMode], a ld hl, Options ld a, [hl] push af set 4, [hl] call Function247f0 call Function2488b call Function248b8 pop af ld [Options], a ret ; 24609 MenuJoyAction: ; 24609 .loop call Function1bd3 ld a, [hJoyLast] and D_PAD ld b, a ld a, [hJoyPressed] and BUTTONS or b bit 0, a ; A jp nz, .a_button bit 1, a ; B jp nz, .b_button bit 2, a ; Select jp nz, .select bit 3, a ; Start jp nz, .start bit 4, a ; Right jp nz, .d_right bit 5, a ; Left jp nz, .d_left bit 6, a ; Up jp nz, .d_up bit 7, a ; Down jp nz, .d_down jr .loop ; 24640 .unreferenced: ; unreferenced ld a, -1 and a ret ; 24644 .a_button: ; 24644 call Function1bee ld a, [MenuSelection2] dec a call Function248d5 ld a, [MenuSelection] ld [CurItem], a ld a, [wcf75] ld [wItemQuantityBuffer], a call Function246fc dec a ld [wcf77], a ld [wd107], a ld a, [MenuSelection] cp -1 jr z, .b_button ld a, A_BUTTON scf ret ; 2466f .b_button: ; 2466f ld a, B_BUTTON scf ret ; 24673 .select: ; 24673 ld a, [wMenuData2Flags] bit 7, a jp z, xor_a_dec_a ld a, [MenuSelection2] dec a call Function248d5 ld a, [MenuSelection] cp -1 jp z, xor_a_dec_a call Function246fc dec a ld [wcf77], a ld a, SELECT scf ret ; 24695 .start: ; 24695 ld a, [wMenuData2Flags] bit 6, a jp z, xor_a_dec_a ld a, START scf ret ; 246a1 .d_left: ; 246a1 ld hl, wcfa6 bit 7, [hl] jp z, xor_a_dec_a ld a, [wMenuData2Flags] bit 3, a jp z, xor_a_dec_a ld a, D_LEFT scf ret ; 246b5 .d_right: ; 246b5 ld hl, wcfa6 bit 7, [hl] jp z, xor_a_dec_a ld a, [wMenuData2Flags] bit 2, a jp z, xor_a_dec_a ld a, D_RIGHT scf ret ; 246c9 .d_up: ; 246c9 ld hl, wcfa6 bit 7, [hl] jp z, xor_a ld hl, wd0e4 ld a, [hl] and a jr z, .xor_dec_up dec [hl] jp xor_a .xor_dec_up jp xor_a_dec_a ; 246df .d_down: ; 246df ld hl, wcfa6 bit 7, [hl] jp z, xor_a ld hl, wd0e4 ld a, [wMenuData2Items] add [hl] ld b, a ld a, [wd144] cp b jr c, .xor_dec_down inc [hl] jp xor_a .xor_dec_down jp xor_a_dec_a ; 246fc Function246fc: ; 246fc ld a, [wd0e4] ld c, a ld a, [MenuSelection2] add c ld c, a ret ; 24706 Function24706: ; 24706 (9:4706) call GetMemTileCoord ld de, SCREEN_WIDTH add hl, de ld de, 2 * SCREEN_WIDTH ld a, [wMenuData2Items] .asm_24713 ld [hl], " " add hl, de dec a jr nz, .asm_24713 ret Function2471a: ; 2471a ; Get the value of (wcf95):(wcf96,wcf97) and store it in wd144. ld hl, wcf96 ld a, [hli] ld h, [hl] ld l, a ld a, [wcf95] call GetFarByte ld [wd144], a ; if ([wd144] + 1) < [wMenuData2Items] + [wd0e4]: [wd0e4] = max(([wd144] + 1) - [wMenuData2Items], 0) ld a, [wMenuData2Items] ld c, a ld a, [wd0e4] add c ld c, a ld a, [wd144] inc a cp c jr nc, .skip ld a, [wMenuData2Items] ld c, a ld a, [wd144] inc a sub c jr nc, .store xor a .store ld [wd0e4], a .skip ld a, [wd0e4] ld c, a ld a, [wMenuCursorBuffer] add c ld b, a ld a, [wd144] inc a cp b jr c, .asm_2475a jr nc, .asm_24763 .asm_2475a xor a ld [wd0e4], a ld a, $1 ld [wMenuCursorBuffer], a .asm_24763 ret ; 24764 Function24764: ; 24764 ld a, [wMenuData2Flags] ld c, a ld a, [wd144] ld b, a ld a, [wMenuBorderTopCoord] add $1 ld [wcfa1], a ld a, [wMenuBorderLeftCoord] add $0 ld [wcfa2], a ld a, [wMenuData2Items] cp b jr c, .asm_24786 jr z, .asm_24786 ld a, b inc a .asm_24786 ld [wcfa3], a ld a, $1 ld [wcfa4], a ld a, $8c bit 2, c jr z, .asm_24796 set 0, a .asm_24796 bit 3, c jr z, .asm_2479c set 1, a .asm_2479c ld [wcfa5], a xor a ld [wcfa6], a ld a, $20 ld [wcfa7], a ld a, $c3 bit 7, c jr z, .asm_247b0 add $4 .asm_247b0 bit 6, c jr z, .asm_247b6 add $8 .asm_247b6 ld [wcfa8], a ld a, [wcfa3] ld b, a ld a, [wMenuCursorBuffer] and a jr z, .asm_247c8 cp b jr z, .asm_247ca jr c, .asm_247ca .asm_247c8 ld a, $1 .asm_247ca ld [MenuSelection2], a ld a, $1 ld [wcfaa], a xor a ld [wcfac], a ld [wcfad], a ld [wcfab], a ret ; 247dd Function247dd: ; 247dd ld a, [wd144] ld c, a ld a, [wd0e3] and a jr z, .asm_247ef dec a cp c jr c, .asm_247ef xor a ld [wd0e3], a .asm_247ef ret ; 247f0 Function247f0: ; 247f0 call Function1cf1 ld a, [wMenuData2Flags] bit 4, a jr z, .asm_2480d ld a, [wd0e4] and a jr z, .asm_2480d ld a, [wMenuBorderTopCoord] ld b, a ld a, [wMenuBorderRightCoord] ld c, a call GetTileCoord ld [hl], $61 .asm_2480d call GetMemTileCoord ld bc, $15 add hl, bc ld a, [wMenuData2Items] ld b, a ld c, $0 .asm_2481a ld a, [wd0e4] add c ld [wcf77], a ld a, c call Function248d5 ld a, [MenuSelection] cp $ff jr z, .asm_24851 push bc push hl call Function2486e pop hl ld bc, $28 add hl, bc pop bc inc c ld a, c cp b jr nz, .asm_2481a ld a, [wMenuData2Flags] bit 4, a jr z, .asm_24850 ld a, [wMenuBorderBottomCoord] ld b, a ld a, [wMenuBorderRightCoord] ld c, a call GetTileCoord ld [hl], $ee .asm_24850 ret .asm_24851 ld a, [wMenuData2Flags] bit 0, a jr nz, .asm_24866 ld de, .string_2485f call PlaceString ret .string_2485f db "CANCEL@" .asm_24866 ld d, h ld e, l ld hl, wcf98 jp CallPointerAt ; 2486e Function2486e: ; 2486e push hl ld d, h ld e, l ld hl, wcf98 call CallPointerAt pop hl ld a, [wcf93] and a jr z, .asm_2488a ld e, a ld d, $0 add hl, de ld d, h ld e, l ld hl, wcf9b call CallPointerAt .asm_2488a ret ; 2488b Function2488b: ; 2488b ld a, [wd0e3] and a jr z, .asm_248b7 ld b, a ld a, [wd0e4] cp b jr nc, .asm_248b7 ld c, a ld a, [wMenuData2Items] add c cp b jr c, .asm_248b7 ld a, b sub c dec a add a add $1 ld c, a ld a, [wMenuBorderTopCoord] add c ld b, a ld a, [wMenuBorderLeftCoord] add $0 ld c, a call GetTileCoord ld [hl], $ec .asm_248b7 ret ; 248b8 Function248b8: ; 248b8 ld a, [wMenuData2Flags] bit 5, a ret z bit 1, a jr z, .asm_248c7 ld a, [wd0e3] and a ret nz .asm_248c7 ld a, [MenuSelection2] dec a call Function248d5 ld hl, wcf9e call CallPointerAt ret ; 248d5 Function248d5: ; 248d5 push de push hl ld e, a ld a, [wd0e4] add e ld e, a ld d, $0 ld hl, wcf96 ld a, [hli] ld h, [hl] ld l, a inc hl ld a, [wcf94] cp $1 jr z, .asm_248f2 cp $2 jr z, .asm_248f1 .asm_248f1 add hl, de .asm_248f2 add hl, de ld a, [wcf95] call GetFarByte ld [MenuSelection], a ld [CurItem], a inc hl ld a, [wcf95] call GetFarByte ld [wcf75], a pop hl pop de ret ; 2490c Function2490c: ; 2490c (9:490c) ld a, [wd0e3] and a jr z, .asm_2493d ld b, a ld a, [wcf77] inc a cp b jr z, .asm_24945 ld a, [wcf77] call Function24a5c ld a, [hl] cp $ff ret z ld a, [wd0e3] dec a ld [wd0e3], a call Function249a7 jp c, Function249d1 ld a, [wcf77] ld c, a ld a, [wd0e3] cp c jr c, .asm_2497a jr .asm_2494a .asm_2493d ld a, [wcf77] inc a ld [wd0e3], a ret .asm_24945 xor a ld [wd0e3], a ret .asm_2494a ld a, [wd0e3] call Function24a40 ld a, [wcf77] ld d, a ld a, [wd0e3] ld e, a call Function24a6c push bc ld a, [wd0e3] call Function24a5c dec hl push hl call Function24a80 add hl, bc ld d, h ld e, l pop hl pop bc call Function24aab ld a, [wcf77] call Function24a4d xor a ld [wd0e3], a ret .asm_2497a ld a, [wd0e3] call Function24a40 ld a, [wcf77] ld d, a ld a, [wd0e3] ld e, a call Function24a6c push bc ld a, [wd0e3] call Function24a5c ld d, h ld e, l call Function24a80 add hl, bc pop bc call CopyBytes ld a, [wcf77] call Function24a4d xor a ld [wd0e3], a ret Function249a7: ; 249a7 (9:49a7) ld a, [wd0e3] call Function24a5c ld d, h ld e, l ld a, [wcf77] call Function24a5c ld a, [de] cp [hl] jr nz, .asm_249cd ld a, [wcf77] call Function24a97 cp $63 jr z, .asm_249cd ld a, [wd0e3] call Function24a97 cp $63 jr nz, .asm_249cf .asm_249cd and a ret .asm_249cf scf ret Function249d1: ; 249d1 (9:49d1) ld a, [wd0e3] call Function24a5c inc hl push hl ld a, [wcf77] call Function24a5c inc hl ld a, [hl] pop hl add [hl] cp $64 jr c, .asm_24a01 sub $63 push af ld a, [wcf77] call Function24a5c inc hl ld [hl], $63 ld a, [wd0e3] call Function24a5c inc hl pop af ld [hl], a xor a ld [wd0e3], a ret .asm_24a01 push af ld a, [wcf77] call Function24a5c inc hl pop af ld [hl], a ld hl, wcf96 ld a, [hli] ld h, [hl] ld l, a ld a, [wd0e3] cp [hl] jr nz, .asm_24a25 dec [hl] ld a, [wd0e3] call Function24a5c ld [hl], $ff xor a ld [wd0e3], a ret .asm_24a25 dec [hl] call Function24a80 push bc ld a, [wd0e3] call Function24a5c pop bc push hl add hl, bc pop de .asm_24a34 ld a, [hli] ld [de], a inc de cp $ff jr nz, .asm_24a34 xor a ld [wd0e3], a ret Function24a40: ; 24a40 (9:4a40) call Function24a5c ld de, DefaultFlypoint call Function24a80 call CopyBytes ret Function24a4d: ; 24a4d (9:4a4d) call Function24a5c ld d, h ld e, l ld hl, DefaultFlypoint call Function24a80 call CopyBytes ret Function24a5c: ; 24a5c (9:4a5c) push af call Function24a80 ld hl, wcf96 ld a, [hli] ld h, [hl] ld l, a inc hl pop af call AddNTimes ret Function24a6c: ; 24a6c (9:4a6c) push hl call Function24a80 ld a, d sub e jr nc, .asm_24a76 dec a cpl .asm_24a76 ld hl, $ call AddNTimes ld b, h ld c, l pop hl ret Function24a80: ; 24a80 (9:4a80) push hl ld a, [wcf94] ld c, a ld b, 0 ld hl, Unknown_24a91 rept 2 add hl, bc endr ld c, [hl] inc hl ld b, [hl] pop hl ret ; 24a91 (9:4a91) Unknown_24a91: ; 24a91 dw 0, 1, 2 ; 24a97 Function24a97: ; 24a97 (9:4a97) push af call Function24a80 ld a, c cp $2 jr nz, .asm_24aa7 pop af call Function24a5c inc hl ld a, [hl] ret .asm_24aa7 pop af ld a, $1 ret Function24aab: ; 24aab (9:4aab) ld a, [hld] ld [de], a dec de dec bc ld a, b or c jr nz, Function24aab ret PlaceMenuItemName: ; 0x24ab4 push de ld a, [MenuSelection] ld [wNamedObjectIndexBuffer], a call GetItemName pop hl call PlaceString ret ; 0x24ac3 PlaceMenuItemQuantity: ; 0x24ac3 push de ld a, [MenuSelection] ld [CurItem], a callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] pop hl and a jr nz, .done ld de, $15 add hl, de ld [hl], "×" inc hl ld de, wcf75 lb bc, 1, 2 call PrintNum .done ret ; 0x24ae8 Function24ae8: ; 24ae8 ld hl, MenuDataHeader_0x24b15 call CopyMenuDataHeader jr Function24b01 Function24af0: ; 24af0 ld hl, MenuDataHeader_0x24b1d call CopyMenuDataHeader jr Function24b01 Function24af8: ; 24af8 ld hl, MenuDataHeader_0x24b15 ld de, $b call Function1e2e Function24b01: ; 24b01 call MenuBox call GetMemTileCoord ld de, $15 add hl, de ld de, Money lb bc, PRINTNUM_MONEY | 3, 6 call PrintNum ret ; 24b15 MenuDataHeader_0x24b15: ; 0x24b15 db $40 ; flags db 00, 11 ; start coords db 02, 19 ; end coords dw NULL db 1 ; default option ; 0x24b1d MenuDataHeader_0x24b1d: ; 0x24b1d db $40 ; flags db 11, 00 ; start coords db 13, 08 ; end coords dw NULL db 1 ; default option ; 0x24b25 Special_DisplayCoinCaseBalance: ; 24b25 ; Place a text box of size 1x7 at 11, 0. hlcoord 11, 0 ld b, 1 ld c, 7 call TextBox hlcoord 12, 0 ld de, CoinString call PlaceString hlcoord 17, 1 ld de, ShowMoney_TerminatorString call PlaceString ld de, Coins lb bc, 2, 4 hlcoord 13, 1 call PrintNum ret ; 24b4e Special_DisplayMoneyAndCoinBalance: ; 24b4e hlcoord 5, 0 ld b, 3 ld c, 13 call TextBox hlcoord 6, 1 ld de, MoneyString call PlaceString hlcoord 12, 1 ld de, Money lb bc, PRINTNUM_MONEY | 3, 6 call PrintNum hlcoord 6, 3 ld de, CoinString call PlaceString hlcoord 15, 3 ld de, Coins lb bc, 2, 4 call PrintNum ret ; 24b83 MoneyString: ; 24b83 db "MONEY@" CoinString: ; 24b89 db "COIN@" ShowMoney_TerminatorString: ; 24b8e db "@" ; 24b8f Function24b8f: ; 24b8f ld hl, Options ld a, [hl] push af set 4, [hl] hlcoord 0, 0 ld b, $3 ld c, $7 call TextBox hlcoord 1, 1 ld de, wdc7a lb bc, 2, 3 call PrintNum hlcoord 4, 1 ld de, String24bcf call PlaceString hlcoord 1, 3 ld de, String24bd4 call PlaceString hlcoord 5, 3 ld de, wdc79 lb bc, 1, 2 call PrintNum pop af ld [Options], a ret ; 24bcf String24bcf: ; 24bcf db "/500@" String24bd4: ; 24bd4 db "ボール こ@" ; 24bdc Function24bdc: ; 24bdc hlcoord 0, 0 ld b, $5 ld c, $11 call TextBox ret ; 24be7 Function24be7: ; 24be7 ld hl, Options ld a, [hl] push af set 4, [hl] call Function24bdc hlcoord 1, 5 ld de, String24c52 call PlaceString hlcoord 8, 5 ld de, wdc79 lb bc, PRINTNUM_RIGHTALIGN | 1, 2 call PrintNum hlcoord 1, 1 ld de, String24c4b call PlaceString ld a, [wContestMon] and a ld de, String24c59 jr z, .asm_24c1e ld [wd265], a call GetPokemonName .asm_24c1e hlcoord 8, 1 call PlaceString ld a, [wContestMon] and a jr z, .asm_24c3e hlcoord 1, 3 ld de, String24c5e call PlaceString ld a, [wContestMonLevel] ld h, b ld l, c inc hl ld c, $3 call Function3842 .asm_24c3e pop af ld [Options], a ret ; 24c43 String24c43: ; 24c43 db "ボール こ@" String24c4b: ; 24c4b db "CAUGHT@" String24c52: ; 24c52 db "BALLS:@" String24c59: ; 24c59 db "None@" String24c5e: ; 24c5e db "LEVEL@" ; 24c64 FindApricornsInBag: ; 24c64 ; Checks the bag for Apricorns. ld hl, Buffer1 xor a ld [hli], a dec a ld bc, 10 call ByteFill ld hl, .ApricornBalls .loop ld a, [hl] cp -1 jr z, .done push hl ld [CurItem], a ld hl, NumItems call CheckItem pop hl jr nc, .nope ld a, [hl] call .addtobuffer .nope rept 2 inc hl endr jr .loop .done ld a, [Buffer1] and a ret nz scf ret ; 24c94 .addtobuffer: ; 24c94 push hl ld hl, Buffer1 inc [hl] ld e, [hl] ld d, 0 add hl, de ld [hl], a pop hl ret ; 24ca0 .ApricornBalls: ; 24ca0 db RED_APRICORN, LEVEL_BALL db BLU_APRICORN, LURE_BALL db YLW_APRICORN, MOON_BALL db GRN_APRICORN, FRIEND_BALL db WHT_APRICORN, FAST_BALL db BLK_APRICORN, HEAVY_BALL db PNK_APRICORN, LOVE_BALL db -1 ; 24caf MonMenuOptionStrings: ; 24caf db "STATS@" db "SWITCH@" db "ITEM@" db "CANCEL@" db "MOVE@" db "MAIL@" db "ERROR!@" ; 24cd9 MonMenuOptions: ; 24cd9 ; Moves db MONMENU_FIELD_MOVE, MONMENU_CUT, CUT db MONMENU_FIELD_MOVE, MONMENU_FLY, FLY db MONMENU_FIELD_MOVE, MONMENU_SURF, SURF db MONMENU_FIELD_MOVE, MONMENU_STRENGTH, STRENGTH db MONMENU_FIELD_MOVE, MONMENU_FLASH, FLASH db MONMENU_FIELD_MOVE, MONMENU_WATERFALL, WATERFALL db MONMENU_FIELD_MOVE, MONMENU_WHIRLPOOL, WHIRLPOOL db MONMENU_FIELD_MOVE, MONMENU_DIG, DIG db MONMENU_FIELD_MOVE, MONMENU_TELEPORT, TELEPORT db MONMENU_FIELD_MOVE, MONMENU_SOFTBOILED, SOFTBOILED db MONMENU_FIELD_MOVE, MONMENU_HEADBUTT, HEADBUTT db MONMENU_FIELD_MOVE, MONMENU_ROCKSMASH, ROCK_SMASH db MONMENU_FIELD_MOVE, MONMENU_MILKDRINK, MILK_DRINK db MONMENU_FIELD_MOVE, MONMENU_SWEETSCENT, SWEET_SCENT ; Options db MONMENU_MENUOPTION, MONMENU_STATS, 1 ; STATS db MONMENU_MENUOPTION, MONMENU_SWITCH, 2 ; SWITCH db MONMENU_MENUOPTION, MONMENU_ITEM, 3 ; ITEM db MONMENU_MENUOPTION, MONMENU_CANCEL, 4 ; CANCEL db MONMENU_MENUOPTION, MONMENU_MOVE, 5 ; MOVE db MONMENU_MENUOPTION, MONMENU_MAIL, 6 ; MAIL db MONMENU_MENUOPTION, MONMENU_ERROR, 7 ; ERROR! db -1 ; 24d19 MonSubmenu: ; 24d19 xor a ld [hBGMapMode], a call GetMonSubmenuItems callba Function8ea4a ld hl, .MenuDataHeader call LoadMenuDataHeader call .GetTopCoord call PopulateMonMenu ld a, 1 ld [hBGMapMode], a call MonMenuLoop ld [MenuSelection], a call ExitMenu ret ; 24d3f .MenuDataHeader: ; 24d3f db $40 ; tile backup db 00, 06 ; start coords db 17, 19 ; end coords dw 0 db 1 ; default option ; 24d47 .GetTopCoord: ; 24d47 ; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1) ld a, [Buffer1] inc a add a ld b, a ld a, [wMenuBorderBottomCoord] sub b inc a ld [wMenuBorderTopCoord], a call MenuBox ret ; 24d59 MonMenuLoop: ; 24d59 .loop ld a, $a0 ; flags ld [wMenuData2Flags], a ld a, [Buffer1] ; items ld [wMenuData2Items], a call Function1c10 ld hl, wcfa5 set 6, [hl] call Function1bc9 ld de, SFX_READ_TEXT_2 call PlaySFX ld a, [hJoyPressed] bit 0, a ; A jr nz, .select bit 1, a ; B jr nz, .cancel jr .loop .cancel ld a, MONMENU_CANCEL ; CANCEL ret .select ld a, [MenuSelection2] dec a ld c, a ld b, 0 ld hl, Buffer2 add hl, bc ld a, [hl] ret ; 24d91 PopulateMonMenu: ; 24d91 call GetMemTileCoord ld bc, $2a ; 42 add hl, bc ld de, Buffer2 .loop ld a, [de] inc de cp -1 ret z push de push hl call GetMonMenuString pop hl call PlaceString ld bc, $28 ; 40 add hl, bc pop de jr .loop ; 24db0 GetMonMenuString: ; 24db0 ld hl, MonMenuOptions + 1 ld de, 3 call IsInArray dec hl ld a, [hli] cp 1 jr z, .NotMove inc hl ld a, [hl] ld [wd265], a call GetMoveName ret .NotMove inc hl ld a, [hl] dec a ld hl, MonMenuOptionStrings call GetNthString ld d, h ld e, l ret ; 24dd4 GetMonSubmenuItems: ; 24dd4 call ResetMonSubmenu ld a, [CurPartySpecies] cp EGG jr z, .egg ld a, [wLinkMode] and a jr nz, .skip_moves ld a, MON_MOVES call GetPartyParamLocation ld d, h ld e, l ld c, NUM_MOVES .loop push bc push de ld a, [de] and a jr z, .next push hl call IsFieldMove pop hl jr nc, .next call AddMonMenuItem .next pop de inc de pop bc dec c jr nz, .loop .skip_moves ld a, MONMENU_STATS call AddMonMenuItem ld a, MONMENU_SWITCH call AddMonMenuItem ld a, MONMENU_MOVE call AddMonMenuItem ld a, [wLinkMode] and a jr nz, .skip2 push hl ld a, MON_ITEM call GetPartyParamLocation ld d, [hl] callba ItemIsMail pop hl ld a, MONMENU_MAIL jr c, .ok ld a, MONMENU_ITEM .ok call AddMonMenuItem .skip2 ld a, [Buffer1] cp NUM_MON_SUBMENU_ITEMS jr z, .ok2 ld a, MONMENU_CANCEL call AddMonMenuItem .ok2 call TerminateMonSubmenu ret .egg ld a, MONMENU_STATS call AddMonMenuItem ld a, MONMENU_SWITCH call AddMonMenuItem ld a, MONMENU_CANCEL call AddMonMenuItem call TerminateMonSubmenu ret ; 24e52 IsFieldMove: ; 24e52 ld b, a ld hl, MonMenuOptions .next ld a, [hli] cp -1 jr z, .nope cp MONMENU_MENUOPTION jr z, .nope ld d, [hl] inc hl ld a, [hli] cp b jr nz, .next ld a, d scf .nope ret ; 24e68 ResetMonSubmenu: ; 24e68 xor a ld [Buffer1], a ld hl, Buffer2 ld bc, NUM_MON_SUBMENU_ITEMS + 1 call ByteFill ret ; 24e76 TerminateMonSubmenu: ; 24e76 ld a, [Buffer1] ld e, a ld d, $0 ld hl, Buffer2 add hl, de ld [hl], -1 ret ; 24e83 AddMonMenuItem: ; 24e83 push hl push de push af ld a, [Buffer1] ld e, a inc a ld [Buffer1], a ld d, $0 ld hl, Buffer2 add hl, de pop af ld [hl], a pop de pop hl ret ; 24e99 Function24e99: ; 24e99 ; BattleMonMenu ld hl, MenuDataHeader_0x24ed4 call CopyMenuDataHeader xor a ld [hBGMapMode], a call MenuBox call UpdateSprites call Function1c89 call WaitBGMap call Function1c66 ld a, [wMenuData2Flags] bit 7, a jr z, .asm_24ed0 call Function1c10 ld hl, wcfa5 set 6, [hl] call Function1bc9 ld de, SFX_READ_TEXT_2 call PlaySFX ld a, [hJoyPressed] bit 1, a jr z, .asm_24ed2 ret z .asm_24ed0 scf ret .asm_24ed2 and a ret ; 24ed4 MenuDataHeader_0x24ed4: ; 24ed4 db $00 ; flags db 11, 11 ; start coords db 17, 19 ; end coords dw MenuData2_0x24edc db 1 ; default option ; 24edc MenuData2_0x24edc: ; 24edc db $c0 ; flags db 3 ; items db "SWITCH@" db "STATS@" db "CANCEL@" ; 24ef2 LoadBattleMenu: ; 24ef2 ld hl, BattleMenuDataHeader call LoadMenuDataHeader ld a, [wd0d2] ld [wMenuCursorBuffer], a call Function2039 ld a, [wMenuCursorBuffer] ld [wd0d2], a call ExitMenu ret ; 24f0b SafariBattleMenu: ; 24f0b ; untranslated ld hl, MenuDataHeader_0x24f4e call LoadMenuDataHeader jr Function24f19 ; 24f13 ContestBattleMenu: ; 24f13 ld hl, MenuDataHeader_0x24f89 call LoadMenuDataHeader ; 24f19 Function24f19: ; 24f19 ld a, [wd0d2] ld [wMenuCursorBuffer], a call InterpretMenu ld a, [wMenuCursorBuffer] ld [wd0d2], a call ExitMenu ret ; 24f2c BattleMenuDataHeader: ; 24f2c db $40 ; flags db 12, 08 ; start coords db 17, 19 ; end coords dw MenuData_0x24f34 db 1 ; default option ; 24f34 MenuData_0x24f34: ; 0x24f34 db $81 ; flags dn 2, 2 ; rows, columns db 6 ; spacing dba Strings24f3d dbw $09, 0 ; 0x24f3d Strings24f3d: ; 0x24f3d db "FIGHT@" db $4a, "@" db "PACK@" db "RUN@" ; 24f4e MenuDataHeader_0x24f4e: ; 24f4e db $40 ; flags db 12, 00 ; start coords db 17, 19 ; end coords dw MenuData_0x24f56 db 1 ; default option ; 24f56 MenuData_0x24f56: ; 24f56 db $81 ; flags dn 2, 2 ; rows, columns db 11 ; spacing dba Strings24f5f dba Function24f7c ; 24f5f Strings24f5f: ; 24f5f db "サファりボール× @" ; "SAFARI BALL× @" db "エサをなげる@" ; "THROW BAIT" db "いしをなげる@" ; "THROW ROCK" db "にげる@" ; "RUN" ; 24f7c Function24f7c: ; 24f7c hlcoord 17, 13 ld de, wdc79 lb bc, PRINTNUM_LEADINGZEROS | 1, 2 call PrintNum ret ; 24f89 MenuDataHeader_0x24f89: ; 24f89 db $40 ; flags db 12, 02 ; start coords db 17, 19 ; end coords dw MenuData_0x24f91 db 1 ; default option ; 24f91 MenuData_0x24f91: ; 24f91 db $81 ; flags dn 2, 2 ; rows, columns db 12 ; spacing dba Strings24f9a dba Function24fb2 ; 24f9a Strings24f9a: ; 24f9a db "FIGHT@" db $4a, "@" db "PARKBALL× @" db "RUN@" ; 24fb2 Function24fb2: ; 24fb2 hlcoord 13, 16 ld de, wdc79 lb bc, PRINTNUM_LEADINGZEROS | 1, 2 call PrintNum ret ; 24fbf Function24fbf: ; 24fbf ld hl, MenuDataHeader_0x250ed call LoadMenuDataHeader call Function24ff9 ret ; 24fc9 Function24fc9: ; 24fc9 callba GetItemPrice Function24fcf: ; 24fcf ld a, d ld [Buffer1], a ld a, e ld [Buffer2], a ld hl, MenuDataHeader_0x250f5 call LoadMenuDataHeader call Function24ff9 ret ; 24fe1 Function24fe1: ; 24fe1 callba GetItemPrice ld a, d ld [Buffer1], a ld a, e ld [Buffer2], a ld hl, MenuDataHeader_0x250fd call LoadMenuDataHeader call Function24ff9 ret ; 24ff9 Function24ff9: ; 24ff9 ld a, $1 ld [wItemQuantityChangeBuffer], a .asm_24ffe call Function25072 call Function2500e jr nc, .asm_24ffe cp $ff jr nz, .asm_2500c scf ret .asm_2500c 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 and a ret .asm_2502b ld a, $ff scf ret .asm_2502f ld a, $0 scf ret .asm_25033 ld hl, wItemQuantityChangeBuffer dec [hl] jr nz, .asm_2503d ld a, [wItemQuantityBuffer] ld [hl], a .asm_2503d and a ret .asm_2503f ld hl, wItemQuantityChangeBuffer inc [hl] ld a, [wItemQuantityBuffer] cp [hl] jr nc, .asm_2504b ld [hl], $1 .asm_2504b and a ret .asm_2504d ld a, [wItemQuantityChangeBuffer] sub $a jr c, .asm_25058 jr z, .asm_25058 jr .asm_2505a .asm_25058 ld a, $1 .asm_2505a ld [wItemQuantityChangeBuffer], a and a ret .asm_2505f ld a, [wItemQuantityChangeBuffer] add $a ld b, a ld a, [wItemQuantityBuffer] cp b jr nc, .asm_2506c ld b, a .asm_2506c ld a, b ld [wItemQuantityChangeBuffer], a and a ret ; 25072 Function25072: ; 25072 call MenuBox call GetMemTileCoord ld de, $15 add hl, de ld [hl], $f1 inc hl ld de, wItemQuantityChangeBuffer lb bc, PRINTNUM_LEADINGZEROS | 1, 2 call PrintNum ld a, [wcf86] ld e, a ld a, [wcf87] ld d, a ld a, [wcf8a] call FarCall_de ret ; 25097 Function25097: ; 25097 ret ; 25098 Function25098: ; 25098 call Function250a9 call Function250d1 ret ; 2509f Function2509f: ; 2509f call Function250a9 call Function250c1 call Function250d1 ret ; 250a9 Function250a9: ; 250a9 xor a ld [hMultiplicand + 0], a ld a, [Buffer1] ld [hMultiplicand + 1], a ld a, [Buffer2] ld [hMultiplicand + 2], a ld a, [wItemQuantityChangeBuffer] ld [hMultiplier], a push hl call Multiply pop hl ret ; 250c1 Function250c1: ; 250c1 push hl ld hl, hMultiplicand ld a, [hl] srl a ld [hli], a ld a, [hl] rra ld [hli], a ld a, [hl] rra ld [hl], a pop hl ret ; 250d1 Function250d1: ; 250d1 push hl ld hl, hMoneyTemp ld a, [hMultiplicand] ld [hli], a ld a, [$ffb5] ld [hli], a ld a, [$ffb6] ld [hl], a pop hl inc hl ld de, hMoneyTemp lb bc, PRINTNUM_MONEY | 3, 6 call PrintNum call WaitBGMap ret ; 250ed MenuDataHeader_0x250ed: ; 0x250ed db $40 ; flags db 09, 15 ; start coords db 11, 19 ; end coords dw Function25097 db 0 ; default option ; 0x250f5 MenuDataHeader_0x250f5: ; 0x250f5 db $40 ; flags db 15, 07 ; start coords db 17, 19 ; end coords dw Function25098 db -1 ; default option ; 0x250fd MenuDataHeader_0x250fd: ; 0x250fd db $40 ; flags db 15, 07 ; start coords db 17, 19 ; end coords dw Function2509f 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 WhiteBGMap 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 [$ffad], 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, [$ff9b] and $1f ret nz hlcoord 15, 12 ld a, [hl] xor $51 ld [hl], a ret Function25438: ; 25438 (9:5438) ld a, [$ff9b] 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" ProfOaksPC: ; 0x265d3 ld hl, OakPCText1 call MenuTextBox call YesNoBox jr c, .shutdown call ProfOaksPCBoot ; player chose "yes"? .shutdown ld hl, OakPCText4 call PrintText call JoyWaitAorB call ExitMenu ret ; 0x265ee ProfOaksPCBoot ; 0x265ee ld hl, OakPCText2 call PrintText call Rate call PlaySFX ; sfx loaded by previous Rate function call call JoyWaitAorB call WaitSFX ret ; 0x26601 Function26601: ; 0x26601 call Rate push de ld de, MUSIC_NONE call PlayMusic pop de call PlaySFX call JoyWaitAorB call WaitSFX ret ; 0x26616 Rate: ; 0x26616 ; calculate Seen/Owned ld hl, PokedexSeen ld b, EndPokedexSeen - PokedexSeen call CountSetBits ld [DefaultFlypoint], a ld hl, PokedexCaught ld b, EndPokedexCaught - PokedexCaught call CountSetBits ld [wd003], a ; print appropriate rating call ClearOakRatingBuffers ld hl, OakPCText3 call PrintText call JoyWaitAorB ld a, [wd003] ld hl, OakRatings call FindOakRating push de call PrintText pop de ret ; 0x26647 ClearOakRatingBuffers: ; 0x26647 ld hl, StringBuffer3 ld de, DefaultFlypoint call ClearOakRatingBuffer ld hl, StringBuffer4 ld de, wd003 call ClearOakRatingBuffer ret ; 0x2665a ClearOakRatingBuffer: ; 0x2665a push hl ld a, "@" ld bc, ITEM_NAME_LENGTH call ByteFill pop hl lb bc, PRINTNUM_RIGHTALIGN | 1, 3 call PrintNum ret ; 0x2666b FindOakRating: ; 0x2666b ; return sound effect in de ; return text pointer in hl nop ld c, a .loop ld a, [hli] cp c jr nc, .match rept 4 inc hl endr jr .loop .match ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld h, [hl] ld l, a ret ; 0x2667f OakRatings: ; 0x2667f ; db count (if number caught ≤ this number, then this entry is used) ; dw sound effect ; dw text pointer db 9 dw SFX_DEX_FANFARE_LESS_THAN_20 dw OakRating01 db 19 dw SFX_DEX_FANFARE_LESS_THAN_20 dw OakRating02 db 34 dw SFX_DEX_FANFARE_20_49 dw OakRating03 db 49 dw SFX_DEX_FANFARE_20_49 dw OakRating04 db 64 dw SFX_DEX_FANFARE_50_79 dw OakRating05 db 79 dw SFX_DEX_FANFARE_50_79 dw OakRating06 db 94 dw SFX_DEX_FANFARE_80_109 dw OakRating07 db 109 dw SFX_DEX_FANFARE_80_109 dw OakRating08 db 124 dw SFX_CAUGHT_MON dw OakRating09 db 139 dw SFX_CAUGHT_MON dw OakRating10 db 154 dw SFX_DEX_FANFARE_140_169 dw OakRating11 db 169 dw SFX_DEX_FANFARE_140_169 dw OakRating12 db 184 dw SFX_DEX_FANFARE_170_199 dw OakRating13 db 199 dw SFX_DEX_FANFARE_170_199 dw OakRating14 db 214 dw SFX_DEX_FANFARE_200_229 dw OakRating15 db 229 dw SFX_DEX_FANFARE_200_229 dw OakRating16 db 239 dw SFX_DEX_FANFARE_230_PLUS dw OakRating17 db 248 dw SFX_DEX_FANFARE_230_PLUS dw OakRating18 db 255 dw SFX_DEX_FANFARE_230_PLUS dw OakRating19 OakPCText1: ; 0x266de text_jump _OakPCText1 db "@" OakPCText2: ; 0x266e3 text_jump _OakPCText2 db "@" OakPCText3: ; 0x266e8 text_jump _OakPCText3 db "@" OakRating01: text_jump _OakRating01 db "@" OakRating02: text_jump _OakRating02 db "@" OakRating03: text_jump _OakRating03 db "@" OakRating04: text_jump _OakRating04 db "@" OakRating05: text_jump _OakRating05 db "@" OakRating06: text_jump _OakRating06 db "@" OakRating07: text_jump _OakRating07 db "@" OakRating08: text_jump _OakRating08 db "@" OakRating09: text_jump _OakRating09 db "@" OakRating10: text_jump _OakRating10 db "@" OakRating11: text_jump _OakRating11 db "@" OakRating12: text_jump _OakRating12 db "@" OakRating13: text_jump _OakRating13 db "@" OakRating14: text_jump _OakRating14 db "@" OakRating15: text_jump _OakRating15 db "@" OakRating16: text_jump _OakRating16 db "@" OakRating17: text_jump _OakRating17 db "@" OakRating18: text_jump _OakRating18 db "@" OakRating19: text_jump _OakRating19 db "@" 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, DefaultFlypoint 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, DefaultFlypoint 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, DefaultFlypoint 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, DefaultFlypoint ld e, [hl] dec [hl] ld d, 0 add hl, de ld [hl], -1 call LoadMenuDataHeader_0x1d75 ld hl, MenuDataHeader_0x269c5 call CopyMenuDataHeader xor a ld [hBGMapMode], a call Function352f xor a ld [wd0e4], a call Function350c 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 Function1c66 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 PadCoords_de: ; 27092 ld a, d add 4 ld d, a ld a, e add 4 ld e, a call GetBlockLocation ret ; 2709e LevelUpHappinessMod: ; 2709e ld a, [CurPartyMon] ld hl, PartyMon1CaughtLocation call GetPartyLocation ld a, [hl] and $7f ld d, a ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a call GetWorldMapLocation cp d ld c, HAPPINESS_GAINLEVEL jr nz, .ok ld c, HAPPINESS_GAINLEVELATHOME .ok callab ChangeHappiness ret ; 270c4 INCLUDE "trainers/dvs.asm" Function2715c: ; 2715c call WhiteBGMap call ClearTileMap ld a, [BattleType] cp BATTLETYPE_TUTORIAL jr z, .gettutorialbackpic callba Function3f43d jr .continue .gettutorialbackpic callba GetBattleBackpic .continue callba Function3f47c callba Function3ed9f call ClearSGB call WriteBackup call LoadMenuDataHeader_0x1d75 call WaitBGMap jp SetPalettes ; 27192 Function27192: ; 27192 push hl push de push bc ld a, [hBattleTurn] and a ld hl, OTPartyMon1Item ld de, EnemyMonItem ld a, [CurOTMon] jr z, .theirturn ld hl, PartyMon1Item ld de, BattleMonItem ld a, [CurBattleMon] .theirturn push hl push af ld a, [de] ld b, a callba GetItem ld hl, Unknown_271de .loop ld a, [hli] cp b jr z, .ok inc a jr nz, .loop pop af pop hl pop bc pop de pop hl ret .ok xor a ld [de], a pop af pop hl call GetPartyLocation ld a, [hBattleTurn] and a jr nz, .ourturn ld a, [wBattleMode] dec a jr z, .done .ourturn ld [hl], $0 .done pop bc pop de pop hl ret ; 271de Unknown_271de: ; 271de ; Consumable items? db HELD_BERRY db $02 db $05 db HELD_HEAL_POISON db HELD_HEAL_FREEZE db HELD_HEAL_BURN db HELD_HEAL_SLEEP db HELD_HEAL_PARALYZE db HELD_HEAL_STATUS db $1e db HELD_ATTACK_UP db HELD_DEFENSE_UP db HELD_SPEED_UP db HELD_SP_ATTACK_UP db HELD_SP_DEFENSE_UP db HELD_ACCURACY_UP db HELD_EVASION_UP db $26 db $47 db HELD_ESCAPE db HELD_CRITICAL_UP db -1 ; 271f4 MoveEffectsPointers: ; 271f4 INCLUDE "battle/moves/move_effects_pointers.asm" MoveEffects: ; 2732e INCLUDE "battle/moves/move_effects.asm" Function27a28: ; 27a28 call Function2500e ld b, a ret ; 27a2d SECTION "bankA", ROMX, BANK[$A] LinkCommunications: ; 28000 call WhiteBGMap ld c, $50 call DelayFrames call ClearScreen call ClearSprites call UpdateSprites xor a ld [hSCX], a ld [hSCY], a ld c, $50 call DelayFrames call ClearScreen call UpdateSprites call LoadStandardFont call LoadFontsBattleExtra callba Function16d69a call Function3200 hlcoord 3, 8 ld b, $2 ld c, $c ld d, h ld e, l callba Function4d35b hlcoord 4, 10 ld de, String28419 call PlaceString call Function28eff call Function3200 ld hl, wcf5d xor a ld [hli], a ld [hl], $50 ld a, [wLinkMode] cp LINK_TIMECAPSULE jp nz, Function28177 Function2805d: ; 2805d call Function28426 call Function28499 call Function28434 xor a ld [wcf56], a call Function87d ld a, [$ffcb] cp $2 jr nz, .asm_28091 ld c, $3 call DelayFrames xor a ld [hSerialSend], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a call DelayFrame xor a ld [hSerialSend], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a .asm_28091 ld de, MUSIC_NONE call PlayMusic ld c, $3 call DelayFrames xor a ld [rIF], a ld a, $8 ld [rIE], a ld hl, wd1f3 ld de, EnemyMonSpecies ld bc, $11 call Function75f ld a, $fe ld [de], a ld hl, OverworldMap ld de, wd26b ld bc, $1a8 call Function75f ld a, $fe ld [de], a ld hl, wc608 ld de, wc6d0 ld bc, $c8 call Function75f xor a ld [rIF], a ld a, $1d ld [rIE], a call Function287ab ld hl, wd26b call Function287ca push hl ld bc, NAME_LENGTH add hl, bc ld a, [hl] pop hl and a jp z, Function28b22 cp $7 jp nc, Function28b22 ld de, OverworldMap ld bc, $1a2 call Function2879e ld de, wc6d0 ld hl, wc813 ld c, $2 .asm_280fe ld a, [de] inc de and a jr z, .asm_280fe cp $fd jr z, .asm_280fe cp $fe jr z, .asm_280fe cp $ff jr z, .asm_2811d push hl push bc ld b, $0 dec a ld c, a add hl, bc ld a, $fe ld [hl], a pop bc pop hl jr .asm_280fe .asm_2811d ld hl, wc90f dec c jr nz, .asm_280fe ld hl, OverworldMap ld de, wd26b ld bc, NAME_LENGTH call CopyBytes ld de, OTPartyCount ld a, [hli] ld [de], a inc de .asm_28135 ld a, [hli] cp $ff jr z, .asm_2814e ld [wd265], a push hl push de callab ConvertMon_1to2 pop de pop hl ld a, [wd265] ld [de], a inc de jr .asm_28135 .asm_2814e ld [de], a ld hl, wc813 call Function2868a ld a, OTPartyMonOT % $100 ld [wd102], a ld a, OTPartyMonOT / $100 ld [wd103], a ld de, MUSIC_NONE call PlayMusic ld a, [$ffcb] cp $2 ld c, 66 call z, DelayFrames ld de, MUSIC_ROUTE_30 call PlayMusic jp Function287e3 ; 28177 Function28177: ; 28177 call Function28426 call Function28595 call Function28434 call Function29dba ld a, [ScriptVar] and a jp z, Function283b2 ld a, [$ffcb] cp $2 jr nz, .asm_281ae ld c, $3 call DelayFrames xor a ld [hSerialSend], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a call DelayFrame xor a ld [hSerialSend], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a .asm_281ae ld de, MUSIC_NONE call PlayMusic ld c, $3 call DelayFrames xor a ld [rIF], a ld a, $8 ld [rIE], a ld hl, wd1f3 ld de, EnemyMonSpecies ld bc, $11 call Function75f ld a, $fe ld [de], a ld hl, OverworldMap ld de, wd26b ld bc, $1c2 call Function75f ld a, $fe ld [de], a ld hl, wc608 ld de, wc6d0 ld bc, $c8 call Function75f ld a, [wLinkMode] cp LINK_TRADECENTER jr nz, .asm_281fd ld hl, wc9f4 ld de, wcb84 ld bc, $186 call Function283f2 .asm_281fd xor a ld [rIF], a ld a, $1d ld [rIE], a ld de, MUSIC_NONE call PlayMusic call Function287ab ld hl, wd26b call Function287ca ld de, OverworldMap ld bc, $1b9 call Function2879e ld de, wc6d0 ld hl, wc813 ld c, $2 .asm_28224 ld a, [de] inc de and a jr z, .asm_28224 cp $fd jr z, .asm_28224 cp $fe jr z, .asm_28224 cp $ff jr z, .asm_28243 push hl push bc ld b, $0 dec a ld c, a add hl, bc ld a, $fe ld [hl], a pop bc pop hl jr .asm_28224 .asm_28243 ld hl, wc90f dec c jr nz, .asm_28224 ld a, [wLinkMode] cp LINK_TRADECENTER jp nz, .asm_282fe ld hl, wcb84 .asm_28254 ld a, [hli] cp $20 jr nz, .asm_28254 .asm_28259 ld a, [hli] cp $fe jr z, .asm_28259 cp $20 jr z, .asm_28259 dec hl ld de, wcb84 ld bc, $190 call CopyBytes ld hl, wcb84 ld bc, $c6 .asm_28272 ld a, [hl] cp $21 jr nz, .asm_28279 ld [hl], $fe .asm_28279 inc hl dec bc ld a, b or c jr nz, .asm_28272 ld de, wcc9e .asm_28282 ld a, [de] inc de cp $ff jr z, .asm_28294 ld hl, wcc4a dec a ld b, $0 ld c, a add hl, bc ld [hl], $fe jr .asm_28282 .asm_28294 ld hl, wcb84 ld de, wc9f4 ld b, $6 .asm_2829c push bc ld bc, $21 call CopyBytes ld a, $e add e ld e, a ld a, $0 adc d ld d, a pop bc dec b jr nz, .asm_2829c ld de, wc9f4 ld b, $6 .asm_282b4 push bc ld a, $21 add e ld e, a ld a, $0 adc d ld d, a ld bc, $e call CopyBytes pop bc dec b jr nz, .asm_282b4 ld b, $6 ld de, wc9f4 .asm_282cc push bc push de callba Function1de5c8 ld a, c or a jr z, .asm_282ee sub $3 jr nc, .asm_282e4 callba Function1df203 jr .asm_282ee .asm_282e4 cp $2 jr nc, .asm_282ee callba Function1df220 .asm_282ee pop de ld hl, $2f add hl, de ld d, h ld e, l pop bc dec b jr nz, .asm_282cc ld de, wcb0e xor a ld [de], a .asm_282fe ld hl, OverworldMap ld de, wd26b ld bc, NAME_LENGTH call CopyBytes ld de, OTPartyCount ld bc, 8 call CopyBytes ld de, wd276 ld bc, 2 call CopyBytes ld de, OTPartyMon1Species ld bc, $1a4 call CopyBytes ld a, OTPartyMonOT % $100 ld [wd102], a ld a, OTPartyMonOT / $100 ld [wd103], a ld de, MUSIC_NONE call PlayMusic ld a, [$ffcb] cp $2 ld c, 66 call z, DelayFrames ld a, [wLinkMode] cp LINK_COLOSSEUM jr nz, .asm_283a9 ld a, CAL ld [OtherTrainerClass], a call ClearScreen callba Function4d354 ld hl, Options ld a, [hl] push af and $20 or $3 ld [hl], a ld hl, wd26b ld de, OTName ld bc, NAME_LENGTH call CopyBytes call Function222a ld a, [wc2d7] push af ld a, $1 ld [wc2d7], a ld a, [rIE] push af ld a, [rIF] push af xor a ld [rIF], a ld a, [rIE] set 1, a ld [rIE], a pop af ld [rIF], a predef StartBattle ld a, [rIF] ld h, a xor a ld [rIF], a pop af ld [rIE], a ld a, h ld [rIF], a pop af ld [wc2d7], a pop af ld [Options], a callba LoadPokemonData jp Function28b22 .asm_283a9 ld de, MUSIC_ROUTE_30 call PlayMusic jp Function287e3 ; 283b2 Function283b2: ; 283b2 ld de, UnknownText_0x283ed ld b, $a .asm_283b7 call DelayFrame call Function908 dec b jr nz, .asm_283b7 xor a ld [hld], a ld [hl], a ld [hVBlank], a push de hlcoord 0, 12 ld b, $4 ld c, $12 push de ld d, h ld e, l callba Function4d35b pop de pop hl bccoord 1, 14 call PlaceWholeStringInBoxAtOnce call FadeToWhite call ClearScreen ld b, $8 call GetSGBLayout call Function3200 ret ; 283ed UnknownText_0x283ed: ; 0x283ed ; Too much time has elapsed. Please try again. text_jump UnknownText_0x1c4183 db "@" ; 0x283f2 Function283f2: ; 283f2 ld a, $1 ld [$ffcc], a .asm_283f6 ld a, [hl] ld [hSerialSend], a call Function78a push bc ld b, a inc hl ld a, $30 .asm_28401 dec a jr nz, .asm_28401 ld a, [$ffcc] and a ld a, b pop bc jr z, .asm_28411 dec hl xor a ld [$ffcc], a jr .asm_283f6 .asm_28411 ld [de], a inc de dec bc ld a, b or c jr nz, .asm_283f6 ret ; 28419 String28419: ; 28419 db "PLEASE WAIT!@" ; 28426 Function28426: ; 28426 ld hl, OverworldMap lb bc, 5, SCREEN_WIDTH .asm_2842c xor a ld [hli], a dec bc ld a, b or c jr nz, .asm_2842c ret ; 28434 Function28434: ; 28434 ld hl, wd1f3 ld a, $fd ld b, $7 .asm_2843b ld [hli], a dec b jr nz, .asm_2843b ld b, $a .asm_28441 call Random cp $fd jr nc, .asm_28441 ld [hli], a dec b jr nz, .asm_28441 ld hl, wc608 ld a, $fd rept 3 ld [hli], a endr ld b, $c8 xor a .asm_28457 ld [hli], a dec b jr nz, .asm_28457 ld hl, wc818 ld de, wc608 + 10 ld bc, 0 .asm_28464 inc c ld a, c cp $fd jr z, .asm_2848c ld a, b dec a jr nz, .asm_2847f push bc ld a, [wLinkMode] cp LINK_TIMECAPSULE ld b, $d jr z, .asm_2847a ld b, $27 .asm_2847a ld a, c cp b pop bc jr z, .asm_28495 .asm_2847f inc hl ld a, [hl] cp $fe jr nz, .asm_28464 ld a, c ld [de], a inc de ld [hl], $ff jr .asm_28464 .asm_2848c ld a, $ff ld [de], a inc de lb bc, 1, 0 jr .asm_28464 .asm_28495 ld a, $ff ld [de], a ret ; 28499 Function28499: ; 28499 ld de, OverworldMap ld a, $fd ld b, $6 .asm_284a0 ld [de], a inc de dec b jr nz, .asm_284a0 ld hl, PlayerName ld bc, NAME_LENGTH call CopyBytes push de ld hl, PartyCount ld a, [hli] ld [de], a inc de .asm_284b5 ld a, [hli] cp $ff jr z, .asm_284ce ld [wd265], a push hl push de callab ConvertMon_2to1 pop de pop hl ld a, [wd265] ld [de], a inc de jr .asm_284b5 .asm_284ce ld [de], a pop de ld hl, $8 add hl, de ld d, h ld e, l ld hl, PartyMon1Species ld c, $6 .asm_284db push bc call Function284f6 ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc dec c jr nz, .asm_284db ld hl, PartyMonOT call .asm_284f0 ld hl, PartyMonNicknames .asm_284f0 ld bc, $42 jp CopyBytes ; 284f6 Function284f6: ; 284f6 ld b, h ld c, l push de push bc ld a, [hl] ld [wd265], a callab ConvertMon_2to1 pop bc pop de ld a, [wd265] ld [de], a inc de ld hl, $22 add hl, bc ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a inc de xor a ld [de], a inc de ld hl, $20 add hl, bc ld a, [hl] ld [de], a inc de ld a, [bc] cp $51 jr z, .asm_28528 cp $52 jr nz, .asm_28530 .asm_28528 ld a, $17 ld [de], a inc de ld [de], a inc de jr .asm_28544 .asm_28530 push bc dec a ld hl, BaseData + 7 ; type ld bc, BaseData1 - BaseData0 call AddNTimes ld bc, 2 ld a, BANK(BaseData) call FarCopyBytes pop bc .asm_28544 push bc ld hl, $1 add hl, bc ld bc, $1a call CopyBytes pop bc ld hl, $1f add hl, bc ld a, [hl] ld [de], a ld [CurPartyLevel], a inc de push bc ld hl, $24 add hl, bc ld bc, 8 call CopyBytes pop bc push de push bc ld a, [bc] dec a push bc ld b, 0 ld c, a ld hl, KantoMonSpecials add hl, bc ld a, BANK(KantoMonSpecials) call GetFarByte ld [BaseSpecialAttack], a pop bc ld hl, $a add hl, bc ld c, $5 ld b, $1 predef CalcPkmnStatC pop bc pop de ld a, [$ffb5] ld [de], a inc de ld a, [$ffb6] ld [de], a inc de ld h, b ld l, c ret ; 28595 Function28595: ; 28595 ld de, OverworldMap ld a, $fd ld b, $6 .loop1 ld [de], a inc de dec b jr nz, .loop1 ld hl, PlayerName ld bc, NAME_LENGTH call CopyBytes ld hl, PartyCount ld bc, 8 call CopyBytes ld hl, PlayerID ld bc, 2 call CopyBytes ld hl, PartyMon1Species ld bc, $120 call CopyBytes ld hl, PartyMonOT ld bc, $42 call CopyBytes ld hl, PartyMonNicknames ld bc, $42 call CopyBytes ld a, [wLinkMode] cp LINK_TRADECENTER ret nz ld de, wc9f4 ld a, $20 call Function28682 ld a, BANK(sPartyScratch1) call GetSRAMBank ld hl, sPartyScratch1 ld b, PARTY_LENGTH .loop2 push bc ld bc, $21 call CopyBytes ld bc, $e add hl, bc pop bc dec b jr nz, .loop2 ld hl, sPartyScratch1 ld b, PARTY_LENGTH .loop3 push bc ld bc, $21 add hl, bc ld bc, $e call CopyBytes pop bc dec b jr nz, .loop3 ld b, PARTY_LENGTH ld de, sPartyScratch1 ld hl, wc9f9 .loop4 push bc push hl push de push hl callba Function1de5c8 pop de ld a, c or a jr z, .next sub $3 jr nc, .skip callba Function1df1e6 jr .next .skip cp $2 jr nc, .next callba Function1df220 .next pop de ld hl, (SCRATCHMON_STRUCT_LENGTH) add hl, de ld d, h ld e, l pop hl ld bc, $21 add hl, bc pop bc dec b jr nz, .loop4 call CloseSRAM ld hl, wc9f9 ld bc, $c6 .loop5 ld a, [hl] cp $fe jr nz, .skip2 ld [hl], $21 .skip2 inc hl dec bc ld a, b or c jr nz, .loop5 ld hl, wcabf ld de, wcb13 ld b, $54 ld c, $0 .loop6 inc c ld a, [hl] cp $fe jr nz, .skip3 ld [hl], $ff ld a, c ld [de], a inc de .skip3 inc hl dec b jr nz, .loop6 ld a, $ff ld [de], a ret ; 28682 Function28682: ; 28682 ld c, $5 .loop ld [de], a inc de dec c jr nz, .loop ret ; 2868a Function2868a: ; 2868a push hl ld d, h ld e, l ld bc, wcbea ld hl, wcbe8 ld a, c ld [hli], a ld [hl], b ld hl, OTPartyMon1Species ld c, $6 .loop push bc call Function286ba pop bc dec c jr nz, .loop pop hl lb bc, 1, 8 add hl, bc ld de, OTPartyMonOT ld bc, $42 call CopyBytes ld de, OTPartyMonNicknames ld bc, $42 jp CopyBytes ; 286ba Function286ba: ; 286ba ld b, h ld c, l ld a, [de] inc de push bc push de ld [wd265], a callab ConvertMon_1to2 pop de pop bc ld a, [wd265] ld [bc], a ld [CurSpecies], a ld hl, $22 add hl, bc ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hl], a inc de ld hl, $20 add hl, bc ld a, [de] inc de ld [hl], a ld hl, wcbe8 ld a, [hli] ld h, [hl] ld l, a ld a, [de] ld [hli], a inc de ld a, [de] ld [hli], a inc de ld a, l ld [wcbe8], a ld a, h ld [wcbe9], a push bc ld hl, $1 add hl, bc push hl ld h, d ld l, e pop de push bc ld a, [hli] ld b, a call Function28771 ld a, b ld [de], a inc de pop bc ld bc, $19 call CopyBytes pop bc ld d, h ld e, l ld hl, $1f add hl, bc ld a, [de] inc de ld [hl], a ld [CurPartyLevel], a push bc ld hl, $24 add hl, bc push hl ld h, d ld l, e pop de ld bc, 8 call CopyBytes pop bc call GetBaseData push de push bc ld d, h ld e, l ld hl, $a add hl, bc ld c, $5 ld b, $1 predef CalcPkmnStatC pop bc pop hl ld a, [$ffb5] ld [hli], a ld a, [$ffb6] ld [hli], a push hl push bc ld hl, $a add hl, bc ld c, $6 ld b, $1 predef CalcPkmnStatC pop bc pop hl ld a, [$ffb5] ld [hli], a ld a, [$ffb6] ld [hli], a push hl ld hl, $1b add hl, bc ld a, $46 ld [hli], a xor a rept 2 ld [hli], a endr ld [hl], a pop hl rept 2 inc de endr ret ; 28771 Function28771: ; 28771 ld a, b and a ret z push hl ld hl, .TimeCapsuleAlt .loop ld a, [hli] and a jr z, .end cp b jr z, .found inc hl jr .loop .found ld b, [hl] .end pop hl ret .TimeCapsuleAlt ; 28785 ; Pokémon traded from RBY do not have held items, so GSC usually interprets the ; catch rate as an item. However, if the catch rate appears in this table, the ; item associated with the table entry is used instead. db ITEM_19, LEFTOVERS db ITEM_2D, BITTER_BERRY db ITEM_32, GOLD_BERRY db ITEM_5A, BERRY db ITEM_64, BERRY db ITEM_78, BERRY db ITEM_87, BERRY db ITEM_BE, BERRY db ITEM_C3, BERRY db ITEM_DC, BERRY db HM_08, BERRY db $ff, BERRY db $00 ; 2879e Function2879e: ; 2879e .asm_2879e ld a, [hli] cp $fe jr z, .asm_2879e ld [de], a inc de dec bc ld a, b or c jr nz, .asm_2879e ret ; 287ab Function287ab: ; 287ab ld a, [$ffcb] cp $2 ret z ld hl, EnemyMonSpecies call Function287d8 ld de, LinkBattleRNs ld c, $a .asm_287bb ld a, [hli] cp $fe jr z, .asm_287bb cp $fd jr z, .asm_287bb ld [de], a inc de dec c jr nz, .asm_287bb ret ; 287ca Function287ca: ; 287ca .asm_287ca ld a, [hli] and a jr z, .asm_287ca cp $fd jr z, .asm_287ca cp $fe jr z, .asm_287ca dec hl ret ; 287d8 Function287d8: ; 287d8 .asm_287d8 ld a, [hli] cp $fd jr z, .asm_287d8 cp $fe jr z, .asm_287d8 dec hl ret ; 287e3 Function287e3: ; 287e3 call ClearScreen call Function28ef8 callba Function16d673 xor a ld hl, wcf51 rept 3 ld [hli], a endr ld [hl], a ld a, $1 ld [MenuSelection2], a inc a ld [wcf56], a jp Function2888b ; 28803 Function28803: ; 28803 ld a, $1 ld [MonType], a ld a, $c1 ld [wcfa8], a ld a, [OTPartyCount] ld [wcfa3], a ld a, $1 ld [wcfa4], a ld a, $9 ld [wcfa1], a ld a, $6 ld [wcfa2], a ld a, $1 ld [wcfaa], a ld a, $10 ld [wcfa7], a ld a, $20 ld [wcfa5], a xor a ld [wcfa6], a Function28835: ; 28835 callba Function16d70c ld a, d and a jp z, Function2891c bit 0, a jr z, .asm_2885b ld a, $1 ld [wd263], a callab Function50db9 ld hl, OTPartyMon1Species callba Function4d319 jp Function2891c .asm_2885b bit 6, a jr z, .asm_28883 ld a, [MenuSelection2] ld b, a ld a, [OTPartyCount] cp b jp nz, Function2891c xor a ld [MonType], a call Function1bf7 push hl push bc ld bc, NAME_LENGTH add hl, bc ld [hl], $7f pop bc pop hl ld a, [PartyCount] ld [MenuSelection2], a jr Function2888b .asm_28883 bit 7, a jp z, Function2891c jp Function28ac9 ; 2888b Function2888b: ; 2888b callba Function49856 xor a ld [MonType], a ld a, $c1 ld [wcfa8], a ld a, [PartyCount] ld [wcfa3], a ld a, $1 ld [wcfa4], a ld a, $1 ld [wcfa1], a ld a, $6 ld [wcfa2], a ld a, $1 ld [wcfaa], a ld a, $10 ld [wcfa7], a ld a, $20 ld [wcfa5], a xor a ld [wcfa6], a call Function3200 Function288c5: ; 288c5 callba Function16d70c ld a, d and a jr nz, .asm_288d2 jp Function2891c .asm_288d2 bit 0, a jr z, .asm_288d9 jp Function28926 .asm_288d9 bit 7, a jr z, .asm_288fe ld a, [MenuSelection2] dec a jp nz, Function2891c ld a, $1 ld [MonType], a call Function1bf7 push hl push bc ld bc, NAME_LENGTH add hl, bc ld [hl], $7f pop bc pop hl ld a, $1 ld [MenuSelection2], a jp Function28803 .asm_288fe bit 6, a jr z, Function2891c ld a, [MenuSelection2] ld b, a ld a, [PartyCount] cp b jr nz, Function2891c call Function1bf7 push hl push bc ld bc, NAME_LENGTH add hl, bc ld [hl], $7f pop bc pop hl jp Function28ade ; 2891c Function2891c: ; 2891c ld a, [MonType] and a jp z, Function288c5 jp Function28835 ; 28926 Function28926: ; 28926 call LoadTileMapToTempTileMap ld a, [MenuSelection2] push af hlcoord 0, 15 ld b, $1 ld c, $12 call Function28eef hlcoord 2, 16 ld de, String28ab4 call PlaceString callba Function4d354 .asm_28946 ld a, $7f ldcoord_a 11, 16 ld a, $13 ld [wcfa8], a ld a, $1 ld [wcfa3], a ld a, $1 ld [wcfa4], a ld a, $10 ld [wcfa1], a ld a, $1 ld [wcfa2], a ld a, $1 ld [MenuSelection2], a ld [wcfaa], a ld a, $20 ld [wcfa7], a xor a ld [wcfa5], a ld [wcfa6], a call Function1bd3 bit 4, a jr nz, .asm_2898d bit 1, a jr z, .asm_289cd .asm_28983 pop af ld [MenuSelection2], a call Call_LoadTempTileMapToTileMap jp Function2888b .asm_2898d ld a, $7f ldcoord_a 1, 16 ld a, $23 ld [wcfa8], a ld a, $1 ld [wcfa3], a ld a, $1 ld [wcfa4], a ld a, $10 ld [wcfa1], a ld a, $b ld [wcfa2], a ld a, $1 ld [MenuSelection2], a ld [wcfaa], a ld a, $20 ld [wcfa7], a xor a ld [wcfa5], a ld [wcfa6], a call Function1bd3 bit 5, a jp nz, .asm_28946 bit 1, a jr nz, .asm_28983 jr .asm_289fe .asm_289cd pop af ld [MenuSelection2], a ld a, $4 ld [wd263], a callab Function50db9 callba Function4d319 call Call_LoadTempTileMapToTileMap hlcoord 6, 1 lb bc, 6, 1 ld a, " " call Function28b77 hlcoord 17, 1 lb bc, 6, 1 ld a, " " call Function28b77 jp Function2888b .asm_289fe call Function1bee pop af ld [MenuSelection2], a dec a ld [DefaultFlypoint], a ld [wcf56], a callba Function16d6ce ld a, [wcf51] cp $f jp z, Function287e3 ld [wd003], a call Function28b68 ld c, $64 call DelayFrames callba Functionfb57e jr c, .asm_28a58 callba Functionfb5dd jp nc, Function28b87 xor a ld [wcf57], a ld [wcf52], a hlcoord 0, 12 ld b, $4 ld c, $12 call Function28eef callba Function4d354 ld hl, UnknownText_0x28aaf bccoord 1, 14 call PlaceWholeStringInBoxAtOnce jr .asm_28a89 .asm_28a58 xor a ld [wcf57], a ld [wcf52], a ld a, [wd003] ld hl, OTPartySpecies ld c, a ld b, $0 add hl, bc ld a, [hl] ld [wd265], a call GetPokemonName hlcoord 0, 12 ld b, $4 ld c, $12 call Function28eef callba Function4d354 ld hl, UnknownText_0x28ac4 bccoord 1, 14 call PlaceWholeStringInBoxAtOnce .asm_28a89 hlcoord 0, 12 ld b, $4 ld c, $12 call Function28eef hlcoord 1, 14 ld de, String28ece call PlaceString ld a, $1 ld [wcf56], a callba Function16d6ce ld c, $64 call DelayFrames jp Function287e3 ; 28aaf UnknownText_0x28aaf: ; 0x28aaf ; If you trade that #MON, you won't be able to battle. text_jump UnknownText_0x1c41b1 db "@" ; 0x28ab4 String28ab4: ; 28ab4 db "STATS TRADE@" UnknownText_0x28ac4: ; 0x28ac4 ; Your friend's @ appears to be abnormal! text_jump UnknownText_0x1c41e6 db "@" ; 0x28ac9 Function28ac9: ; 28ac9 ld a, [MenuSelection2] cp $1 jp nz, Function2891c call Function1bf7 push hl push bc ld bc, NAME_LENGTH add hl, bc ld [hl], $7f pop bc pop hl Function28ade: ; 28ade .asm_28ade ld a, $ed ldcoord_a 9, 17 .asm_28ae3 call JoyTextDelay ld a, [hJoyLast] and a jr z, .asm_28ae3 bit 0, a jr nz, .asm_28b0b push af ld a, " " ldcoord_a 9, 17 pop af bit 6, a jr z, .asm_28b03 ld a, [OTPartyCount] ld [MenuSelection2], a jp Function28803 .asm_28b03 ld a, $1 ld [MenuSelection2], a jp Function2888b .asm_28b0b ld a, $ec ldcoord_a 9, 17 ld a, $f ld [wcf56], a callba Function16d6ce ld a, [wcf51] cp $f jr nz, .asm_28ade Function28b22: ; 28b22 call FadeToWhite call ClearScreen ld b, $8 call GetSGBLayout call Function3200 xor a ld [wcfbb], a xor a ld [rSB], a ld [hSerialSend], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a ret ; 28b42 Function28b42: ; 28b42 hlcoord 0, 16 ld a, "┘" ld bc, 2 * SCREEN_WIDTH call ByteFill hlcoord 1, 16 ld a, " " ld bc, SCREEN_WIDTH - 2 call ByteFill hlcoord 2, 16 ld de, String_28b61 jp PlaceString ; 28b61 String_28b61: ; 28b61 db "CANCEL@" ; 28b68 Function28b68: ; 28b68 ld a, [wcf51] hlcoord 6, 9 ld bc, SCREEN_WIDTH call AddNTimes ld [hl], $ec ret ; 28b77 Function28b77: ; 28b77 .asm_28b77 push bc push hl .asm_28b79 ld [hli], a dec c jr nz, .asm_28b79 pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .asm_28b77 ret ; 28b87 Function28b87: ; 28b87 xor a ld [wcf57], a ld [wcf52], a hlcoord 0, 12 ld b, $4 ld c, $12 call Function28eef callba Function4d354 ld a, [DefaultFlypoint] ld hl, PartySpecies ld c, a ld b, $0 add hl, bc ld a, [hl] ld [wd265], a call GetPokemonName ld hl, StringBuffer1 ld de, wd004 ld bc, PKMN_NAME_LENGTH call CopyBytes ld a, [wd003] ld hl, OTPartySpecies ld c, a ld b, $0 add hl, bc ld a, [hl] ld [wd265], a call GetPokemonName ld hl, UnknownText_0x28eb8 bccoord 1, 14 call PlaceWholeStringInBoxAtOnce call LoadMenuDataHeader_0x1d75 hlcoord 10, 7 ld b, $3 ld c, $7 call Function28eef ld de, String28eab hlcoord 12, 8 call PlaceString ld a, $8 ld [wcfa1], a ld a, $b ld [wcfa2], a ld a, $1 ld [wcfa4], a ld a, $2 ld [wcfa3], a xor a ld [wcfa5], a ld [wcfa6], a ld a, $20 ld [wcfa7], a ld a, $3 ld [wcfa8], a ld a, $1 ld [MenuSelection2], a ld [wcfaa], a callba Function4d354 call Function1bd3 push af call Call_ExitMenu call Function3200 pop af bit 1, a jr nz, .asm_28c33 ld a, [MenuSelection2] dec a jr z, .asm_28c54 .asm_28c33 ld a, $1 ld [wcf56], a hlcoord 0, 12 ld b, 4 ld c, 18 call Function28eef hlcoord 1, 14 ld de, String28ece call PlaceString callba Function16d6ce jp Function28ea3 .asm_28c54 ld a, $2 ld [wcf56], a callba Function16d6ce ld a, [wcf51] dec a jr nz, .asm_28c7b hlcoord 0, 12 ld b, 4 ld c, 18 call Function28eef hlcoord 1, 14 ld de, String28ece call PlaceString jp Function28ea3 .asm_28c7b ld hl, sPartyScratch1 ld a, [DefaultFlypoint] ld bc, (SCRATCHMON_STRUCT_LENGTH) call AddNTimes ld a, BANK(sPartyScratch1) call GetSRAMBank ld d, h ld e, l ld bc, (SCRATCHMON_STRUCT_LENGTH) add hl, bc ld a, [DefaultFlypoint] ld c, a .asm_28c96 inc c ld a, c cp $6 jr z, .asm_28ca6 push bc ld bc, (SCRATCHMON_STRUCT_LENGTH) call CopyBytes pop bc jr .asm_28c96 .asm_28ca6 ld hl, sPartyScratch1 ld a, [PartyCount] dec a ld bc, (SCRATCHMON_STRUCT_LENGTH) call AddNTimes push hl ld hl, wc9f4 ld a, [wd003] ld bc, (SCRATCHMON_STRUCT_LENGTH) call AddNTimes pop de ld bc, (SCRATCHMON_STRUCT_LENGTH) call CopyBytes call CloseSRAM ld hl, PlayerName ld de, wc6e7 ld bc, NAME_LENGTH call CopyBytes ld a, [DefaultFlypoint] ld hl, PartySpecies ld b, $0 ld c, a add hl, bc ld a, [hl] ld [wc6d0], a push af ld a, [DefaultFlypoint] ld hl, PartyMonOT call SkipNames ld de, wc6f2 ld bc, NAME_LENGTH call CopyBytes ld hl, PartyMon1ID ld a, [DefaultFlypoint] call GetPartyLocation ld a, [hli] ld [PlayerScreens], a ld a, [hl] ld [EnemyScreens], a ld hl, PartyMon1DVs ld a, [DefaultFlypoint] call GetPartyLocation ld a, [hli] ld [wc6fd], a ld a, [hl] ld [wc6fe], a ld a, [DefaultFlypoint] ld hl, PartyMon1Species call GetPartyLocation ld b, h ld c, l callba GetCaughtGender ld a, c ld [wc701], a ld hl, wd26b ld de, wc719 ld bc, NAME_LENGTH call CopyBytes ld a, [wd003] ld hl, OTPartySpecies ld b, $0 ld c, a add hl, bc ld a, [hl] ld [wc702], a ld a, [wd003] ld hl, OTPartyMonOT call SkipNames ld de, wc724 ld bc, NAME_LENGTH call CopyBytes ld hl, OTPartyMon1ID ld a, [wd003] call GetPartyLocation ld a, [hli] ld [wc731], a ld a, [hl] ld [wc732], a ld hl, OTPartyMon1DVs ld a, [wd003] call GetPartyLocation ld a, [hli] ld [wc72f], a ld a, [hl] ld [wc730], a ld a, [wd003] ld hl, OTPartyMon1Species call GetPartyLocation ld b, h ld c, l callba GetCaughtGender ld a, c ld [wc733], a ld a, [DefaultFlypoint] ld [CurPartyMon], a ld hl, PartySpecies ld b, $0 ld c, a add hl, bc ld a, [hl] ld [DefaultFlypoint], a xor a ld [wd10b], a callab Functione039 ld a, [PartyCount] dec a ld [CurPartyMon], a ld a, $1 ld [wd1e9], a ld a, [wd003] push af ld hl, OTPartySpecies ld b, $0 ld c, a add hl, bc ld a, [hl] ld [wd003], a ld c, 100 call DelayFrames call ClearTileMap call LoadFontsBattleExtra ld b, $8 call GetSGBLayout ld a, [$ffcb] cp $1 jr z, .asm_28de4 predef Function28f24 jr .asm_28de9 .asm_28de4 predef Function28f63 .asm_28de9 pop af ld c, a ld [CurPartyMon], a ld hl, OTPartySpecies ld d, $0 ld e, a add hl, de ld a, [hl] ld [CurPartySpecies], a ld hl, OTPartyMon1Species ld a, c call GetPartyLocation ld de, TempMonSpecies ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes predef Functionda96 ld a, [PartyCount] dec a ld [CurPartyMon], a callab Function421d8 call ClearScreen call Function28ef8 call Function28eff callba Function4d354 ld b, $1 pop af ld c, a cp MEW jr z, .asm_28e49 ld a, [CurPartySpecies] cp MEW jr z, .asm_28e49 ld b, $2 ld a, c cp CELEBI jr z, .asm_28e49 ld a, [CurPartySpecies] cp CELEBI jr z, .asm_28e49 ld b, $0 .asm_28e49 ld a, b ld [wcf56], a push bc call Function862 pop bc ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .asm_28e63 ld a, b and a jr z, .asm_28e63 ld a, [wcf52] cp b jr nz, .asm_28e49 .asm_28e63 callba Function14a58 callba MobileFn_1060af callba BackupMobileEventIndex ld c, 40 call DelayFrames hlcoord 0, 12 ld b, 4 ld c, 18 call Function28eef hlcoord 1, 14 ld de, String28ebd call PlaceString callba Function4d354 ld c, 50 call DelayFrames ld a, [wLinkMode] cp LINK_TIMECAPSULE jp z, Function2805d jp Function28177 ; 28ea3 Function28ea3: ; 28ea3 ld c, 100 call DelayFrames jp Function287e3 ; 28eab String28eab: ; 28eab db "TRADE" next "CANCEL@" UnknownText_0x28eb8: ; 0x28eb8 ; Trade @ for @ ? text_jump UnknownText_0x1c4212 db "@" ; 0x28ebd String28ebd: ; 28ebd db "Trade completed!@" String28ece: ; 28ece db "Too bad! The trade" next "was canceled!@" Function28eef: ; 28eef ld d, h ld e, l callba Function16d6ca ret ; 28ef8 Function28ef8: ; 28ef8 callba Function16d696 ret ; 28eff Function28eff: ; 28eff callba Function16d6a7 call SetPalettes ret ; 28f09 Function28f09: ; 28f09 hlcoord 0, 0 ld b, 6 ld c, 18 call Function28eef hlcoord 0, 8 ld b, 6 ld c, 18 call Function28eef callba Functionfb60d ret ; 28f24 Function28f24: ; 28f24 xor a ld [wcf66], a ld hl, wc6e7 ld de, wc719 call Function297ff ld hl, wc6d0 ld de, wc702 call Function29814 ld de, .data_28f3f jr Function28fa1 .data_28f3f db $1b db $1 db $1c db $21 db $2d db $27 db $23 db $3 db $25 db $28 db $25 db $1e db $29 db $6 db $16 db $1f db $19 db $17 db $22 db $1f db $2a db $e db $3 db $24 db $5 db $25 db $2 db $27 db $25 db $1d db $2c db $2e db $1e db $18 db $1f db $2b Function28f63: ; 28f63 xor a ld [wcf66], a ld hl, wc719 ld de, wc6e7 call Function297ff ld hl, wc702 ld de, wc6d0 call Function29814 ld de, .data_28f7e jr Function28fa1 .data_28f7e db $1a db $17 db $22 db $1f db $2a db $6 db $3 db $24 db $5 db $25 db $2 db $27 db $25 db $1d db $2c db $2f db $1e db $18 db $1f db $1b db $1 db $1c db $22 db $27 db $23 db $3 db $25 db $28 db $25 db $1e db $29 db $e db $16 db $1f db $2b Function28fa1: ; 28fa1 ld hl, BattleEnded ld [hl], e inc hl ld [hl], d ld a, [hMapAnims] push af xor a ld [hMapAnims], a ld hl, VramState ld a, [hl] push af res 0, [hl] ld hl, Options ld a, [hl] push af set 4, [hl] call Function28fdb ld a, [wcf66] and a jr nz, .asm_28fca ld de, MUSIC_EVOLUTION call PlayMusic2 .asm_28fca call Function29082 jr nc, .asm_28fca pop af ld [Options], a pop af ld [VramState], a pop af ld [hMapAnims], a ret ; 28fdb Function28fdb: ; 28fdb xor a ld [wJumptableIndex], a call WhiteBGMap call ClearSprites call ClearTileMap call DisableLCD call LoadFontsBattleExtra callab Function8cf53 ld a, [hCGB] and a jr z, .asm_2900b ld a, $1 ld [rVBK], a ld hl, VTiles0 ld bc, sScratch - VTiles0 xor a call ByteFill ld a, $0 ld [rVBK], a .asm_2900b ld hl, VBGMap0 ld bc, sScratch - VBGMap0 ld a, " " call ByteFill ld hl, TradeGameBoyLZ ld de, VTiles2 tile $31 call Decompress ld hl, TradeArrowGFX ld de, VTiles1 tile $6d ld bc, $10 ld a, BANK(TradeArrowGFX) call FarCopyBytes ld hl, TradeArrowGFX + $10 ld de, VTiles1 tile $6e ld bc, $10 ld a, BANK(TradeArrowGFX) call FarCopyBytes xor a ld [hSCX], a ld [hSCY], a ld a, $7 ld [hWX], a ld a, $90 ld [hWY], a callba Function4d7fd call EnableLCD call Function2982b ld a, [wc6d0] ld hl, wc6fd ld de, VTiles0 call Function29491 ld a, [wc702] ld hl, wc72f ld de, VTiles0 tile $31 call Function29491 ld a, [wc6d0] ld de, wc6d1 call Function294a9 ld a, [wc702] ld de, wc703 call Function294a9 call Function297ed ret ; 29082 Function29082: ; 29082 ld a, [wJumptableIndex] bit 7, a jr nz, .asm_2909b call Function290a0 callab Function8cf69 ld hl, wcf65 inc [hl] call DelayFrame and a ret .asm_2909b call LoadStandardFont scf ret ; 290a0 Function290a0: ; 290a0 ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, JumpTable290af rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 290af JumpTable290af: ; 290af dw Function29114 dw Function2942e dw Function29461 dw Function29348 dw Function2937e dw Function29391 dw Function29129 dw Function291af dw Function291c4 dw Function291d9 dw Function2925d dw Function29220 dw Function2925d dw Function29229 dw Function2913c dw Function2925d dw Function291e8 dw Function291fd dw Function29211 dw Function29220 dw Function2925d dw Function29229 dw Function29701 dw Function2973c dw Function2975c dw Function2977f dw Function297a4 dw Function293a6 dw Function293b6 dw Function293d2 dw Function293de dw Function293ea dw Function2940c dw Function294e7 dw Function294f0 dw Function2961b dw Function2962c dw Function29879 dw Function29886 dw Function29649 dw Function29660 dw Function2926d dw Function29277 dw Function29123 dw Function29487 dw Function294f9 dw Function29502 dw Function2950c ; 2910f Function2910f: ; 2910f ld hl, wJumptableIndex inc [hl] ret ; 29114 Function29114: ; 29114 ld hl, BattleEnded ld e, [hl] inc hl ld d, [hl] ld a, [de] ld [wJumptableIndex], a inc de ld [hl], d dec hl ld [hl], e ret ; 29123 Function29123: ; 29123 ld hl, wJumptableIndex set 7, [hl] ret ; 29129 Function29129: ; 29129 ld a, $ed call Function292f6 ld a, [wc74c] ld [wd265], a xor a ld de, $2c58 ld b, $0 jr Function2914e Function2913c: ; 2913c ld a, $ee call Function292f6 ld a, [wc74d] ld [wd265], a ld a, $2 lb de, $4c, $94 ld b, $4 Function2914e: ; 2914e push bc push de push bc push de push af call DisableLCD callab Function8cf53 ld hl, $9874 ld bc, $c ld a, $60 call ByteFill pop af call Function29281 xor a ld [hSCX], a ld a, $7 ld [hWX], a ld a, $70 ld [hWY], a call EnableLCD call Function2985a pop de ld a, $11 call Function3b2a ld hl, $b add hl, bc pop bc ld [hl], b pop de ld a, $12 call Function3b2a ld hl, $b add hl, bc pop bc ld [hl], b call WaitBGMap ld b, $1b call GetSGBLayout ld a, $e4 call DmgToCgbBGPals ld a, $d0 call Functioncf8 call Function2910f ld a, $5c ld [wcf64], a ret ; 291af Function291af: ; 291af call Function2981d ld a, [hSCX] add $2 ld [hSCX], a cp $50 ret nz ld a, $1 call Function29281 call Function2910f ret ; 291c4 Function291c4: ; 291c4 call Function2981d ld a, [hSCX] add $2 ld [hSCX], a cp $a0 ret nz ld a, $2 call Function29281 call Function2910f ret ; 291d9 Function291d9: ; 291d9 call Function2981d ld a, [hSCX] add $2 ld [hSCX], a and a ret nz call Function2910f ret ; 291e8 Function291e8: ; 291e8 call Function2981d ld a, [hSCX] sub $2 ld [hSCX], a cp $b0 ret nz ld a, $1 call Function29281 call Function2910f ret ; 291fd Function291fd: ; 291fd call Function2981d ld a, [hSCX] sub $2 ld [hSCX], a cp $60 ret nz xor a call Function29281 call Function2910f ret ; 29211 Function29211: ; 29211 call Function2981d ld a, [hSCX] sub $2 ld [hSCX], a and a ret nz call Function2910f ret ; 29220 Function29220: ; 29220 ld a, $80 ld [wcf64], a call Function2910f ret ; 29229 Function29229: ; 29229 call WhiteBGMap call ClearTileMap call ClearSprites call DisableLCD callab Function8cf53 ld hl, VBGMap0 ld bc, sScratch - VBGMap0 ld a, " " call ByteFill xor a ld [hSCX], a ld a, $90 ld [hWY], a call EnableLCD call Function2982b call WaitBGMap call Function297ed call Function29114 ret ; 2925d Function2925d: ; 2925d call Function2981d ld hl, wcf64 ld a, [hl] and a jr z, .asm_29269 dec [hl] ret .asm_29269 call Function2910f ret ; 2926d Function2926d: ; 2926d call Function29114 ld de, SFX_GIVE_TRADEMON call PlaySFX ret ; 29277 Function29277: ; 29277 call Function29114 ld de, SFX_GET_TRADEMON call PlaySFX ret ; 29281 Function29281: ; 29281 and 3 ld e, a ld d, 0 ld hl, Jumptable_2928f rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 2928f Jumptable_2928f: ; 2928f dw Function29297 dw Function292af dw Function292be dw Function29297 ; 29297 Function29297: ; 29297 call Function297cf hlcoord 9, 3 ld [hl], $5b inc hl ld bc, $a ld a, $60 call ByteFill hlcoord 3, 2 call Function292ec ret ; 292af Function292af: ; 292af call Function297cf hlcoord 0, 3 ld bc, SCREEN_WIDTH ld a, $60 call ByteFill ret ; 292be Function292be: ; 292be call Function297cf hlcoord 0, 3 ld bc, $11 ld a, $60 call ByteFill hlcoord 17, 3 ld a, $5d ld [hl], a ld a, $61 ld de, SCREEN_WIDTH ld c, $3 .asm_292d9 add hl, de ld [hl], a dec c jr nz, .asm_292d9 add hl, de ld a, $5f ld [hld], a ld a, $5b ld [hl], a hlcoord 10, 6 call Function292ec ret ; 292ec Function292ec: ; 292ec ld de, TradeGameBoyTilemap lb bc, 8, 6 call Function297db ret ; 292f6 Function292f6: ; 292f6 push af call WhiteBGMap call WaitTop ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a call ClearTileMap hlcoord 0, 0 ld bc, SCREEN_WIDTH ld a, "─" call ByteFill hlcoord 0, 1 ld de, wc736 call PlaceString ld hl, wc741 ld de, 0 .asm_2931e ld a, [hli] cp "@" jr z, .asm_29326 dec de jr .asm_2931e .asm_29326 hlcoord 0, 4 add hl, de ld de, wc741 call PlaceString hlcoord 7, 2 ld bc, 6 pop af call ByteFill call WaitBGMap call WaitTop ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a call ClearTileMap ret ; 29348 Function29348: ; 29348 call ClearTileMap call WaitTop ld a, $a0 ld [hSCX], a call DelayFrame hlcoord 8, 2 ld de, Tilemap_298f7 lb bc, 3, 12 call Function297db call WaitBGMap ld b, $1b call GetSGBLayout ld a, $e4 call DmgToCgbBGPals ld de, $e4e4 call DmgToCgbObjPals ld de, SFX_POTION call PlaySFX call Function2910f ret ; 2937e Function2937e: ; 2937e ld a, [hSCX] and a jr z, .asm_29388 add $4 ld [hSCX], a ret .asm_29388 ld c, $50 call DelayFrames call Function29114 ret ; 29391 Function29391: ; 29391 ld a, [hSCX] cp $a0 jr z, .asm_2939c sub $4 ld [hSCX], a ret .asm_2939c call ClearTileMap xor a ld [hSCX], a call Function29114 ret ; 293a6 Function293a6: ; 293a6 ld a, $8f ld [hWX], a ld a, $88 ld [hSCX], a ld a, $50 ld [hWY], a call Function29114 ret ; 293b6 Function293b6: ; 293b6 ld a, [hWX] cp $7 jr z, .asm_293c7 sub $4 ld [hWX], a ld a, [hSCX] sub $4 ld [hSCX], a ret .asm_293c7 ld a, $7 ld [hWX], a xor a ld [hSCX], a call Function29114 ret ; 293d2 Function293d2: ; 293d2 ld a, $7 ld [hWX], a ld a, $50 ld [hWY], a call Function29114 ret ; 293de Function293de: ; 293de ld a, $7 ld [hWX], a ld a, $90 ld [hWY], a call Function29114 ret ; 293ea Function293ea: ; 293ea call WaitTop ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a call WaitBGMap ld a, $7 ld [hWX], a xor a ld [hWY], a call DelayFrame call WaitTop ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a call ClearTileMap call Function2910f ret ; 2940c Function2940c: ; 2940c ld a, [hWX] cp $a1 jr nc, .asm_29417 add $4 ld [hWX], a ret .asm_29417 ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a call WaitBGMap ld a, $7 ld [hWX], a ld a, $90 ld [hWY], a ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a call Function29114 ret ; 2942e Function2942e: ; 2942e call Function2951f ld a, [wc6d0] ld [CurPartySpecies], a ld a, [wc6fd] ld [TempMonDVs], a ld a, [wc6fe] ld [TempMonDVs + 1], a ld b, $1a call GetSGBLayout ld a, $e4 call DmgToCgbBGPals call Function294bb ld a, [wc6d0] call GetCryIndex jr c, .asm_2945d ld e, c ld d, b call PlayCryHeader .asm_2945d call Function29114 ret ; 29461 Function29461: ; 29461 call Function29549 ld a, [wc702] ld [CurPartySpecies], a ld a, [wc72f] ld [TempMonDVs], a ld a, [wc730] ld [TempMonDVs + 1], a ld b, $1a call GetSGBLayout ld a, $e4 call DmgToCgbBGPals call Function294c0 call Function29114 ret ; 29487 Function29487: ; 29487 callba Function4d81e call Function29114 ret ; 29491 Function29491: ; 29491 push de push af predef GetUnownLetter pop af ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData pop de predef GetFrontpic ret ; 294a9 Function294a9: ; 294a9 push de ld [wd265], a call GetPokemonName ld hl, StringBuffer1 pop de ld bc, NAME_LENGTH call CopyBytes ret ; 294bb Function294bb: ; 294bb ld de, VTiles0 jr Function294c3 Function294c0: ; 294c0 ld de, VTiles0 tile $31 Function294c3: ; 294c3 call DelayFrame ld hl, VTiles2 ld bc, $a31 call Request2bpp call WaitTop call Function297cf hlcoord 7, 2 xor a ld [$ffad], a lb bc, 7, 7 predef FillBox call WaitBGMap ret ; 294e7 Function294e7: ; 294e7 ld c, $50 call DelayFrames call Function29114 ret ; 294f0 Function294f0: ; 294f0 ld c, $28 call DelayFrames call Function29114 ret ; 294f9 Function294f9: ; 294f9 ld c, $60 call DelayFrames call Function29114 ret ; 29502 Function29502: ; 29502 call Function29516 ret nz ld c, $50 call DelayFrames ret ; 2950c Function2950c: ; 2950c call Function29516 ret nz ld c, $b4 call DelayFrames ret ; 29516 Function29516: ; 29516 call Function29114 ld a, [wc702] cp $fd ret ; 2951f Function2951f: ; 2951f ld de, wc6d0 ld a, [de] cp $fd jr z, Function295a1 call Function29573 ld de, wc6d0 call Function295e3 ld de, wc6d1 call Function295ef ld a, [wc701] ld de, wc6f2 call Function295f6 ld de, PlayerScreens call Function29611 call Function295d8 ret ; 29549 Function29549: ; 29549 ld de, wc702 ld a, [de] cp $fd jr z, Function295a1 call Function29573 ld de, wc702 call Function295e3 ld de, wc703 call Function295ef ld a, [wc733] ld de, wc724 call Function295f6 ld de, wc731 call Function29611 call Function295d8 ret ; 29573 Function29573: ; 29573 call WaitTop call Function297cf ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a hlcoord 3, 0 ld b, $6 ld c, $d call TextBox hlcoord 4, 0 ld de, String29591 call PlaceString ret ; 29591 String29591: ; 29591 db "─── №." next "" next "OT/" next $73, "№.@" ; 295a1 Function295a1: ; 295a1 call WaitTop call Function297cf ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a hlcoord 3, 0 ld b, $6 ld c, $d call TextBox hlcoord 4, 2 ld de, String295c2 call PlaceString call Function295d8 ret ; 295c2 String295c2: ; 295c2 db "EGG" next "OT/?????" next $73, "№.?????@" ; 295d8 Function295d8: ; 295d8 call WaitBGMap call WaitTop ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a ret ; 295e3 Function295e3: ; 295e3 hlcoord 10, 0 lb bc, PRINTNUM_LEADINGZEROS | 1, 3 call PrintNum ld [hl], $7f ret ; 295ef Function295ef: ; 295ef hlcoord 4, 2 call PlaceString ret ; 295f6 Function295f6: ; 295f6 cp 3 jr c, .asm_295fb xor a .asm_295fb push af hlcoord 7, 4 call PlaceString inc bc pop af ld hl, Unknown_2960e ld d, 0 ld e, a add hl, de ld a, [hl] ld [bc], a ret ; 2960e Unknown_2960e: ; 2960e db " ", "♂", "♀" ; 29611 Function29611: ; 29611 hlcoord 7, 6 lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum ret ; 2961b Function2961b: ; 2961b lb de, $54, $58 ld a, $e call Function3b2a call Function29114 ld a, $20 ld [wcf64], a ret ; 2962c Function2962c: ; 2962c lb de, $54, $58 ld a, $e call Function3b2a ld hl, $b add hl, bc ld [hl], $1 ld hl, $7 add hl, bc ld [hl], $dc call Function29114 ld a, $38 ld [wcf64], a ret ; 29649 Function29649: ; 29649 lb de, $54, $58 ld a, $f call Function3b2a call Function29114 ld a, $10 ld [wcf64], a ld de, SFX_BALL_POOF call PlaySFX ret ; 29660 Function29660: ; 29660 ld a, $e4 call Functioncf8 lb de, $28, $58 ld a, $10 call Function3b2a call Function29114 ld a, $40 ld [wcf64], a ret ; 29676 Function29676: ; 29676 (a:5676) ld hl, $b add hl, bc ld e, [hl] ld d, 0 ld hl, Jumptable_29686 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 29686 Jumptable_29686: ; 29686 (a:5686) dw Function2969a dw Function296a4 dw Function296af dw Function296bd dw Function296cf dw Function296dd dw Function296f2 ; 2969a Function29694: ; 29694 (a:5694) ld hl, $b add hl, bc inc [hl] ret Function2969a: ; 2969a (a:569a) call Function29694 ld hl, $c add hl, bc ld [hl], $80 ret Function296a4: ; 296a4 (a:56a4) ld hl, $c add hl, bc ld a, [hl] dec [hl] and a ret nz call Function29694 Function296af: ; 296af (a:56af) ld hl, $4 add hl, bc ld a, [hl] cp $94 jr nc, .asm_296ba inc [hl] ret .asm_296ba call Function29694 Function296bd: ; 296bd (a:56bd) ld hl, $5 add hl, bc ld a, [hl] cp $4c jr nc, .asm_296c8 inc [hl] ret .asm_296c8 ld hl, $ add hl, bc ld [hl], $0 ret Function296cf: ; 296cf (a:56cf) ld hl, $5 add hl, bc ld a, [hl] cp $2c jr z, .asm_296da dec [hl] ret .asm_296da call Function29694 Function296dd: ; 296dd (a:56dd) ld hl, $4 add hl, bc ld a, [hl] cp $58 jr z, .asm_296e8 dec [hl] ret .asm_296e8 call Function29694 ld hl, $c add hl, bc ld [hl], $80 ret Function296f2: ; 296f2 (a:56f2) ld hl, $c add hl, bc ld a, [hl] dec [hl] and a ret nz ld hl, $ add hl, bc ld [hl], $0 ret ; 29701 (a:5701) Function29701: ; 29701 ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .asm_29725 ld hl, UnknownText_0x29737 call PrintText ld c, $bd call DelayFrames ld hl, UnknownText_0x29732 call PrintText call Function297c9 ld c, $80 call DelayFrames call Function29114 ret .asm_29725 ld hl, UnknownText_0x29732 call PrintText call Function297c9 call Function29114 ret ; 29732 UnknownText_0x29732: ; 0x29732 ; was sent to @ . text_jump UnknownText_0x1bc6e9 db "@" ; 0x29737 UnknownText_0x29737: ; 0x29737 ; text_jump UnknownText_0x1bc701 db "@" ; 0x2973c Function2973c: ; 2973c ld hl, UnknownText_0x29752 call PrintText call Function297c9 ld hl, UnknownText_0x29757 call PrintText call Function297c9 call Function29114 ret ; 29752 UnknownText_0x29752: ; 0x29752 ; bids farewell to text_jump UnknownText_0x1bc703 db "@" ; 0x29757 UnknownText_0x29757: ; 0x29757 ; . text_jump UnknownText_0x1bc719 db "@" ; 0x2975c Function2975c: ; 2975c call WaitTop hlcoord 0, 10 ld bc, 8 * SCREEN_WIDTH ld a, " " call ByteFill call WaitBGMap ld hl, UnknownText_0x2977a call PrintText call Function297c9 call Function29114 ret ; 2977a UnknownText_0x2977a: ; 0x2977a ; Take good care of @ . text_jump UnknownText_0x1bc71f db "@" ; 0x2977f Function2977f: ; 2977f ld hl, UnknownText_0x2979a call PrintText call Function297c9 ld hl, UnknownText_0x2979f call PrintText call Function297c9 ld c, $e call DelayFrames call Function29114 ret ; 2979a UnknownText_0x2979a: ; 0x2979a ; For @ 's @ , text_jump UnknownText_0x1bc739 db "@" ; 0x2979f UnknownText_0x2979f: ; 0x2979f ; sends @ . text_jump UnknownText_0x1bc74c db "@" ; 0x297a4 Function297a4: ; 297a4 ld hl, UnknownText_0x297bf call PrintText call Function297c9 ld hl, UnknownText_0x297c4 call PrintText call Function297c9 ld c, $e call DelayFrames call Function29114 ret ; 297bf UnknownText_0x297bf: ; 0x297bf ; will trade @ @ text_jump UnknownText_0x1bc75e db "@" ; 0x297c4 UnknownText_0x297c4: ; 0x297c4 ; for @ 's @ . text_jump UnknownText_0x1bc774 db "@" ; 0x297c9 Function297c9: ; 297c9 ld c, $50 call DelayFrames ret ; 297cf Function297cf: ; 297cf hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, " " call ByteFill ret ; 297db Function297db: ; 297db .asm_297db push bc push hl .asm_297dd ld a, [de] inc de ld [hli], a dec c jr nz, .asm_297dd pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .asm_297db ret ; 297ed Function297ed: ; 297ed ld a, [hSGB] and a ld a, $e4 jr z, .asm_297f6 ld a, $f0 .asm_297f6 call Functioncf8 ld a, $e4 call DmgToCgbBGPals ret ; 297ff Function297ff: ; 297ff push de ld de, wc736 ld bc, NAME_LENGTH call CopyBytes pop hl ld de, wc741 ld bc, NAME_LENGTH call CopyBytes ret ; 29814 Function29814: ; 29814 ld a, [hl] ld [wc74c], a ld a, [de] ld [wc74d], a ret ; 2981d Function2981d: ; 2981d ld a, [wcf65] and $7 ret nz ld a, [rBGP] xor $3c call DmgToCgbBGPals ret ; 2982b Function2982b: ; 2982b call DelayFrame ld de, TradeBallGFX ld hl, VTiles0 tile $62 lb bc, BANK(TradeBallGFX), $6 call Request2bpp ld de, TradePoofGFX ld hl, VTiles0 tile $68 lb bc, BANK(TradePoofGFX), $c call Request2bpp ld de, TradeCableGFX ld hl, VTiles0 tile $74 lb bc, BANK(TradeCableGFX), $4 call Request2bpp xor a ld hl, wc300 ld [hli], a ld [hl], $62 ret ; 2985a Function2985a: ; 2985a call DelayFrame ld e, $3 callab Function8e83f ld de, TradeBubbleGFX ld hl, VTiles0 tile $72 lb bc, BANK(TradeBubbleGFX), $4 call Request2bpp xor a ld hl, wc300 ld [hli], a ld [hl], $62 ret ; 29879 Function29879: ; 29879 ld hl, wcf64 ld a, [hl] and a jr z, .asm_29882 dec [hl] ret .asm_29882 call Function29114 ret ; 29886 Function29886: ; 29886 ld hl, wcf64 ld a, [hl] and a jr z, .asm_2988f dec [hl] ret .asm_2988f call Function29114 ret ; 29893 Function29893: ; 29893 ; This function is unreferenced. ; It was meant for use in Japanese versions, so the ; constant used for copy length was changed by accident. ld hl, Unknown_298b5 ld a, [hli] ld [wc6d0], a ld de, wc6e7 ld c, 13 ; jp: 8 .asm_2989f ld a, [hli] ld [de], a inc de dec c jr nz, .asm_2989f ld a, [hli] ld [wc702], a ld de, wc719 ld c, 13 ; jp: 8 .asm_298ae ld a, [hli] ld [de], a inc de dec c jr nz, .asm_298ae ret ; 298b5 Unknown_298b5: ; 298b5 db $03, "ゲーフり@@", $23, $01 ; GAME FREAK db $06, "クりーチャ@", $56, $04 ; Creatures Inc. ; 298c7 TradeGameBoyTilemap: ; 298c7 ; 6x8 db $31, $32, $32, $32, $32, $33 db $34, $35, $36, $36, $37, $38 db $34, $39, $3a, $3a, $3b, $38 db $3c, $3d, $3e, $3e, $3f, $40 db $41, $42, $43, $43, $44, $45 db $46, $47, $43, $48, $49, $4a db $41, $43, $4b, $4c, $4d, $4e db $4f, $50, $50, $50, $51, $52 ; 297f7 Tilemap_298f7: ; 297f7 ; 12x3 db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53 db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54 db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43 ; 2991b TradeArrowGFX: INCBIN "gfx/trade/arrow.2bpp" TradeCableGFX: INCBIN "gfx/trade/cable.2bpp" TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp" TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz" TradeBallGFX: INCBIN "gfx/trade/ball.2bpp" TradePoofGFX: INCBIN "gfx/trade/poof.2bpp" Special_CheckTimeCapsuleCompatibility: ; 29bfb ; Checks to see if your Party is compatible with the generation 1 games. Returns the following in ScriptVar: ; 0: Party is okay ; 1: At least one Pokemon was introduced in GS ; 2: At least one Pokemon has a move that was introduced in GS ; 3: At least one Pokemon is holding mail ; If any party Pokemon was introduced in the generation 2 games, don't let it in. ld hl, PartySpecies ld b, PARTY_LENGTH ; 6 .loop ld a, [hli] cp $ff jr z, .checkitem cp CHIKORITA ; MEW + 1 ; 151 + 1 jr nc, .mon_too_new dec b jr nz, .loop ; If any party Pokemon is holding mail, don't let it in. .checkitem ld a, [PartyCount] ld b, a ld hl, PartyMon1Item .itemloop push hl push bc ld d, [hl] callba ItemIsMail pop bc pop hl jr c, .mon_has_mail ld de, PARTYMON_STRUCT_LENGTH add hl, de dec b jr nz, .itemloop ; If any party Pokemon has a move that was introduced in the generation 2 games, don't let it in. ld hl, PartyMon1Moves ld a, [PartyCount] ld b, a .move_loop ld c, NUM_MOVES .move_next ld a, [hli] cp STRUGGLE + 1 jr nc, .move_too_new dec c jr nz, .move_next ld de, PartyMon2 - (PartyMon1 + NUM_MOVES) add hl, de dec b jr nz, .move_loop xor a jr .done .mon_too_new ld [wd265], a call GetPokemonName ld a, $1 jr .done .move_too_new push bc ld [wd265], a call GetMoveName call CopyName1 pop bc call Function29c67 ld a, $2 jr .done .mon_has_mail call Function29c67 ld a, $3 .done ld [ScriptVar], a ret ; 29c67 Function29c67: ; 29c67 ld a, [PartyCount] sub b ld c, a inc c ld b, $0 ld hl, PartyCount add hl, bc ld a, [hl] ld [wd265], a call GetPokemonName ret ; 29c7b Special_EnterTimeCapsule: ; 29c7b ld c, $a call DelayFrames ld a, $4 call Function29f17 ld c, $28 call DelayFrames xor a ld [hVBlank], a inc a ld [wLinkMode], a ret ; 29c92 Special_AbortLink: ; 29c92 ld c, $3 call DelayFrames ld a, -1 ld [$ffcb], a xor a ld [rSB], a ld [hSerialReceive], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a ld c, $3 call DelayFrames xor a ld [rSB], a ld [hSerialReceive], a ld a, $0 ld [rSC], a ld a, $80 ld [rSC], a ld c, $3 call DelayFrames xor a ld [rSB], a ld [hSerialReceive], a ld [rSC], a ld c, $3 call DelayFrames ld a, -1 ld [$ffcb], a ld a, [rIF] push af xor a ld [rIF], a ld a, $f ld [rIE], a pop af ld [rIF], a ld hl, wcf5b xor a ld [hli], a ld [hl], a ld [hVBlank], a ld [wLinkMode], a ret ; 29ce8 Special_SetBitsForLinkTradeRequest: ; 29ce8 ld a, $1 ld [wcf56], a ld [wd265], a ret ; 29cf1 Special_SetBitsForBattleRequest: ; 29cf1 ld a, $2 ld [wcf56], a ld [wd265], a ret ; 29cfa Special_SetBitsForTimeCapsuleRequest: ; 29cfa ld a, $2 ld [rSB], a xor a ld [hSerialReceive], a ld a, $0 ld [rSC], a ld a, $80 ld [rSC], a xor a ld [wcf56], a ld [wd265], a ret ; 29d11 Special_WaitForLinkedFriend: ; 29d11 ld a, [wcf56] and a jr z, .asm_29d2f ld a, $2 ld [rSB], a xor a ld [hSerialReceive], a ld a, $0 ld [rSC], a ld a, $80 ld [rSC], a call DelayFrame call DelayFrame call DelayFrame .asm_29d2f ld a, $2 ld [wcf5c], a ld a, $ff ld [wcf5b], a .asm_29d39 ld a, [$ffcb] cp $2 jr z, .asm_29d79 cp $1 jr z, .asm_29d79 ld a, -1 ld [$ffcb], a ld a, $2 ld [rSB], a xor a ld [hSerialReceive], a ld a, $0 ld [rSC], a ld a, $80 ld [rSC], a ld a, [wcf5b] dec a ld [wcf5b], a jr nz, .asm_29d68 ld a, [wcf5c] dec a ld [wcf5c], a jr z, .asm_29d8d .asm_29d68 ld a, $1 ld [rSB], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a call DelayFrame jr .asm_29d39 .asm_29d79 call Function908 call DelayFrame call Function908 ld c, $32 call DelayFrames ld a, $1 ld [ScriptVar], a ret .asm_29d8d xor a ld [ScriptVar], a ret ; 29d92 Special_CheckLinkTimeout: ; 29d92 ld a, $1 ld [wcf56], a ld hl, wcf5b ld a, $3 ld [hli], a xor a ld [hl], a call WaitBGMap ld a, $2 ld [hVBlank], a call DelayFrame call DelayFrame call Function29e0c xor a ld [hVBlank], a ld a, [ScriptVar] and a ret nz jp Function29f04 ; 29dba Function29dba: ; 29dba ld a, $5 ld [wcf56], a ld hl, wcf5b ld a, $3 ld [hli], a xor a ld [hl], a call WaitBGMap ld a, $2 ld [hVBlank], a call DelayFrame call DelayFrame call Function29e0c ld a, [ScriptVar] and a jr z, .asm_29e08 ld bc, rIE .asm_29de0 dec bc ld a, b or c jr nz, .asm_29de0 ld a, [wcf51] cp $5 jr nz, .asm_29e03 ld a, $6 ld [wcf56], a ld hl, wcf5b ld a, $1 ld [hli], a ld [hl], $32 call Function29e0c ld a, [wcf51] cp $6 jr z, .asm_29e08 .asm_29e03 xor a ld [ScriptVar], a ret .asm_29e08 xor a ld [hVBlank], a ret ; 29e0c Function29e0c: ; 29e0c xor a ld [$ffca], a ld a, [wcf5b] ld h, a ld a, [wcf5c] ld l, a push hl call Function29e3b pop hl jr nz, .asm_29e2f call Function29e47 call Function29e53 call Function29e3b jr nz, .asm_29e2f call Function29e47 xor a jr .asm_29e31 .asm_29e2f ld a, $1 .asm_29e31 ld [ScriptVar], a ld hl, wcf5b xor a ld [hli], a ld [hl], a ret ; 29e3b Function29e3b: ; 29e3b call Function87d ld hl, wcf5b ld a, [hli] inc a ret nz ld a, [hl] inc a ret ; 29e47 Function29e47: ; 29e47 ld b, $a .asm_29e49 call DelayFrame call Function908 dec b jr nz, .asm_29e49 ret ; 29e53 Function29e53: ; 29e53 dec h srl h rr l srl h rr l inc h ld a, h ld [wcf5b], a ld a, l ld [wcf5c], a ret ; 29e66 Special_TryQuickSave: ; 29e66 ld a, [wd265] push af callba Function14ab2 ld a, $1 jr nc, .asm_29e75 xor a .asm_29e75 ld [ScriptVar], a ld c, $1e call DelayFrames pop af ld [wd265], a ret ; 29e82 Special_CheckBothSelectedSameRoom: ; 29e82 ld a, [wd265] call Function29f17 push af call Function908 call DelayFrame call Function908 pop af ld b, a ld a, [wd265] cp b jr nz, .asm_29eaa ld a, [wd265] inc a ld [wLinkMode], a xor a ld [hVBlank], a ld a, $1 ld [ScriptVar], a ret .asm_29eaa xor a ld [ScriptVar], a ret ; 29eaf Special_TimeCapsule: ; 29eaf ld a, LINK_TIMECAPSULE ld [wLinkMode], a call DisableSpriteUpdates callab LinkCommunications call EnableSpriteUpdates xor a ld [hVBlank], a ret ; 29ec4 Special_TradeCenter: ; 29ec4 ld a, LINK_TRADECENTER ld [wLinkMode], a call DisableSpriteUpdates callab LinkCommunications call EnableSpriteUpdates xor a ld [hVBlank], a ret ; 29ed9 Special_Colosseum: ; 29ed9 ld a, LINK_COLOSSEUM ld [wLinkMode], a call DisableSpriteUpdates callab LinkCommunications call EnableSpriteUpdates xor a ld [hVBlank], a ret ; 29eee Special_CloseLink: ; 29eee xor a ld [wLinkMode], a ld c, $3 call DelayFrames jp Function29f04 ; 29efa Special_FailedLinkToPast: ; 29efa ld c, $28 call DelayFrames ld a, $e jp Function29f17 ; 29f04 Function29f04: ; 29f04 ld c, $3 call DelayFrames ld a, -1 ld [$ffcb], a ld a, $2 ld [rSB], a xor a ld [hSerialReceive], a ld [rSC], a ret ; 29f17 Function29f17: ; 29f17 add $d0 ld [wcf56], a ld [wcf57], a ld a, $2 ld [hVBlank], a call DelayFrame call DelayFrame .asm_29f29 call Function83b ld a, [wcf51] ld b, a and $f0 cp $d0 jr z, .asm_29f40 ld a, [wcf52] ld b, a and $f0 cp $d0 jr nz, .asm_29f29 .asm_29f40 xor a ld [hVBlank], a ld a, b and $f ret ; 29f47 Special_CableClubCheckWhichChris: ; 29f47 ld a, [$ffcb] cp $1 ld a, $1 jr z, .yes dec a .yes ld [ScriptVar], a ret ; 29f54 GFX_29f54: ; 29f54 INCBIN "gfx/unknown/029f54.2bpp" ; 29fe4 Function29fe4: ; 29fe4 ld a, $0 call GetSRAMBank ld d, $0 ld b, $2 predef FlagPredef call CloseSRAM ld a, c and a ret ; 29ff8 LoadWildMonData: ; 29ff8 call _GrassWildmonLookup jr c, .asm_2a006 ld hl, wd25a xor a rept 2 ld [hli], a endr ld [hl], a jr .asm_2a011 .asm_2a006 rept 2 inc hl endr ld de, wd25a ld bc, $3 call CopyBytes .asm_2a011 call _WaterWildmonLookup ld a, $0 jr nc, .asm_2a01b rept 2 inc hl endr ld a, [hl] .asm_2a01b 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, .asm_2a043 decoord 0, 0 ld hl, JohtoGrassWildMons call Function2a052 ld hl, JohtoWaterWildMons call Function2a06e call Function2a0b7 call Function2a0cf ret .asm_2a043 decoord 0, 0 ld hl, KantoGrassWildMons call Function2a052 ld hl, KantoWaterWildMons jp Function2a06e ; 2a052 Function2a052: ; 2a052 .asm_2a052 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, .asm_2a067 ld [de], a inc de .asm_2a067 pop hl ld bc, $2f add hl, bc jr .asm_2a052 ; 2a06e Function2a06e: ; 2a06e .asm_2a06e 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, .asm_2a081 ld [de], a inc de .asm_2a081 pop hl ld bc, 9 add hl, bc jr .asm_2a06e ; 2a088 Function2a088: ; 2a088 inc hl .asm_2a089 push af ld a, [wd265] cp [hl] jr z, .asm_2a098 rept 2 inc hl endr pop af dec a jr nz, .asm_2a089 and a ret .asm_2a098 pop af jp Function2a09c ; 2a09c Function2a09c: ; 2a09c push de call GetWorldMapLocation ld c, a hlcoord 0, 0 ld de, SCREEN_WIDTH * SCREEN_HEIGHT .asm_2a0a7 ld a, [hli] cp c jr z, .asm_2a0b4 dec de ld a, e or d jr nz, .asm_2a0a7 ld a, c pop de scf ret .asm_2a0b4 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" Function2b930: ; 2b930 callba UpdateEnemyMonInParty ld hl, PartyMon1HP call Function2b995 push bc ld hl, OTPartyMon1HP call Function2b995 ld a, c pop bc cp c jr z, .asm_2b94c jr c, .asm_2b97f jr .asm_2b976 .asm_2b94c call Function2b9e1 jr z, .asm_2b98a ld a, e cp $1 jr z, .asm_2b976 cp $2 jr z, .asm_2b97f ld hl, PartyMon1HP call Function2b9a6 push de ld hl, OTPartyMon1HP call Function2b9a6 pop hl ld a, d cp h jr c, .asm_2b976 jr z, .asm_2b970 jr .asm_2b97f .asm_2b970 ld a, e cp l jr z, .asm_2b98a jr nc, .asm_2b97f .asm_2b976 ld a, [wBattleResult] and $f0 ld [wBattleResult], a ret .asm_2b97f ld a, [wBattleResult] and $f0 add $1 ld [wBattleResult], a ret .asm_2b98a ld a, [wBattleResult] and $f0 add $2 ld [wBattleResult], a ret ; 2b995 Function2b995: ; 2b995 ld c, $0 ld b, $3 ld de, $2f .asm_2b99c ld a, [hli] or [hl] jr nz, .asm_2b9a1 inc c .asm_2b9a1 add hl, de dec b jr nz, .asm_2b99c ret ; 2b9a6 Function2b9a6: ; 2b9a6 ld de, 0 ld c, $3 .asm_2b9ab ld a, [hli] or [hl] jr z, .asm_2b9d7 dec hl xor a ld [hDividend + 0], a ld a, [hli] ld [hDividend + 1], a ld a, [hli] ld [hDividend + 2], a xor a ld [hDividend + 3], a ld a, [hli] ld b, a ld a, [hld] srl b rr a srl b rr a ld [hDivisor], a ld b, $4 call Divide ld a, [hQuotient + 2] add e ld e, a ld a, [hQuotient + 1] adc d ld d, a dec hl .asm_2b9d7 push de ld de, $2f add hl, de pop de dec c jr nz, .asm_2b9ab ret ; 2b9e1 Function2b9e1: ; 2b9e1 ld hl, PartyMon1HP call Function2ba01 jr nz, .asm_2b9f2 ld hl, OTPartyMon1HP call Function2ba01 ld e, $1 ret .asm_2b9f2 ld hl, OTPartyMon1HP call Function2ba01 ld e, $0 ret nz ld e, $2 ld a, $1 and a ret ; 2ba01 Function2ba01: ; 2ba01 ld d, $3 .asm_2ba03 ld a, [hli] ld b, a ld a, [hli] ld c, a or b jr z, .asm_2ba10 ld a, [hli] cp b ret nz ld a, [hld] cp c ret nz .asm_2ba10 push de ld de, $2e add hl, de pop de dec d jr nz, .asm_2ba03 ret ; 2ba1a ChrisBackpic: ; 2ba1a INCBIN "gfx/misc/player.6x6.2bpp.lz" ; 2bbaa DudeBackpic: ; 2bbaa INCBIN "gfx/misc/dude.6x6.2bpp.lz" ; 2bcea SECTION "bankB", ROMX, BANK[$B] Function2c000: ; 2c000 ld a, $e4 ld [rOBP0], a call Function2c165 call Function2c01c ld a, [wBattleMode] dec a ret z jp Function2c03a ; 2c012 Function2c012: ; 2c012 ld a, $e4 ld [rOBP0], a call Function2c165 jp Function2c03a ; 2c01c Function2c01c: ; 2c01c call Function2c0ad ld hl, PartyMon1HP ld de, PartyCount call Function2c059 ld a, $60 ld hl, wcfc4 ld [hli], a ld [hl], a ld a, $8 ld [wd003], a ld hl, Sprites jp Function2c143 ; 2c03a Function2c03a: ; 2c03a call Function2c0c5 ld hl, OTPartyMon1HP ld de, OTPartyCount call Function2c059 ld hl, wcfc4 ld a, $48 ld [hli], a ld [hl], $20 ld a, $f8 ld [wd003], a ld hl, Sprites + $18 jp Function2c143 ; 2c059 Function2c059: ; 2c059 ld a, [de] push af ld de, Buffer1 ld c, $6 ld a, $34 .asm_2c062 ld [de], a inc de dec c jr nz, .asm_2c062 pop af ld de, Buffer1 .asm_2c06b push af call Function2c075 inc de pop af dec a jr nz, .asm_2c06b ret ; 2c075 Function2c075: ; 2c075 ld a, [hli] and a jr nz, .asm_2c07f ld a, [hl] and a ld b, $33 jr z, .asm_2c08b .asm_2c07f rept 3 dec hl endr ld a, [hl] and a ld b, $32 jr nz, .asm_2c08e dec b jr .asm_2c08e .asm_2c08b rept 3 dec hl endr .asm_2c08e ld a, b ld [de], a ld bc, $32 add hl, bc ret ; 2c095 DrawPlayerExpBar: ; 2c095 ld hl, .data_2c0a9 ld de, wd004 ld bc, 4 call CopyBytes hlcoord 18, 10 ld de, -1 jr Function2c0f1 .data_2c0a9 db $73 db $77 db $6f db $76 ; 2c0ad Function2c0ad: ; 2c0ad ld hl, .data_2c0c1 ld de, wd004 ld bc, 4 call CopyBytes hlcoord 18, 10 ld de, -1 jr Function2c0f1 .data_2c0c1 db $73, $5c, $6f, $76 ; 2c0c5 Function2c0c5: ; 2c0c5 ld hl, .data_2c0ed ld de, wd004 ld bc, 4 call CopyBytes hlcoord 1, 2 ld de, 1 call Function2c0f1 ld a, [wBattleMode] dec a ret nz ld a, [TempEnemyMonSpecies] dec a call CheckCaughtMon ret z hlcoord 1, 1 ld [hl], $5d ret .data_2c0ed db $6d db $74 db $78 db $76 ; 2c0f1 Function2c0f1: ; 2c0f1 ld a, [wd004] ld [hl], a ld bc, SCREEN_WIDTH add hl, bc ld a, [StartFlypoint] ld [hl], a ld b, $8 .asm_2c0ff add hl, de ld a, [MovementBuffer] ld [hl], a dec b jr nz, .asm_2c0ff add hl, de ld a, [EndFlypoint] ld [hl], a ret ; 2c10d Function2c10d: ; 2c10d call Function2c165 ld hl, PartyMon1HP ld de, PartyCount call Function2c059 ld hl, wcfc4 ld a, $50 ld [hli], a ld [hl], $40 ld a, $8 ld [wd003], a ld hl, Sprites call Function2c143 ld hl, OTPartyMon1HP ld de, OTPartyCount call Function2c059 ld hl, wcfc4 ld a, "@" ld [hli], a ld [hl], $68 ld hl, Sprites + $18 jp Function2c143 ; 2c143 Function2c143: ; 2c143 ld de, Buffer1 ld c, $6 .loop ld a, [wcfc5] ld [hli], a ld a, [wcfc4] ld [hli], a ld a, [de] ld [hli], a ld a, $3 ld [hli], a ld a, [wcfc4] ld b, a ld a, [wd003] add b ld [wcfc4], a inc de dec c jr nz, .loop ret ; 2c165 Function2c165: ; 2c165 ld de, GFX_2c172 ld hl, VTiles0 tile $31 lb bc, BANK(GFX_2c172), 4 call Get2bpp_2 ret ; 2c172 GFX_2c172: ; 2c172 INCBIN "gfx/battle/balls.2bpp" ; 2c1b2 _ShowLinkBattleParticipants: ; 2c1b2 call WhiteBGMap call LoadFontsExtra hlcoord 2, 3 ld b, 9 ld c, 14 call TextBox hlcoord 4, 5 ld de, PlayerName call PlaceString hlcoord 4, 10 ld de, OTPlayerName call PlaceString hlcoord 9, 8 ld a, $69 ld [hli], a ld [hl], $6a callba Function2c10d ; no need to callba ld b, $8 call GetSGBLayout call SetPalettes ld a, $e4 ld [rOBP0], a ret ; 2c1ef TrainerClassNames:: ; 2c1ef db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "RIVAL@" db "#MON PROF.@" db "ELITE FOUR@" db "<PKMN> TRAINER@" db "ELITE FOUR@" db "ELITE FOUR@" db "ELITE FOUR@" db "CHAMPION@" db "LEADER@" db "LEADER@" db "LEADER@" db "SCIENTIST@" db "LEADER@" db "YOUNGSTER@" db "SCHOOLBOY@" db "BIRD KEEPER@" db "LASS@" db "LEADER@" db "COOLTRAINER@" db "COOLTRAINER@" db "BEAUTY@" db "#MANIAC@" db "ROCKET@" db "GENTLEMAN@" db "SKIER@" db "TEACHER@" db "LEADER@" db "BUG CATCHER@" db "FISHER@" db "SWIMMER♂@" db "SWIMMER♀@" db "SAILOR@" db "SUPER NERD@" db "RIVAL@" db "GUITARIST@" db "HIKER@" db "BIKER@" db "LEADER@" db "BURGLAR@" db "FIREBREATHER@" db "JUGGLER@" db "BLACKBELT@" db "ROCKET@" db "PSYCHIC@" db "PICNICKER@" db "CAMPER@" db "ROCKET@" db "SAGE@" db "MEDIUM@" db "BOARDER@" db "#FAN@" db "KIMONO GIRL@" db "TWINS@" db "#FAN@" db "<PKMN> TRAINER@" db "LEADER@" db "OFFICER@" db "ROCKET@" db "MYSTICALMAN@" AI_Redundant: ; 2c41a ; Check if move effect c will fail because it's already been used. ; Return z if the move is a good choice. ; Return nz if the move is a bad choice. ld a, c ld de, 3 ld hl, .Moves call IsInArray jp nc, .NotRedundant inc hl ld a, [hli] ld h, [hl] ld l, a jp [hl] .Moves: ; 2c42c dbw EFFECT_DREAM_EATER, .DreamEater dbw EFFECT_HEAL, .Heal dbw EFFECT_LIGHT_SCREEN, .LightScreen dbw EFFECT_MIST, .Mist dbw EFFECT_FOCUS_ENERGY, .FocusEnergy dbw EFFECT_CONFUSE, .Confuse dbw EFFECT_TRANSFORM, .Transform dbw EFFECT_REFLECT, .Reflect dbw EFFECT_SUBSTITUTE, .Substitute dbw EFFECT_LEECH_SEED, .LeechSeed dbw EFFECT_DISABLE, .Disable dbw EFFECT_ENCORE, .Encore dbw EFFECT_SNORE, .Snore dbw EFFECT_SLEEP_TALK, .SleepTalk dbw EFFECT_MEAN_LOOK, .MeanLook dbw EFFECT_NIGHTMARE, .Nightmare dbw EFFECT_SPIKES, .Spikes dbw EFFECT_FORESIGHT, .Foresight dbw EFFECT_PERISH_SONG, .PerishSong dbw EFFECT_SANDSTORM, .Sandstorm dbw EFFECT_ATTRACT, .Attract dbw EFFECT_SAFEGUARD, .Safeguard dbw EFFECT_RAIN_DANCE, .RainDance dbw EFFECT_SUNNY_DAY, .SunnyDay dbw EFFECT_TELEPORT, .Teleport dbw EFFECT_MORNING_SUN, .MorningSun dbw EFFECT_SYNTHESIS, .Synthesis dbw EFFECT_MOONLIGHT, .Moonlight dbw EFFECT_SWAGGER, .Swagger dbw EFFECT_FUTURE_SIGHT, .FutureSight db -1 .LightScreen: ; 2c487 ld a, [EnemyScreens] bit SCREENS_LIGHT_SCREEN, a ret .Mist: ; 2c48d ld a, [EnemySubStatus4] bit SUBSTATUS_MIST, a ret .FocusEnergy: ; 2c493 ld a, [EnemySubStatus4] bit SUBSTATUS_FOCUS_ENERGY, a ret .Confuse: ; 2c499 ld a, [PlayerSubStatus3] bit SUBSTATUS_CONFUSED, a ret nz ld a, [PlayerScreens] bit SCREENS_SAFEGUARD, a ret .Transform: ; 2c4a5 ld a, [EnemySubStatus5] bit SUBSTATUS_TRANSFORMED, a ret .Reflect: ; 2c4ab ld a, [EnemyScreens] bit SCREENS_REFLECT, a ret .Substitute: ; 2c4b1 ld a, [EnemySubStatus4] bit SUBSTATUS_SUBSTITUTE, a ret .LeechSeed: ; 2c4b7 ld a, [PlayerSubStatus4] bit SUBSTATUS_LEECH_SEED, a ret .Disable: ; 2c4bd ld a, [PlayerDisableCount] and a ret .Encore: ; 2c4c2 ld a, [PlayerSubStatus5] bit SUBSTATUS_ENCORED, a ret .Snore: .SleepTalk: ; 2c4c8 ld a, [EnemyMonStatus] and SLP jr z, .Redundant jr .NotRedundant .MeanLook: ; 2c4d1 ld a, [EnemySubStatus5] bit SUBSTATUS_CANT_RUN, a ret .Nightmare: ; 2c4d7 ld a, [BattleMonStatus] and a jr z, .Redundant ld a, [PlayerSubStatus1] bit SUBSTATUS_NIGHTMARE, a ret .Spikes: ; 2c4e3 ld a, [PlayerScreens] bit SCREENS_SPIKES, a ret .Foresight: ; 2c4e9 ld a, [PlayerSubStatus1] bit SUBSTATUS_IDENTIFIED, a ret .PerishSong: ; 2c4ef ld a, [PlayerSubStatus1] bit SUBSTATUS_PERISH, a ret .Sandstorm: ; 2c4f5 ld a, [Weather] cp WEATHER_SANDSTORM jr z, .Redundant jr .NotRedundant .Attract: ; 2c4fe callba Function377f5 jr c, .Redundant ld a, [PlayerSubStatus1] bit SUBSTATUS_IN_LOVE, a ret .Safeguard: ; 2c50c ld a, [EnemyScreens] bit SCREENS_SAFEGUARD, a ret .RainDance: ; 2c512 ld a, [Weather] cp WEATHER_RAIN jr z, .Redundant jr .NotRedundant .SunnyDay: ; 2c51b ld a, [Weather] cp WEATHER_SUN jr z, .Redundant jr .NotRedundant .DreamEater: ; 2c524 ld a, [BattleMonStatus] and SLP jr z, .Redundant jr .NotRedundant .Swagger: ; 2c52d ld a, [PlayerSubStatus3] bit SUBSTATUS_CONFUSED, a ret .FutureSight: ; 2c533 ld a, [EnemyScreens] bit 5, a ret .Heal: .MorningSun: .Synthesis: .Moonlight: ; 2c539 callba AICheckEnemyMaxHP jr nc, .NotRedundant .Teleport: .Redundant: ; 2c541 ld a, 1 and a ret .NotRedundant: ; 2c545 xor a ret INCLUDE "event/move_deleter.asm" Function2c642: ; 2c642 (b:4642) ld de, OverworldMap ld a, $1 ld [de], a inc de ld a, BANK(sGameData) call GetSRAMBank ld hl, sPlayerData + PlayerID - wPlayerData ld a, [hli] ld [de], a ld b, a inc de ld a, [hl] ld [de], a ld c, a inc de push bc ld hl, sPlayerData + PlayerName - wPlayerData ld bc, NAME_LENGTH call CopyBytes push de ld hl, sPokemonData + PokedexCaught - wPokemonData ld b, (NUM_POKEMON + 7) / 8 call CountSetBits pop de pop bc ld a, [wd265] ld [de], a inc de call CloseSRAM call Random and $1 ld [de], a inc de call Function2c6ac ld [de], a inc de ld a, c ld c, b ld b, a call Function2c6ac ld [de], a inc de ld a, BANK(s0_abe4) call GetSRAMBank ld a, [s0_abe4] ld [de], a inc de ld a, [s0_abe4 + 1] ld [de], a ld a, $14 ld [wca00], a call CloseSRAM ld hl, OverworldMap ld de, wc950 ld bc, SCREEN_WIDTH jp CopyBytes Function2c6ac: ; 2c6ac (b:46ac) push de call Random cp $19 ; 10 percent jr c, .tenpercent call Random and $7 ld d, a rl d ld e, $80 .loop rlc e dec a jr nz, .loop ld a, e and c jr z, .skip ld a, $1 .skip add d jr .done .tenpercent call Random cp $32 ; 20 percent jr c, .twopercent call Random and $3 ld d, a rl d ld e, $80 .loop2 rlc e dec a jr nz, .loop2 ld a, e and b jr z, .skip2 ld a, $1 .skip2 add d add $10 jr .done .twopercent call Random cp $32 ; 50 ; 20 percent jr c, .pointfourpercent ld a, b swap a and $7 add $18 jr .done .pointfourpercent ld a, b and $80 ld a, $20 jr z, .done ld a, $21 .done pop de ret MysteryGiftGetItem: ; 2c708 (b:4708) ld a, c cp $25 ; 37 jr nc, Function2c722 ld hl, Unknown_2c725 ld b, 0 add hl, bc ld c, [hl] ret MysteryGiftGetDecoration: ; 2c715 (b:4715) ld a, c cp $25 ; 37 jr nc, Function2c722 ld hl, Unknown_2c74a ld b, 0 add hl, bc ld c, [hl] ret Function2c722: ; 2c722 (b:4722) ld c, DECO_POLKADOT_BED ; GREAT_BALL ret ; 2c725 (b:4725) Unknown_2c725: ; 2c725 ; May or may not be items. db BERRY db PRZCUREBERRY db MINT_BERRY db ICE_BERRY db BURNT_BERRY db PSNCUREBERRY db GUARD_SPEC db X_DEFEND db X_ATTACK db BITTER_BERRY db DIRE_HIT db X_SPECIAL db X_ACCURACY db EON_MAIL db MORPH_MAIL db MUSIC_MAIL db MIRACLEBERRY db GOLD_BERRY db REVIVE db GREAT_BALL db SUPER_REPEL db MAX_REPEL db ELIXER db ETHER db WATER_STONE db FIRE_STONE db LEAF_STONE db THUNDERSTONE db MAX_ETHER db MAX_ELIXER db MAX_REVIVE db SCOPE_LENS db HP_UP db PP_UP db RARE_CANDY db BLUESKY_MAIL db MIRAGE_MAIL ; 2c74a Unknown_2c74a: ; 2c74a ; May or may not be items. db DECO_SNES db DECO_BIG_SNORLAX_DOLL db DECO_BIG_ONIX_DOLL db DECO_BIG_LAPRAS_DOLL db DECO_1D db DECO_PIKACHU_DOLL db DECO_SURF_PIKACHU_DOLL db DECO_CLEFAIRY_DOLL db DECO_JIGGLYPUFF_DOLL db DECO_BULBASAUR_DOLL db DECO_TROPICPLANT db DECO_JUMBOPLANT db DECO_TOWN_MAP db DECO_CHARMANDER_DOLL db DECO_POLIWAG_DOLL db DECO_DIGLETT_DOLL db DECO_BLUE_CARPET db DECO_YELLOW_CARPET db DECO_0F db DECO_PIKACHU_POSTER db DECO_N64 db DECO_19 db DECO_01 db DECO_FEATHERY_BED db DECO_POLKADOT_BED db DECO_PIKACHU_BED db DECO_06 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_PINK_BED db DECO_SQUIRTLE_DOLL db DECO_STARMIE_DOLL ; 2c76f Function2c76f: ; 2c76f (b:476f) ld a, $1 ld [hInMenu], a call Function2c8d3 ld a, $0 ld [hInMenu], a ret nc call Function1bee call WaitBGMap ld a, [CurItem] dec a ld [wd107], a ld hl, TMsHMs ld c, a ld b, $0 add hl, bc ld a, [hl] ld [wItemQuantityBuffer], a call Function2c798 scf ret Function2c798: ; 2c798 (b:4798) ld a, [CurItem] ld c, a callab GetNumberedTMHM ld a, c ld [CurItem], a ret ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7) ld a, [CurItem] ld c, a callab GetTMHMNumber ld a, c ld [wCurTMHM], a ret GetTMHMItemMove: ; 2c7b6 (b:47b6) call ConvertCurItemIntoCurTMHM predef GetTMHMMove ret Function2c7bf: ; 2c7bf (b:47bf) ld hl, Options ld a, [hl] push af res 4, [hl] ld a, [CurItem] cp TM01 jr c, .NotTMHM call GetTMHMItemMove ld a, [wCurTMHM] ld [wd262], a call GetMoveName call CopyName1 ld hl, UnknownText_0x2c8bf ; Booted up a TM ld a, [CurItem] cp HM01 jr c, .TM ld hl, UnknownText_0x2c8c4 ; Booted up an HM .TM call PrintText ld hl, UnknownText_0x2c8c9 call PrintText call YesNoBox .NotTMHM pop bc ld a, b ld [Options], a ret Function2c7fb: ; 2c7fb ld hl, StringBuffer2 ld de, wd066 ld bc, $c call CopyBytes call WhiteBGMap Function2c80a: ; 2c80a callba Function5004f callba Function50405 callba Function503e0 ld a, $3 ld [PartyMenuActionText], a .loopback callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap call SetPalettes call DelayFrame callba PartyMenuSelect push af ld a, [CurPartySpecies] cp EGG pop bc ; now contains the former contents of af jr z, .egg push bc ld hl, wd066 ld de, StringBuffer2 ld bc, $c call CopyBytes pop af ; now contains the original contents of af ret .egg push hl push de push bc push af ld de, SFX_WRONG call PlaySFX call WaitSFX pop af pop bc pop de pop hl jr .loopback ; 2c867 Function2c867: ; 2c867 predef CanLearnTMHMMove push bc ld a, [CurPartyMon] ld hl, PartyMonNicknames call GetNick pop bc ld a, c and a jr nz, .compatible push de ld de, SFX_WRONG call PlaySFX pop de ld hl, UnknownText_0x2c8ce call PrintText jr .nope .compatible callab KnowsMove jr c, .nope predef LearnMove ld a, b and a jr z, .nope callba MobileFn_106049 ld a, [CurItem] call IsHM ret c ld c, HAPPINESS_LEARNMOVE callab ChangeHappiness call Function2cb0c jr .asm_2c8bd .nope and a ret .asm_2c8b8 ld a, $2 ld [wd0ec], a .asm_2c8bd scf ret ; 2c8bf (b:48bf) UnknownText_0x2c8bf: ; 0x2c8bf ; Booted up a TM. text_jump UnknownText_0x1c0373 db "@" ; 0x2c8c4 UnknownText_0x2c8c4: ; 0x2c8c4 ; Booted up an HM. text_jump UnknownText_0x1c0384 db "@" ; 0x2c8c9 UnknownText_0x2c8c9: ; 0x2c8c9 ; It contained @ . Teach @ to a #MON? text_jump UnknownText_0x1c0396 db "@" ; 0x2c8ce UnknownText_0x2c8ce: ; 0x2c8ce ; is not compatible with @ . It can't learn @ . text_jump UnknownText_0x1c03c2 db "@" ; 0x2c8d3 Function2c8d3: ; 2c8d3 (b:48d3) xor a ld [hBGMapMode], a ; $ff00+$d4 call Function2c9e2 ld a, $2 ld [wcfa1], a ld a, $7 ld [wcfa2], a ld a, $1 ld [wcfa4], a ld a, $5 sub d inc a cp $6 jr nz, .asm_2c8f1 dec a .asm_2c8f1 ld [wcfa3], a ld a, $c ld [wcfa5], a xor a ld [wcfa6], a ld a, $20 ld [wcfa7], a ld a, $f3 ld [wcfa8], a ld a, [wTMHMPocketCursor] inc a ld [MenuSelection2], a ld a, $1 ld [wcfaa], a jr Function2c946 Function2c915: ; 2c915 (b:4915) call Function2c9e2 call Function1bc9 ld b, a ld a, [MenuSelection2] dec a ld [wTMHMPocketCursor], a xor a ld [hBGMapMode], a ; $ff00+$d4 ld a, [wcfa6] bit 7, a jp nz, Function2c9b1 ld a, b ld [wcf73], a bit 0, a jp nz, Function2c974 bit 1, a jp nz, Function2c9a5 bit 4, a jp nz, Function2c9af bit 5, a jp nz, Function2c9af Function2c946: ; 2c946 (b:4946) call Function2c98a jp nc, Function2c9af hlcoord 0, 12 ld b, $4 ld c, $12 call TextBox ld a, [CurItem] cp $3a jr nc, Function2c915 ld [wd265], a predef GetTMHMMove ld a, [wd265] ld [CurSpecies], a hlcoord 1, 14 call PrintMoveDesc jp Function2c915 Function2c974: ; 2c974 (b:4974) call Function2cad6 call Function2cb2a ld a, [MenuSelection2] dec a ld b, a ld a, [wd0e2] add b ld b, a ld a, [wd265] cp b jr z, asm_2c9a8 Function2c98a: ; 2c98a (b:498a) call Function2cab5 ld a, [MenuSelection2] ld b, a .asm_2c991 inc c ld a, c cp $3a jr nc, .asm_2c99f ld a, [hli] and a jr z, .asm_2c991 dec b jr nz, .asm_2c991 ld a, c .asm_2c99f ld [CurItem], a cp $ff ret Function2c9a5: ; 2c9a5 (b:49a5) call Function2cad6 asm_2c9a8: ; 2c9a8 (b:49a8) ld a, $2 ld [wcf73], a and a ret Function2c9af: ; 2c9af (b:49af) and a ret Function2c9b1: ; 2c9b1 (b:49b1) ld a, b bit 7, a jr nz, .skip ld hl, wd0e2 ld a, [hl] and a jp z, Function2c915 dec [hl] call Function2c9e2 jp Function2c946 .skip call Function2cab5 ld b, $5 .loop inc c ld a, c cp NUM_TMS + NUM_HMS + 1 jp nc, Function2c915 ld a, [hli] and a jr z, .loop dec b jr nz, .loop ld hl, wd0e2 inc [hl] call Function2c9e2 jp Function2c946 Function2c9e2: ; 2c9e2 (b:49e2) ld a, [BattleType] cp BATTLETYPE_TUTORIAL jp z, Function2caca hlcoord 5, 2 lb bc, 10, 15 ld a, " " call ClearBox call Function2cab5 ld d, $5 .loop2 inc c ld a, c cp NUM_TMS + NUM_HMS + 1 jr nc, .NotTMHM ld a, [hli] and a jr z, .loop2 ld b, a ld a, c ld [wd265], a push hl push de push bc call Function2ca86 push hl ld a, [wd265] cp NUM_TMS + 1 jr nc, .HM ld de, wd265 lb bc, PRINTNUM_LEADINGZEROS | 1, 2 call PrintNum jr .okay .HM push af sub NUM_TMS ld [wd265], a ld [hl], "H" inc hl ld de, wd265 lb bc, PRINTNUM_RIGHTALIGN | 1, 2 call PrintNum pop af ld [wd265], a .okay predef GetTMHMMove ld a, [wd265] ld [wd262], a call GetMoveName pop hl ld bc, $3 add hl, bc push hl call PlaceString pop hl pop bc ld a, c push bc cp NUM_TMS + 1 jr nc, .hm2 ld bc, $1d add hl, bc ld [hl], $f1 inc hl ld a, "0" ; why are we doing this? pop bc push bc ld a, b ld [wd265], a ld de, wd265 lb bc, 1, 2 call PrintNum .hm2 pop bc pop de pop hl dec d jr nz, .loop2 jr .done .NotTMHM call Function2ca86 rept 3 inc hl endr push de ld de, String_2caae call PlaceString pop de .done ret Function2ca86: ; 2ca86 (b:4a86) hlcoord 5, 0 ld bc, $28 ld a, 6 sub d ld e, a .loop add hl, bc dec e jr nz, .loop ret ; 2ca95 (b:4a95) Function2ca95: ; 2ca95 pop hl ld bc, 3 add hl, bc predef GetTMHMMove ld a, [wd265] ld [wd262], a call GetMoveName push hl call PlaceString pop hl ret ; 2caae String_2caae: ; 2caae db "CANCEL@" ; 2cab5 Function2cab5: ; 2cab5 (b:4ab5) ld hl, TMsHMs ld a, [wd0e2] ld b, a inc b ld c, 0 .loop inc c ld a, [hli] and a jr z, .loop dec b jr nz, .loop dec hl dec c ret Function2caca: ; 2caca (b:4aca) hlcoord 9, 3 push de ld de, String_2caae call PlaceString pop de ret Function2cad6: ; 2cad6 (b:4ad6) push de ld de, SFX_READ_TEXT_2 call PlaySFX pop de ret ; 2cadf (b:4adf) Function2cadf: ; 2cadf call ConvertCurItemIntoCurTMHM call Function2cafa ld hl, UnknownText_0x2caf0 jr nc, .asm_2caed ld hl, UnknownText_0x2caf5 .asm_2caed jp PrintText ; 2caf0 UnknownText_0x2caf0: ; 0x2caf0 ; You have no room for any more @ S. text_jump UnknownText_0x1c03fa db "@" ; 0x2caf5 UnknownText_0x2caf5: ; 0x2caf5 ; You received @ ! text_jump UnknownText_0x1c0421 db "@" ; 0x2cafa Function2cafa: ; 2cafa ld a, [wd265] dec a ld hl, TMsHMs ld b, 0 ld c, a add hl, bc ld a, [hl] inc a cp NUM_TMS * 2 ret nc ld [hl], a ret ; 2cb0c Function2cb0c: ; 2cb0c (b:4b0c) call ConvertCurItemIntoCurTMHM ld a, [wd265] dec a ld hl, TMsHMs ld b, 0 ld c, a add hl, bc ld a, [hl] and a ret z dec a ld [hl], a ret nz ld a, [wd0e2] and a ret z dec a ld [wd0e2], a ret Function2cb2a: ; 2cb2a (b:4b2a) ld b, $0 ld c, $39 ld hl, TMsHMs .asm_2cb31 ld a, [hli] and a jr z, .asm_2cb36 inc b .asm_2cb36 dec c jr nz, .asm_2cb31 ld a, b ld [wd265], a ret PrintMoveDesc: ; 2cb3e push hl ld hl, MoveDescriptions ld a, [CurSpecies] dec a ld c, a ld b, 0 rept 2 add hl, bc endr ld a, [hli] ld e, a ld d, [hl] pop hl jp PlaceString ; 2cb52 MoveDescriptions:: ; 2cb52 INCLUDE "battle/moves/move_descriptions.asm" ; 2ed44 Function2ed44: ; 2ed44 call ConvertBerriesToBerryJuice ld hl, PartyMon1PokerusStatus ld a, [PartyCount] ld b, a ld de, PARTYMON_STRUCT_LENGTH .loopMons ld a, [hl] and $f jr nz, .monHasActivePokerus add hl, de dec b jr nz, .loopMons ld hl, StatusFlags2 bit 6, [hl] ret z call Random ld a, [hRandomAdd] and a ret nz ld a, [hRandomSub] cp $3 ret nc ; 3/65536 chance (00 00, 00 01 or 00 02) ld a, [PartyCount] ld b, a .randomMonSelectLoop call Random and $7 cp b jr nc, .randomMonSelectLoop ld hl, PartyMon1PokerusStatus call GetPartyLocation ; get pokerus byte of random mon ld a, [hl] and $f0 ret nz ; if it already has pokerus, do nothing .randomPokerusLoop call Random and a jr z, .randomPokerusLoop ld b, a and $f0 jr z, .asm_2ed91 ld a, b and $7 inc a .asm_2ed91 ld b, a swap b and $3 inc a add b ld [hl], a ret .monHasActivePokerus call Random cp $55 ret nc ; 1/3 chance ld a, [PartyCount] cp $1 ret z ; only one mon, nothing to do ld c, [hl] ld a, b cp $2 jr c, .checkPreviousMonsLoop ; no more mons after this one, go backwards call Random cp $80 jr c, .checkPreviousMonsLoop ; 1/2 chance, go backwards .checkFollowingMonsLoop add hl, de ld a, [hl] and a jr z, .infectMon ld c, a and $3 ret z ; if mon has cured pokerus, stop searching dec b ; go on to next mon ld a, b cp $1 jr nz, .checkFollowingMonsLoop ; no more mons left ret .checkPreviousMonsLoop ld a, [PartyCount] cp b ret z ; no more mons ld a, l sub e ld l, a ld a, h sbc d ld h, a ld a, [hl] and a jr z, .infectMon ld c, a and $3 ret z ; if mon has cured pokerus, stop searching inc b ; go on to next mon jr .checkPreviousMonsLoop .infectMon ld a, c and $f0 ld b, a ld a, c swap a and $3 inc a add b ld [hl], a ret ; 2ede6 ; any berry held by a Shuckle may be converted to berry juice ConvertBerriesToBerryJuice: ; 2ede6 ld hl, StatusFlags2 bit 6, [hl] ret z call Random cp $10 ret nc ; 1/16 chance ld hl, PartyMons ld a, [PartyCount] .partyMonLoop push af push hl ld a, [hl] cp SHUCKLE jr nz, .loopMon ld bc, MON_ITEM add hl, bc ld a, [hl] cp BERRY jr z, .convertToJuice .loopMon pop hl ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop af dec a jr nz, .partyMonLoop ret .convertToJuice ld a, BERRY_JUICE ld [hl], a pop hl pop af ret ; 2ee18 ShowLinkBattleParticipants: ; 2ee18 ; If we're not in a communications room, ; we don't need to be here. ld a, [wLinkMode] and a ret z callba _ShowLinkBattleParticipants ld c, 150 call DelayFrames call ClearTileMap call ClearSprites ret ; 2ee2f FindFirstAliveMon: ; 2ee2f xor a ld [hMapAnims], a call DelayFrame ld b, 6 ld hl, PartyMon1HP ld de, PARTYMON_STRUCT_LENGTH - 1 .loop ld a, [hli] or [hl] jr nz, .okay add hl, de dec b jr nz, .loop .okay ld de, (MON_LEVEL) - (MON_HP) add hl, de ld a, [hl] ld [BattleMonLevel], a predef Predef_StartBattle callba Function3ed9f ld a, 1 ld [hBGMapMode], a call ClearSprites call ClearTileMap xor a ld [hBGMapMode], a ld [hWY], a ld [rWY], a ld [hMapAnims], a ret ; 2ee6c PlayBattleMusic: ; 2ee6c push hl push de push bc xor a ld [MusicFade], a ld de, MUSIC_NONE call PlayMusic call DelayFrame call MaxVolume ld a, [BattleType] cp BATTLETYPE_SUICUNE ld de, MUSIC_SUICUNE_BATTLE jp z, .done cp BATTLETYPE_ROAMING jp z, .done ; Are we fighting a trainer? ld a, [OtherTrainerClass] and a jr nz, .trainermusic callba RegionCheck ld a, e and a jr nz, .kantowild ld de, MUSIC_JOHTO_WILD_BATTLE ld a, [TimeOfDay] cp NITE jr nz, .done ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT jr .done .kantowild ld de, MUSIC_KANTO_WILD_BATTLE jr .done .trainermusic ld de, MUSIC_CHAMPION_BATTLE cp CHAMPION jr z, .done cp RED jr z, .done ; really, they should have included admins and scientists here too... ld de, MUSIC_ROCKET_BATTLE cp GRUNTM jr z, .done cp GRUNTF jr z, .done ld de, MUSIC_KANTO_GYM_LEADER_BATTLE callba IsKantoGymLeader jr c, .done ld de, MUSIC_JOHTO_GYM_LEADER_BATTLE callba IsJohtoGymLeader jr c, .done ld de, MUSIC_RIVAL_BATTLE ld a, [OtherTrainerClass] cp RIVAL1 jr z, .done cp RIVAL2 jr nz, .othertrainer ld a, [OtherTrainerID] cp 4 ; Rival in Indigo Plateau jr c, .done ld de, MUSIC_CHAMPION_BATTLE jr .done .othertrainer ld a, [wLinkMode] and a jr nz, .johtotrainer callba RegionCheck ld a, e and a jr nz, .kantotrainer .johtotrainer ld de, MUSIC_JOHTO_TRAINER_BATTLE jr .done .kantotrainer ld de, MUSIC_KANTO_TRAINER_BATTLE .done call PlayMusic pop bc pop de pop hl ret ; 2ef18 ClearBattleRAM: ; 2ef18 xor a ld [wd0ec], a ld [wBattleResult], a ld hl, wd0d8 rept 3 ld [hli], a endr ld [hl], a ld [wd0e4], a ld [CriticalHit], a ld [BattleMonSpecies], a ld [wc664], a ld [CurBattleMon], a ld [wd232], a ld [TimeOfDayPal], a ld [PlayerTurnsTaken], a ld [EnemyTurnsTaken], a ld [EvolvableFlags], a ld hl, PlayerHPPal ld [hli], a ld [hl], a ld hl, BattleMonDVs ld [hli], a ld [hl], a ld hl, EnemyMonDVs ld [hli], a ld [hl], a ; Clear the entire BattleMons area ld hl, wBattle ld bc, wBattleEnd - wBattle xor a call ByteFill callab ResetEnemyStatLevels call ResetTextRelatedRAM ld hl, hBGMapAddress xor a ld [hli], a ld [hl], $98 ret ; 2ef6e FillBox: ; 2ef6e ; Fill wc2c6-aligned box width b height c ; with iterating tile starting from $ffad at hl. ; Predef $13 ld de, 20 ld a, [wc2c6] and a jr nz, .left ld a, [$ffad] .x1 push bc push hl .y1 ld [hl], a add hl, de inc a dec c jr nz, .y1 pop hl inc hl pop bc dec b jr nz, .x1 ret .left ; Right-aligned. push bc ld b, 0 dec c add hl, bc pop bc ld a, [$ffad] .x2 push bc push hl .y2 ld [hl], a add hl, de inc a dec c jr nz, .y2 pop hl dec hl pop bc dec b jr nz, .x2 ret ; 2ef9f SECTION "Tileset Data 4", ROMX, BANK[TILESETS_4] INCLUDE "tilesets/data_4.asm" SECTION "bankD", ROMX, BANK[$D] INCLUDE "battle/effect_commands.asm" SECTION "bankE", ROMX, BANK[$E] INCLUDE "battle/ai/items.asm" AIScoring: ; 38591 INCLUDE "battle/ai/scoring.asm" GetTrainerClassName: ; 3952d ld hl, RivalName ld a, c cp RIVAL1 jr z, .rival ld [CurSpecies], a ld a, TRAINER_NAME ld [wNamedObjectTypeBuffer], a call GetName ld de, StringBuffer1 ret .rival ld de, StringBuffer1 push de ld bc, NAME_LENGTH call CopyBytes pop de ret ; 39550 Function39550: ; 39550 ld hl, wd26b ld a, [wLinkMode] and a jr nz, .ok ld hl, RivalName ld a, c cp RIVAL1 jr z, .ok ld [CurSpecies], a ld a, TRAINER_NAME ld [wNamedObjectTypeBuffer], a call GetName ld hl, StringBuffer1 .ok ld bc, TRAINER_CLASS_NAME_LENGTH ld de, OTName push de call CopyBytes pop de ret ; 3957b Function3957b: ; 3957b ld a, [TrainerClass] ld c, a call Function39550 ld a, [TrainerClass] dec a ld hl, TrainerClassAttributes ld bc, NUM_TRAINER_ATTRIBUTES call AddNTimes ld de, wEnemyTrainerItem1 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a ld a, [hl] ld [wc652], a ret ; 3959c INCLUDE "trainers/attributes.asm" ReadTrainerParty: ; 39771 ld a, [InBattleTowerBattle] bit 0, a ret nz ld a, [wLinkMode] and a ret nz ld hl, OTPartyCount xor a ld [hli], a dec a ld [hl], a ld hl, OTPartyMons ld bc, OTPartyMonsEnd - OTPartyMons xor a call ByteFill ld a, [OtherTrainerClass] cp CAL jr nz, .not_cal2 ld a, [OtherTrainerID] cp CAL2 jr z, .cal2 ld a, [OtherTrainerClass] .not_cal2 dec a ld c, a ld b, 0 ld hl, TrainerGroups rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ld a, [OtherTrainerID] ld b, a .skip_trainer dec b jr z, .got_trainer .loop ld a, [hli] cp $ff jr nz, .loop jr .skip_trainer .got_trainer .skip_name ld a, [hli] cp "@" jr nz, .skip_name ld a, [hli] ld c, a ld b, 0 ld d, h ld e, l ld hl, TrainerTypes rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ld bc, .done push bc jp [hl] .done jp Function3991b .cal2 ld a, BANK(sMysteryGiftTrainer) call GetSRAMBank ld de, sMysteryGiftTrainer call TrainerType2 call CloseSRAM jr .done ; 397e3 TrainerTypes: ; 397e3 dw TrainerType1 ; level, species dw TrainerType2 ; level, species, moves dw TrainerType3 ; level, species, item dw TrainerType4 ; level, species, item, moves ; 397eb TrainerType1: ; 397eb ; normal (level, species) ld h, d ld l, e .loop ld a, [hli] cp $ff ret z ld [CurPartyLevel], a ld a, [hli] ld [CurPartySpecies], a ld a, OTPARTYMON ld [MonType], a push hl predef TryAddMonToParty pop hl jr .loop ; 39806 TrainerType2: ; 39806 ; moves ld h, d ld l, e .loop ld a, [hli] cp $ff ret z ld [CurPartyLevel], a ld a, [hli] ld [CurPartySpecies], a ld a, OTPARTYMON ld [MonType], a push hl predef TryAddMonToParty ld a, [OTPartyCount] dec a ld hl, OTPartyMon1Moves ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l pop hl ld b, NUM_MOVES .copy_moves ld a, [hli] ld [de], a inc de dec b jr nz, .copy_moves push hl ld a, [OTPartyCount] dec a ld hl, OTPartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ld hl, MON_PP add hl, de push hl ld hl, MON_MOVES add hl, de pop de ld b, NUM_MOVES .copy_pp ld a, [hli] and a jr z, .copied_pp push hl push bc dec a ld hl, Moves + MOVE_PP ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte pop bc pop hl ld [de], a inc de dec b jr nz, .copy_pp .copied_pp pop hl jr .loop ; 39871 TrainerType3: ; 39871 ; item ld h, d ld l, e .loop ld a, [hli] cp $ff ret z ld [CurPartyLevel], a ld a, [hli] ld [CurPartySpecies], a ld a, OTPARTYMON ld [MonType], a push hl predef TryAddMonToParty ld a, [OTPartyCount] dec a ld hl, OTPartyMon1Item ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l pop hl ld a, [hli] ld [de], a jr .loop ; 3989d (e:589d) TrainerType4: ; 3989d ; item + moves ld h, d ld l, e .loop ld a, [hli] cp $ff ret z ld [CurPartyLevel], a ld a, [hli] ld [CurPartySpecies], a ld a, OTPARTYMON ld [MonType], a push hl predef TryAddMonToParty ld a, [OTPartyCount] dec a ld hl, OTPartyMon1Item ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l pop hl ld a, [hli] ld [de], a push hl ld a, [OTPartyCount] dec a ld hl, OTPartyMon1Moves ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l pop hl ld b, NUM_MOVES .copy_moves ld a, [hli] ld [de], a inc de dec b jr nz, .copy_moves push hl ld a, [OTPartyCount] dec a ld hl, OTPartyMon1 ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ld hl, MON_PP add hl, de push hl ld hl, MON_MOVES add hl, de pop de ld b, NUM_MOVES .copy_pp ld a, [hli] and a jr z, .copied_pp push hl push bc dec a ld hl, Moves + MOVE_PP ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte pop bc pop hl ld [de], a inc de dec b jr nz, .copy_pp .copied_pp pop hl jr .loop ; 3991b Function3991b: ; 3991b (e:591b) ld hl, hMultiplicand - 1 xor a rept 3 ld [hli], a endr ld a, [wc652] ; base reward ld [hli], a ld a, [CurPartyLevel] ld [hl], a call Multiply ld hl, wc686 xor a ld [hli], a ld a, [hProduct + 2] ld [hli], a ld a, [hProduct + 3] ld [hl], a ret Battle_GetTrainerName:: ; 39939 ld a, [InBattleTowerBattle] bit 0, a ld hl, wd26b jp nz, CopyTrainerName ld a, [OtherTrainerID] ld b, a ld a, [OtherTrainerClass] ld c, a GetTrainerName:: ; 3994c ld a, c cp CAL jr nz, .not_cal2 ld a, BANK(sMysteryGiftTrainerHouseFlag) call GetSRAMBank ld a, [sMysteryGiftTrainerHouseFlag] and a call CloseSRAM jr z, .not_cal2 ld a, BANK(s0_abfe) call GetSRAMBank ld hl, s0_abfe call CopyTrainerName jp CloseSRAM .not_cal2 dec c push bc ld b, 0 ld hl, TrainerGroups rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a pop bc .loop dec b jr z, CopyTrainerName .skip ld a, [hli] cp $ff jr nz, .skip jr .loop CopyTrainerName: ; 39984 ld de, StringBuffer1 push de ld bc, NAME_LENGTH call CopyBytes pop de ret ; 39990 Function39990: ; 39990 ; This function is useless. ld de, StringBuffer1 push de ld bc, NAME_LENGTH pop de ret ; 39999 INCLUDE "trainers/trainer_pointers.asm" INCLUDE "trainers/trainers.asm" SECTION "bankF", ROMX, BANK[$F] INCLUDE "battle/core.asm" INCLUDE "battle/effect_command_pointers.asm" SECTION "bank10", ROMX, BANK[$10] INCLUDE "engine/pokedex.asm" Function41a7f: ; 41a7f xor a ld [hBGMapMode], a callba Function1de247 call Function41af7 call DisableLCD call LoadStandardFont call LoadFontsExtra call Function414b7 call Function4147b ld a, [wd265] ld [CurPartySpecies], a call Function407fd call Function40ba0 hlcoord 0, 17 ld [hl], $3b inc hl ld bc, $13 ld a, " " call ByteFill callba Function4424d call EnableLCD call WaitBGMap call GetBaseData ld de, VTiles2 predef GetFrontpic ld a, $4 call Function41423 ld a, [CurPartySpecies] call PlayCry ret ; 41ad7 Function41ad7: ; 41ad7 (10:5ad7) ld a, $3 ld [hBGMapMode], a ; $ff00+$d4 ld c, $4 call DelayFrames ret Function41ae1: ; 41ae1 (10:5ae1) ld a, $4 ld [hBGMapMode], a ; $ff00+$d4 ld c, $4 call DelayFrames ret Function41aeb: ; 41aeb (10:5aeb) ld a, [hCGB] ; $ff00+$e6 and a jr z, .asm_41af3 call Function41ae1 .asm_41af3 call Function41ad7 ret Function41af7: ; 41af7 xor a ld [hBGMapMode], a ret ; 41afb 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, [DefaultFlypoint] 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 SECTION "bank11", ROMX, BANK[$11] INCLUDE "engine/fruit_trees.asm" AIChooseMove: ; 440ce ; Score each move in EnemyMonMoves starting from Buffer1. Lower is better. ; Pick the move with the lowest score. ; Wildmons attack at random. ld a, [wBattleMode] dec a ret z ld a, [wLinkMode] and a ret nz ; No use picking a move if there's no choice. callba CheckSubstatus_RechargeChargedRampageBideRollout ret nz ; The default score is 20. Unusable moves are given a score of 80. ld a, 20 ld hl, Buffer1 rept 3 ld [hli], a endr ld [hl], a ; Don't pick disabled moves. ld a, [EnemyDisabledMove] and a jr z, .CheckPP ld hl, EnemyMonMoves ld c, 0 .CheckDisabledMove cp [hl] jr z, .ScoreDisabledMove inc c inc hl jr .CheckDisabledMove .ScoreDisabledMove ld hl, Buffer1 ld b, 0 add hl, bc ld [hl], 80 ; Don't pick moves with 0 PP. .CheckPP ld hl, Buffer1 - 1 ld de, EnemyMonPP ld b, 0 .CheckMovePP inc b ld a, b cp EnemyMonMovesEnd - EnemyMonMoves + 1 jr z, .ApplyLayers inc hl ld a, [de] inc de and $3f jr nz, .CheckMovePP ld [hl], 80 jr .CheckMovePP ; Apply AI scoring layers depending on the trainer class. .ApplyLayers ld hl, TrainerClassAttributes + 3 ; If we have a battle in BattleTower just load the Attributes of the first TrainerClass (Falkner) ; so we have always the same AI, regardless of the loaded class of trainer ld a, [InBattleTowerBattle] bit 0, a jr nz, .asm_4412f ld a, [TrainerClass] dec a ld bc, 7 ; Trainer2AI - Trainer1AI call AddNTimes .asm_4412f lb bc, CHECK_FLAG, 0 push bc push hl .CheckLayer pop hl pop bc ld a, c cp 16 ; up to 16 scoring layers jr z, .DecrementScores push bc ld d, BANK(TrainerClassAttributes) predef FlagPredef ld d, c pop bc inc c push bc push hl ld a, d and a jr z, .CheckLayer ld hl, AIScoringPointers dec c ld b, 0 rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ld a, BANK(AIScoring) call FarCall_hl jr .CheckLayer ; Decrement the scores of all moves one by one until one reaches 0. .DecrementScores ld hl, Buffer1 ld de, EnemyMonMoves ld c, EnemyMonMovesEnd - EnemyMonMoves .DecrementNextScore ; If the enemy has no moves, this will infinite. ld a, [de] inc de and a jr z, .DecrementScores ; We are done whenever a score reaches 0 dec [hl] jr z, .PickLowestScoreMoves ; If we just decremented the fourth move's score, go back to the first move inc hl dec c jr z, .DecrementScores jr .DecrementNextScore ; In order to avoid bias towards the moves located first in memory, increment the scores ; that were decremented one more time than the rest (in case there was a tie). ; This means that the minimum score will be 1. .PickLowestScoreMoves ld a, c .asm_44175 inc [hl] dec hl inc a cp NUM_MOVES + 1 jr nz, .asm_44175 ld hl, Buffer1 ld de, EnemyMonMoves ld c, NUM_MOVES ; Give a score of 0 to a blank move .asm_44184 ld a, [de] and a jr nz, .asm_44189 ld [hl], a ; Disregard the move if its score is not 1 .asm_44189 ld a, [hl] dec a jr z, .asm_44191 xor a ld [hli], a jr .asm_44193 .asm_44191 ld a, [de] ld [hli], a .asm_44193 inc de dec c jr nz, .asm_44184 ; Randomly choose one of the moves with a score of 1 .ChooseMove ld hl, Buffer1 call Random and 3 ld c, a ld b, 0 add hl, bc ld a, [hl] and a jr z, .ChooseMove ld [CurEnemyMove], a ld a, c ld [CurEnemyMoveNum], a ret ; 441af AIScoringPointers: ; 441af dw AI_Basic dw AI_Setup dw AI_Types dw AI_Offensive dw AI_Smart dw AI_Opportunist dw AI_Aggressive dw AI_Cautious dw AI_Status dw AI_Risky dw AI_None dw AI_None dw AI_None dw AI_None dw AI_None dw AI_None ; 441cf Function441cf: ; 441cf ld hl, Unknown_441fc ld b, 25 .loop ld a, [hli] ; Wrap around cp $fe jr nz, .ok ld hl, Unknown_441fc ld a, [hli] .ok ld [wc7db], a ld a, [hli] ld c, a push bc push hl call Function44207 pop hl pop bc call DelayFrames dec b jr nz, .loop xor a ld [wc7db], a call Function44207 ld c, $20 call DelayFrames ret ; 441fc Unknown_441fc: ; 441fc db 0, 7 db 1, 7 db 2, 7 db 3, 7 db 4, 7 db $fe ; 44207 Function44207: ; 44207 ld a, [wc7db] ld hl, Unknown_44228 ld de, Sprites .asm_44210 ld a, [hli] cp $ff ret z ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [wc7db] ld b, a add a add b add [hl] inc hl ld [de], a inc de ld a, [hli] ld [de], a inc de jr .asm_44210 ; 44228 Unknown_44228: ; 44228 db $58, $48, $00, $00 db $58, $50, $01, $00 db $58, $58, $02, $00 db $60, $48, $10, $00 db $60, $50, $11, $00 db $60, $58, $12, $00 db $68, $48, $20, $00 db $68, $50, $21, $00 db $68, $58, $22, $00 db $ff ; 4424d Function4424d: ; 4424d call GetPokemonName hlcoord 9, 3 call PlaceString ld a, [wd265] ld b, a call Function44333 ld a, b push af hlcoord 9, 5 call FarString ld h, b ld l, c push de hlcoord 2, 8 ld a, $5c ld [hli], a ld a, $5d ld [hli], a ld de, wd265 lb bc, PRINTNUM_LEADINGZEROS | 1, 3 call PrintNum ld a, [wd265] dec a call CheckCaughtMon pop hl pop bc ret z ld a, [CurPartySpecies] ld [CurSpecies], a inc hl ld a, b push af push hl call GetFarHalfword ld d, l ld e, h pop hl rept 2 inc hl endr ld a, d or e jr z, .asm_442b0 push hl push de ld hl, [sp+$0] ld d, h ld e, l hlcoord 12, 7 lb bc, 2, 36 call PrintNum hlcoord 14, 7 ld [hl], "<ROCKET>" pop af pop hl .asm_442b0 pop af push af inc hl push hl dec hl call GetFarHalfword ld d, l ld e, h ld a, e or d jr z, .skip push de ld hl, [sp+$0] ld d, h ld e, l hlcoord 11, 9 lb bc, 2, 69 call PrintNum pop de .skip lb bc, 5, SCREEN_WIDTH - 2 hlcoord 2, 11 call ClearBox hlcoord 1, 10 ld bc, $13 ld a, $61 call ByteFill hlcoord 1, 9 ld [hl], "<CONT>" inc hl ld [hl], "<CONT>" hlcoord 1, 10 ld [hl], "<......>" inc hl ld [hl], "<DONE>" pop de inc de pop af hlcoord 2, 11 push af call FarString pop bc ld a, [wPokedexStatus] or a ret z push bc push de lb bc, 5, SCREEN_WIDTH - 2 hlcoord 2, 11 call ClearBox hlcoord 1, 10 ld bc, $13 ld a, $61 call ByteFill hlcoord 1, 9 ld [hl], "<CONT>" inc hl ld [hl], "<CONT>" hlcoord 1, 10 ld [hl], "<......>" inc hl ld [hl], "<PROMPT>" pop de inc de pop af hlcoord 2, 11 call FarString ret ; 44331 String_44331: ; 44331 db "#@" ; 44333 Function44333: ; 44333 push hl ld hl, PokedexDataPointerTable ld a, b dec a ld d, 0 ld e, a rept 2 add hl, de endr ld e, [hl] inc hl ld d, [hl] push de rlca rlca and $3 ld hl, PokedexEntryBanks ld d, 0 ld e, a add hl, de ld b, [hl] pop de pop hl ret ; 44351 PokedexEntryBanks: ; 44351 GLOBAL PokedexEntries1 GLOBAL PokedexEntries2 GLOBAL PokedexEntries3 GLOBAL PokedexEntries4 db BANK(PokedexEntries1) db BANK(PokedexEntries2) db BANK(PokedexEntries3) db BANK(PokedexEntries4) ; 44355 Function44355: ; 44355 call Function44333 push hl ld h, d ld l, e .loop1 ld a, b call GetFarByte inc hl cp "@" jr nz, .loop1 rept 4 inc hl endr dec c jr z, .done .loop2 ld a, b call GetFarByte inc hl cp "@" jr nz, .loop2 .done ld d, h ld e, l pop hl ret ; 44378 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 [wd10b], 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 LoadMenuDataHeader_0x1d75 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 Function350c 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 WhiteBGMap .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@" SECTION "bank12", ROMX, BANK[$12] Function48000: ; 48000 ld a, $1 ld [wd474], a xor a ld [wd473], a ld [PlayerGender], a ld [wd475], a ld [wd476], a ld [wd477], a ld [wd478], a ld [DefaultFlypoint], a ld [wd003], a ; could have done "ld a, [wd479] \ and -4", saved four operations ld a, [wd479] res 0, a ld [wd479], a ld a, [wd479] res 1, a ld [wd479], a ret ; 4802f Function4802f: ; 4802f (12:402f) xor a set 6, a ld [DefaultFlypoint], a ld hl, wd003 set 0, [hl] ld a, c and a call z, Function48000 call WhiteBGMap 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 WhiteBGMap ld a, [DefaultFlypoint] 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, $14 call DelayFrames ld b, $1 call Function4930f call WhiteBGMap 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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 WhiteBGMap 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, $30 call DelayFrames .asm_4825c call WhiteBGMap 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 Function350c 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] ; $ff00+$a7 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, [DefaultFlypoint] 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 WhiteBGMap 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, $a 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] ; $ff00+$a7 and A_BUTTON jp nz, Function488b9 ld a, [hJoyPressed] ; $ff00+$a7 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] ; $ff00+$a8 and a jp z, Function4896e bit 0, a jp nz, Function4896e bit 1, a jp nz, Function4896e ld a, [DefaultFlypoint] and %11001111 res 7, a ld [DefaultFlypoint], 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, $a 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, [DefaultFlypoint] set 7, a and $cf ld [DefaultFlypoint], 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] ; $ff00+$a7 and A_BUTTON jp nz, Function48c0f ld a, [hJoyPressed] ; $ff00+$a7 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, [DefaultFlypoint] swap a and $3 inc a cp b jr nz, .asm_48c40 ld a, [DefaultFlypoint] bit 7, a jr z, .asm_48c3a res 7, a ld [DefaultFlypoint], a xor a jr .asm_48c40 .asm_48c3a set 7, a ld [DefaultFlypoint], a xor a .asm_48c40 swap a ld b, a ld a, [DefaultFlypoint] and $cf or b ld [DefaultFlypoint], 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 ; $ff00+$b4 (aliases: hMultiplicand) ld a, [hli] ld [hDividend + 0], a ld a, [hl] ld [hDividend + 1], a ; $ff00+$b4 (aliases: hMultiplicand) ld a, 100 ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier) ld b, 2 call Divide ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier) 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 InitGender: ; 48dcb (12:4dcb) call Function48e14 call Function48e47 call Function48e64 call Function3200 call SetPalettes ld hl, TextJump_AreYouABoyOrAreYouAGirl call PrintText ld hl, .MenuDataHeader call LoadMenuDataHeader call Function3200 call InterpretMenu2 call WriteBackup ld a, [MenuSelection2] dec a ld [PlayerGender], a ld c, 10 call DelayFrames ret ; 48dfc (12:4dfc) .MenuDataHeader: ; 0x48dfc db $40 ; flags db 04, 06 ; start coords db 09, 12 ; end coords dw .MenuData2 db 1 ; default option ; 0x48e04 .MenuData2: ; 0x48e04 db $a1 ; flags db 2 ; items db "Boy@" db "Girl@" ; 0x48e0f TextJump_AreYouABoyOrAreYouAGirl: ; 0x48e0f ; Are you a boy? Or are you a girl? text_jump Text_AreYouABoyOrAreYouAGirl db "@" ; 0x48e14 Function48e14: ; 48e14 (12:4e14) ld a, $10 ld [MusicFade], a ld a, $0 ld [MusicFadeIDLo], a ld a, $0 ld [MusicFadeIDHi], a ld c, $8 call DelayFrames call WhiteBGMap call Function48000 call LoadFontsExtra hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, $0 call ByteFill hlcoord 0, 0, AttrMap ld bc, SCREEN_HEIGHT * SCREEN_WIDTH xor a call ByteFill ret Function48e47: ; 48e47 (12:4e47) ld hl, Palette_48e5c ld de, Unkn1Pals ld bc, $8 ld a, $5 call FarCopyWRAM callba Function96a4 ret ; 48e5c (12:4e5c) Palette_48e5c: ; 48e5c RGB 31, 31, 31 RGB 09, 30, 31 RGB 01, 11, 31 RGB 00, 00, 00 ; 48e64 Function48e64: ; 48e64 (12:4e64) ld de, GFX_48e71 ld hl, VTiles2 tile $00 lb bc, BANK(GFX_48e71), 1 call Get2bpp ret ; 48e71 (12:4e71) GFX_48e71: ; 48e71 INCBIN "gfx/unknown/048e71.2bpp" DrawKrisPackGFX: ; 48e81 ld hl, PackFGFXPointers rept 2 add hl, de endr ld a, [hli] ld e, a ld d, [hl] ld hl, VTiles2 tile $50 lb bc, BANK(PackFGFX), 15 call Request2bpp ret ; 48e93 PackFGFXPointers: ; 48e93 dw PackFGFX + $f0 * 1 dw PackFGFX + $f0 * 3 dw PackFGFX + $f0 * 0 dw PackFGFX + $f0 * 2 ; 48e9b PackFGFX: ; 48e9b INCBIN "gfx/misc/pack_f.2bpp" ; 4925b Function4925b: ; 4925b call FadeToMenu call WhiteBGMap call ClearScreen call DelayFrame ld b, $14 call GetSGBLayout xor a ld [wItemAttributeParamBuffer], a call Function492a5 ld [wd265], a ld [wd262], a call GetMoveName call CopyName1 callba Function2c7fb jr c, .asm_4929c jr .asm_49291 .asm_49289 callba Function2c80a jr c, .asm_4929c .asm_49291 call Function492b9 jr nc, .asm_49289 xor a ld [ScriptVar], a jr .asm_492a1 .asm_4929c ld a, $ff ld [ScriptVar], a .asm_492a1 call Function2b3c ret ; 492a5 Function492a5: ; 492a5 ld a, [ScriptVar] cp $1 jr z, .asm_492b3 cp $2 jr z, .asm_492b6 ld a, ICE_BEAM ret .asm_492b3 ld a, FLAMETHROWER ret .asm_492b6 ld a, THUNDERBOLT ret ; 492b9 Function492b9: ; 492b9 ld hl, MenuDataHeader_0x4930a call LoadMenuDataHeader predef CanLearnTMHMMove push bc ld a, [CurPartyMon] ld hl, PartyMonNicknames call GetNick pop bc ld a, c and a jr nz, .can_learn push de ld de, SFX_WRONG call PlaySFX pop de ld a, BANK(UnknownText_0x2c8ce) ld hl, UnknownText_0x2c8ce call FarPrintText jr .didnt_learn .can_learn callab KnowsMove jr c, .didnt_learn predef LearnMove ld a, b and a jr z, .didnt_learn ld c, HAPPINESS_LEARNMOVE callab ChangeHappiness jr .learned .didnt_learn call ExitMenu and a ret .learned call ExitMenu scf ret ; 4930a MenuDataHeader_0x4930a: ; 0x4930a db $40 ; flags db 12, 00 ; start coords db 17, 19 ; end coords ; 4930f Function4930f: ; 4930f (12:530f) ld a, b cp $ff jr nz, .asm_49317 ld a, [SGBPredef] .asm_49317 push af callba Function9673 pop af ld l, a ld h, 0 add hl, hl ld de, Jumptable_49330 add hl, de ld a, [hli] ld h, [hl] ld l, a ld de, .done push de jp [hl] .done ret ; 49330 (12:5330) Jumptable_49330: ; 49330 dw Function4936e dw Function4942f dw Function49706 ; 49336 Function49336: ; 49336 .asm_49336 push bc push hl .asm_49338 ld [hli], a dec c jr nz, .asm_49338 pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .asm_49336 ret ; 49346 Function49346: ; 49346 (12:5346) hlcoord 0, 0, AttrMap ld bc, SCREEN_HEIGHT * SCREEN_WIDTH xor a call ByteFill ret Function49351: ; 49351 (12:5351) ld de, Unkn1Pals ld hl, Palette_493e1 ld bc, $28 ld a, $5 ; BANK(Unkn1Pals) call FarCopyWRAM ld de, Unkn1Pals + $38 ld hl, Palette_49418 ld bc, $8 ld a, $5 ; BANK(Unkn1Pals) call FarCopyWRAM ret Function4936e: ; 4936e (12:536e) call Function49351 call Function49346 call Function49384 callba Function96b3 callba Function96a4 ret Function49384: ; 49384 (12:5384) hlcoord 0, 0, AttrMap lb bc, 4, 1 ld a, $1 call Function49336 lb bc, 2, 1 ld a, $2 call Function49336 lb bc, 6, 1 ld a, $3 call Function49336 hlcoord 1, 0, AttrMap ld a, $1 lb bc, 3, 18 call Function49336 lb bc, 2, 18 ld a, $2 call Function49336 lb bc, 12, 18 ld a, $3 call Function49336 hlcoord 19, 0, AttrMap lb bc, 4, 1 ld a, $1 call Function49336 lb bc, 2, 1 ld a, $2 call Function49336 lb bc, 6, 1 ld a, $3 call Function49336 hlcoord 0, 12, AttrMap ld bc, 6 * SCREEN_WIDTH ld a, $7 call ByteFill ret ; 493e1 (12:53e1) Palette_493e1: ; 493e1 RGB 03, 07, 09 RGB 26, 31, 00 RGB 20, 16, 03 RGB 31, 31, 31 RGB 13, 24, 29 RGB 11, 16, 30 RGB 07, 11, 22 RGB 05, 06, 18 RGB 31, 31, 31 RGB 20, 26, 31 RGB 13, 24, 29 RGB 11, 16, 30 RGB 31, 31, 31 RGB 20, 26, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 20, 16, 08 RGB 31, 00, 00 RGB 00, 00, 00 ; 49409 Function49409:: ; 49409 ld hl, Palette_49418 ld de, Unkn1Pals + 8 * 7 ld bc, 8 ld a, $5 call FarCopyWRAM ret ; 49418 Palette_49418: ; 49418 RGB 31, 31, 31 RGB 08, 19, 28 RGB 05, 05, 16 RGB 00, 00, 00 ; 49420 Function49420:: ; 49420 (12:5420) ld hl, MansionPalette4 ld de, Unkn1Pals + $30 ld bc, $8 ld a, $5 ; BANK(Unkn1Pals) call FarCopyWRAM ret ; 4942f (12:542f) Function4942f: ; 4942f call Function49351 ld de, Unkn1Pals + $38 ld hl, Palette_49478 ld bc, $8 ld a, $5 ; BANK(Unkn1Pals) call FarCopyWRAM call Function49346 hlcoord 0, 0, AttrMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a call ByteFill hlcoord 0, 14, AttrMap ld bc, 4 * SCREEN_WIDTH ld a, $7 call ByteFill ld a, [DefaultFlypoint] bit 6, a jr z, .asm_49464 call Function49480 jr .asm_49467 .asm_49464 call Function49496 .asm_49467 callba Function96b3 callba Function96a4 ld a, $1 ld [hCGBPalUpdate], a ret ; 49478 Palette_49478: ; 49478 RGB 31, 31, 31 RGB 26, 31, 00 RGB 20, 16, 03 RGB 00, 00, 00 ; 49480 Function49480: ; 49480 hlcoord 0, 0, AttrMap lb bc, 4, SCREEN_WIDTH ld a, $7 call Function49336 hlcoord 0, 2, AttrMap ld a, $4 ld [hl], a hlcoord 19, 2, AttrMap ld [hl], a ret ; 49496 Function49496: ; 49496 hlcoord 0, 0, AttrMap lb bc, 2, SCREEN_WIDTH ld a, $7 call Function49336 hlcoord 0, 1, AttrMap ld a, $4 ld [hl], a hlcoord 19, 1, AttrMap ld [hl], a ret ; 494ac Function494ac: ; 494ac ld a, [wd199] cp $15 jr z, .pokecom_2f cp $16 jr z, .battle_tower cp $1d jr z, .ice_path cp $5 jr z, .house cp $1b jr z, .radio_tower cp $d jr z, .mansion_mobile jr .do_nothing .pokecom_2f call LoadPokeComPalette scf ret .battle_tower call LoadBattleTowerPalette scf ret .ice_path ld a, [wPermission] ; permission and 7 cp 3 ; Hall of Fame jr z, .do_nothing call LoadIcePathPalette scf ret .house call LoadHousePalette scf ret .radio_tower call LoadRadioTowerPalette scf ret .mansion_mobile call LoadMansionPalette scf ret .do_nothing and a ret ; 494f2 LoadPokeComPalette: ; 494f2 ld a, $5 ld de, Unkn1Pals ld hl, PokeComPalette ld bc, $40 call FarCopyWRAM ret ; 49501 PokeComPalette: ; 49501 INCLUDE "tilesets/pokecom.pal" ; 49541 LoadBattleTowerPalette: ; 49541 ld a, $5 ld de, Unkn1Pals ld hl, BattleTowerPalette ld bc, $40 call FarCopyWRAM ret ; 49550 BattleTowerPalette: ; 49550 INCLUDE "tilesets/battle_tower.pal" ; 49590 LoadIcePathPalette: ; 49590 ld a, $5 ld de, Unkn1Pals ld hl, IcePathPalette ld bc, $40 call FarCopyWRAM ret ; 4959f IcePathPalette: ; 4959f INCLUDE "tilesets/ice_path.pal" ; 495df LoadHousePalette: ; 495df ld a, $5 ld de, Unkn1Pals ld hl, HousePalette ld bc, $40 call FarCopyWRAM ret ; 495ee HousePalette: ; 495ee INCLUDE "tilesets/house.pal" ; 4962e LoadRadioTowerPalette: ; 4962e ld a, $5 ld de, Unkn1Pals ld hl, RadioTowerPalette ld bc, $40 call FarCopyWRAM ret ; 4963d RadioTowerPalette: ; 4963d INCLUDE "tilesets/radio_tower.pal" ; 4967d MansionPalette1: ; 4967d RGB 30, 28, 26 RGB 19, 19, 19 RGB 13, 13, 13 RGB 07, 07, 07 RGB 30, 28, 26 RGB 31, 19, 24 RGB 30, 10, 06 RGB 07, 07, 07 RGB 18, 24, 09 RGB 15, 20, 01 RGB 09, 13, 00 RGB 07, 07, 07 RGB 30, 28, 26 RGB 15, 16, 31 RGB 09, 09, 31 RGB 07, 07, 07 RGB 30, 28, 26 RGB 31, 31, 07 RGB 31, 16, 01 RGB 07, 07, 07 RGB 26, 24, 17 RGB 21, 17, 07 RGB 16, 13, 03 RGB 07, 07, 07 MansionPalette3: ; 496ad RGB 30, 28, 26 RGB 17, 19, 31 RGB 14, 16, 31 RGB 07, 07, 07 RGB 31, 31, 16 RGB 31, 31, 16 RGB 14, 09, 00 RGB 00, 00, 00 ; 496bd MansionPalette4: ; 496bd RGB 05, 05, 16 RGB 08, 19, 28 RGB 00, 00, 00 RGB 31, 31, 31 ; 496c5 LoadMansionPalette: ; 496c5 ld a, $5 ld de, Unkn1Pals ld hl, MansionPalette1 ld bc, $40 call FarCopyWRAM ld a, $5 ld de, Unkn1Pals + $20 ld hl, MansionPalette2 ld bc, 8 call FarCopyWRAM ld a, $5 ld de, Unkn1Pals + $18 ld hl, MansionPalette3 ld bc, 8 call FarCopyWRAM ld a, $5 ld de, Unkn1Pals + $30 ld hl, MansionPalette4 ld bc, 8 call FarCopyWRAM ret ; 496fe MansionPalette2: ; 496fe RGB 25, 24, 23 RGB 20, 19, 19 RGB 14, 16, 31 RGB 07, 07, 07 ; 49706 Function49706: ; 49706 ld hl, Palette_49732 ld de, Unkn1Pals ld bc, 8 ld a, $5 call FarCopyWRAM callba Function96a4 call Function49346 callba Function96b3 ld hl, Palette_4973a ld de, Unkn2Pals ld bc, 8 ld a, $5 call FarCopyWRAM ret ; 49732 Palette_49732: ; 49732 RGB 31, 31, 31 RGB 23, 16, 07 RGB 23, 07, 07 RGB 03, 07, 20 ; 4973a Palette_4973a: ; 4973a RGB 00, 00, 00 RGB 07, 05, 31 RGB 14, 18, 31 RGB 31, 31, 31 ; 49742 Function49742: ; 49742 ld hl, Palette_49757 ld de, Unkn1Pals ld bc, $40 ld a, $5 call FarCopyWRAM callba Function96a4 ret ; 49757 Palette_49757: ; 49757 RGB 31, 31, 63 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 63 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 04, 02, 15 RGB 21, 00, 21 RGB 31, 00, 00 RGB 31, 31, 31 RGB 04, 02, 15 RGB 21, 00, 21 RGB 30, 16, 26 RGB 31, 31, 31 RGB 04, 02, 15 RGB 21, 00, 21 RGB 16, 16, 16 RGB 31, 31, 31 RGB 04, 02, 15 RGB 21, 00, 21 RGB 31, 12, 12 RGB 31, 31, 31 RGB 04, 02, 15 RGB 21, 00, 21 RGB 07, 08, 31 RGB 31, 31, 31 RGB 04, 02, 15 RGB 21, 00, 21 RGB 29, 28, 09 RGB 31, 31, 31 ; 49797 Function49797: ; 49797 hlcoord 0, 0, AttrMap lb bc, 16, 2 ld a, $4 call Function49336 ld a, $3 ldcoord_a 0, 1, AttrMap ldcoord_a 0, 14, AttrMap hlcoord 2, 0, AttrMap lb bc, 8, 18 ld a, $5 call Function49336 hlcoord 2, 8, AttrMap lb bc, 8, 18 ld a, $6 call Function49336 hlcoord 0, 16, AttrMap lb bc, 2, SCREEN_WIDTH ld a, $4 call Function49336 ld a, $3 lb bc, 6, 1 hlcoord 6, 1, AttrMap call Function49336 ld a, $3 lb bc, 6, 1 hlcoord 17, 1, AttrMap call Function49336 ld a, $3 lb bc, 6, 1 hlcoord 6, 9, AttrMap call Function49336 ld a, $3 lb bc, 6, 1 hlcoord 17, 9, AttrMap call Function49336 ld a, $2 hlcoord 2, 16, AttrMap ld [hli], a ld a, $7 rept 3 ld [hli], a endr ld a, $2 ld [hl], a hlcoord 2, 17, AttrMap ld a, $3 ld bc, 6 call ByteFill ret ; 49811 Function49811: ; 49811 ld hl, Palette_49826 ld de, wd010 ld bc, $30 ld a, $5 call FarCopyWRAM callba Function96a4 ret ; 49826 Palette_49826: ; 49826 RGB 04, 02, 15 RGB 07, 09, 31 RGB 31, 00, 00 RGB 31, 31, 31 RGB 04, 02, 15 RGB 07, 09, 31 RGB 15, 23, 30 RGB 31, 31, 31 RGB 04, 02, 15 RGB 07, 09, 31 RGB 16, 16, 16 RGB 31, 31, 31 RGB 04, 02, 15 RGB 07, 09, 31 RGB 25, 07, 04 RGB 31, 31, 31 RGB 04, 02, 15 RGB 07, 09, 31 RGB 03, 22, 08 RGB 31, 31, 31 RGB 04, 02, 15 RGB 07, 09, 31 RGB 29, 28, 09 RGB 31, 31, 31 ; 49856 Function49856: ; 49856 call Function49797 ret ; 4985a Unknown_4985a: ; unreferenced db $ab, $03, $57, $24, $ac, $0e, $13, $32 db $be, $30, $5b, $4c, $47, $60, $ed, $f2 db $ab, $03, $55, $26, $aa, $0a, $13, $3a db $be, $28, $33, $24, $6e, $71, $df, $b0 db $a8, $00, $e5, $e0, $9a, $fc, $f4, $2c db $fe, $4c, $a3, $5e, $c6, $3a, $ab, $4d 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, $ .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 WhiteBGMap ld a, MUSIC_MOBILE_ADAPTER_MENU ld [wMapMusic], a ld de, MUSIC_MOBILE_ADAPTER_MENU call Function4a6c5 Function49f0a: ; 49f0a call WhiteBGMap call Function4a3a7 call Function4a492 call WhiteBGMap Function49f16: ; 49f16 call Function4a071 ld c, $c 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 WhiteBGMap 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 "めいし", $1f, "つくったり" next "ほぞんしておける フ,ルダーです@" ; 4a004 String_0x4a004: ; 4a004 db "モバイルたいせんや じぶんのめいしで" next "つかう あいさつ", $1f, "つくります@" ; 4a026 String_0x4a026: ; 4a026 db "あなた", $25, "じゅうしょや ねんれいの" next "せ", $1e, "い", $1f, "かえられます@" ; 4a042 String_0x4a042: ; 4a042 db "モバイルセンター", $1d, "せつぞくするとき" next "ひつような こと", $1f, "きめます@" ; 4a062 String_0x4a062: ; 4a062 db "まえ", $25, "がめん ", $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 LoadMenuDataHeader_0x1d75 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 WhiteBGMap 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 WhiteBGMap call Function4a13b call WhiteBGMap 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, $a 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 "モバイルセンター", $1f, "えらぶ" next "ログインパスワード", $1f, "いれる" next "もどる@" ; 4a20e Function4a20e: ; 4a20e (12:620e) ld a, $1 call Function1ff8 callba Function1719c8 call WhiteBGMap 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 "いつも せつぞく", $1f, "する" next "モバイルセンター", $1f, "えらびます@" db "モバイルセンター", $1d, "せつぞくするとき" next "つかうパスワード", $1f, "ほぞんできます@" db "まえ", $25, "がめん ", $1d, "もどります@" db "@" ; 4a28a Function4a28a: ; 4a28a (12:628a) hlcoord 2, 3 lb bc, 6, 1 ld a, " " call Function4a6d8 call Function1bee call WaitBGMap call LoadMenuDataHeader_0x1d75 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 WhiteBGMap 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 WhiteBGMap 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 WhiteBGMap call Function4a3a7 call Function4a492 call Function4a680 call WhiteBGMap ld c, $14 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 WhiteBGMap 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 "あなた", $25, "あいさつです@" db "モバイル たいせん", $4a, "はじまるとき@" db "あいて", $1d, "みえる あいさつです@" db "モバイル たいせんで かったとき@" db "あいて", $1d, "みえる あいさつです@" db "モバイル たいせんで まけたとき@" db "あいて", $1d, "みえる あいさつです@" db "まえ", $25, "がめん ", $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 WhiteBGMap 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, $16 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 SpecialBeastsCheck: ; 0x4a6e8 ; Check if the player owns all three legendary beasts. ; They must exist in either party or PC, and have the player's OT and ID. ; Return the result in ScriptVar. ld a, RAIKOU ld [ScriptVar], a call CheckOwnMonAnywhere jr nc, .notexist ld a, ENTEI ld [ScriptVar], a call CheckOwnMonAnywhere jr nc, .notexist ld a, SUICUNE ld [ScriptVar], a call CheckOwnMonAnywhere jr nc, .notexist ; they exist ld a, 1 ld [ScriptVar], a ret .notexist xor a ld [ScriptVar], a ret SpecialMonCheck: ; 0x4a711 ; Check if the player owns any monsters of the species in ScriptVar. ; Return the result in ScriptVar. call CheckOwnMonAnywhere jr c, .exists ; doesn't exist xor a ld [ScriptVar], a ret .exists ld a, 1 ld [ScriptVar], a ret CheckOwnMonAnywhere: ; 0x4a721 ; Check if the player owns any monsters of the species in ScriptVar. ; It must exist in either party or PC, and have the player's OT and ID. ; If there are no monsters in the party, ; the player must not own any yet. ld a, [PartyCount] and a ret z ld d, a ld e, 0 ld hl, PartyMon1Species ld bc, PartyMonOT ; Run CheckOwnMon on each Pokémon in the party. .partymon call CheckOwnMon ret c ; found! push bc ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc call UpdateOTPointer dec d jr nz, .partymon ; Run CheckOwnMon on each Pokémon in the PC. ld a, BANK(sBoxCount) call GetSRAMBank ld a, [sBoxCount] and a jr z, .boxes ld d, a ld hl, sBoxMon1Species ld bc, sBoxMonOT .openboxmon call CheckOwnMon jr nc, .loop ; found! call CloseSRAM ret .loop push bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc call UpdateOTPointer dec d jr nz, .openboxmon ; Run CheckOwnMon on each monster in the other 13 PC boxes. .boxes call CloseSRAM ld c, 0 .box ; Don't search the current box again. ld a, [wCurBox] and $f cp c jr z, .loopbox ; Load the box. ld hl, BoxAddressTable1 ld b, 0 rept 3 add hl, bc endr ld a, [hli] call GetSRAMBank ld a, [hli] ld h, [hl] ld l, a ; Number of monsters in the box ld a, [hl] and a jr z, .loopbox push bc push hl ld de, sBoxMons - sBoxCount add hl, de ld d, h ld e, l pop hl push de ld de, sBoxMonOT - sBoxCount add hl, de ld b, h ld c, l pop hl ld d, a .boxmon call CheckOwnMon jr nc, .loopboxmon ; found! pop bc call CloseSRAM ret .loopboxmon push bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc call UpdateOTPointer dec d jr nz, .boxmon pop bc .loopbox inc c ld a, c cp NUM_BOXES jr c, .box ; not found call CloseSRAM and a ret CheckOwnMon: ; 0x4a7ba ; Check if a Pokémon belongs to the player and is of a specific species. ; inputs: ; hl, pointer to PartyMonNSpecies ; bc, pointer to PartyMonNOT ; ScriptVar should contain the species we're looking for ; outputs: ; sets carry if monster matches species, ID, and OT name. push bc push hl push de ld d, b ld e, c ; check species ld a, [ScriptVar] ; species we're looking for ld b, [hl] ; species we have cp b jr nz, .notfound ; species doesn't match ; check ID number ld bc, MON_ID add hl, bc ; now hl points to ID number ld a, [PlayerID] cp [hl] jr nz, .notfound ; ID doesn't match inc hl ld a, [PlayerID + 1] cp [hl] jr nz, .notfound ; ID doesn't match ; check OT ; This only checks five characters, which is fine for the Japanese version, ; but in the English version the player name is 7 characters, so this is wrong. ld hl, PlayerName rept 4 ld a, [de] cp [hl] jr nz, .notfound cp "@" jr z, .found ; reached end of string inc hl inc de endr ld a, [de] cp [hl] jr z, .found .notfound pop de pop hl pop bc and a ret .found pop de pop hl pop bc scf ret ; 0x4a810 BoxAddressTable1: ; 4a810 dba sBox1 dba sBox2 dba sBox3 dba sBox4 dba sBox5 dba sBox6 dba sBox7 dba sBox8 dba sBox9 dba sBox10 dba sBox11 dba sBox12 dba sBox13 dba sBox14 ; 4a83a UpdateOTPointer: ; 0x4a83a push hl ld hl, NAME_LENGTH add hl, bc ld b, h ld c, l pop hl ret ; 0x4a843 MobileCheckOwnMonAnywhere: ; 4a843 ; Like CheckOwnMonAnywhere, but only check for species. ; OT/ID don't matter. ld a, [PartyCount] and a ret z ld d, a ld e, 0 ld hl, PartyMon1Species ld bc, PartyMonOT .asm_4a851 call Function4a8dc ret c push bc ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc call Function4a91e dec d jr nz, .asm_4a851 ld a, BANK(sBoxCount) call GetSRAMBank ld a, [sBoxCount] and a jr z, .asm_4a888 ld d, a ld hl, sBoxMon1Species ld bc, sBoxMonOT .asm_4a873 call Function4a8dc jr nc, .asm_4a87c call CloseSRAM ret .asm_4a87c push bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc call Function4a91e dec d jr nz, .asm_4a873 .asm_4a888 call CloseSRAM ld c, 0 .asm_4a88d ld a, [wCurBox] and $f cp c jr z, .asm_4a8d1 ld hl, BoxAddressTable2 ld b, 0 rept 3 add hl, bc endr ld a, [hli] call GetSRAMBank ld a, [hli] ld h, [hl] ld l, a ld a, [hl] and a jr z, .asm_4a8d1 push bc push hl ld de, sBoxMons - sBoxCount add hl, de ld d, h ld e, l pop hl push de ld de, sBoxMonOT - sBoxCount add hl, de ld b, h ld c, l pop hl ld d, a .asm_4a8ba call Function4a8dc jr nc, .asm_4a8c4 pop bc call CloseSRAM ret .asm_4a8c4 push bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc call Function4a91e dec d jr nz, .asm_4a8ba pop bc .asm_4a8d1 inc c ld a, c cp NUM_BOXES jr c, .asm_4a88d call CloseSRAM and a ret ; 4a8dc Function4a8dc: ; 4a8dc push bc push hl push de ld d, b ld e, c ld a, [ScriptVar] ld b, [hl] cp b jr nz, .no_match jr .match .no_match pop de pop hl pop bc and a ret .match pop de pop hl pop bc scf ret ; 4a8f4 BoxAddressTable2: ; 4a8f4 dba sBox1 dba sBox2 dba sBox3 dba sBox4 dba sBox5 dba sBox6 dba sBox7 dba sBox8 dba sBox9 dba sBox10 dba sBox11 dba sBox12 dba sBox13 dba sBox14 ; 4a91e Function4a91e: ; 4a91e push hl ld hl, NAME_LENGTH add hl, bc ld b, h ld c, l pop hl ret ; 4a927 Function4a927: ; 4a927 ld a, [ScriptVar] ld [CurItem], a ld hl, PCItems call CheckItem jr c, .asm_4a948 ld a, [ScriptVar] ld [CurItem], a ld hl, NumItems call CheckItem jr c, .asm_4a948 xor a ld [ScriptVar], a ret .asm_4a948 ld a, 1 ld [ScriptVar], a ret ; 4a94e Function4a94e: ; 4a94e call FadeToMenu ld a, -1 ld hl, DefaultFlypoint ld bc, 3 call ByteFill xor a ld [wd018], a ld [wd019], a ld b, $14 call GetSGBLayout call SetPalettes call Function4aa22 jr c, .asm_4a985 jr z, .asm_4a9a1 jr .asm_4a97b .asm_4a974 call Function4aa25 jr c, .asm_4a985 jr z, .asm_4a9a1 .asm_4a97b call Function4ac58 ld hl, wd019 res 1, [hl] jr .asm_4a974 .asm_4a985 ld a, [wd018] and a jr nz, .asm_4a990 call Function4aba8 jr c, .asm_4a974 .asm_4a990 call Function2b3c ld hl, DefaultFlypoint ld a, -1 ld bc, 3 call ByteFill scf jr .asm_4a9af .asm_4a9a1 call Function4a9c3 jr c, .asm_4a9b0 call Function4a9d7 jr c, .asm_4a974 call Function2b3c and a .asm_4a9af ret .asm_4a9b0 ld de, SFX_WRONG call PlaySFX ld hl, UnknownText_0x4a9be call PrintText jr .asm_4a974 ; 4a9be UnknownText_0x4a9be: ; 0x4a9be ; Pick three #MON for battle. text_jump UnknownText_0x1c51d7 db "@" ; 0x4a9c3 Function4a9c3: ; 4a9c3 ld hl, DefaultFlypoint ld a, $ff cp [hl] jr z, .asm_4a9d5 inc hl cp [hl] jr z, .asm_4a9d5 inc hl cp [hl] jr z, .asm_4a9d5 and a ret .asm_4a9d5 scf ret ; 4a9d7 Function4a9d7: ; 4a9d7 ld a, [DefaultFlypoint] ld hl, PartyMonNicknames call GetNick ld h, d ld l, e ld de, EndFlypoint ld bc, 6 call CopyBytes ld a, [wd003] ld hl, PartyMonNicknames call GetNick ld h, d ld l, e ld de, wd00c ld bc, 6 call CopyBytes ld a, [wd004] ld hl, PartyMonNicknames call GetNick ld h, d ld l, e ld de, wd012 ld bc, 6 call CopyBytes ld hl, UnknownText_0x4aa1d call PrintText call YesNoBox ret ; 4aa1d UnknownText_0x4aa1d: ; 0x4aa1d ; , @ and @ . Use these three? text_jump UnknownText_0x1c51f4 db "@" ; 0x4aa22 Function4aa22: ; 4aa22 call WhiteBGMap Function4aa25: ; 4aa25 callba Function5004f callba Function50405 call Function4aad3 Function4aa34: ; 4aa34 ld a, $9 ld [PartyMenuActionText], a callba WritePartyMenuTilemap xor a ld [PartyMenuActionText], a callba PrintPartyMenuText call Function4aab6 call WaitBGMap call SetPalettes call DelayFrame call Function4ab1a jr z, .asm_4aa66 push af call Function4aafb jr c, .asm_4aa67 call Function4ab06 jr c, .asm_4aa67 pop af .asm_4aa66 ret .asm_4aa67 ld hl, wd019 set 1, [hl] pop af ret ; 4aa6e Function4aa6e: ; 4aa6e pop af ld de, SFX_WRONG call PlaySFX call WaitSFX jr Function4aa34 ; 4aa7a Function4aa7a: ; 4aa7a ld hl, DefaultFlypoint ld d, $3 .loop ld e, PARTY_LENGTH ld a, [hli] push de push hl cp -1 jr z, .done ld hl, wPartyMonMenuIconAnims inc a ld d, a .inner_loop ld a, [hl] and a jr z, .next cp d jr z, .same_as_d jr .next ld a, $3 jr .proceed .same_as_d ld a, $2 .proceed 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, .inner_loop pop hl pop de dec d jr nz, .loop jr .finished .done pop hl pop de .finished ret ; 4aab6 Function4aab6: ; 4aab6 ld hl, DefaultFlypoint ld d, $3 .loop ld a, [hli] cp -1 jr z, .done push de push hl hlcoord 0, 1 ld bc, $28 call AddNTimes ld [hl], $ec pop hl pop de dec d jr nz, .loop .done ret ; 4aad3 Function4aad3: ; 4aad3 ld hl, PartyCount ld a, [hli] and a ret z ; Nothing in your party ld c, a xor a ld [hObjectStructIndexBuffer], a .loop push bc push hl ld e, 0 callba Function8e83f ld a, [hObjectStructIndexBuffer] inc a ld [hObjectStructIndexBuffer], a pop hl pop bc dec c jr nz, .loop call Function4aa7a callba Function8cf69 ret ; 4aafb Function4aafb: ; 4aafb ld a, [CurPartySpecies] cp EGG jr z, .egg and a ret .egg scf ret ; 4ab06 Function4ab06: ; 4ab06 ld a, [CurPartyMon] ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1HP call AddNTimes ld a, [hli] ld b, a ld a, [hl] or b jr nz, .NotFainted scf .NotFainted ret ; 4ab1a Function4ab1a: ; 4ab1a .asm_4ab1a ld a, $fb ld [wcfa8], a ld a, $26 ld [wcfa7], a ld a, $2 ld [wcfa4], a call Function4adf7 call Function1bc9 call Function4abc3 jr c, .asm_4ab1a push af call Function4ab99 call nc, Function1bee pop af bit 1, a jr nz, .asm_4ab6d ld a, [PartyCount] inc a ld b, a ld a, [MenuSelection2] ld [wd0d8], a cp b jr z, .asm_4ab7e ld a, [MenuSelection2] dec a ld [CurPartyMon], a ld c, a ld b, $0 ld hl, PartySpecies add hl, bc ld a, [hl] ld [CurPartySpecies], a ld de, SFX_READ_TEXT_2 call PlaySFX call WaitSFX ld a, $1 and a ret .asm_4ab6d ld a, [MenuSelection2] ld [wd0d8], a .asm_4ab73 ld de, SFX_READ_TEXT_2 call PlaySFX call WaitSFX scf ret .asm_4ab7e ld a, $1 ld [wd018], a ld a, [wcfaa] cp $2 jr z, .asm_4ab73 ld de, SFX_READ_TEXT_2 call PlaySFX call WaitSFX xor a ld [wd018], a and a ret ; 4ab99 Function4ab99: ; 4ab99 bit 1, a jr z, .asm_4aba6 ld a, [DefaultFlypoint] cp $ff jr z, .asm_4aba6 scf ret .asm_4aba6 and a ret ; 4aba8 Function4aba8: ; 4aba8 ld hl, wd004 ld a, [hl] cp $ff jr nz, .asm_4abbe dec hl ld a, [hl] cp $ff jr nz, .asm_4abbe dec hl ld a, [hl] cp $ff jr nz, .asm_4abbe and a ret .asm_4abbe ld a, $ff ld [hl], a scf ret ; 4abc3 Function4abc3: ; 4abc3 bit 3, a jr z, .asm_4abd5 ld a, [PartyCount] inc a ld [MenuSelection2], a ld a, $1 ld [wcfaa], a jr .asm_4ac29 .asm_4abd5 bit 6, a jr z, .asm_4abeb ld a, [MenuSelection2] ld [MenuSelection2], a and a jr nz, .asm_4ac29 ld a, [PartyCount] inc a ld [MenuSelection2], a jr .asm_4ac29 .asm_4abeb bit 7, a jr z, .asm_4ac08 ld a, [MenuSelection2] ld [MenuSelection2], a ld a, [PartyCount] rept 2 inc a endr ld b, a ld a, [MenuSelection2] cp b jr nz, .asm_4ac29 ld a, $1 ld [MenuSelection2], a jr .asm_4ac29 .asm_4ac08 bit 4, a jr nz, .asm_4ac10 bit 5, a jr z, .asm_4ac56 .asm_4ac10 ld a, [MenuSelection2] ld b, a ld a, [PartyCount] inc a cp b jr nz, .asm_4ac29 ld a, [wcfaa] cp $1 jr z, .asm_4ac26 ld a, $1 jr .asm_4ac29 .asm_4ac26 ld [wcfaa], a .asm_4ac29 hlcoord 0, 1 lb bc, 13, 1 call ClearBox call Function4aab6 ld a, [PartyCount] hlcoord 6, 1 .asm_4ac3b ld bc, $28 add hl, bc dec a jr nz, .asm_4ac3b ld [hl], $7f ld a, [MenuSelection2] ld b, a ld a, [PartyCount] inc a cp b jr z, .asm_4ac54 ld a, $1 ld [wcfaa], a .asm_4ac54 scf ret .asm_4ac56 and a ret ; 4ac58 Function4ac58: ; 4ac58 lb bc, 2, 18 hlcoord 1, 15 call ClearBox callba Function8ea4a ld hl, MenuDataHeader_0x4aca2 call LoadMenuDataHeader ld hl, wd019 bit 1, [hl] jr z, .asm_4ac89 hlcoord 11, 13 ld b, $3 ld c, $7 call TextBox hlcoord 13, 14 ld de, String_4ada7 call PlaceString jr .asm_4ac96 .asm_4ac89 hlcoord 11, 9 ld b, $7 ld c, $7 call TextBox call Function4ad68 .asm_4ac96 ld a, $1 ld [hBGMapMode], a call Function4acaa call ExitMenu and a ret ; 4aca2 MenuDataHeader_0x4aca2: ; 0x4aca2 db $40 ; flags db 09, 11 ; start coords db 17, 19 ; end coords dw NULL db 1 ; default option ; 0x4acaa Function4acaa: ; 4acaa .asm_4acaa ld a, $a0 ld [wMenuData2Flags], a ld a, [wd019] bit 1, a jr z, .asm_4acc2 ld a, $2 ld [wMenuData2Items], a ld a, $c ld [wMenuBorderTopCoord], a jr .asm_4accc .asm_4acc2 ld a, $4 ld [wMenuData2Items], a ld a, $8 ld [wMenuBorderTopCoord], a .asm_4accc ld a, $b ld [wMenuBorderLeftCoord], a ld a, $1 ld [wMenuCursorBuffer], a call Function1c10 ld hl, wcfa5 set 6, [hl] call Function1bc9 ld de, SFX_READ_TEXT_2 call PlaySFX ld a, [hJoyPressed] bit 0, a jr nz, .asm_4acf4 bit 1, a jr nz, .asm_4acf3 jr .asm_4acaa .asm_4acf3 ret .asm_4acf4 ld a, [wd019] bit 1, a jr nz, .asm_4ad0e ld a, [MenuSelection2] cp $1 jr z, Function4ad17 cp $2 jp z, Function4ad56 cp $3 jp z, Function4ad60 jr .asm_4acf3 .asm_4ad0e ld a, [MenuSelection2] cp $1 jr z, Function4ad56 jr .asm_4acf3 Function4ad17: ; 4ad17 call Function4adb2 jr z, .asm_4ad4a ld hl, DefaultFlypoint ld a, $ff cp [hl] jr z, .asm_4ad39 inc hl cp [hl] jr z, .asm_4ad39 inc hl cp [hl] jr z, .asm_4ad39 ld de, SFX_WRONG call WaitPlaySFX ld hl, UnknownText_0x4ad51 call PrintText ret .asm_4ad39 ld a, [CurPartyMon] ld [hl], a call Function4a9c3 ret c ld a, [wd019] set 0, a ld [wd019], a ret .asm_4ad4a ld a, $ff ld [hl], a call Function4adc2 ret UnknownText_0x4ad51: ; 0x4ad51 ; Only three #MON may enter. text_jump UnknownText_0x1c521c db "@" ; 0x4ad56 Function4ad56: ; 4ad56 callba OpenPartyStats call Function3200 ret ; 4ad60 Function4ad60: ; 4ad60 callba ManagePokemonMoves ret ; 4ad67 Function4ad67: ; 4ad67 ret ; 4ad68 Function4ad68: ; 4ad68 hlcoord 13, 12 ld de, String_4ad88 call PlaceString call Function4adb2 jr c, .asm_4ad7e hlcoord 13, 10 ld de, String_4ada0 jr .asm_4ad84 .asm_4ad7e hlcoord 13, 10 ld de, String_4ad9a .asm_4ad84 call PlaceString ret ; 4ad88 String_4ad88: ; 4ad88 db "つよさをみる" next "つかえるわざ" next "もどる@" ; 4ad9a String_4ad9a: ; 4ad9a db "さんかする@" ; 4ada0 String_4ada0: ; 4ada0 db "さんかしない@" ; 4ada7 String_4ada7: ; 4ada7 db "つよさをみる" next "もどる@" ; BACK ; 4adb2 Function4adb2: ; 4adb2 ld hl, DefaultFlypoint ld a, [CurPartyMon] cp [hl] ret z inc hl cp [hl] ret z inc hl cp [hl] ret z scf ret ; 4adc2 Function4adc2: ; 4adc2 ld a, [DefaultFlypoint] cp $ff jr nz, .asm_4ade5 ld a, [wd003] cp $ff jr nz, .asm_4addd ld a, [wd004] ld [DefaultFlypoint], a ld a, $ff ld [wd004], a jr .asm_4ade5 .asm_4addd ld [DefaultFlypoint], a ld a, $ff ld [wd003], a .asm_4ade5 ld a, [wd003] cp $ff ret nz ld b, a ld a, [wd004] ld [wd003], a ld a, b ld [wd004], a ret ; 4adf7 Function4adf7: ; 4adf7 ld a, [wd019] bit 0, a ret z ld a, [PartyCount] inc a ld [MenuSelection2], a ld a, $1 ld [wcfaa], a ld a, [wd019] res 0, a ld [wd019], a ret ; 4ae12 Function4ae12: ; 4ae12 call Function4ae1f ld a, $0 jr c, .asm_4ae1b ld a, $1 .asm_4ae1b ld [ScriptVar], a ret ; 4ae1f Function4ae1f: ; 4ae1f lb bc, 14, 7 push bc ld hl, YesNoMenuDataHeader call CopyMenuDataHeader pop bc ld a, b ld [wMenuBorderLeftCoord], a add $5 ld [wMenuBorderRightCoord], a ld a, c ld [wMenuBorderTopCoord], a add $4 ld [wMenuBorderBottomCoord], a call BackUpTiles call InterpretMenu2 push af ld c, $f call DelayFrames call Function4ae5e pop af jr c, .asm_4ae57 ld a, [MenuSelection2] cp $2 jr z, .asm_4ae57 and a ret .asm_4ae57 ld a, $2 ld [MenuSelection2], a scf ret ; 4ae5e Function4ae5e: ; 4ae5e ld a, [hOAMUpdate] push af call ExitMenu call UpdateSprites xor a ld [hOAMUpdate], a call DelayFrame ld a, $1 ld [hOAMUpdate], a call Function321c pop af ld [hOAMUpdate], a ret ; 4ae78 SECTION "bank13", ROMX, BANK[$13] SwapTextboxPalettes:: ; 4c000 hlcoord 0, 0 decoord 0, 0, AttrMap ld b, $12 .loop push bc ld c, SCREEN_WIDTH .innerloop ld a, [hl] push hl srl a jr c, .UpperNybble ld hl, TilesetPalettes add [hl] ld l, a ld a, [TilesetPalettes + 1] adc $0 ld h, a ld a, [hl] and $f jr .next .UpperNybble ld hl, TilesetPalettes add [hl] ld l, a ld a, [TilesetPalettes + 1] adc $0 ld h, a ld a, [hl] swap a and $f .next pop hl ld [de], a res 7, [hl] inc hl inc de dec c jr nz, .innerloop pop bc dec b jr nz, .loop ret ; 4c03f ScrollBGMapPalettes:: ; 4c03f ld hl, BGMapBuffer ld de, BGMapPalBuffer .loop ld a, [hl] push hl srl a jr c, .UpperNybble ld hl, TilesetPalettes add [hl] ld l, a ld a, [TilesetPalettes + 1] adc $0 ld h, a ld a, [hl] and $f jr .next .UpperNybble ld hl, TilesetPalettes add [hl] ld l, a ld a, [TilesetPalettes + 1] adc $0 ld h, a ld a, [hl] swap a and $f .next pop hl ld [de], a res 7, [hl] inc hl inc de dec c jr nz, .loop ret ; 4c075 INCLUDE "tilesets/palette_maps.asm" TileCollisionTable:: ; 4ce1f ; 00 land ; 01 water ; 0f wall ; 11 talkable water ; 1f talkable wall db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE db NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + WALLTILE, NULL + WALLTILE, TALK + WALLTILE, NULL + LANDTILE, TALK + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WATRTILE db NULL + WALLTILE, NULL + WALLTILE, TALK + WALLTILE, NULL + LANDTILE, TALK + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WATRTILE db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE ; 4cf1f EmptyAllSRAMBanks: ; 4cf1f ld a, $0 call .EmptyBank ld a, $1 call .EmptyBank ld a, $2 call .EmptyBank ld a, $3 call .EmptyBank ret ; 4cf34 .EmptyBank: ; 4cf34 call GetSRAMBank ld hl, SRAM_Begin ld bc, SRAM_End - SRAM_Begin xor a call ByteFill call CloseSRAM ret ; 4cf45 Function4cf45: ; 4cf45 (13:4f45) ld a, [hCGB] ; $ff00+$e6 and a jp z, WaitBGMap ; The following is a modified version of Function3246. ld a, [hBGMapMode] ; $ff00+$d4 push af xor a ld [hBGMapMode], a ; $ff00+$d4 ld a, [hMapAnims] push af xor a ld [hMapAnims], a .WaitLY ld a, [rLY] ; $ff00+$44 cp $60 jr c, .WaitLY di ld a, 1 ; BANK(VBGMap2) ld [rVBK], a ; $ff00+$4f hlcoord 0, 0, AttrMap call Function4cf80 ld a, 0 ; BANK(VBGMap0) ld [rVBK], a ; $ff00+$4f hlcoord 0, 0 call Function4cf80 .WaitLY2 ld a, [rLY] ; $ff00+$44 cp $60 jr c, .WaitLY2 ei pop af ld [hMapAnims], a pop af ld [hBGMapMode], a ; $ff00+$d4 ret Function4cf80: ; 4cf80 (13:4f80) ld [hSPBuffer], sp ; $ffd9 ld sp, hl ld a, [hBGMapAddress + 1] ld h, a ld l, 0 ld a, SCREEN_HEIGHT ld [hTilesPerCycle], a ld b, 1 << 1 ld c, rSTAT % $100 .loop rept SCREEN_WIDTH / 2 pop de .loop\@ ld a, [$ff00+c] and b jr nz, .loop\@ ld [hl], e inc l ld [hl], d inc l endr ld de, $20 - SCREEN_WIDTH add hl, de ld a, [hTilesPerCycle] dec a ld [hTilesPerCycle], a jr nz, .loop ld a, [hSPBuffer] ; $ff00+$d9 ld l, a ld a, [hSPBuffer + 1] ld h, a ld sp, hl ret Function4cffe:: ; 4cffe ld a, BANK(s1_a008) call GetSRAMBank ld a, [s1_a008] ld b, a ld a, [s1_ad0f] ld c, a call CloseSRAM ld a, b cp 99 jr nz, .ok ld a, c cp " " jr nz, .ok ld c, $1 ret .ok ld c, $0 ret ; 4d01e INCLUDE "engine/map_triggers.asm" Function4d15b:: ; 4d15b ld hl, wc608 ld a, [wd196] and a jr z, .skip ld bc, $30 add hl, bc .skip ld a, [wd197] and a jr z, .next_dw rept 2 inc hl endr .next_dw decoord 0, 0 ld b, SCREEN_HEIGHT .loop ld c, SCREEN_WIDTH .loop2 ld a, [hli] ld [de], a inc de dec c jr nz, .loop2 ld a, l add 4 ld l, a jr nc, .carry inc h .carry dec b jr nz, .loop ret ; 4d188 Function4d188: ; 4d188 ld a, [hCGB] and a jp z, WaitBGMap ld a, [wc2ce] cp $0 jp z, WaitBGMap ; What follows is a modified version of Function3246 (LoadEDTile). ld a, [hBGMapMode] push af xor a ld [hBGMapMode], a ld a, [hMapAnims] push af xor a ld [hMapAnims], a .wait ld a, [rLY] cp $8f jr c, .wait di ld a, 1 ; BANK(VBGMap2) ld [rVBK], a hlcoord 0, 0, AttrMap call Function4d1cb ld a, 0 ; BANK(VBGMap0) ld [rVBK], a hlcoord 0, 0 call Function4d1cb .wait2 ld a, [rLY] cp $8f jr c, .wait2 ei pop af ld [hMapAnims], a pop af ld [hBGMapMode], a ret ; 4d1cb Function4d1cb: ; 4d1cb ld [hSPBuffer], sp ld sp, hl ld a, [hBGMapAddress + 1] ld h, a ld l, 0 ld a, SCREEN_HEIGHT ld [hTilesPerCycle], a ld b, 1 << 1 ; not in v/hblank ld c, rSTAT % $100 .loop rept SCREEN_WIDTH / 2 pop de .loop\@ ld a, [$ff00+c] and b jr nz, .loop\@ ld [hl], e inc l ld [hl], d inc l endr ld de, $20 - SCREEN_WIDTH add hl, de ld a, [hTilesPerCycle] dec a ld [hTilesPerCycle], a jr nz, .loop ld a, [hSPBuffer] ld l, a ld a, [hSPBuffer + 1] ld h, a ld sp, hl ret ; 4d249 Shrink1Pic: ; 4d249 INCBIN "gfx/shrink1.2bpp.lz" Shrink2Pic: ; 4d2d9 INCBIN "gfx/shrink2.2bpp.lz" ; 4d319 Function4d319: ; 4d319 ld a, [MenuSelection2] dec a ld [CurPartyMon], a call LowVolume predef StatsScreenInit ld a, [CurPartyMon] inc a ld [MenuSelection2], a call ClearScreen call WhiteBGMap call MaxVolume callba Function28ef8 callba Function4d354 callba Function16d673 callba Function28eff call Function3200 ret ; 4d354 Function4d354: ; 4d354 call WaitBGMap call Function3200 ret ; 4d35b Function4d35b: ; 4d35b ld h, d ld l, e push bc push hl call Function4d37e pop hl pop bc ld de, AttrMap - TileMap add hl, de rept 2 inc b endr rept 2 inc c endr ld a, $7 .row push bc push hl .col ld [hli], a dec c jr nz, .col pop hl ld de, SCREEN_WIDTH add hl, de pop bc dec b jr nz, .row ret ; 4d37e Function4d37e: ; 4d37e push hl ld a, $76 ld [hli], a inc a call Function4d3ab inc a ld [hl], a pop hl ld de, SCREEN_WIDTH add hl, de .loop push hl ld a, "┌" ld [hli], a ld a, " " call Function4d3ab ld [hl], "─" pop hl ld de, SCREEN_WIDTH add hl, de dec b jr nz, .loop ld a, "┐" ld [hli], a ld a, "│" call Function4d3ab ld [hl], "└" ret ; 4d3ab Function4d3ab: ; 4d3ab ld d, c .loop ld [hli], a dec d jr nz, .loop ret ; 4d3b1 _ResetClock: ; 4d3b1 callba Function8000 ld b, $8 call GetSGBLayout call LoadStandardFont call LoadFontsExtra ld de, MUSIC_MAIN_MENU call PlayMusic ld hl, .text_askreset call PrintText ld hl, .NoYes_MenuDataHeader call CopyMenuDataHeader call InterpretMenu2 ret c ld a, [MenuSelection2] cp $1 ret z call ClockResetPassword jr c, .wrongpassword ld a, BANK(s0_ac60) call GetSRAMBank ld a, $80 ld [s0_ac60], a call CloseSRAM ld hl, .text_okay call PrintText ret .wrongpassword ld hl, .text_wrong call PrintText ret ; 4d3fe .text_okay: ; 0x4d3fe ; Password OK. Select CONTINUE & reset settings. text_jump UnknownText_0x1c55db db "@" ; 0x4d403 .text_wrong: ; 0x4d403 ; Wrong password! text_jump UnknownText_0x1c560b db "@" ; 0x4d408 .text_askreset: ; 0x4d408 ; Reset the clock? text_jump UnknownText_0x1c561c db "@" ; 0x4d40d .NoYes_MenuDataHeader: ; 0x4d40d db $00 ; flags db 07, 14 ; start coords db 11, 19 ; end coords dw .NoYes_MenuData2 db 1 ; default option ; 0x4d415 .NoYes_MenuData2: ; 0x4d415 db $c0 ; flags db 2 ; items db "NO@" db "YES@" ; 0x4d41e ClockResetPassword: ; 4d41e call .CalculatePassword push de ld hl, StringBuffer2 ld bc, 5 xor a call ByteFill ld a, $4 ld [StringBuffer2 + 5], a ld hl, .pleaseenterpasswordtext call PrintText .loop call .updateIDdisplay .loop2 call JoyTextDelay ld a, [hJoyLast] ld b, a and A_BUTTON jr nz, .confirm ld a, b and D_PAD jr z, .loop2 call .dpadinput ld c, $3 call DelayFrames jr .loop .confirm call .ConvertDecIDToBytes pop de ld a, e cp l jr nz, .nope ld a, d cp h jr nz, .nope and a ret .nope scf ret ; 4d463 .pleaseenterpasswordtext: ; 0x4d463 ; Please enter the password. text_jump UnknownText_0x1c562e db "@" ; 0x4d468 .updateIDdisplay: ; 4d468 hlcoord 14, 15 ld de, StringBuffer2 ld c, 5 .loop3 ld a, [de] add "0" ld [hli], a inc de dec c jr nz, .loop3 hlcoord 14, 16 ld bc, 5 ld a, " " call ByteFill hlcoord 14, 16 ld a, [StringBuffer2 + 5] ld e, a ld d, $0 add hl, de ld [hl], $61 ret ; 4d490 .dpadinput: ; 4d490 ld a, b and D_LEFT jr nz, .left ld a, b and D_RIGHT jr nz, .right ld a, b and D_UP jr nz, .up ld a, b and D_DOWN jr nz, .down ret .left ld a, [StringBuffer2 + 5] and a ret z dec a ld [StringBuffer2 + 5], a ret .right ld a, [StringBuffer2 + 5] cp $4 ret z inc a ld [StringBuffer2 + 5], a ret .up call .getcurrentdigit ld a, [hl] cp 9 jr z, .wraparound_up inc a ld [hl], a ret .wraparound_up ld [hl], $0 ret .down call .getcurrentdigit ld a, [hl] and a jr z, .wraparound_down dec a ld [hl], a ret .wraparound_down ld [hl], 9 ret ; 4d4d5 .getcurrentdigit: ; 4d4d5 ld a, [StringBuffer2 + 5] ld e, a ld d, $0 ld hl, StringBuffer2 add hl, de ret ; 4d4e0 .ConvertDecIDToBytes: ; 4d4e0 ld hl, 0 ld de, StringBuffer2 + 4 ld bc, 1 call .ConvertToBytes ld bc, 10 call .ConvertToBytes ld bc, 100 call .ConvertToBytes ld bc, 1000 call .ConvertToBytes ld bc, 10000 .ConvertToBytes: ; 4d501 ld a, [de] dec de push hl ld hl, 0 call AddNTimes ld c, l ld b, h pop hl add hl, bc ret ; 4d50f .CalculatePassword: ; 4d50f ld a, BANK(sPlayerData) call GetSRAMBank ld de, 0 ld hl, sPlayerData + (PlayerID - wPlayerData) ld c, $2 call .ComponentFromNumber ld hl, sPlayerData + (PlayerName - wPlayerData) ld c, $5 call .ComponentFromString ld hl, sPlayerData + (Money - wPlayerData) ld c, $3 call .ComponentFromNumber call CloseSRAM ret ; 4d533 .ComponentFromNumber: ; 4d533 ld a, [hli] add e ld e, a ld a, $0 adc d ld d, a dec c jr nz, .ComponentFromNumber ret ; 4d53e .ComponentFromString: ; 4d53e ld a, [hli] cp "@" ret z add e ld e, a ld a, $0 adc d ld d, a dec c jr nz, .ComponentFromString ret ; 4d54c Function4d54c: ; 4d54c callba Function8000 ld b, $8 call GetSGBLayout call LoadStandardFont call LoadFontsExtra ld de, MUSIC_MAIN_MENU call PlayMusic ld hl, UnknownText_0x4d580 call PrintText ld hl, MenuDataHeader_0x4d585 call CopyMenuDataHeader call InterpretMenu2 ret c ld a, [MenuSelection2] cp $1 ret z callba EmptyAllSRAMBanks ret ; 4d580 UnknownText_0x4d580: ; 0x4d580 ; Clear all save data? text_jump UnknownText_0x1c564a db "@" ; 0x4d585 MenuDataHeader_0x4d585: ; 0x4d585 db $00 ; flags db 07, 14 ; start coords db 11, 19 ; end coords dw MenuData2_0x4d58d db 1 ; default option ; 0x4d58d MenuData2_0x4d58d: ; 0x4d58d db $c0 ; flags db 2 ; items db "NO@" db "YES@" ; 0x4d596 Tilesets:: INCLUDE "tilesets/tileset_headers.asm" FlagPredef: ; 4d7c1 ; Perform action b on flag c in flag array hl. ; If checking a flag, check flag array d:hl unless d is 0. ; For longer flag arrays, see FlagAction. push hl push bc ; Divide by 8 to get the byte we want. push bc srl c srl c srl c ld b, 0 add hl, bc pop bc ; Which bit we want from the byte ld a, c and 7 ld c, a ; Shift left until we can mask the bit ld a, 1 jr z, .shifted .shift add a dec c jr nz, .shift .shifted ld c, a ; What are we doing to this flag? dec b jr z, .set ; 1 dec b jr z, .check ; 2 .reset ld a, c cpl and [hl] ld [hl], a jr .done .set ld a, [hl] or c ld [hl], a jr .done .check ld a, d cp 0 jr nz, .farcheck ld a, [hl] and c jr .done .farcheck call GetFarByte and c .done pop bc pop hl ld c, a ret ; 4d7fd Function4d7fd: ; 4d7fd ld a, [wc702] ld hl, wc72f ld de, VTiles2 push de push af predef GetUnownLetter pop af ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData pop de predef Function5108b ret ; 4d81e Function4d81e: ; 4d81e ld a, [wc702] call IsAPokemon ret c callba Function29549 ld a, [wc702] ld [CurPartySpecies], a ld a, [wc72f] ld [TempMonDVs], a ld a, [wc730] ld [TempMonDVs + 1], a ld b, $1a call GetSGBLayout ld a, $e4 call DmgToCgbBGPals callba Function294c0 ld a, [wc702] ld [CurPartySpecies], a hlcoord 7, 2 ld d, $0 ld e, $3 predef Functiond008e ret ; 4d860 CheckPokerus: ; 4d860 ; Return carry if a monster in your party has Pokerus ; Get number of monsters to iterate over ld a, [PartyCount] and a jr z, .NoPokerus ld b, a ; Check each monster in the party for Pokerus ld hl, PartyMon1PokerusStatus ld de, PARTYMON_STRUCT_LENGTH .Check ld a, [hl] and $0f ; only the bottom nybble is used jr nz, .HasPokerus ; Next PartyMon add hl, de dec b jr nz, .Check .NoPokerus and a ret .HasPokerus scf ret ; 4d87a Special_CheckForLuckyNumberWinners: ; 4d87a xor a ld [ScriptVar], a ld [wFoundMatchingIDInParty], a ld a, [PartyCount] and a ret z ld d, a ld hl, PartyMon1ID ld bc, PartySpecies .PartyLoop ld a, [bc] inc bc cp EGG call nz, .CompareLuckyNumberToMonID push bc ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc dec d jr nz, .PartyLoop ld a, BANK(sBox) call GetSRAMBank ld a, [sBoxCount] and a jr z, .SkipOpenBox ld d, a ld hl, sBoxMon1ID ld bc, sBoxSpecies .OpenBoxLoop ld a, [bc] inc bc cp EGG jr z, .SkipOpenBoxMon call .CompareLuckyNumberToMonID jr nc, .SkipOpenBoxMon ld a, 1 ld [wFoundMatchingIDInParty], a .SkipOpenBoxMon push bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc dec d jr nz, .OpenBoxLoop .SkipOpenBox call CloseSRAM ld c, $0 .BoxesLoop ld a, [wCurBox] and $f cp c jr z, .SkipBox ld hl, .BoxBankAddresses ld b, 0 rept 3 add hl, bc endr ld a, [hli] call GetSRAMBank ld a, [hli] ld h, [hl] ld l, a ; hl now contains the address of the loaded box in SRAM ld a, [hl] and a jr z, .SkipBox ; no mons in this box push bc ld b, h ld c, l inc bc ld de, sBoxMon1ID - sBox add hl, de ld d, a .BoxNLoop ld a, [bc] inc bc cp EGG jr z, .SkipBoxMon call .CompareLuckyNumberToMonID ; sets ScriptVar and CurPartySpecies appropriately jr nc, .SkipBoxMon ld a, 1 ld [wFoundMatchingIDInParty], a .SkipBoxMon push bc ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc dec d jr nz, .BoxNLoop pop bc .SkipBox inc c ld a, c cp NUM_BOXES jr c, .BoxesLoop call CloseSRAM ld a, [ScriptVar] and a ret z ; found nothing callba MobileFn_1060cd ld a, [wFoundMatchingIDInParty] and a push af ld a, [CurPartySpecies] ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, .FoundPartymonText pop af jr z, .print ld hl, .FoundBoxmonText .print jp PrintText ; 4d939 .CompareLuckyNumberToMonID: ; 4d939 push bc push de push hl ld d, h ld e, l ld hl, Buffer1 lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum ld hl, LuckyNumberDigit1Buffer ld de, wLuckyIDNumber lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum ld b, 5 ld c, 0 ld hl, LuckyNumberDigit5Buffer ld de, Buffer5 .loop ld a, [de] cp [hl] jr nz, .done dec de dec hl inc c dec b jr nz, .loop .done pop hl push hl ld de, -6 add hl, de ld a, [hl] pop hl pop de push af ld a, c ld b, 1 cp 5 jr z, .okay ld b, 2 cp 3 jr nc, .okay ld b, 3 cp 2 jr nz, .nomatch .okay inc b ld a, [ScriptVar] and a jr z, .bettermatch cp b jr c, .nomatch .bettermatch dec b ld a, b ld [ScriptVar], a pop bc ld a, b ld [CurPartySpecies], a pop bc scf ret .nomatch pop bc pop bc and a ret ; 4d99f .BoxBankAddresses: ; 4d99f dba sBox1 dba sBox2 dba sBox3 dba sBox4 dba sBox5 dba sBox6 dba sBox7 dba sBox8 dba sBox9 dba sBox10 dba sBox11 dba sBox12 dba sBox13 dba sBox14 ; 4d9c9 .FoundPartymonText: ; 0x4d9c9 ; Congratulations! We have a match with the ID number of @ in your party. text_jump UnknownText_0x1c1261 db "@" ; 0x4d9ce .FoundBoxmonText: ; 0x4d9ce ; Congratulations! We have a match with the ID number of @ in your PC BOX. text_jump UnknownText_0x1c12ae db "@" ; 0x4d9d3 Special_PrintTodaysLuckyNumber: ; 4d9d3 ld hl, StringBuffer3 ld de, wLuckyIDNumber lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum ld a, "@" ld [StringBuffer3 + 5], a ret ; 4d9e5 CheckPartyFullAfterContest: ; 4d9e5 ld a, [wContestMon] and a jp z, .DidntCatchAnything ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData ld hl, PartyCount ld a, [hl] cp 6 jp nc, .TryAddToBox inc a ld [hl], a ld c, a ld b, $0 add hl, bc ld a, [wContestMon] ld [hli], a ld [CurSpecies], a ld a, $ff ld [hl], a ld hl, PartyMon1Species ld a, [PartyCount] dec a ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ld hl, wContestMon ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes ld a, [PartyCount] dec a ld hl, PartyMonOT call SkipNames ld d, h ld e, l ld hl, PlayerName call CopyBytes ld a, [CurPartySpecies] ld [wd265], a call GetPokemonName ld hl, StringBuffer1 ld de, wd050 ld bc, PKMN_NAME_LENGTH call CopyBytes call GiveANickname_YesNo jr c, .Party_SkipNickname ld a, [PartyCount] dec a ld [CurPartyMon], a xor a ld [MonType], a ld de, wd050 callab InitNickname .Party_SkipNickname ld a, [PartyCount] dec a ld hl, PartyMonNicknames call SkipNames ld d, h ld e, l ld hl, wd050 call CopyBytes ld a, [PartyCount] dec a ld hl, PartyMon1Level call GetPartyLocation ld a, [hl] ld [CurPartyLevel], a call Function4db49 ld a, [PartyCount] dec a ld hl, PartyMon1CaughtLocation call GetPartyLocation ld a, [hl] and $80 ld b, $13 or b ld [hl], a xor a ld [wContestMon], a and a ld [ScriptVar], a ret ; 4daa3 .TryAddToBox: ; 4daa3 ld a, BANK(sBoxCount) call GetSRAMBank ld hl, sBoxCount ld a, [hl] cp MONS_PER_BOX call CloseSRAM jr nc, .BoxFull xor a ld [CurPartyMon], a ld hl, wContestMon ld de, wd018 ld bc, BOXMON_STRUCT_LENGTH call CopyBytes ld hl, PlayerName ld de, wd00d ld bc, NAME_LENGTH call CopyBytes callab Function51322 ld a, [CurPartySpecies] ld [wd265], a call GetPokemonName call GiveANickname_YesNo ld hl, StringBuffer1 jr c, .Box_SkipNickname ld a, BOXMON ld [MonType], a ld de, wd050 callab InitNickname ld hl, wd050 .Box_SkipNickname ld a, BANK(sBoxMonNicknames) call GetSRAMBank ld de, sBoxMonNicknames ld bc, PKMN_NAME_LENGTH call CopyBytes call CloseSRAM .BoxFull ld a, BANK(sBoxMon1Level) call GetSRAMBank ld a, [sBoxMon1Level] ld [CurPartyLevel], a call CloseSRAM call Function4db83 ld a, BANK(sBoxMon1CaughtLocation) call GetSRAMBank ld hl, sBoxMon1CaughtLocation ld a, [hl] and $80 ld b, $13 or b ld [hl], a call CloseSRAM xor a ld [wContestMon], a ld a, $1 ld [ScriptVar], a ret ; 4db35 .DidntCatchAnything: ; 4db35 ld a, $2 ld [ScriptVar], a ret ; 4db3b GiveANickname_YesNo: ; 4db3b ld hl, TextJump_GiveANickname call PrintText jp YesNoBox ; 4db44 TextJump_GiveANickname: ; 0x4db44 ; Give a nickname to the @ you received? text_jump UnknownText_0x1c12fc db "@" ; 0x4db49 Function4db49: ; 4db49 ld a, [PartyCount] dec a ld hl, PartyMon1CaughtLevel call GetPartyLocation Function4db53: ; 4db53 ld a, [TimeOfDay] inc a rrca rrca ld b, a ld a, [CurPartyLevel] or b ld [hli], a ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a cp MAP_POKECENTER_2F jr nz, .NotPokeCenter2F ld a, b cp GROUP_POKECENTER_2F jr nz, .NotPokeCenter2F ld a, [BackupMapGroup] ld b, a ld a, [BackupMapNumber] ld c, a .NotPokeCenter2F call GetWorldMapLocation ld b, a ld a, [PlayerGender] rrca or b ld [hl], a ret ; 4db83 Function4db83: ; 4db83 ld a, BANK(sBoxMon1CaughtLevel) call GetSRAMBank ld hl, sBoxMon1CaughtLevel call Function4db53 call CloseSRAM ret ; 4db92 SetBoxMonCaughtData: ; 4db92 push bc ld a, BANK(sBoxMon1CaughtLevel) call GetSRAMBank ld hl, sBoxMon1CaughtLevel pop bc call SetPkmnCaughtData call CloseSRAM ret ; 4dba3 SetPartymonCaughtData: ; 4dba3 ld a, [PartyCount] dec a ld hl, PartyMon1CaughtLevel push bc call GetPartyLocation pop bc SetPkmnCaughtData: ; 4dbaf xor a ld [hli], a ld a, $7e rrc b or b ld [hl], a ret ; 4dbb8 Function4dbb8: ; 4dbb8 (13:5bb8) ld a, [CurPartyMon] ld hl, PartyMon1CaughtLevel call GetPartyLocation ld a, [CurPartyLevel] push af ld a, $1 ld [CurPartyLevel], a call Function4db53 pop af ld [CurPartyLevel], a ret _FindGreaterThanThatLevel: ; 4dbd2 ld hl, PartyMon1Level call FindGreaterThanThatLevel ret ; 4dbd9 _FindAtLeastThatHappy: ; 4dbd9 ld hl, PartyMon1Happiness call FindAtLeastThatHappy ret ; 4dbe0 _FindThatSpecies: ; 4dbe0 ld hl, PartyMon1Species jp FindThatSpecies ; 4dbe6 _FindThatSpeciesYourTrainerID: ; 4dbe6 ld hl, PartyMon1Species call FindThatSpecies ret z ld a, c ld hl, PartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [PlayerID] cp [hl] jr nz, .nope inc hl ld a, [PlayerID + 1] cp [hl] jr nz, .nope ld a, $1 and a ret .nope xor a ret ; 4dc0a FindAtLeastThatHappy: ; 4dc0a ; Sets the bits for the Pokemon that have a happiness greater than or equal to b. ; The lowest bits are used. Sets z if no Pokemon in your party is at least that happy. ld c, $0 ld a, [PartyCount] ld d, a .loop ld a, d dec a push hl push bc ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes pop bc ld a, b cp [hl] pop hl jr z, .greater_equal jr nc, .lower .greater_equal ld a, c or $1 ld c, a .lower sla c dec d jr nz, .loop call RetroactivelyIgnoreEggs ld a, c and a ret ; 4dc31 FindGreaterThanThatLevel: ; 4dc31 ld c, $0 ld a, [PartyCount] ld d, a .loop ld a, d dec a push hl push bc ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes pop bc ld a, b cp [hl] pop hl jr c, .greater ld a, c or $1 ld c, a .greater sla c dec d jr nz, .loop call RetroactivelyIgnoreEggs ld a, c and a ret ; 4dc56 FindThatSpecies: ; 4dc56 ; Find species b in your party. ; If you have no Pokemon, returns c = -1 and z. ; If that species is in your party, returns its location in c, and nz. ; Otherwise, returns z. ld c, -1 ld hl, PartySpecies .loop ld a, [hli] cp -1 ret z inc c cp b jr nz, .loop ld a, $1 and a ret ; 4dc67 RetroactivelyIgnoreEggs: ; 4dc67 ld e, -2 ld hl, PartySpecies .loop ld a, [hli] cp -1 ret z cp EGG jr nz, .skip_notegg ld a, c and e ld c, a .skip_notegg rlc e jr .loop ; 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 WhiteBGMap call ClearTileMap call UpdateSprites callba Functionfb53e pop hl call _hl_ call WhiteBGMap 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 WhiteBGMap 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] ; $ff00+$a7 .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 ; $ff00+$d4 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 Functionc699 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 ; $ff00+$d4 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] ; $ff00+$b4 (aliases: hMultiplicand) 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 Function3786 ret .asm_4e266 xor a ld [wc2c6], a hlcoord 0, 0 call Function378b 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 Functiond00a3 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 Function4e53f 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] ; $ff00+$4f push af ld a, $1 ld [rVBK], a ; $ff00+$4f ld de, GFX_f9204 lb bc, BANK(GFX_f9204), 1 ld hl, VTiles2 tile $7f call Get2bpp pop af ld [rVBK], a ; $ff00+$4f 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 Function3786 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 Functiond00a3 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 Function4e53f: ; 4e53f ld hl, MON_HP add hl, bc ld a, [hli] or [hl] jr z, .asm_4e552 ld hl, MON_STATUS add hl, bc ld a, [hl] and (1 << FRZ) | SLP jr nz, .asm_4e552 and a ret .asm_4e552 scf ret ; 4e554 Function4e554:: ; 4e554 ld a, [BattleType] dec a ld c, a ld hl, Jumptable_4e564 ld b, 0 rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 4e564 Jumptable_4e564: ; 4e564 (13:6564) dw Function4e56a dw Function4e56a dw Function4e56a Function4e56a: ; 4e56a (13:656a) ld hl, PlayerName ld de, MomsName ld bc, NAME_LENGTH call CopyBytes ld hl, DudeString ld de, PlayerName ld bc, NAME_LENGTH call CopyBytes call Function4e5b7 xor a ld [hJoyDown], a ld [hJoyPressed], a ld a, [Options] push af and $f8 add $3 ld [Options], a ld hl, AutoInput_4e5df ld a, BANK(AutoInput_4e5df) call StartAutoInput callab StartBattle call StopAutoInput pop af ld [Options], a ld hl, MomsName ld de, PlayerName ld bc, NAME_LENGTH call CopyBytes ret Function4e5b7: ; 4e5b7 (13:65b7) ld hl, OTPartyMon1 ld [hl], $1 inc hl ld [hl], $12 inc hl ld [hl], $1 inc hl ld [hl], $ff ld hl, OTPartyMon1Exp + 2 ld [hl], $0 inc hl ld [hl], $ff ld hl, OTPartyMon1CaughtGender ld a, $1 ld [hli], a ld a, $5 rept 2 ld [hli], a endr ld [hl], $ff ret ; 4e5da (13:65da) DudeString: ; 4e5da db "DUDE@" ; 4e5df AutoInput_4e5df: ; 4e5df db NO_INPUT, $ff ; end ; 4e5e1 EvolutionAnimation: ; 4e5e1 push hl push de push bc ld a, [CurSpecies] push af ld a, [rOBP0] push af ld a, [BaseDexNo] push af call _EvolutionAnimation pop af ld [BaseDexNo], a pop af ld [rOBP0], a pop af ld [CurSpecies], a pop bc pop de pop hl ld a, [wd1ed] and a ret z scf ret ; 4e607 _EvolutionAnimation: ; 4e607 ld a, $e4 ld [rOBP0], a ld de, MUSIC_NONE call PlayMusic callba Function8cf53 ld de, EvolutionGFX ld hl, VTiles0 lb bc, BANK(EvolutionGFX), 8 call Request2bpp xor a ld [Danger], a call WaitBGMap xor a ld [hBGMapMode], a ld a, [Buffer1] ld [PlayerHPPal], a ld c, $0 call Function4e703 ld a, [Buffer1] ld [CurPartySpecies], a ld [CurSpecies], a call Function4e708 ld de, VTiles2 ld hl, VTiles2 tile $31 ld bc, $31 call Request2bpp ld a, $31 ld [wd1ec], a call Function4e755 ld a, [Buffer2] ld [CurPartySpecies], a ld [CurSpecies], a call Function4e711 ld a, [Buffer1] ld [CurPartySpecies], a ld [CurSpecies], a ld a, $1 ld [hBGMapMode], a call Function4e794 jr c, .asm_4e67c ld a, [Buffer1] call PlayCry .asm_4e67c ld de, MUSIC_EVOLUTION call PlayMusic ld c, 80 call DelayFrames ld c, $1 call Function4e703 call Function4e726 jr c, .asm_4e6df ld a, $cf ld [wd1ec], a call Function4e755 xor a ld [wd1ed], a ld a, [Buffer2] ld [PlayerHPPal], a ld c, $0 call Function4e703 call Function4e7a6 callba Function8cf53 call Function4e794 jr c, .asm_4e6de ld a, [wc2c6] push af ld a, $1 ld [wc2c6], a ld a, [CurPartySpecies] push af ld a, [PlayerHPPal] ld [CurPartySpecies], a hlcoord 7, 2 ld d, $0 ld e, $4 predef Functiond008e pop af ld [CurPartySpecies], a pop af ld [wc2c6], a ret .asm_4e6de ret .asm_4e6df ld a, $1 ld [wd1ed], a ld a, [Buffer1] ld [PlayerHPPal], a ld c, $0 call Function4e703 call Function4e7a6 callba Function8cf53 call Function4e794 ret c ld a, [PlayerHPPal] call PlayCry ret ; 4e703 Function4e703: ; 4e703 ld b, $b jp GetSGBLayout ; 4e708 Function4e708: ; 4e708 call GetBaseData hlcoord 7, 2 jp Function3786 ; 4e711 Function4e711: ; 4e711 call GetBaseData ld a, $1 ld [wc2c6], a ld de, VTiles2 predef Function5108b xor a ld [wc2c6], a ret ; 4e726 Function4e726: ; 4e726 call ClearJoypad lb bc, 1, 14 .asm_4e72c push bc call Function4e779 pop bc jr c, .asm_4e73f push bc call Function4e741 pop bc inc b rept 2 dec c endr jr nz, .asm_4e72c and a ret .asm_4e73f scf ret ; 4e741 Function4e741: ; 4e741 .asm_4e741 ld a, $cf ld [wd1ec], a call Function4e755 ld a, $31 ld [wd1ec], a call Function4e755 dec b jr nz, .asm_4e741 ret ; 4e755 Function4e755: ; 4e755 push bc xor a ld [hBGMapMode], a hlcoord 7, 2 lb bc, 7, 7 ld de, $d .asm_4e762 push bc .asm_4e763 ld a, [wd1ec] add [hl] ld [hli], a dec c jr nz, .asm_4e763 pop bc add hl, de dec b jr nz, .asm_4e762 ld a, $1 ld [hBGMapMode], a call WaitBGMap pop bc ret ; 4e779 Function4e779: ; 4e779 .asm_4e779 call DelayFrame push bc call JoyTextDelay ld a, [hJoyDown] pop bc and B_BUTTON jr nz, .asm_4e78c .asm_4e787 dec c jr nz, .asm_4e779 and a ret .asm_4e78c ld a, [wd1e9] and a jr nz, .asm_4e787 scf ret ; 4e794 Function4e794: ; 4e794 ld a, [CurPartyMon] ld hl, PartyMon1Species call GetPartyLocation ld b, h ld c, l callba Function4e53f ret ; 4e7a6 Function4e7a6: ; 4e7a6 ld a, [wd1ed] and a ret nz ld de, SFX_EVOLVED call PlaySFX ld hl, wJumptableIndex ld a, [hl] push af ld [hl], $0 .asm_4e7b8 call Function4e7cf jr nc, .asm_4e7c2 call Function4e80c jr .asm_4e7b8 .asm_4e7c2 ld c, $20 .asm_4e7c4 call Function4e80c dec c jr nz, .asm_4e7c4 pop af ld [wJumptableIndex], a ret ; 4e7cf Function4e7cf: ; 4e7cf ld hl, wJumptableIndex ld a, [hl] cp $20 ret nc ld d, a inc [hl] and $1 jr nz, .asm_4e7e6 ld e, $0 call Function4e7e8 ld e, $10 call Function4e7e8 .asm_4e7e6 scf ret ; 4e7e8 Function4e7e8: ; 4e7e8 push de ld de, $4858 ld a, $13 call Function3b2a ld hl, $b add hl, bc ld a, [wJumptableIndex] and $e sla a pop de add e ld [hl], a ld hl, $3 add hl, bc ld [hl], $0 ld hl, $c add hl, bc ld [hl], $10 ret ; 4e80c Function4e80c: ; 4e80c push bc callab Function8cf69 ld a, [$ff9b] and $e srl a rept 2 inc a endr and $7 ld b, a ld hl, Sprites + 3 ld c, $28 .asm_4e823 ld a, [hl] or b ld [hli], a rept 3 inc hl endr dec c jr nz, .asm_4e823 pop bc call DelayFrame ret ; 4e831 EvolutionGFX: INCBIN "gfx/evo/bubble_large.2bpp" INCBIN "gfx/evo/bubble.2bpp" Function4e881: ; 4e881 call WhiteBGMap call ClearTileMap call ClearSprites call DisableLCD call LoadStandardFont call LoadFontsBattleExtra ld hl, VBGMap0 ld bc, VBGMap1 - VBGMap0 ld a, " " call ByteFill hlcoord 0, 0, AttrMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a call ByteFill xor a ld [hSCY], a ld [hSCX], a call EnableLCD ld hl, UnknownText_0x4e8bd call PrintText call Function3200 call SetPalettes ret ; 4e8bd UnknownText_0x4e8bd: ; 0x4e8bd ; SAVING RECORD… DON'T TURN OFF! text_jump UnknownText_0x1bd39e db "@" ; 0x4e8c2 Function4e8c2: ; 4e8c2 call WhiteBGMap call ClearTileMap call ClearSprites call DisableLCD call LoadStandardFont call LoadFontsBattleExtra ld hl, VBGMap0 ld bc, VBGMap1 - VBGMap0 ld a, " " call ByteFill hlcoord 0, 0, AttrMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a call ByteFill ld hl, wd000 ld c, $40 .asm_4e8ee ld a, -1 ld [hli], a ld a, " " ld [hli], a dec c jr nz, .asm_4e8ee xor a ld [hSCY], a ld [hSCX], a call EnableLCD call Function3200 call SetPalettes ret ; 4e906 Function4e906: ; 4e906 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a ld hl, w6_d000 ld bc, w6_d400 - w6_d000 ld a, " " call ByteFill ld hl, VBGMap0 ld de, w6_d000 ld b, $0 ld c, $40 call Request2bpp pop af ld [rSVBK], a ret ; 4e929 Function4e929: ; 4e929 ld h, b ld l, c call Function4e930 ld c, a ret ; 4e930 Function4e930: ; 4e930 ld a, [hli] xor [hl] ld c, a jr z, .asm_4e941 srl c srl c .asm_4e939 srl c ld a, c cp MaleTrainersEnd - MaleTrainers - 1 jr nc, .asm_4e939 inc c .asm_4e941 ld a, [de] cp $1 ld hl, MaleTrainers jr nz, .asm_4e958 ld hl, FemaleTrainers ld a, c and a jr z, .asm_4e958 .asm_4e950 srl c ld a, c cp FemaleTrainersEnd - FemaleTrainers - 1 jr nc, .asm_4e950 inc c .asm_4e958 ld b, $0 add hl, bc ld a, [hl] ret ; 4e95d MaleTrainers: ; 4e95d db BURGLAR db YOUNGSTER db SCHOOLBOY db BIRD_KEEPER db POKEMANIAC db GENTLEMAN db BUG_CATCHER db FISHER db SWIMMERM db SAILOR db SUPER_NERD db GUITARIST db HIKER db FIREBREATHER db BLACKBELT_T db PSYCHIC_T db CAMPER db COOLTRAINERM db BOARDER db JUGGLER db POKEFANM db OFFICER db SAGE db BIKER db SCIENTIST MaleTrainersEnd: ; 4e976 FemaleTrainers: ; 4e976 db MEDIUM db LASS db BEAUTY db SKIER db TEACHER db SWIMMERF db PICNICKER db KIMONO_GIRL db POKEFANF db COOLTRAINERF FemaleTrainersEnd: ; 4e980 Function4e980: ; 4e980 ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a call Function4e998 ld a, rSCX - $ff00 ld [hLCDStatCustom], a call Function4e9ab xor a ld [hLCDStatCustom], a pop af ld [rSVBK], a ret ; 4e998 Function4e998: ; 4e998 call Function4e9e5 ld a, $90 ld [hSCX], a ld a, $e4 call DmgToCgbBGPals ld de, $e4e4 call DmgToCgbObjPals ret ; 4e9ab Function4e9ab: ; 4e9ab ld d, $90 ld e, $72 ld a, $48 inc a .asm_4e9b2 push af .asm_4e9b3 ld a, [rLY] cp $60 jr c, .asm_4e9b3 ld a, d ld [hSCX], a call Function4e9f1 rept 2 inc e endr rept 2 dec d endr pop af push af cp $1 jr z, .asm_4e9ce push de call Function4e9d6 pop de .asm_4e9ce call DelayFrame pop af dec a jr nz, .asm_4e9b2 ret ; 4e9d6 Function4e9d6: ; 4e9d6 ld hl, Sprites + 1 ld c, $12 ld de, $4 .asm_4e9de rept 2 dec [hl] endr add hl, de dec c jr nz, .asm_4e9de ret ; 4e9e5 Function4e9e5: ; 4e9e5 ld hl, LYOverrides ld a, $90 ld bc, SCREEN_HEIGHT_PX call ByteFill ret ; 4e9f1 Function4e9f1: ; 4e9f1 ld hl, LYOverrides ld a, d ld c, $3e .asm_4e9f7 ld [hli], a dec c jr nz, .asm_4e9f7 ld a, e ld c, $22 .asm_4e9fe ld [hli], a dec c jr nz, .asm_4e9fe xor a ld c, $30 .asm_4ea05 ld [hli], a dec c jr nz, .asm_4ea05 ret ; 4ea0a Function4ea0a: ; 4ea0a ld a, c push af call SpeechTextBox call MobileTextBorder pop af dec a ld bc, $c ld hl, wdc1a call AddNTimes ld de, wcd53 ld bc, $c ld a, $5 call FarCopyWRAM ld a, [rSVBK] push af ld a, $1 ld [rSVBK], a ld bc, wcd53 decoord 1, 14 callba Function11c0c6 pop af ld [rSVBK], a ld c, $b4 call DelayFrames ret ; 4ea44 CheckBattleScene: ; 4ea44 ; Return carry if battle scene is turned off. ld a, 0 ld hl, wLinkMode call GetFarWRAMByte cp LINK_MOBILE jr z, .mobile ld a, [Options] bit BATTLE_SCENE, a jr nz, .off and a ret .mobile ld a, [wcd2f] and a jr nz, .asm_4ea72 ld a, $4 call GetSRAMBank ld a, [$a60c] ld c, a call CloseSRAM ld a, c bit 0, c jr z, .off and a ret .asm_4ea72 ld a, $5 ld hl, wdc00 call GetFarWRAMByte bit 0, a jr z, .off and a ret .off scf ret ; 4ea82 INCLUDE "misc/gbc_only.asm" INCLUDE "event/poke_seer.asm" SECTION "bank14", ROMX, BANK[$14] SelectMonFromParty: ; 50000 call DisableSpriteUpdates xor a ld [PartyMenuActionText], a call WhiteBGMap call Function5003f call WaitBGMap call SetPalettes call DelayFrame call PartyMenuSelect call Function2b74 ret ; 5001d Function5001d: ; 5001d ld a, b ld [PartyMenuActionText], a call DisableSpriteUpdates call WhiteBGMap call Function5003f call WaitBGMap ld b, $a call GetSGBLayout call SetPalettes call DelayFrame call PartyMenuSelect call Function2b74 ret ; 5003f Function5003f: ; 5003f call Function5004f call Function50405 call Function503e0 call WritePartyMenuTilemap call PrintPartyMenuText ret ; 5004f Function5004f: ; 5004f call LoadFontsBattleExtra callab Function8ad1 ; engine/color.asm callab InefficientlyClear121BytesAtwc300 ret ; 5005f WritePartyMenuTilemap: ; 0x5005f ld hl, Options ld a, [hl] push af set 4, [hl] ; Disable text delay xor a ld [hBGMapMode], a hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, " " call ByteFill ; blank the tilemap call Function50396 ; This reads from a pointer table??? .asm_50077 ld a, [hli] cp $ff jr z, .asm_50084 ; 0x5007a $8 push hl ld hl, Jumptable_50089 rst JumpTable pop hl jr .asm_50077 ; 0x50082 $f3 .asm_50084 pop af ld [Options], a ret ; 0x50089 Jumptable_50089: ; 50089 dw Function5009b dw Function500cf dw Function50138 dw Function50176 dw Function501b2 dw Function501e0 dw Function5022f dw Function502b1 dw Function50307 ; 5009b Function5009b: ; 5009b hlcoord 3, 1 ld a, [PartyCount] and a jr z, .asm_500bf ld c, a ld b, $0 .asm_500a7 push bc push hl push hl ld hl, PartyMonNicknames ld a, b call GetNick pop hl call PlaceString pop hl ld de, $28 add hl, de pop bc inc b dec c jr nz, .asm_500a7 .asm_500bf rept 2 dec hl endr ld de, String_500c8 call PlaceString ret ; 500c8 String_500c8: ; 500c8 db "CANCEL@" ; 500cf Function500cf: ; 500cf xor a ld [wcda9], a ld a, [PartyCount] and a ret z ld c, a ld b, $0 hlcoord 11, 2 .asm_500de push bc push hl call Function50389 jr z, .asm_50103 push hl call Function50117 pop hl ld d, $6 ld b, $0 call DrawHPBar ld hl, wcd9b ld a, [wcda9] ld c, a ld b, $0 add hl, bc call SetHPPal ld b, $fc call GetSGBLayout .asm_50103 ld hl, wcda9 inc [hl] pop hl ld de, $28 add hl, de pop bc inc b dec c jr nz, .asm_500de ld b, $a call GetSGBLayout ret ; 50117 Function50117: ; 50117 ld a, b ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1HP call AddNTimes ld a, [hli] or [hl] jr nz, .asm_50129 xor a ld e, a ld c, a ret .asm_50129 dec hl ld a, [hli] ld b, a ld a, [hli] ld c, a ld a, [hli] ld d, a ld a, [hli] ld e, a predef Functionc699 ret ; 50138 Function50138: ; 50138 ld a, [PartyCount] and a ret z ld c, a ld b, $0 hlcoord 13, 1 .asm_50143 push bc push hl call Function50389 jr z, .asm_5016b push hl ld a, b ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1HP call AddNTimes ld e, l ld d, h pop hl push de lb bc, 2, 3 call PrintNum pop de ld a, $f3 ld [hli], a rept 2 inc de endr lb bc, 2, 3 call PrintNum .asm_5016b pop hl ld de, $28 add hl, de pop bc inc b dec c jr nz, .asm_50143 ret ; 50176 Function50176: ; 50176 ld a, [PartyCount] and a ret z ld c, a ld b, 0 hlcoord 8, 2 .asm_50181 push bc push hl call Function50389 jr z, .asm_501a7 push hl ld a, b ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1Level call AddNTimes ld e, l ld d, h pop hl ld a, [de] cp 100 ; This is distinct from MAX_LEVEL. jr nc, .asm_501a1 ld a, "<LV>" ld [hli], a lb bc, PRINTNUM_RIGHTALIGN | 1, 2 ; Missing a jr in here .asm_501a1 lb bc, PRINTNUM_RIGHTALIGN | 1, 3 call PrintNum .asm_501a7 pop hl ld de, SCREEN_WIDTH * 2 add hl, de pop bc inc b dec c jr nz, .asm_50181 ret ; 501b2 Function501b2: ; 501b2 ld a, [PartyCount] and a ret z ld c, a ld b, 0 hlcoord 5, 2 .asm_501bd push bc push hl call Function50389 jr z, .asm_501d5 push hl ld a, b ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1Status call AddNTimes ld e, l ld d, h pop hl call PlaceStatusString .asm_501d5 pop hl ld de, SCREEN_WIDTH * 2 add hl, de pop bc inc b dec c jr nz, .asm_501bd ret ; 501e0 Function501e0: ; 501e0 ld a, [PartyCount] and a ret z ld c, a ld b, 0 hlcoord 12, 2 .asm_501eb push bc push hl call Function50389 jr z, .asm_5020a push hl ld hl, PartySpecies ld e, b ld d, 0 add hl, de ld a, [hl] ld [CurPartySpecies], a predef CanLearnTMHMMove pop hl call Function50215 call PlaceString .asm_5020a pop hl ld de, SCREEN_WIDTH * 2 add hl, de pop bc inc b dec c jr nz, .asm_501eb ret ; 50215 Function50215: ; 50215 ld a, c and a jr nz, .asm_5021d ld de, String_50226 ret .asm_5021d ld de, String_50221 ret ; 50221 String_50221: ; 50221 db "ABLE@" ; 50226 String_50226: ; 50226 db "NOT ABLE@" ; 5022f Function5022f: ; 5022f ld a, [PartyCount] and a ret z ld c, a ld b, 0 hlcoord 12, 2 .asm_5023a push bc push hl call Function50389 jr z, .asm_5025d push hl ld a, b ld bc, PARTYMON_STRUCT_LENGTH ld hl, PartyMon1Species call AddNTimes ld a, [hl] dec a ld e, a ld d, 0 ld hl, EvosAttacksPointers rept 2 add hl, de endr call Function50268 pop hl call PlaceString .asm_5025d pop hl ld de, $28 add hl, de pop bc inc b dec c jr nz, .asm_5023a ret ; 50268 Function50268: ; 50268 ld de, StringBuffer1 ld a, BANK(EvosAttacksPointers) ld bc, 2 call FarCopyBytes ld hl, StringBuffer1 ld a, [hli] ld h, [hl] ld l, a ld de, StringBuffer1 ld a, BANK(EvosAttacks) ld bc, $a call FarCopyBytes ld hl, StringBuffer1 .asm_50287 ld a, [hli] and a jr z, .asm_5029f rept 2 inc hl endr cp EVOLVE_ITEM jr nz, .asm_50287 rept 2 dec hl endr ld a, [CurItem] cp [hl] rept 2 inc hl endr jr nz, .asm_50287 ld de, String_502a3 ret .asm_5029f ld de, String_502a8 ret ; 502a3 String_502a3: ; 502a3 db "ABLE@" ; 502a8 String_502a8: ; 502a8 db "NOT ABLE@" ; 502b1 Function502b1: ; 502b1 ld a, [PartyCount] and a ret z ld c, a ld b, 0 hlcoord 12, 2 .asm_502bc push bc push hl call Function50389 jr z, .asm_502e3 ld [CurPartySpecies], a push hl ld a, b ld [CurPartyMon], a xor a ld [MonType], a call GetGender ld de, String_502fe jr c, .asm_502df ld de, String_502ee jr nz, .asm_502df ld de, String_502f5 .asm_502df pop hl call PlaceString .asm_502e3 pop hl ld de, $28 add hl, de pop bc inc b dec c jr nz, .asm_502bc ret ; 502ee String_502ee: ; 502ee db "♂…MALE@" ; 502f5 String_502f5: ; 502f5 db "♀…FEMALE@" ; 502fe String_502fe: ; 502fe db "…UNKNOWN@" ; 50307 Function50307: ; 50307 ld a, [PartyCount] and a ret z ld c, a ld b, 0 hlcoord 12, 1 .asm_50312 push bc push hl ld de, String_50372 call PlaceString pop hl ld de, $28 add hl, de pop bc inc b dec c jr nz, .asm_50312 ld a, l ld e, $b sub e ld l, a ld a, h sbc $0 ld h, a ld de, String_50379 call PlaceString ld b, $3 ld c, $0 ld hl, DefaultFlypoint ld a, [hl] .asm_5033b push hl push bc hlcoord 12, 1 .asm_50340 and a jr z, .asm_5034a ld de, $28 add hl, de dec a jr .asm_50340 .asm_5034a ld de, String_5036b push hl call PlaceString pop hl pop bc push bc push hl ld a, c ld hl, Strings_50383 call GetNthString ld d, h ld e, l pop hl call PlaceString pop bc pop hl inc hl ld a, [hl] inc c dec b ret z jr .asm_5033b ; 5036b String_5036b: ; 5036b db " ばんめ @" ; Place ; 50372 String_50372: ; 50372 db "さんかしない@" ; Cancel ; 50379 String_50379: ; 50379 db "けってい やめる@" ; Quit ; 50383 Strings_50383: ; 50383 db "1@", "2@", "3@" ; 1st, 2nd, 3rd ; 50389 Function50389: ; 50389 ld a, PartySpecies % $100 add b ld e, a ld a, PartySpecies / $100 adc 0 ld d, a ld a, [de] cp EGG ret ; 50396 Function50396: ; 50396 ld a, [PartyMenuActionText] and $f0 jr nz, .asm_503ae ld a, [PartyMenuActionText] and $f ld e, a ld d, 0 ld hl, Unknown_503b2 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ret .asm_503ae ld hl, Unknown_503c6 ret ; 503b2 Unknown_503b2: ; 503b2 dw Unknown_503c6 dw Unknown_503c6 dw Unknown_503c6 dw Unknown_503cc dw Unknown_503c6 dw Unknown_503d1 dw Unknown_503d6 dw Unknown_503d6 dw Unknown_503c6 dw Unknown_503db ; 503c6 Unknown_503c6: db 0, 1, 2, 3, 4, $ff Unknown_503cc: db 0, 5, 3, 4, $ff Unknown_503d1: db 0, 6, 3, 4, $ff Unknown_503d6: db 0, 7, 3, 4, $ff Unknown_503db: db 0, 8, 3, 4, $ff ; 503e0 Function503e0: ; 503e0 ld hl, PartyCount ld a, [hli] and a ret z ld c, a xor a ld [hObjectStructIndexBuffer], a .asm_503ea push bc push hl ld hl, Function8e83f ld a, BANK(Function8e83f) ld e, $0 rst FarCall ld a, [hObjectStructIndexBuffer] inc a ld [hObjectStructIndexBuffer], a pop hl pop bc dec c jr nz, .asm_503ea callab Function8cf69 ret ; 50405 Function50405: ; 50405 xor a ld [wd0e3], a ld de, Unknown_5044f call Function1bb1 ld a, [PartyCount] inc a ld [wcfa3], a dec a ld b, a ld a, [wd0d8] and a jr z, .asm_50422 inc b cp b jr c, .asm_50424 .asm_50422 ld a, $1 .asm_50424 ld [MenuSelection2], a ld a, $3 ld [wcfa8], a ret ; 5042d Function5042d: ; 0x5042d ld de, Unknown_5044f call Function1bb1 ld a, [PartyCount] ld [wcfa3], a ld b, a ld a, [wd0d8] and a jr z, .asm_50444 inc b cp b jr c, .asm_50446 .asm_50444 ld a, $1 .asm_50446 ld [MenuSelection2], a ld a, $3 ld [wcfa8], a ret ; 5044f (14:444f) Unknown_5044f: ; 5044f ; cursor y ; cursor x ; list length ; ? ; bit 6: animate sprites bit 5: wrap around ; ? ; distance between items (hi: y, lo: x) ; allowed buttons (mask) db $01, $00, $00, $01, $60, $00, $20, $00 ; 50457 PartyMenuSelect: ; 0x50457 ; sets carry if exitted menu. call Function1bc9 call Function1bee ld a, [PartyCount] inc a ld b, a ld a, [MenuSelection2] ; menu selection? cp b jr z, .exitmenu ; CANCEL ld [wd0d8], a ld a, [hJoyLast] ld b, a bit 1, b jr nz, .exitmenu ; B button? ld a, [MenuSelection2] dec a ld [CurPartyMon], a ld c, a ld b, $0 ld hl, PartySpecies add hl, bc ld a, [hl] ld [CurPartySpecies], a ld de, SFX_READ_TEXT_2 call PlaySFX call WaitSFX and a ret .exitmenu ld de, SFX_READ_TEXT_2 call PlaySFX call WaitSFX scf ret ; 0x5049a PrintPartyMenuText: ; 5049a hlcoord 0, 14 lb bc, 2, 18 call TextBox ld a, [PartyCount] and a jr nz, .haspokemon ld de, YouHaveNoPKMNString jr .gotstring .haspokemon ; 504ae ld a, [PartyMenuActionText] and $f ; drop high nibble ld hl, PartyMenuStrings ld e, a ld d, $0 rept 2 add hl, de endr ld a, [hli] ld d, [hl] ld e, a .gotstring ; 504be ld a, [Options] push af set 4, a ; disable text delay ld [Options], a hlcoord 1, 16 ; Coord call PlaceString pop af ld [Options], a ret ; 0x504d2 PartyMenuStrings: ; 0x504d2 dw ChooseAMonString dw UseOnWhichPKMNString dw WhichPKMNString dw TeachWhichPKMNString dw MoveToWhereString dw UseOnWhichPKMNString dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString dw ToWhichPKMNString ChooseAMonString: ; 0x504e4 db "Choose a #MON.@" UseOnWhichPKMNString: ; 0x504f3 db "Use on which <PK><MN>?@" WhichPKMNString: ; 0x50504 db "Which <PK><MN>?@" TeachWhichPKMNString: ; 0x5050e db "Teach which <PK><MN>?@" MoveToWhereString: ; 0x5051e db "Move to where?@" ChooseAFemalePKMNString: ; 0x5052d ; UNUSED db "Choose a ♀<PK><MN>.@" ChooseAMalePKMNString: ; 0x5053b ; UNUSED db "Choose a ♂<PK><MN>.@" ToWhichPKMNString: ; 0x50549 db "To which <PK><MN>?@" YouHaveNoPKMNString: ; 0x50556 db "You have no <PK><MN>!@" Function50566: ; 50566 ld a, [CurPartyMon] ld hl, PartyMonNicknames call GetNick ld a, [PartyMenuActionText] and $f ld hl, Unknown_5057b call Function505c1 ret ; 5057b Unknown_5057b: ; 5057b dw UnknownText_0x50594 dw UnknownText_0x5059e dw UnknownText_0x505a3 dw UnknownText_0x505a8 dw UnknownText_0x50599 dw UnknownText_0x5058f dw UnknownText_0x505ad dw UnknownText_0x505b2 dw UnknownText_0x505b7 dw UnknownText_0x505bc ; 5058f UnknownText_0x5058f: ; 0x5058f ; recovered @ HP! text_jump UnknownText_0x1bc0a2 db "@" ; 0x50594 UnknownText_0x50594: ; 0x50594 ; 's cured of poison. text_jump UnknownText_0x1bc0bb db "@" ; 0x50599 UnknownText_0x50599: ; 0x50599 ; 's rid of paralysis. text_jump UnknownText_0x1bc0d2 db "@" ; 0x5059e UnknownText_0x5059e: ; 0x5059e ; 's burn was healed. text_jump UnknownText_0x1bc0ea db "@" ; 0x505a3 UnknownText_0x505a3: ; 0x505a3 ; was defrosted. text_jump UnknownText_0x1bc101 db "@" ; 0x505a8 UnknownText_0x505a8: ; 0x505a8 ; woke up. text_jump UnknownText_0x1bc115 db "@" ; 0x505ad UnknownText_0x505ad: ; 0x505ad ; 's health returned. text_jump UnknownText_0x1bc123 db "@" ; 0x505b2 UnknownText_0x505b2: ; 0x505b2 ; is revitalized. text_jump UnknownText_0x1bc13a db "@" ; 0x505b7 UnknownText_0x505b7: ; 0x505b7 ; grew to level @ !@ @ text_jump UnknownText_0x1bc14f db "@" ; 0x505bc UnknownText_0x505bc: ; 0x505bc ; came to its senses. text_jump UnknownText_0x1bc16e db "@" ; 0x505c1 Function505c1: ; 505c1 ld e, a ld d, 0 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ld a, [Options] push af set 4, a ld [Options], a call PrintText pop af ld [Options], a ret ; 505da DoPoisonStep:: ; 505da ld a, [PartyCount] and a jr z, .asm_5062c xor a ld c, 7 ld hl, EngineBuffer1 .asm_505e6 ld [hli], a dec c jr nz, .asm_505e6 xor a ld [CurPartyMon], a .asm_505ee call Function5062e jr nc, .asm_50605 ld a, [CurPartyMon] ld e, a ld d, 0 ld hl, wd03f add hl, de ld [hl], c ld a, [EngineBuffer1] or c ld [EngineBuffer1], a .asm_50605 ld a, [PartyCount] ld hl, CurPartyMon inc [hl] cp [hl] jr nz, .asm_505ee ld a, [EngineBuffer1] and $2 jr nz, .asm_50622 ld a, [EngineBuffer1] and $1 jr z, .asm_5062c call Function50658 xor a ret .asm_50622 ld a, BANK(UnknownScript_0x50669) ld hl, UnknownScript_0x50669 call CallScript scf ret .asm_5062c xor a ret ; 5062e Function5062e: ; 5062e ld a, MON_STATUS call GetPartyParamLocation ld a, [hl] and 1 << PSN ret z ld a, MON_HP call GetPartyParamLocation ld a, [hli] ld b, a ld c, [hl] or c ret z dec bc ld [hl], c dec hl ld [hl], b ld a, b or c jr nz, .not_fainted ld a, MON_STATUS call GetPartyParamLocation ld [hl], 0 ld c, 2 scf ret .not_fainted ld c, 1 scf ret ; 50658 Function50658: ; 50658 ld de, SFX_POISON call PlaySFX ld b, $2 predef Functioncbcdd call DelayFrame ret ; 50669 UnknownScript_0x50669: ; 50669 callasm Function50658 loadfont callasm Function5067b iffalse UnknownScript_0x50677 loadmovesprites end ; 50677 UnknownScript_0x50677: ; 50677 farjump UnknownScript_0x124c8 ; 5067b Function5067b: ; 5067b xor a ld [CurPartyMon], a ld de, wd03f .asm_50682 push de ld a, [de] and 2 jr z, .asm_5069c ld c, HAPPINESS_POISONFAINT callba ChangeHappiness callba GetPartyNick ld hl, PoisonFaintText call PrintText .asm_5069c pop de inc de ld hl, CurPartyMon inc [hl] ld a, [PartyCount] cp [hl] jr nz, .asm_50682 predef CheckPlayerPartyForFitPkmn ld a, d ld [ScriptVar], a ret ; 506b2 PoisonFaintText: ; 506b2 text_jump UnknownText_0x1c0acc db "@" ; 506b7 PoisonWhiteOutText: ; 506b7 text_jump UnknownText_0x1c0ada db "@" ; 506bc DoMovementFunctionc: ; 506bc ld hl, UnknownScript_0x506c8 call QueueScript ld a, $1 ld [wd0ec], a ret ; 506c8 UnknownScript_0x506c8: ; 0x506c8 reloadmappart special UpdateTimePals callasm GetPartyNick writetext UnknownText_0x50726 closetext callasm SweetScentEncounter iffalse UnknownScript_0x506e9 checkflag ENGINE_BUG_CONTEST_TIMER iftrue UnknownScript_0x506e5 battlecheck startbattle returnafterbattle end ; 0x506e5 UnknownScript_0x506e5: ; 0x506e5 farjump BugCatchingContestBattleScript ; 0x506e9 UnknownScript_0x506e9: ; 0x506e9 writetext UnknownText_0x5072b closetext loadmovesprites end ; 0x506ef SweetScentEncounter: ; 506ef callba CanUseSweetScent jr nc, .no_battle ld hl, StatusFlags2 bit 2, [hl] jr nz, .not_in_bug_contest callba GetMapEncounterRate ld a, b and a jr z, .no_battle callba ChooseWildEncounter jr nz, .no_battle jr .start_battle .not_in_bug_contest callba ChooseWildEncounter_BugContest .start_battle ld a, $1 ld [ScriptVar], a ret .no_battle xor a ld [ScriptVar], a ld [BattleType], a ret ; 50726 UnknownText_0x50726: ; 0x50726 ; used SWEET SCENT! text_jump UnknownText_0x1c0b03 db "@" ; 0x5072b UnknownText_0x5072b: ; 0x5072b ; Looks like there's nothing here… text_jump UnknownText_0x1c0b1a db "@" ; 0x50730 _Squirtbottle: ; 50730 ld hl, UnknownScript_0x5073c call QueueScript ld a, $1 ld [wd0ec], a ret ; 5073c UnknownScript_0x5073c: ; 0x5073c reloadmappart special UpdateTimePals callasm Function50753 iffalse UnknownScript_0x5074b farjump WateredWeirdTreeScript ; 0x5074b UnknownScript_0x5074b: ; 0x5074b jumptext UnknownText_0x5074e ; 0x5074e UnknownText_0x5074e: ; 0x5074e ; sprinkled water. But nothing happened… text_jump UnknownText_0x1c0b3b db "@" ; 0x50753 Function50753: ; 50753 ld a, [MapGroup] cp GROUP_ROUTE_36 jr nz, .asm_50774 ld a, [MapNumber] cp MAP_ROUTE_36 jr nz, .asm_50774 callba GetFacingObject jr c, .asm_50774 ld a, d cp $17 jr nz, .asm_50774 ld a, $1 ld [ScriptVar], a ret .asm_50774 xor a ld [ScriptVar], a ret ; 50779 _CardKey: ; 50779 ; Are we even in the right map to use this? ld a, [MapGroup] cp GROUP_RADIO_TOWER_3F jr nz, .nope ld a, [MapNumber] cp MAP_RADIO_TOWER_3F jr nz, .nope ; Are we facing the slot? ld a, [PlayerDirection] and $c cp OW_UP jr nz, .nope call GetFacingTileCoord ld a, d cp 18 jr nz, .nope ld a, e cp 6 jr nz, .nope ; Let's use the Card Key. ld hl, .CardKeyScript call QueueScript ld a, $1 ld [wd0ec], a ret .nope ld a, $0 ld [wd0ec], a ret ; 507af .CardKeyScript: ; 0x507af loadmovesprites farjump MapRadioTower3FSignpost2Script ; 0x507b4 _BasementKey: ; 507b4 ; Are we even in the right map to use this? ld a, [MapGroup] cp GROUP_WAREHOUSE_ENTRANCE jr nz, .nope ld a, [MapNumber] cp MAP_WAREHOUSE_ENTRANCE jr nz, .nope ; Are we on the tile in front of the door? call GetFacingTileCoord ld a, d cp 22 jr nz, .nope ld a, e cp 10 jr nz, .nope ; Let's use the Basement Key ld hl, .BasementKeyScript call QueueScript ld a, 1 ld [wd0ec], a ret .nope ld a, $0 ld [wd0ec], a ret ; 507e1 .BasementKeyScript: ; 0x507e1 loadmovesprites farjump BasementDoorScript ; 0x507e6 _SacredAsh: ; 507e6 ld a, $0 ld [wd0ec], a call CheckAnyFaintedMon ret nc ld hl, SacredAshScript call QueueScript ld a, $1 ld [wd0ec], a ret ; 507fb CheckAnyFaintedMon: ; 507fb ld de, PARTYMON_STRUCT_LENGTH ld bc, PartySpecies ld hl, PartyMon1HP ld a, [PartyCount] and a ret z .loop push af push hl ld a, [bc] inc bc cp EGG jr z, .next ld a, [hli] or [hl] jr z, .done .next pop hl add hl, de pop af dec a jr nz, .loop xor a ret .done pop hl pop af scf ret ; 50821 SacredAshScript: ; 0x50821 special HealParty reloadmappart playsound SFX_WARP_TO special FadeBlackBGMap special FadeInBGMap special FadeBlackBGMap special FadeInBGMap special FadeBlackBGMap special FadeInBGMap waitbutton writetext UnknownText_0x50845 playsound SFX_CAUGHT_MON waitbutton closetext loadmovesprites end ; 0x50845 UnknownText_0x50845: ; 0x50845 ; 's #MON were all healed! text_jump UnknownText_0x1c0b65 db "@" ; 0x5084a CopyPkmnToTempMon: ; 5084a ; gets the BaseData of a Pkmn ; and copys the PkmnStructure to TempMon ld a, [CurPartyMon] ld e, a call GetPkmnSpecies ld a, [CurPartySpecies] ld [CurSpecies], a call GetBaseData ld a, [MonType] ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH and a jr z, .copywholestruct ld hl, OTPartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH cp OTPARTYMON jr z, .copywholestruct ld bc, BOXMON_STRUCT_LENGTH callab Functione5bb jr .done .copywholestruct ld a, [CurPartyMon] call AddNTimes ld de, TempMon ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes .done ret ; 5088b Function5088b: ; 5088b ld bc, wd018 jr Function50893 ; 50890 Function50890: ; 50890 ld bc, TempMon ; fallthrough ; 50893 Function50893: ; 50893 ld hl, TempMonLevel - TempMon add hl, bc ld a, [hl] ld [CurPartyLevel], a ld hl, TempMonMaxHP - TempMon add hl, bc ld d, h ld e, l ld hl, TempMonExp + 2 - TempMon add hl, bc push bc ld b, $1 predef CalcPkmnStats pop bc ld hl, TempMonHP - TempMon add hl, bc ld d, h ld e, l ld a, [CurPartySpecies] cp EGG jr nz, .asm_508c1 xor a ld [de], a inc de ld [de], a jr .asm_508cd .asm_508c1 push bc ld hl, TempMonMaxHP - TempMon add hl, bc ld bc, 2 call CopyBytes pop bc .asm_508cd ld hl, TempMonStatus - TempMon add hl, bc xor a ld [hli], a ld [hl], a ret ; 508d5 GetPkmnSpecies: ; 508d5 ; [MonType] has the type of the Pkmn ; e = Nr. of Pkmn (i.e. [CurPartyMon]) ld a, [MonType] and a ; PARTYMON jr z, .partymon cp OTPARTYMON jr z, .otpartymon cp BOXMON jr z, .boxmon cp BREEDMON jr z, .breedmon ; WILDMON .partymon ld hl, PartySpecies jr .done .otpartymon ld hl, OTPartySpecies jr .done .boxmon ld a, BANK(sBoxSpecies) call GetSRAMBank ld hl, sBoxSpecies call .done call CloseSRAM ret .breedmon ld a, [wBreedMon1Species] jr .done2 .done ld d, 0 add hl, de ld a, [hl] .done2 ld [CurPartySpecies], a ret ; 5090d INCLUDE "text/types.asm" Function50a28: ; 50a28 ld hl, Strings50a42 ld a, [TrainerClass] dec a ld c, a ld b, 0 rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ld de, StringBuffer1 .copy ld a, [hli] ld [de], a inc de cp "@" jr nz, .copy ret ; 50a42 Strings50a42: ; 50a42 ; Untranslated trainer class names from Red. dw .Youngster dw .BugCatcher dw .Lass dw OTName dw .JrTrainerM dw .JrTrainerF dw .Pokemaniac dw .SuperNerd dw OTName dw OTName dw .Burglar dw .Engineer dw .Jack dw OTName dw .Swimmer dw OTName dw OTName dw .Beauty dw OTName dw .Rocker dw .Juggler dw OTName dw OTName dw .Blackbelt dw OTName dw .ProfOak dw .Chief dw .Scientist dw OTName dw .Rocket dw .CooltrainerM dw .CooltrainerF dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName dw OTName .Youngster db "たんパン@" .BugCatcher db "むしとり@" .Lass db "ミニスカ@" .JrTrainerM db "ボーイ@" .JrTrainerF db "ガール@" .Pokemaniac db "マニア@" .SuperNerd db "りかけい@" .Burglar db "どろぼう@" .Engineer db "ォヤジ@" .Jack db "ジャック@" .Swimmer db "かいパン@" .Beauty db "おねえさん@" .Rocker db "グループ@" .Juggler db "ジャグラー@" .Blackbelt db "からて@" .ProfOak db "ォーキド@" .Chief db "チーフ@" .Scientist db "けんきゅういん@" .Rocket db "だんいん@" .CooltrainerM db "エりート♂@" .CooltrainerF db "エりート♀@" ; 50b0a DrawPlayerHP: ; 50b0a ld a, $1 jr DrawHP DrawEnemyHP: ; 50b0e ld a, $2 DrawHP: ; 50b10 ld [wd10a], a push hl push bc ld a, [MonType] cp BOXMON jr z, .asm_50b30 ld a, [TempMonHP] ld b, a ld a, [TempMonHP + 1] ld c, a ; Any HP? or b jr nz, .asm_50b30 xor a ld c, a ld e, a ld a, 6 ld d, a jp .asm_50b4a .asm_50b30 ld a, [TempMonMaxHP] ld d, a ld a, [TempMonMaxHP + 1] ld e, a ld a, [MonType] cp BOXMON jr nz, .asm_50b41 ld b, d ld c, e .asm_50b41 predef Functionc699 ld a, 6 ld d, a ld c, a .asm_50b4a ld a, c pop bc ld c, a pop hl push de push hl push hl call DrawHPBar pop hl ; Print HP ld bc, $15 ; move (1,1) add hl, bc ld de, TempMonHP ld a, [MonType] cp BOXMON jr nz, .asm_50b66 ld de, TempMonMaxHP .asm_50b66 lb bc, 2, 3 call PrintNum ld a, "/" ld [hli], a ; Print max HP ld de, TempMonMaxHP lb bc, 2, 3 call PrintNum pop hl pop de ret ; 50b7b PrintTempMonStats: ; 50b7b ; Print TempMon's stats at hl, with spacing bc. push bc push hl ld de, .StatNames call PlaceString pop hl pop bc add hl, bc ld bc, SCREEN_WIDTH add hl, bc ld de, TempMonAttack lb bc, 2, 3 call .PrintStat ld de, TempMonDefense call .PrintStat ld de, TempMonSpclAtk call .PrintStat ld de, TempMonSpclDef call .PrintStat ld de, TempMonSpeed jp PrintNum ; 50bab .PrintStat: ; 50bab push hl call PrintNum pop hl ld de, SCREEN_WIDTH * 2 add hl, de ret ; 50bb5 .StatNames: ; 50bb5 db "ATTACK" next "DEFENSE" next "SPCL.ATK" next "SPCL.DEF" next "SPEED" next "@" ; 50bdd GetGender: ; 50bdd ; Return the gender of a given monster (CurPartyMon/CurOTMon/CurWildMon). ; When calling this function, a should be set to an appropriate MonType value. ; return values: ; a = 1: f = nc|nz; male ; a = 0: f = nc|z; female ; f = c: genderless ; This is determined by comparing the Attack and Speed DVs ; with the species' gender ratio. ; Figure out what type of monster struct we're looking at. ; 0: PartyMon ld hl, PartyMon1DVs ld bc, PARTYMON_STRUCT_LENGTH ld a, [MonType] and a jr z, .PartyMon ; 1: OTPartyMon ld hl, OTPartyMon1DVs dec a jr z, .PartyMon ; 2: sBoxMon ld hl, sBoxMon1DVs ld bc, BOXMON_STRUCT_LENGTH dec a jr z, .sBoxMon ; 3: Unknown ld hl, TempMonDVs dec a jr z, .DVs ; else: WildMon ld hl, EnemyMonDVs jr .DVs ; Get our place in the party/box. .PartyMon .sBoxMon ld a, [CurPartyMon] call AddNTimes .DVs ; sBoxMon data is read directly from SRAM. ld a, [MonType] cp BOXMON ld a, 1 call z, GetSRAMBank ; Attack DV ld a, [hli] and $f0 ld b, a ; Speed DV ld a, [hl] and $f0 swap a ; Put our DVs together. or b ld b, a ; Close SRAM if we were dealing with a sBoxMon. ld a, [MonType] cp BOXMON call z, CloseSRAM ; We need the gender ratio to do anything with this. push bc ld a, [CurPartySpecies] dec a ld hl, BaseData + BaseGender - CurBaseData ld bc, BaseData1 - BaseData call AddNTimes pop bc ld a, BANK(BaseData) call GetFarByte ; The higher the ratio, the more likely the monster is to be female. cp $ff jr z, .Genderless and a jr z, .Male cp $fe jr z, .Female ; Values below the ratio are male, and vice versa. cp b jr c, .Male .Female xor a ret .Male ld a, 1 and a ret .Genderless scf ret ; 50c50 Function50c50: ; 50c50 ld a, [wd0eb] inc a ld c, a ld a, $4 sub c ld b, a push hl ld a, [Buffer1] ld e, a ld d, $0 ld a, $3e call Function50cc9 ld a, b and a jr z, .asm_50c6f ld c, a ld a, $e3 call Function50cc9 .asm_50c6f pop hl rept 3 inc hl endr ld d, h ld e, l ld hl, TempMonMoves ld b, 0 .asm_50c7a ld a, [hli] and a jr z, .asm_50cc8 push bc push hl push de ld hl, MenuSelection2 ld a, [hl] push af ld [hl], b push hl callab Functionf8ec pop hl pop af ld [hl], a pop de pop hl push hl ld bc, TempMonPP - (TempMonMoves + 1) add hl, bc ld a, [hl] and $3f ld [StringBuffer1 + 4], a ld h, d ld l, e push hl ld de, StringBuffer1 + 4 lb bc, 1, 2 call PrintNum ld a, $f3 ld [hli], a ld de, wd265 lb bc, 1, 2 call PrintNum pop hl ld a, [Buffer1] ld e, a ld d, 0 add hl, de ld d, h ld e, l pop hl pop bc inc b ld a, b cp NUM_MOVES jr nz, .asm_50c7a .asm_50cc8 ret ; 50cc9 Function50cc9: ; 50cc9 .asm_50cc9 ld [hli], a ld [hld], a add hl, de dec c jr nz, .asm_50cc9 ret ; 50cd0 Function50cd0: ; 50cd0 .asm_50cd0 ld [hl], $32 inc hl ld [hl], $3e dec hl add hl, de dec c jr nz, .asm_50cd0 ret ; 50cdb Function50cdb: ; unreferenced predef push hl push hl ld hl, PartyMonNicknames ld a, [CurPartyMon] call GetNick pop hl call PlaceString call CopyPkmnToTempMon pop hl ld a, [CurPartySpecies] cp EGG jr z, .asm_50d09 push hl ld bc, -12 add hl, bc ld b, $0 call DrawEnemyHP pop hl ld bc, 5 add hl, bc push de call PrintLevel pop de .asm_50d09 ret ; 50d0a PlaceStatusString: ; 50d0a push de rept 2 inc de endr ld a, [de] ld b, a inc de ld a, [de] or b pop de jr nz, PlaceNonFaintStatus push de ld de, FntString call CopyStatusString pop de ld a, $1 and a ret ; 50d22 FntString: ; 50d22 db "FNT@" ; 50d25 CopyStatusString: ; 50d25 ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a ld a, [de] ld [hl], a ret ; 50d2e PlaceNonFaintStatus: ; 50d2e push de ld a, [de] ld de, PsnString bit PSN, a jr nz, .place ld de, BrnString bit BRN, a jr nz, .place ld de, FrzString bit FRZ, a jr nz, .place ld de, ParString bit PAR, a jr nz, .place ld de, SlpString and SLP jr z, .no_status .place call CopyStatusString ld a, $1 and a .no_status pop de ret ; 50d5b SlpString: db "SLP@" PsnString: db "PSN@" BrnString: db "BRN@" FrzString: db "FRZ@" ParString: db "PAR@" ; 50d6f ListMoves: ; 50d6f ; List moves at hl, spaced every [Buffer1] tiles. ld de, wListMoves_MoveIndicesBuffer ld b, $0 .moves_loop ld a, [de] inc de and a jr z, .no_more_moves push de push hl push hl ld [CurSpecies], a ld a, MOVE_NAME ld [wNamedObjectTypeBuffer], a call GetName ld de, StringBuffer1 pop hl push bc call PlaceString pop bc ld a, b ld [wd0eb], a inc b pop hl push bc ld a, [Buffer1] ld c, a ld b, 0 add hl, bc pop bc pop de ld a, b cp NUM_MOVES jr z, .done jr .moves_loop .no_more_moves ld a, b .nonmove_loop push af ld [hl], "-" ld a, [Buffer1] ld c, a ld b, 0 add hl, bc pop af inc a cp NUM_MOVES jr nz, .nonmove_loop .done ret ; 50db9 Function50db9: ; 50db9 ld a, [wd263] cp $1 jr nz, .check_party_ot_name ld hl, OTPartyCount ld de, OTPartyMonOT ld a, ENEMY_OT_NAME jr .done .check_party_ot_name cp $4 jr nz, .check_mon_name ld hl, PartyCount ld de, PartyMonOT ld a, PARTY_OT_NAME jr .done .check_mon_name cp $5 jr nz, .check_item_name ld hl, CurMart ld de, PokemonNames ld a, PKMN_NAME jr .done .check_item_name cp $2 jr nz, .check_ob_item_name ld hl, NumItems ld de, ItemNames ld a, ITEM_NAME jr .done .check_ob_item_name ld hl, CurMart ld de, ItemNames ld a, ITEM_NAME .done ld [wNamedObjectTypeBuffer], a ld a, l ld [wd100], a ld a, h ld [wd101], a ld a, e ld [wd102], a ld a, d ld [wd103], a ld bc, ItemAttributes ld a, c ld [wd104], a ld a, b ld [wd105], a ret ; 50e1b CalcLevel: ; 50e1b ld a, [TempMonSpecies] ld [CurSpecies], a call GetBaseData ld d, 1 .next_level inc d ld a, d cp (MAX_LEVEL + 1) % $100 jr z, .got_level call CalcExpAtLevel push hl ld hl, TempMonExp + 2 ld a, [hProduct + 3] ld c, a ld a, [hld] sub c ld a, [hProduct + 2] ld c, a ld a, [hld] sbc c ld a, [hProduct + 1] ld c, a ld a, [hl] sbc c pop hl jr nc, .next_level .got_level dec d ret ; 50e47 CalcExpAtLevel: ; 50e47 ; (a/b)*n**3 + c*n**2 + d*n - e ld a, [BaseGrowthRate] rept 2 add a endr ld c, a ld b, 0 ld hl, GrowthRates add hl, bc ; Cube the level call .LevelSquared ld a, d ld [hMultiplier], a call Multiply ; Multiply by a ld a, [hl] and $f0 swap a ld [hMultiplier], a call Multiply ; Divide by b ld a, [hli] and $f ld [hDivisor], a ld b, 4 call Divide ; Push the cubic term to the stack ld a, [hQuotient + 0] push af ld a, [hQuotient + 1] push af ld a, [hQuotient + 2] push af ; Square the level and multiply by the lower 7 bits of c call .LevelSquared ld a, [hl] and $7f ld [hMultiplier], a call Multiply ; Push the absolute value of the quadratic term to the stack ld a, [hProduct + 1] push af ld a, [hProduct + 2] push af ld a, [hProduct + 3] push af ld a, [hli] push af ; Multiply the level by d xor a ld [hMultiplicand + 0], a ld [hMultiplicand + 1], a ld a, d ld [hMultiplicand + 2], a ld a, [hli] ld [hMultiplier], a call Multiply ; Subtract e ld b, [hl] ld a, [hProduct + 3] sub b ld [hMultiplicand + 2], a ld b, $0 ld a, [hProduct + 2] sbc b ld [hMultiplicand + 1], a ld a, [hProduct + 1] sbc b ld [hMultiplicand], a ; If bit 7 of c is set, c is negative; otherwise, it's positive pop af and $80 jr nz, .subtract ; Add c*n**2 to (d*n - e) pop bc ld a, [hProduct + 3] add b ld [hMultiplicand + 2], a pop bc ld a, [hProduct + 2] adc b ld [hMultiplicand + 1], a pop bc ld a, [hProduct + 1] adc b ld [hMultiplicand], a jr .done_quadratic .subtract ; Subtract c*n**2 from (d*n - e) pop bc ld a, [hProduct + 3] sub b ld [hMultiplicand + 2], a pop bc ld a, [hProduct + 2] sbc b ld [hMultiplicand + 1], a pop bc ld a, [hProduct + 1] sbc b ld [hMultiplicand], a .done_quadratic ; Add (a/b)*n**3 to (d*n - e +/- c*n**2) pop bc ld a, [hProduct + 3] add b ld [hMultiplicand + 2], a pop bc ld a, [hProduct + 2] adc b ld [hMultiplicand + 1], a pop bc ld a, [hProduct + 1] adc b ld [hMultiplicand], a ret ; 50eed .LevelSquared: ; 50eed xor a ld [hMultiplicand + 0], a ld [hMultiplicand + 1], a ld a, d ld [hMultiplicand + 2], a ld [hMultiplier], a jp Multiply ; 50efa GrowthRates: ; 50efa growth_rate: MACRO ; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5] dn \1, \2 if \3 & $80 ; signed db -\3 | $80 else db \3 endc db \4, \5 ENDM growth_rate 1, 1, 0, 0, 0 ; Medium Fast growth_rate 3, 4, 10, 0, 30 ; Slightly Fast growth_rate 3, 4, 20, 0, 70 ; Slightly Slow growth_rate 6, 5, -15, 100, 140 ; Medium Slow growth_rate 4, 5, 0, 0, 0 ; Fast growth_rate 5, 4, 0, 0, 0 ; Slow ; 50f12 _SwitchPartyMons: ld a, [wd0e3] dec a ld [wd1ec], a ld b, a ld a, [MenuSelection2] dec a ld [Buffer2], a ; wd1eb (aliases: MovementType) cp b jr z, .skip call .SwapPartymonViaSRAM ld a, [wd1ec] call .ClearSprite ld a, [Buffer2] ; wd1eb (aliases: MovementType) call .ClearSprite .skip ret .ClearSprite: ; 50f34 (14:4f34) push af hlcoord 0, 1 ld bc, 2 * SCREEN_WIDTH call AddNTimes ld bc, 2 * SCREEN_WIDTH ld a, " " call ByteFill pop af ld hl, Sprites ld bc, $10 call AddNTimes ld de, $4 ld c, $4 .gfx_loop ld [hl], $a0 add hl, de dec c jr nz, .gfx_loop ld de, SFX_SWITCH_POKEMON call WaitPlaySFX ret .SwapPartymonViaSRAM: ; 50f62 (14:4f62) push hl push de push bc ld bc, PartySpecies ld a, [Buffer2] ; wd1eb (aliases: MovementType) ld l, a ld h, $0 add hl, bc ld d, h ld e, l ld a, [Buffer3] ld l, a ld h, $0 add hl, bc ld a, [hl] push af ld a, [de] ld [hl], a pop af ld [de], a ld a, [Buffer2] ; wd1eb (aliases: MovementType) ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes push hl ld de, MiscBuffer2 ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes ld a, [Buffer3] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes pop de push hl ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes pop de ld hl, MiscBuffer2 ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes ld a, [Buffer2] ; wd1eb (aliases: MovementType) ld hl, PartyMonOT call SkipNames push hl call .CopyNameToMiscBuffer2 ld a, [Buffer3] ld hl, PartyMonOT call SkipNames pop de push hl call .CopyName pop de ld hl, MiscBuffer2 call .CopyName ld hl, PartyMonNicknames ld a, [Buffer2] ; wd1eb (aliases: MovementType) call SkipNames push hl call .CopyNameToMiscBuffer2 ld hl, PartyMonNicknames ld a, [Buffer3] call SkipNames pop de push hl call .CopyName pop de ld hl, MiscBuffer2 call .CopyName ld hl, sPartyScratch1 ld a, [Buffer2] ; wd1eb (aliases: MovementType) ld bc, SCRATCHMON_STRUCT_LENGTH call AddNTimes push hl ld de, MiscBuffer2 ld bc, SCRATCHMON_STRUCT_LENGTH ld a, BANK(sPartyScratch1) call GetSRAMBank call CopyBytes ld hl, sPartyScratch1 ld a, [Buffer3] ld bc, SCRATCHMON_STRUCT_LENGTH call AddNTimes pop de push hl ld bc, SCRATCHMON_STRUCT_LENGTH call CopyBytes pop de ld hl, MiscBuffer2 ld bc, SCRATCHMON_STRUCT_LENGTH call CopyBytes call CloseSRAM pop bc pop de pop hl ret .CopyNameToMiscBuffer2: ; 51036 (14:5036) ld de, MiscBuffer2 .CopyName: ; 51039 (14:5039) ld bc, NAME_LENGTH call CopyBytes ret GetUnownLetter: ; 51040 ; Return Unown letter in UnownLetter based on DVs at hl ; Take the middle 2 bits of each DV and place them in order: ; atk def spd spc ; .ww..xx. .yy..zz. ; atk ld a, [hl] and %01100000 sla a ld b, a ; def ld a, [hli] and %00000110 swap a srl a or b ld b, a ; spd ld a, [hl] and %01100000 swap a sla a or b ld b, a ; spc ld a, [hl] and %00000110 srl a or b ; Divide by 10 to get 0-25 ld [hDividend + 3], a xor a ld [hDividend], a ld [hDividend + 1], a ld [hDividend + 2], a ld a, 10 ld [hDivisor], a ld b, $4 call Divide ; Increment to get 1-26 ld a, [hQuotient + 2] inc a ld [UnownLetter], a ret ; 51077 GetFrontpic: ; 51077 ld a, [CurPartySpecies] ld [CurSpecies], a call IsAPokemon ret c ld a, [rSVBK] push af call _GetFrontpic pop af ld [rSVBK], a ret ; 5108b Function5108b: ; 5108b ld a, [CurPartySpecies] ld [CurSpecies], a call IsAPokemon ret c ld a, [rSVBK] push af xor a ld [hBGMapMode], a call _GetFrontpic call Function51103 pop af ld [rSVBK], a ret ; 510a5 _GetFrontpic: ; 510a5 push de call GetBaseData ld a, [BasePicSize] and $f ld b, a push bc call GetFrontpicPointer ld a, $6 ld [rSVBK], a ld a, b ld de, w6_d000 + $800 call FarDecompress pop bc ld hl, w6_d000 ld de, w6_d000 + $800 call Function512ab pop hl push hl ld de, w6_d000 ld c, 7 * 7 ld a, [hROMBank] ld b, a call Get2bpp pop hl ret ; 510d7 GetFrontpicPointer: ; 510d7 GLOBAL PicPointers, UnownPicPointers ld a, [CurPartySpecies] cp UNOWN jr z, .unown ld a, [CurPartySpecies] ld d, BANK(PicPointers) jr .ok .unown ld a, [UnownLetter] ld d, BANK(UnownPicPointers) .ok ld hl, PicPointers ; UnownPicPointers dec a ld bc, 6 call AddNTimes ld a, d call GetFarByte call FixPicBank push af inc hl ld a, d call GetFarHalfword pop bc ret ; 51103 Function51103: ; 51103 ld a, $1 ld [rVBK], a push hl ld de, w6_d000 ld c, 7 * 7 ld a, [hROMBank] ld b, a call Get2bpp pop hl ld de, 7 * 7 * $10 add hl, de push hl ld a, $1 ld hl, BasePicSize call GetFarWRAMByte pop hl and $f ld de, w6_d000 + $800 + 5 * 5 * $10 ld c, 5 * 5 cp 5 jr z, .asm_5113b ld de, w6_d000 + $800 + 6 * 6 * $10 ld c, 6 * 6 cp 6 jr z, .asm_5113b ld de, w6_d000 + $800 + 7 * 7 * $10 ld c, 7 * 7 .asm_5113b push hl push bc call Function5114f pop bc pop hl ld de, w6_d000 ld a, [hROMBank] ld b, a call Get2bpp xor a ld [rVBK], a ret ; 5114f Function5114f: ; 5114f ld hl, w6_d000 swap c ld a, c and $f ld b, a ld a, c and $f0 ld c, a push bc call Function512f2 pop bc .asm_51161 push bc ld c, $0 call Function512f2 pop bc dec b jr nz, .asm_51161 ret ; 5116c GetBackpic: ; 5116c ld a, [CurPartySpecies] call IsAPokemon ret c ld a, [CurPartySpecies] ld b, a ld a, [UnownLetter] ld c, a ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push de ; These are assumed to be at the same ; address in their respective banks. GLOBAL PicPointers, UnownPicPointers ld hl, PicPointers ; UnownPicPointers ld a, b ld d, BANK(PicPointers) cp UNOWN jr nz, .ok ld a, c ld d, BANK(UnownPicPointers) .ok dec a ld bc, 6 call AddNTimes ld bc, 3 add hl, bc ld a, d call GetFarByte call FixPicBank push af inc hl ld a, d call GetFarHalfword ld de, w6_d000 pop af call FarDecompress ld hl, w6_d000 ld c, 6 * 6 call Function5127c pop hl ld de, w6_d000 ld a, [hROMBank] ld b, a call Get2bpp pop af ld [rSVBK], a ret ; 511c5 FixPicBank: ; 511c5 ; This is a thing for some reason. push hl push bc sub PICS_1 - $36 ld c, a ld b, 0 ld hl, Unknown_511d4 add hl, bc ld a, [hl] pop bc pop hl ret ; 511d4 Unknown_511d4: ; 511d4 db PICS_1 db PICS_2 db PICS_3 db PICS_4 db PICS_5 db PICS_6 db PICS_7 db PICS_8 db PICS_9 db PICS_10 db PICS_11 db PICS_12 db PICS_13 db PICS_14 db PICS_15 db PICS_16 db PICS_17 db PICS_18 db PICS_19 db PICS_19 + 1 db PICS_19 + 2 db PICS_19 + 3 db PICS_19 + 4 db PICS_19 + 5 Function511ec: ; 511ec ld a, c push de ld hl, PicPointers dec a ld bc, 6 call AddNTimes ld a, BANK(PicPointers) call GetFarByte call FixPicBank push af inc hl ld a, BANK(PicPointers) call GetFarHalfword pop af pop de call FarDecompress ret ; 0x5120d GetTrainerPic: ; 5120d ld a, [TrainerClass] and a ret z cp NUM_TRAINER_CLASSES ret nc call WaitBGMap xor a ld [hBGMapMode], a ld hl, TrainerPicPointers ld a, [TrainerClass] dec a ld bc, 3 call AddNTimes ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push de ld a, BANK(TrainerPicPointers) call GetFarByte call FixPicBank push af inc hl ld a, BANK(TrainerPicPointers) call GetFarHalfword pop af ld de, w6_d000 call FarDecompress pop hl ld de, w6_d000 ld c, 7 * 7 ld a, [hROMBank] ld b, a call Get2bpp pop af ld [rSVBK], a call WaitBGMap ld a, $1 ld [hBGMapMode], a ret ; 5125d DecompressPredef: ; 5125d ; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de. ld a, [rSVBK] push af ld a, 6 ld [rSVBK], a push de push bc ld a, b ld de, w6_d000 call FarDecompress pop bc ld de, w6_d000 pop hl ld a, [hROMBank] ld b, a call Get2bpp pop af ld [rSVBK], a ret ; 5127c Function5127c: ; 5127c push de push bc ld a, [wc2c6] and a jr z, .asm_512a8 ld a, c cp 7 * 7 ld de, 7 * 7 * $10 jr z, .asm_51296 cp 6 * 6 ld de, 6 * 6 * $10 jr z, .asm_51296 ld de, 5 * 5 * $10 .asm_51296 ld a, [hl] ld b, $0 ld c, $8 .asm_5129b rra rl b dec c jr nz, .asm_5129b ld a, b ld [hli], a dec de ld a, e or d jr nz, .asm_51296 .asm_512a8 pop bc pop de ret ; 512ab Function512ab: ; 512ab ld a, b cp 6 jr z, .six cp 5 jr z, .five .seven ld c, $70 call Function512f2 dec b jr nz, .seven ret .six ld c, $70 xor a call .Fill .asm_512c3 ld c, $10 xor a call .Fill ld c, $60 call Function512f2 dec b jr nz, .asm_512c3 ret .five ld c, $70 xor a call .Fill .asm_512d8 ld c, $20 xor a call .Fill ld c, $50 call Function512f2 dec b jr nz, .asm_512d8 ld c, $70 xor a call .Fill ret .Fill ld [hli], a dec c jr nz, .Fill ret ; 512f2 Function512f2: ; 512f2 ld a, [wc2c6] and a jr nz, .asm_512ff .asm_512f8 ld a, [de] inc de ld [hli], a dec c jr nz, .asm_512f8 ret .asm_512ff push bc .asm_51300 ld a, [de] inc de ld b, a xor a rept 8 rr b rla endr ld [hli], a dec c jr nz, .asm_51300 pop bc ret ; 51322 Function51322: ; 51322 ld a, BANK(sBoxCount) call GetSRAMBank ld hl, sBoxCount call Function513cb ld a, [sBoxCount] dec a ld [wd265], a ld hl, sBoxMonNicknames ld bc, PKMN_NAME_LENGTH ld de, wd002 call Function513e0 ld a, [sBoxCount] dec a ld [wd265], a ld hl, sBoxMonOT ld bc, NAME_LENGTH ld de, wd00d call Function513e0 ld a, [sBoxCount] dec a ld [wd265], a ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH ld de, wd018 call Function513e0 ld hl, wd01a ld de, TempMonMoves ld bc, NUM_MOVES call CopyBytes ld hl, wd02f ld de, TempMonPP ld bc, NUM_MOVES call CopyBytes ld a, [CurPartyMon] ld b, a callba Functiondcb6 jp CloseSRAM ; 5138b Function5138b: ; 5138b ld hl, PartyCount call Function513cb ld a, [PartyCount] dec a ld [wd265], a ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH ld de, wd002 call Function513e0 ld a, [PartyCount] dec a ld [wd265], a ld hl, PartyMonOT ld bc, NAME_LENGTH ld de, wd00d call Function513e0 ld a, [PartyCount] dec a ld [wd265], a ld hl, PartyMons ld bc, PARTYMON_STRUCT_LENGTH ld de, wd018 call Function513e0 ret ; 513cb Function513cb: ; 513cb inc [hl] inc hl ld a, [CurPartyMon] ld c, a ld b, 0 add hl, bc ld a, [CurPartySpecies] ld c, a .asm_513d8 ld a, [hl] ld [hl], c inc hl inc c ld c, a jr nz, .asm_513d8 ret ; 513e0 Function513e0: ; 513e0 push de push hl push bc ld a, [wd265] dec a call AddNTimes push hl add hl, bc ld d, h ld e, l pop hl .asm_513ef push bc ld a, [wd265] ld b, a ld a, [CurPartyMon] cp b pop bc jr z, .asm_51415 push hl push de push bc call CopyBytes pop bc pop de pop hl push hl ld a, l sub c ld l, a ld a, h sbc b ld h, a pop de ld a, [wd265] dec a ld [wd265], a jr .asm_513ef .asm_51415 pop bc pop hl ld a, [CurPartyMon] call AddNTimes ld d, h ld e, l pop hl call CopyBytes ret ; 51424 BaseData:: INCLUDE "data/base_stats.asm" PokemonNames:: INCLUDE "data/pokemon_names.asm" Unknown_53d84: ; unreferenced db $1a, $15 db $33, $16 db $4b, $17 db $62, $18 db $79, $19 db $90, $1a db $a8, $1b db $c4, $1c db $e0, $1d db $f6, $1e db $ff, $1f db $ff, $20 ; 53d9c UnknownEggPic:: ; 53d9c ; Another egg pic. This is shifted up a few pixels. INCBIN "gfx/misc/unknown_egg.5x5.2bpp.lz" ; 53e2e SECTION "bank19", ROMX, BANK[$19] INCLUDE "text/phone/extra.asm" SECTION "bank20", ROMX, BANK[$20] DoPlayerMovement:: ; 80000 call GetMovementInput ld a, $3e ; standing ld [MovementAnimation], a xor a ld [wd041], a call GetPlayerMovement ld c, a ld a, [MovementAnimation] ld [wc2de], a ret ; 80017 GetMovementInput: ; 80017 ld a, [hJoyDown] ld [CurInput], a ; Standing downhill instead moves down. ld hl, BikeFlags bit 2, [hl] ; downhill ret z ld c, a and D_PAD ret nz ld a, c or D_DOWN ld [CurInput], a ret ; 8002d GetPlayerMovement: ; 8002d ld a, [PlayerState] cp PLAYER_NORMAL jr z, .Normal cp PLAYER_SURF jr z, .Surf cp PLAYER_SURF_PIKA jr z, .Surf cp PLAYER_BIKE jr z, .Normal cp PLAYER_SLIP jr z, .Board .Normal call CheckForcedMovementInput call GetMovementAction call CheckTileMovement ret c call CheckTurning ret c call TryStep ret c call TryJumpLedge ret c call CheckEdgeWarp ret c jr .NotMoving .Surf call CheckForcedMovementInput call GetMovementAction call CheckTileMovement ret c call CheckTurning ret c call TrySurfStep ret c jr .NotMoving .Board call CheckForcedMovementInput call GetMovementAction call CheckTileMovement ret c call CheckTurning ret c call TryStep ret c call TryJumpLedge ret c call CheckEdgeWarp ret c ld a, [WalkingDirection] cp STANDING jr z, .HitWall call PlayBump .HitWall call StandInPlace xor a ret .NotMoving ld a, [WalkingDirection] cp STANDING jr z, .Standing ; Walking into an edge warp won't bump. ld a, [wd041] and a jr nz, .CantMove call PlayBump .CantMove call WalkInPlace xor a ret .Standing call StandInPlace xor a ret ; 800b7 CheckTileMovement: ; 800b7 ; Tiles such as waterfalls and warps move the player ; in a given direction, overriding input. ld a, [PlayerStandingTile] ld c, a call CheckWhirlpoolTile jr c, .asm_800c4 ld a, 3 scf ret .asm_800c4 and $f0 cp $30 ; moving water jr z, .water cp $40 ; moving land 1 jr z, .land1 cp $50 ; moving land 2 jr z, .land2 cp $70 ; warps jr z, .warps jr .asm_8013c .water ld a, c and 3 ld c, a ld b, 0 ld hl, .water_table add hl, bc ld a, [hl] ld [WalkingDirection], a jr .asm_8013e .water_table db RIGHT db LEFT db UP db DOWN .land1 ld a, c and 7 ld c, a ld b, 0 ld hl, .land1_table add hl, bc ld a, [hl] cp STANDING jr z, .asm_8013c ld [WalkingDirection], a jr .asm_8013e .land1_table db STANDING db RIGHT db LEFT db UP db DOWN db STANDING db STANDING db STANDING .land2 ld a, c and 7 ld c, a ld b, 0 ld hl, .land2_table add hl, bc ld a, [hl] cp STANDING jr z, .asm_8013c ld [WalkingDirection], a jr .asm_8013e .land2_table db RIGHT db LEFT db UP db DOWN db STANDING db STANDING db STANDING db STANDING .warps ld a, c cp $71 ; door jr z, .down cp $79 jr z, .down cp $7a ; stairs jr z, .down cp $7b ; cave jr nz, .asm_8013c .down ld a, DOWN ld [WalkingDirection], a jr .asm_8013e .asm_8013c xor a ret .asm_8013e ld a, STEP_WALK call DoStep ld a, 5 scf ret ; 80147 CheckTurning: ; 80147 ; If the player is turning, change direction first. This also lets ; the player change facing without moving by tapping a direction. ld a, [wd04e] cp 0 jr nz, .asm_80169 ld a, [WalkingDirection] cp STANDING jr z, .asm_80169 ld e, a ld a, [PlayerDirection] rrca rrca and 3 cp e jr z, .asm_80169 ld a, STEP_TURN call DoStep ld a, 2 scf ret .asm_80169 xor a ret ; 8016b TryStep: ; 8016b ; Surfing actually calls TrySurfStep directly instead of passing through here. ld a, [PlayerState] cp PLAYER_SURF jr z, TrySurfStep cp PLAYER_SURF_PIKA jr z, TrySurfStep call CheckLandPermissions jr c, .asm_801be call IsNPCInFront and a jr z, .asm_801be cp 2 jr z, .asm_801be ld a, [PlayerStandingTile] call CheckIceTile jr nc, .ice ; Downhill riding is slower when not moving down. call CheckRiding jr nz, .asm_801ae ld hl, BikeFlags bit 2, [hl] ; downhill jr z, .fast ld a, [WalkingDirection] cp DOWN jr z, .fast ld a, STEP_WALK call DoStep scf ret .fast ld a, STEP_BIKE call DoStep scf ret .asm_801ae ld a, STEP_WALK call DoStep scf ret .ice ld a, STEP_ICE call DoStep scf ret ; unused? xor a ret .asm_801be xor a ret ; 801c0 TrySurfStep: ; 801c0 call CheckWaterPermissions ld [wd040], a jr c, .bump call IsNPCInFront ld [wd03f], a and a jr z, .bump cp 2 jr z, .bump ld a, [wd040] and a jr nz, .ExitWater ld a, STEP_WALK call DoStep scf ret .ExitWater call WaterToLandSprite call PlayMapMusic ld a, STEP_WALK call DoStep ld a, 6 scf ret .bump xor a ret ; 801f3 TryJumpLedge: ; 801f3 ld a, [PlayerStandingTile] ld e, a and $f0 cp $a0 ; ledge jr nz, .DontJump ld a, e and 7 ld e, a ld d, 0 ld hl, .data_8021e add hl, de ld a, [FacingDirection] and [hl] jr z, .DontJump ld de, SFX_JUMP_OVER_LEDGE call PlaySFX ld a, STEP_LEDGE call DoStep ld a, 7 scf ret .DontJump xor a ret .data_8021e db FACE_RIGHT db FACE_LEFT db FACE_UP db FACE_DOWN db FACE_RIGHT | FACE_DOWN db FACE_DOWN | FACE_LEFT db FACE_UP | FACE_RIGHT db FACE_UP | FACE_LEFT ; 80226 CheckEdgeWarp: ; 80226 ; Bug: Since no case is made for STANDING here, it will check ; [.edgewarps + $ff]. This resolves to $3e at $8035a. ; This causes wd041 to be nonzero when standing on tile $3e, ; making bumps silent. ld a, [WalkingDirection] ld e, a ld d, 0 ld hl, .EdgeWarps add hl, de ld a, [PlayerStandingTile] cp [hl] jr nz, .asm_80259 ld a, 1 ld [wd041], a ld a, [WalkingDirection] cp STANDING jr z, .asm_80259 ld e, a ld a, [PlayerDirection] rrca rrca and 3 cp e jr nz, .asm_80259 call Function224a ; CheckFallPit? jr nc, .asm_80259 call StandInPlace scf ld a, 1 ret .asm_80259 xor a ret .EdgeWarps db $70, $78, $76, $7e ; 8025f DoStep: ; 8025f ld e, a ld d, 0 ld hl, .Steps rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ld a, [WalkingDirection] ld e, a cp STANDING jp z, StandInPlace add hl, de ld a, [hl] ld [MovementAnimation], a ld hl, .WalkInPlace add hl, de ld a, [hl] ld [wd04e], a ld a, 4 ret .Steps dw .Slow dw .Walk dw .Bike dw .Ledge dw .Ice dw .Turn dw .BackwardsLedge dw .WalkInPlace .Slow db $08, $09, $0a, $0b .Walk db $0c, $0d, $0e, $0f .Bike db $10, $11, $12, $13 .Ledge db $30, $31, $32, $33 .Ice db $1c, $1d, $1e, $1f .BackwardsLedge db $31, $30, $33, $32 .Turn db $04, $05, $06, $07 .WalkInPlace db $80, $81, $82, $83 ; 802b3 StandInPlace: ; 802b3 ld a, 0 ld [wd04e], a ld a, $3e ; standing ld [MovementAnimation], a xor a ret ; 802bf WalkInPlace: ; 802bf ld a, 0 ld [wd04e], a ld a, $50 ; walking ld [MovementAnimation], a xor a ret ; 802cb CheckForcedMovementInput: ; 802cb ; When sliding on ice, input is forced to remain in the same direction. call Function80404 ret nc ld a, [wd04e] cp 0 ret z and 3 ld e, a ld d, 0 ld hl, .data_802e8 add hl, de ld a, [CurInput] and A_BUTTON | B_BUTTON | SELECT | START or [hl] ld [CurInput], a ret .data_802e8 db D_DOWN, D_UP, D_LEFT, D_RIGHT ; 802ec GetMovementAction: ; 802ec ; Poll player input and update movement info. ld hl, .table ld de, .table2 - .table1 ld a, [CurInput] bit 7, a jr nz, .down bit 6, a jr nz, .up bit 5, a jr nz, .left bit 4, a jr nz, .right ; Standing jr .update .down add hl, de .up add hl, de .left add hl, de .right add hl, de .update ld a, [hli] ld [WalkingDirection], a ld a, [hli] ld [FacingDirection], a ld a, [hli] ld [WalkingX], a ld a, [hli] ld [WalkingY], a ld a, [hli] ld h, [hl] ld l, a ld a, [hl] ld [WalkingTile], a ret .table ; struct: ; walk direction ; facing ; x movement ; y movement ; tile collision pointer .table1 db STANDING, FACE_CURRENT, 0, 0 dw PlayerStandingTile .table2 db RIGHT, FACE_RIGHT, 1, 0 dw TileRight db LEFT, FACE_LEFT, -1, 0 dw TileLeft db UP, FACE_UP, 0, -1 dw TileUp db DOWN, FACE_DOWN, 0, 1 dw TileDown ; 80341 IsNPCInFront: ; 80341 ld a, 0 ld [hMapObjectIndexBuffer], a ld a, [PlayerMapX] ld d, a ld a, [WalkingX] add d ld d, a ld a, [PlayerMapY] ld e, a ld a, [WalkingY] add e ld e, a ld bc, ObjectStructs ; redundant callba Function7041 jr nc, .asm_80369 call Function8036f jr c, .asm_8036c xor a ret .asm_80369 ld a, 1 ret .asm_8036c ld a, 2 ret ; 8036f Function8036f: ; 8036f ld hl, BikeFlags bit 0, [hl] jr z, .asm_8039c ld hl, $7 add hl, bc ld a, [hl] cp $ff jr nz, .asm_8039c ld hl, $6 add hl, bc bit 6, [hl] jr z, .asm_8039c ld hl, $5 add hl, bc set 2, [hl] ld a, [WalkingDirection] ld d, a ld hl, $20 add hl, bc ld a, [hl] and $fc or d ld [hl], a scf ret .asm_8039c xor a ret ; 8039e CheckLandPermissions: ; 8039e ; Return 0 if walking onto land and tile permissions allow it. ; Otherwise, return carry. ld a, [TilePermissions] ld d, a ld a, [FacingDirection] and d jr nz, .NotWalkable ld a, [WalkingTile] call CheckWalkable jr c, .NotWalkable xor a ret .NotWalkable scf ret ; 803b4 CheckWaterPermissions: ; 803b4 ; Return 0 if moving in water, or 1 if moving onto land. ; Otherwise, return carry. ld a, [TilePermissions] ld d, a ld a, [FacingDirection] and d jr nz, .NotSurfable ld a, [WalkingTile] call CheckSurfable jr c, .NotSurfable and a ret .NotSurfable scf ret ; 803ca CheckRiding: ; 803ca ld a, [PlayerState] cp PLAYER_BIKE ret z cp PLAYER_SLIP ret ; 803d3 CheckWalkable: ; 803d3 ; Return 0 if tile a is land. Otherwise, return carry. call GetTileCollision and a ; land ret z scf ret ; 803da CheckSurfable: ; 803da ; Return 0 if tile a is water, or 1 if land. ; Otherwise, return carry. call GetTileCollision cp 1 jr z, .Water ; Can walk back onto land from water. and a jr z, .Land jr .Neither .Water xor a ret .Land ld a, 1 and a ret .Neither scf ret ; 803ee PlayBump: ; 803ee call CheckSFX ret c ld de, SFX_BUMP call PlaySFX ret ; 803f9 WaterToLandSprite: ; 803f9 push bc ld a, PLAYER_NORMAL ld [PlayerState], a call ReplaceKrisSprite ; UpdateSprites pop bc ret ; 80404 Function80404:: ; 80404 ld a, [wd04e] cp 0 jr z, .asm_80420 cp $f0 jr z, .asm_80420 ld a, [PlayerStandingTile] call CheckIceTile jr nc, .asm_8041e ld a, [PlayerState] cp PLAYER_SLIP jr nz, .asm_80420 .asm_8041e scf ret .asm_80420 and a ret ; 80422 Function80422:: ; 80422 ld hl, wc2de ld a, $3e ; standing cp [hl] ret z ld [hl], a ld a, 0 ld [wd04e], a ret ; 80430 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 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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, [DefaultFlypoint] 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 Function378b ld de, VTiles2 tile $31 predef GetBackpic ld a, $31 ld [$ffad], 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 [$ffad], 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, [DefaultFlypoint] 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 Function2173 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, Unkn1Pals 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 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 ; $ff00+$1 ld a, $1 ld [rSC], a ; $ff00+$2 ld a, $81 ld [rSC], a ; $ff00+$2 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, $ 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] ; $ff00+$1 ld [wca88], a ld a, $0 call Function843db call Function8432a ret Function843b6: ; 843b6 (21:43b6) ld a, [rSB] ; $ff00+$1 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 ; $ff00+$1 ld a, $1 ld [rSC], a ; $ff00+$2 ld a, $81 ld [rSC], a ; $ff00+$2 ret Function843e6: ; 843e6 (21:43e6) ld a, [rSB] ; $ff00+$1 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 Function222a 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, $c 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] ; $ff00+$ff push af xor a ld [rIF], a ; $ff00+$f ld a, $9 ld [rIE], a ; $ff00+$ff ld hl, hVBlank ld a, [hl] push af ld [hl], $4 xor a ld [hBGMapMode], a ; $ff00+$d4 call Function84817 ld a, $10 call Function84419 call Function84559 jr c, .asm_84545 call Function84411 ld c, $c call DelayFrames xor a ld [hBGMapMode], a ; $ff00+$d4 call Function8486f ld a, $0 call Function84419 call Function84559 jr c, .asm_84545 call Function84411 ld c, $c call DelayFrames xor a ld [hBGMapMode], a ; $ff00+$d4 call Function84893 ld a, $0 call Function84419 call Function84559 jr c, .asm_84545 call Function84411 ld c, $c call DelayFrames xor a ld [hBGMapMode], a ; $ff00+$d4 call Function848b7 ld a, $3 call Function84419 call Function84559 .asm_84545 pop af ld [hVBlank], a call Function84411 xor a ld [rIF], a ; $ff00+$f pop af ld [rIE], a ; $ff00+$ff 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, $c 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, $c 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, [DefaultFlypoint] 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, [DefaultFlypoint] call AddNTimes ld a, [hl] pop hl call Function383d .ok2 ld hl, DefaultFlypoint 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, [DefaultFlypoint] call AddNTimes ld de, TempMonDVs ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a ld a, [DefaultFlypoint] 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 "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 FadeBlackBGMap 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 FadeBlackBGMap 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 WhiteBGMap 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 [$ffad], 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 Function378b 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 WhiteBGMap 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 Function378b 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 WhiteBGMap 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 [$ffad], 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 [$ffad], 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 SECTION "bank22", ROMX, BANK[$22] INCLUDE "event/kurt.asm" Function88248: ; 88248 ld c, CAL ld a, [PlayerGender] bit 0, a jr z, .okay ld c, KAREN .okay ld a, c ld [TrainerClass], a ret ; 88258 MovePlayerPicRight: ; 88258 hlcoord 6, 4 ld de, 1 jr MovePlayerPic MovePlayerPicLeft: ; 88260 hlcoord 13, 4 ld de, -1 ; fallthrough MovePlayerPic: ; 88266 ; Move player pic at hl by de * 7 tiles. ld c, $8 .loop push bc push hl push de xor a ld [hBGMapMode], a lb bc, 7, 7 predef FillBox xor a ld [hBGMapThird], a call WaitBGMap call DelayFrame pop de pop hl add hl, de pop bc dec c ret z push hl push bc ld a, l sub e ld l, a ld a, h sbc d ld h, a lb bc, 7, 7 call ClearBox pop bc pop hl jr .loop ; 88297 ShowPlayerNamingChoices: ; 88297 ld hl, ChrisNameMenuHeader ld a, [PlayerGender] bit 0, a jr z, .GotGender ld hl, KrisNameMenuHeader .GotGender call LoadMenuDataHeader call InterpretMenu2 ld a, [MenuSelection2] dec a call Function1db8 call WriteBackup ret ; 882b5 ChrisNameMenuHeader: ; 882b5 db $40 ; flags db 00, 00 ; start coords db 11, 10 ; end coords dw MenuData2_0x882be db 1 ; ???? db 0 ; default option ; 882be MenuData2_0x882be: ; 882be db $91 ; flags db 5 ; items db "NEW NAME@" Unknown_882c9: ; 882c9 db "CHRIS@" db "MAT@" db "ALLAN@" db "JON@" db 2 ; displacement db " NAME @" ; title ; 882e5 KrisNameMenuHeader: ; 882e5 db $40 ; flags db 00, 00 ; start coords db 11, 10 ; end coords dw MenuData2_0x882ee db 1 ; ???? db 0 ; default option ; 882ee MenuData2_0x882ee: ; 882ee db $91 ; flags db 5 ; items db "NEW NAME@" Unknown_882f9: ; 882f9 db "KRIS@" db "AMANDA@" db "JUANA@" db "JODI@" db 2 ; displacement db " NAME @" ; title ; 88318 GetPlayerNameArray: ; 88318 This Function is never called ld hl, PlayerName ld de, Unknown_882c9 ld a, [PlayerGender] bit 0, a jr z, .done ld de, Unknown_882f9 .done call InitName ret ; 8832c GetPlayerIcon: ; 8832c ; Get the player icon corresponding to gender ; Male ld de, ChrisSpriteGFX ld b, BANK(ChrisSpriteGFX) ld a, [PlayerGender] bit 0, a jr z, .done ; Female ld de, KrisSpriteGFX ld b, BANK(KrisSpriteGFX) .done ret ; 8833e Function8833e: ; 8833e ld hl, ChrisCardPic ld a, [PlayerGender] bit 0, a jr z, .GotClass ld hl, KrisCardPic .GotClass ld de, VTiles2 tile $00 ld bc, $230 ld a, BANK(ChrisCardPic) ; BANK(KrisCardPic) call FarCopyBytes ld hl, CardGFX ld de, VTiles2 tile $23 ld bc, $60 ld a, BANK(CardGFX) call FarCopyBytes ret ; 88365 (22:4365) ChrisCardPic: ; 88365 INCBIN "gfx/misc/chris_card.5x7.2bpp" ; 88595 KrisCardPic: ; 88595 INCBIN "gfx/misc/kris_card.5x7.2bpp" ; 887c5 CardGFX: ; 887c5 INCBIN "gfx/misc/trainer_card.2bpp" ; 88825 GetPlayerBackpic: ; 88825 ld a, [PlayerGender] bit 0, a jr z, GetChrisBackpic call GetKrisBackpic ret GetChrisBackpic: ; 88830 ld hl, ChrisBackpic ld b, BANK(ChrisBackpic) ld de, VTiles2 tile $31 ld c, 7 * 7 predef DecompressPredef ret ; 88840 Function88840: ; 88840 call WaitBGMap xor a ld [hBGMapMode], a ld e, 0 ld a, [PlayerGender] bit 0, a jr z, .GotClass ld e, 1 .GotClass ld a, e ld [TrainerClass], a ld de, ChrisPic ld a, [PlayerGender] bit 0, a jr z, .GotPic ld de, KrisPic .GotPic ld hl, VTiles2 ld b, BANK(ChrisPic) ; BANK(KrisPic) ld c, 7 * 7 call Get2bpp call WaitBGMap ld a, $1 ld [hBGMapMode], a ret ; 88874 DrawIntroPlayerPic: ; 88874 ; Draw the player pic at (6,4). ; Get class ld e, 0 ld a, [PlayerGender] bit 0, a jr z, .GotClass ld e, 1 .GotClass ld a, e ld [TrainerClass], a ; Load pic ld de, ChrisPic ld a, [PlayerGender] bit 0, a jr z, .GotPic ld de, KrisPic .GotPic ld hl, VTiles2 ld b, BANK(ChrisPic) ; BANK(KrisPic) ld c, 7 * 7 ; dimensions call Get2bpp ; Draw xor a ld [$ffad], a hlcoord 6, 4 lb bc, 7, 7 predef FillBox ret ; 888a9 ChrisPic: ; 888a9 INCBIN "gfx/misc/chris.7x7.2bpp" ; 88bb9 KrisPic: ; 88bb9 INCBIN "gfx/misc/kris.7x7.2bpp" ; 88ec9 GetKrisBackpic: ; 88ec9 ; Kris's backpic is uncompressed. ld de, KrisBackpic ld hl, VTiles2 tile $31 lb bc, BANK(KrisBackpic), 7 * 7 ; dimensions call Get2bpp ret ; 88ed6 KrisBackpic: ; 88ed6 INCBIN "gfx/misc/kris_back.6x6.2bpp" ; 89116 String_89116: db "-----@" ; 8911c INCLUDE "misc/mobile_22.asm" INCLUDE "event/unown.asm" INCLUDE "event/buena.asm" INCLUDE "event/dratini.asm" INCLUDE "event/battle_tower.asm" INCLUDE "misc/mobile_22_2.asm" SECTION "bank23", ROMX, BANK[$23] Predef35: ; 8c000 Predef36: ret ; 8c001 INCLUDE "engine/timeofdaypals.asm" INCLUDE "engine/battle_start.asm" Function8c7c9: ; unreferenced ld a, $1 ld [hBGMapMode], a call WaitBGMap xor a ld [hBGMapMode], a ret ; 8c7d4 Function8c7d4: ; 8c7d4 call WaitSFX ld de, SFX_SURF call PlaySFX call WaitSFX ret ; 8c7e1 BlindingFlash: ; 8c7e1 callba FadeBlackBGMap ld hl, StatusFlags set 2, [hl] callba Function8c0e5 callba Function8c001 ld b, $9 call GetSGBLayout callba Function49409 callba FadeInBGMap ret ; 8c80a ShakeHeadbuttTree: ; 8c80a callba Function8cf53 ld de, GFX_8c9cc ld hl, VTiles1 lb bc, BANK(GFX_8c9cc), 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 Function2173 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 ; 8c940 Function8c940: ; 8c940 ld a, e and $1 ld [wJumptableIndex], a call Function8c96d call WaitSFX ld de, SFX_PLACE_PUZZLE_PIECE_DOWN call PlaySFX .asm_8c952 ld a, [wJumptableIndex] bit 7, a jr nz, .asm_8c96c ld a, $90 ld [wc3b5], a callab Function8cf7a call Function8ca0c call DelayFrame jr .asm_8c952 .asm_8c96c ret ; 8c96d Function8c96d: ; 8c96d callab Function8cf53 ld de, GFX_8c9cc ld hl, VTiles1 lb bc, BANK(GFX_8c9cc), 4 call Request2bpp ld de, CutTreeGFX ld hl, VTiles1 + $40 lb bc, BANK(CutTreeGFX), 4 call Request2bpp ret ; 8c98c CutTreeGFX: ; c898c INCBIN "gfx/unknown/08c98c.2bpp" ; c89cc GFX_8c9cc: ; 8c9cc INCBIN "gfx/unknown/08c9cc.2bpp" ; 8ca0c Function8ca0c: ; 8ca0c ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, Jumptable_8ca1b rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 8ca1b Jumptable_8ca1b: ; 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 ; $ff00+$d4 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, $ 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 Function8caed: ; 8caed call DelayFrame ld a, [VramState] push af xor a ld [VramState], a call Function8cb9b ld de, $5450 ld a, $a call Function3b2a ld hl, $3 add hl, bc ld [hl], $84 ld hl, $2 add hl, bc ld [hl], $16 ld a, $80 ld [wcf64], a .asm_8cb14 ld a, [wJumptableIndex] bit 7, a jr nz, .asm_8cb2e ld a, $0 ld [wc3b5], a callab Function8cf7a call Function8cbc8 call DelayFrame jr .asm_8cb14 .asm_8cb2e pop af ld [VramState], a ret ; 8cb33 Function8cb33: ; 8cb33 call DelayFrame ld a, [VramState] push af xor a ld [VramState], a call Function8cb9b ld de, $fc50 ld a, $a call Function3b2a ld hl, $3 add hl, bc ld [hl], $84 ld hl, $2 add hl, bc ld [hl], $18 ld hl, $f add hl, bc ld [hl], $58 ld a, $40 ld [wcf64], a .asm_8cb60 ld a, [wJumptableIndex] bit 7, a jr nz, .asm_8cb7a ld a, $0 ld [wc3b5], a callab Function8cf7a call Function8cbc8 call DelayFrame jr .asm_8cb60 .asm_8cb7a pop af ld [VramState], a call Function8cb82 ret Function8cb82: ; 8cb82 (23:4b82) ld hl, Sprites + 2 xor a ld c, $4 .asm_8cb88 ld [hli], a rept 3 inc hl endr inc a dec c jr nz, .asm_8cb88 ld hl, Sprites + $10 ld bc, $90 xor a call ByteFill ret Function8cb9b: ; 8cb9b (23:4b9b) callab Function8cf53 ld de, GFX_8c9cc ld hl, VTiles1 tile $00 lb bc, BANK(GFX_8c9cc), 4 call Request2bpp ld a, [CurPartyMon] ld hl, PartySpecies ld e, a ld d, 0 add hl, de ld a, [hl] ld [wd265], a ld e, $84 callba Function8e9bc xor a ld [wJumptableIndex], a ret Function8cbc8: ; 8cbc8 (23:4bc8) call Function8cbe6 ld hl, wcf64 ld a, [hl] and a jr z, .asm_8cbe0 dec [hl] cp $40 ret c and $7 ret nz ld de, SFX_FLY call PlaySFX ret .asm_8cbe0 ld hl, wJumptableIndex set 7, [hl] ret Function8cbe6: ; 8cbe6 (23:4be6) 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 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 WhiteBGMap 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 WhiteBGMap 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, [wd195] 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 Function8cf4f: ; 8cf4f call Function3238 ret ; 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, wPartyMonMenuIconAnims ld e, 10 ; Do this first loop 10 times .loop ld a, [hl] and a jr z, .next ; Done with this iteration ld c, l ld b, h push hl push de call Function8d24b 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 % $0100 jr nc, .done xor a ld [hli], a jr .loop2 .done ret ; 8cfa8 Function8cfa8: ; 8cfa8 (23:4fa8) ld hl, wPartyMonMenuIconAnims ld e, 10 .loop ld a, [hl] and a jr z, .next ld c, l ld b, h push hl push de call Function8d24b 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 / $100 .loop2 ld a, l cp 4 * 16 jr nc, .done xor a ld [hli], a jr .loop2 .done ret Function8cfd6:: ; 8cfd6 push de push af ld hl, wPartyMonMenuIconAnims ld e, 2 * 4 + 2 ; 4 tiles for each frame, then one frame each for mail and item .loop ld a, [hl] and a jr z, .found ld bc, $10 add hl, bc dec e jr nz, .loop pop af pop de scf ret .found ld c, l ld b, h ld hl, wc3b4 inc [hl] ld a, [hl] and a jr nz, .initialized inc [hl] .initialized pop af ld e, a ld d, 0 ld hl, Unknown_8d1c4 rept 3 add hl, de endr ld e, l ld d, h ld hl, 0 add hl, bc ld a, [wc3b4] ld [hli], a ; read from the table ld a, [de] ld [hli], a inc de ld a, [de] ld [hli], a inc de ld a, [de] call Function8d109 ld [hli], a pop de ld hl, $4 add hl, bc ld a, e ld [hli], a ld a, d ld [hli], a xor a rept 2 ld [hli], a endr xor a rept 2 ld [hli], a endr dec a ld [hli], a xor a rept 4 ld [hli], a endr ld [hl], a ld a, c ld [wc3b8], a ld a, b ld [wc3b9], a ret ; 8d036 Function8d036: ; 8d036 ld hl, 0 add hl, bc ld [hl], $0 ret ; 8d03d Function8d03d: ; 8d03d (23:503d) ld hl, wPartyMonMenuIconAnims ld bc, $10 ld e, $a 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 $fd jr z, .done cp $fc 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 Function8d109: ; 8d109 push hl push bc ld hl, wc300 ld b, a ld c, $a .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, $01, $00 ; 00 db $07, $04, $00 ; 01 db $08, $05, $05 ; 02 db $0a, $06, $00 ; 03 db $0b, $07, $06 ; 04 db $0c, $08, $06 ; 05 db $0d, $09, $07 ; 06 db $0e, $0a, $07 ; 07 db $10, $0b, $07 ; 08 db $08, $0c, $05 ; 09 db $11, $00, $00 ; 0a db $12, $0d, $08 ; 0b db $12, $0e, $08 ; 0c db $12, $0f, $08 ; 0d db $13, $10, $00 ; 0e db $15, $00, $00 ; 0f db $16, $11, $00 ; 10 db $17, $12, $00 ; 11 db $18, $12, $00 ; 12 db $19, $13, $00 ; 13 db $1a, $14, $00 ; 14 db $1b, $00, $00 ; 15 db $1d, $15, $00 ; 16 db $1e, $00, $00 ; 17 db $1d, $17, $00 ; 18 db $1f, $00, $00 ; 19 db $24, $19, $00 ; 1a db $25, $00, $00 ; 1b db $20, $13, $00 ; 1c db $26, $1a, $00 ; 1d db $2d, $00, $00 ; 1e db $2e, $00, $00 ; 1f db $2f, $00, $00 ; 20 db $30, $00, $00 ; 21 db $31, $00, $00 ; 22 db $32, $1b, $00 ; 23 db $33, $1c, $00 ; 24 db $34, $00, $00 ; 25 db $35, $1d, $00 ; 26 db $37, $1e, $00 ; 27 db $38, $1e, $00 ; 28 db $39, $20, $00 ; 29 db $3f, $21, $00 ; 2a db $3e, $22, $00 ; 2b db $40, $00, $00 ; 2c ; 8d24b Function8d24b: ; 8d24b ld hl, $2 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, $ 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, $ 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] 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 Function50117 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, wPartyMonMenuIconAnims 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, wPartyMonMenuIconAnims 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, wPartyMonMenuIconAnims 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" 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 ; $ff00+$d4 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, $a 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 Functiona80 pop af ld [hInMenu], a ret .ClearScreen: ; 90783 (24:4783) xor a ld [hBGMapMode], a ; $ff00+$d4 hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH xor a call ByteFill ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 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] ; $ff00+$a7 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 [DefaultFlypoint], a .asm_90936 hlcoord 0, 12 lb bc, 4, 18 call TextBox call LoadMenuDataHeader_0x1d75 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, $a 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, [DefaultFlypoint] 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] ; $ff00+$94 ld b, a ld a, [hMinutes] ; $ff00+$96 ld c, a decoord 1, 14 callba Function1dd6bb 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 Function1dd6bb 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 WhiteBGMap 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 WhiteBGMap 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] ; $ff00+$e6 and a jr z, .asm_90e0e ld a, $2 ld [hBGMapMode], a ; $ff00+$d4 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 ; $ff00+$d4 call Function90f86 ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 ret Function90f86: ; 90f86 (24:4f86) hlcoord 3, 5 lb bc, 5, 14 call ClearBox ld a, [hHours] ; $ff00+$94 ld b, a ld a, [hMinutes] ; $ff00+$96 ld c, a decoord 6, 8 callba Function1dd6bb 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] ; $ff00+$a7 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, wPartyMonMenuIconAnims + 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 WhiteBGMap 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 WhiteBGMap 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 _FlyMap: ; 91af3 call WhiteBGMap 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 FlyMap call Function91c8f 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 FlyMapScroll call GetMapCursorCoordinates callba Function8cf69 call DelayFrame jr .loop .pressedB ld a, -1 jr .exit .pressedA ld a, [DefaultFlypoint] ld l, a ld h, 0 add hl, hl ld de, Flypoints + 1 add hl, de ld a, [hl] .exit ld [DefaultFlypoint], a pop af ld [hInMenu], a call WhiteBGMap ld a, $90 ld [hWY], a xor a ld [hBGMapAddress], a ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a ld a, [DefaultFlypoint] ld e, a ret ; 91b73 FlyMapScroll: ; 91b73 ld a, [StartFlypoint] ld e, a ld a, [EndFlypoint] ld d, a ld hl, hJoyLast ld a, [hl] and D_UP jr nz, .ScrollNext ld a, [hl] and D_DOWN jr nz, .ScrollPrev ret .ScrollNext ld hl, DefaultFlypoint ld a, [hl] cp d jr nz, .NotAtEndYet ld a, e dec a ld [hl], a .NotAtEndYet inc [hl] call CheckIfVisitedFlypoint jr z, .ScrollNext jr .Finally .ScrollPrev ld hl, DefaultFlypoint ld a, [hl] cp e jr nz, .NotAtStartYet ld a, d inc a ld [hl], a .NotAtStartYet dec [hl] call CheckIfVisitedFlypoint jr z, .ScrollPrev .Finally call TownMapBubble call WaitBGMap xor a ld [hBGMapMode], a ret ; 91bb5 TownMapBubble: ; 91bb5 ; Draw the bubble containing the location text in the town map HUD ; Top-left corner hlcoord 1, 0 ld a, $30 ld [hli], a ; Top row ld bc, 16 ld a, " " call ByteFill ; Top-right corner ld a, $31 ld [hl], a hlcoord 1, 1 ; Middle row ld bc, 18 ld a, " " call ByteFill ; Bottom-left corner hlcoord 1, 2 ld a, $32 ld [hli], a ; Bottom row ld bc, 16 ld a, " " call ByteFill ; Bottom-right corner ld a, $33 ld [hl], a ; Print "Where?" hlcoord 2, 0 ld de, .Where call PlaceString ; Print the name of the default flypoint call .Name ; Up/down arrows hlcoord 18, 1 ld [hl], $34 ret .Where db "Where?@" .Name ; We need the map location of the default flypoint ld a, [DefaultFlypoint] ld l, a ld h, 0 add hl, hl ; two bytes per flypoint ld de, Flypoints add hl, de ld e, [hl] callba GetLandmarkName hlcoord 2, 1 ld de, StringBuffer1 call PlaceString ret ; 91c17 GetMapCursorCoordinates: ; 91c17 ld a, [DefaultFlypoint] ld l, a ld h, $0 add hl, hl ld de, Flypoints add hl, de ld e, [hl] callba GetLandmarkCoords ld a, [wd003] ld c, a ld a, [wd004] ld b, a ld hl, $4 add hl, bc ld [hl], e ld hl, $5 add hl, bc ld [hl], d ret ; 91c3c CheckIfVisitedFlypoint: ; 91c3c ; Check if the flypoint loaded in [hl] has been visited yet. push bc push de push hl ld l, [hl] ld h, 0 add hl, hl ld de, Flypoints + 1 add hl, de ld c, [hl] call HasVisitedSpawn pop hl pop de pop bc and a ret ; 91c50 HasVisitedSpawn: ; 91c50 ; Check if spawn point c has been visited. ld hl, VisitedSpawns ld b, CHECK_FLAG ld d, 0 predef FlagPredef ld a, c ret ; 91c5e Flypoints: ; 91c5e ; landmark, spawn point const_def flypoint: MACRO ; \1\@FLY EQUS "FLY_\1" ; \1\@SPAWN EQUS "SPAWN_\1" ; const \1\@FLY ; db \2, \1\@SPAWN const FLY_\1 db \2, SPAWN_\1 ENDM ; Johto flypoint NEW_BARK, NEW_BARK_TOWN flypoint CHERRYGROVE, CHERRYGROVE_CITY flypoint VIOLET, VIOLET_CITY flypoint AZALEA, AZALEA_TOWN flypoint GOLDENROD, GOLDENROD_CITY flypoint ECRUTEAK, ECRUTEAK_CITY flypoint OLIVINE, OLIVINE_CITY flypoint CIANWOOD, CIANWOOD_CITY flypoint MAHOGANY, MAHOGANY_TOWN flypoint LAKE, LAKE_OF_RAGE flypoint BLACKTHORN, BLACKTHORN_CITY flypoint MT_SILVER, SILVER_CAVE ; Kanto KANTO_FLYPOINT EQU const_value flypoint PALLET, PALLET_TOWN flypoint VIRIDIAN, VIRIDIAN_CITY flypoint PEWTER, PEWTER_CITY flypoint CERULEAN, CERULEAN_CITY flypoint VERMILION, VERMILION_CITY flypoint ROCK_TUNNEL, ROCK_TUNNEL flypoint LAVENDER, LAVENDER_TOWN flypoint CELADON, CELADON_CITY flypoint SAFFRON, SAFFRON_CITY flypoint FUCHSIA, FUCHSIA_CITY flypoint CINNABAR, CINNABAR_ISLAND flypoint INDIGO, INDIGO_PLATEAU db -1 ; 91c8f Function91c8f: ; 91c8f ret ; 91c90 FlyMap: ; 91c90 ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a call GetWorldMapLocation ; If we're not in a valid location, i.e. Pokecenter floor 2F, ; the backup map information is used cp SPECIAL_MAP jr nz, .CheckRegion ld a, [BackupMapGroup] ld b, a ld a, [BackupMapNumber] ld c, a call GetWorldMapLocation .CheckRegion ; The first 46 locations are part of Johto. The rest are in Kanto cp KANTO_LANDMARK jr nc, .KantoFlyMap .JohtoFlyMap ; Note that .NoKanto should be modified in tandem with this branch push af ; Start from New Bark Town ld a, FLY_NEW_BARK ld [DefaultFlypoint], a ; Flypoints begin at New Bark Town... ld [StartFlypoint], a ; ..and end at Silver Cave ld a, FLY_MT_SILVER ld [EndFlypoint], a ; Fill out the map call FillJohtoMap call .MapHud pop af call TownMapPlayerIcon ret .KantoFlyMap ; The event that there are no flypoints enabled in a map is not ; accounted for. As a result, if you attempt to select a flypoint ; when there are none enabled, the game will crash. Additionally, ; the flypoint selection has a default starting point that ; can be flown to even if none are enabled ; To prevent both of these things from happening when the player ; enters Kanto, fly access is restricted until Indigo Plateau is ; visited and its flypoint enabled push af ld c, SPAWN_INDIGO call HasVisitedSpawn and a jr z, .NoKanto ; Kanto's map is only loaded if we've visited Indigo Plateau ; Flypoints begin at Pallet Town... ld a, FLY_PALLET ld [StartFlypoint], a ; ...and end at Indigo Plateau ld a, FLY_INDIGO ld [EndFlypoint], a ; Because Indigo Plateau is the first flypoint the player ; visits, it's made the default flypoint ld [DefaultFlypoint], a ; Fill out the map call FillKantoMap call .MapHud pop af call TownMapPlayerIcon ret .NoKanto ; If Indigo Plateau hasn't been visited, we use Johto's map instead ; Start from New Bark Town ld a, FLY_NEW_BARK ld [DefaultFlypoint], a ; Flypoints begin at New Bark Town... ld [StartFlypoint], a ; ..and end at Silver Cave ld a, FLY_MT_SILVER ld [EndFlypoint], a call FillJohtoMap pop af .MapHud call TownMapBubble call TownMapPals ld hl, VBGMap0 ; BG Map 0 call TownMapBGUpdate call TownMapMon ld a, c ld [wd003], a ld a, b ld [wd004], a ret ; 91d11 Function91d11: ; 91d11 ld a, [DefaultFlypoint] push af ld a, [wd003] push af ld a, e ld [DefaultFlypoint], a call ClearSprites xor a ld [hBGMapMode], a ld a, $1 ld [hInMenu], a ld de, GFX_922d1 ld hl, VTiles0 tile $7f lb bc, BANK(GFX_922d1), 1 call Request2bpp ; actually 1bpp call Function91ed0 ld hl, VTiles0 tile $78 ld c, $4 call Request2bpp call Function91ff2 call FillKantoMap call Function91de9 call TownMapPals ld hl, VBGMap1 call TownMapBGUpdate call FillJohtoMap call Function91de9 call TownMapPals ld hl, VBGMap0 call TownMapBGUpdate ld b, $2 call GetSGBLayout call SetPalettes xor a ld [hBGMapMode], a xor a call Function91e1e .asm_91d6e call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and A_BUTTON | B_BUTTON jr nz, .asm_91d8f ld a, [hJoypadDown] and SELECT jr nz, .asm_91d87 call Function91d9b call Function91dcd jr .asm_91d8a .asm_91d87 call Function91e5a .asm_91d8a call DelayFrame jr .asm_91d6e .asm_91d8f call ClearSprites pop af ld [wd003], a pop af ld [DefaultFlypoint], a ret ; 91d9b Function91d9b: ; 91d9b ld a, [hl] and $20 jr nz, .asm_91da6 ld a, [hl] and $10 jr nz, .asm_91db7 ret .asm_91da6 ld a, [hWY] cp $90 ret z call ClearSprites ld a, $90 ld [hWY], a xor a call Function91e1e ret .asm_91db7 ld a, [StatusFlags] bit 6, a ret z ld a, [hWY] and a ret z call ClearSprites xor a ld [hWY], a ld a, $1 call Function91e1e ret ; 91dcd Function91dcd: ; 91dcd ld a, [$ff9b] ld e, a and $f ret nz ld a, e and $10 jr nz, .asm_91ddc call ClearSprites ret .asm_91ddc hlcoord 0, 0 ld de, Sprites ld bc, $a0 call CopyBytes ret ; 91de9 Function91de9: ; 91de9 hlcoord 0, 0 ld bc, SCREEN_WIDTH ld a, $7f call ByteFill hlcoord 0, 1 ld a, $6 ld [hli], a ld bc, SCREEN_HEIGHT ld a, $7 call ByteFill ld [hl], $17 call GetPokemonName hlcoord 2, 0 call PlaceString ld h, b ld l, c ld de, String_91e16 call PlaceString ret ; 91e16 String_91e16: db "'S NEST@" ; 91e1e Function91e1e: ; 91e1e ld [wd003], a ld e, a callba Function2a01f decoord 0, 0 ld hl, Sprites .asm_91e2e ld a, [de] and a jr z, .asm_91e4d push de ld e, a push hl callba GetLandmarkCoords pop hl ld a, d sub $4 ld [hli], a ld a, e sub $4 ld [hli], a ld a, $7f ld [hli], a xor a ld [hli], a pop de inc de jr .asm_91e2e .asm_91e4d ld hl, Sprites decoord 0, 0 ld bc, $a0 call CopyBytes ret ; 91e5a Function91e5a: ; 91e5a call Function91ea9 ret c ld a, [DefaultFlypoint] ld e, a callba GetLandmarkCoords ld c, e ld b, d ld de, Unknown_91e9c ld hl, Sprites .asm_91e70 ld a, [de] cp $80 jr z, .asm_91e91 add b ld [hli], a inc de ld a, [de] add c ld [hli], a inc de ld a, [de] add $78 ld [hli], a inc de push bc ld c, 0 ld a, [PlayerGender] bit 0, a jr z, .asm_91e8c inc c .asm_91e8c ld a, c ld [hli], a pop bc jr .asm_91e70 .asm_91e91 ld hl, Sprites + $10 ld bc, SpritesEnd - (Sprites + $10) xor a call ByteFill ret ; 91e9c Unknown_91e9c: ; 91e9c db -8, -8, 0 db -8, 0, 1 db 0, -8, 2 db 0, 0, 3 db $80 ; terminator ; 91ea9 Function91ea9: ; 91ea9 ld a, [DefaultFlypoint] cp FAST_SHIP jr z, .johto cp KANTO_LANDMARK jr c, .johto .kanto ld a, [wd003] and a jr z, .clear jr .ok .johto ld a, [wd003] and a jr nz, .clear .ok and a ret .clear ld hl, Sprites ld bc, SpritesEnd - Sprites xor a call ByteFill scf ret ; 91ed0 Function91ed0: ; 91ed0 ld a, [DefaultFlypoint] cp FAST_SHIP jr z, .asm_91ede callba GetPlayerIcon ret .asm_91ede ld de, FastShipGFX ld b, BANK(FastShipGFX) ret ; 91ee4 TownMapBGUpdate: ; 91ee4 ; Update BG Map tiles and attributes ; BG Map address ld a, l ld [hBGMapAddress], a ld a, h ld [hBGMapAddress + 1], a ; Only update palettes on CGB ld a, [hCGB] and a jr z, .tiles ; BG Map mode 2 (palettes) ld a, 2 ld [hBGMapMode], a ; The BG Map is updated in thirds, so we wait ; 3 frames to update the whole screen's palettes. ld c, 3 call DelayFrames .tiles ; Update BG Map tiles call WaitBGMap ; Turn off BG Map update xor a ld [hBGMapMode], a ret ; 91eff FillJohtoMap: ; 91eff ld de, JohtoMap jr FillTownMap FillKantoMap: ; 91f04 ld de, KantoMap FillTownMap: ; 91f07 hlcoord 0, 0 .loop ld a, [de] cp $ff ret z ld a, [de] ld [hli], a inc de jr .loop ; 91f13 TownMapPals: ; 91f13 ; Assign palettes based on tile ids hlcoord 0, 0 decoord 0, 0, AttrMap ld bc, 360 .loop ; Current tile ld a, [hli] push hl ; HP/borders use palette 0 cp $60 jr nc, .pal0 ; The palette data is condensed to nybbles, ; least-significant first. ld hl, TownMapPalMap srl a jr c, .odd ; Even-numbered tile ids take the bottom nybble... add l ld l, a ld a, h adc 0 ld h, a ld a, [hl] and %111 jr .update .odd ; ...and odd ids take the top. add l ld l, a ld a, h adc 0 ld h, a ld a, [hl] swap a and %111 jr .update .pal0 xor a .update pop hl ld [de], a inc de dec bc ld a, b or c jr nz, .loop ret TownMapPalMap: db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 ; 91f7b TownMapMon: ; 91f7b ; Draw the FlyMon icon at town map location in ; Get FlyMon species ld a, [CurPartyMon] ld hl, PartySpecies ld e, a ld d, $0 add hl, de ld a, [hl] ld [wd265], a ; Get FlyMon icon ld e, 8 ; starting tile in VRAM callba GetSpeciesIcon ; Animation/palette ld de, 0 ld a, $0 call Function3b2a ld hl, 3 add hl, bc ld [hl], 8 ld hl, 2 add hl, bc ld [hl], 0 ret ; 91fa6 TownMapPlayerIcon: ; 91fa6 ; Draw the player icon at town map location in a push af callba GetPlayerIcon ; Standing icon ld hl, VTiles0 tile $10 ld c, 4 ; # tiles call Request2bpp ; Walking icon ld hl, $c0 add hl, de ld d, h ld e, l ld hl, VTiles0 tile $14 ld c, 4 ; # tiles ld a, BANK(ChrisSpriteGFX) ; does nothing call Request2bpp ; Animation/palette ld de, 0 ld b, $0a ; Male ld a, [PlayerGender] bit 0, a jr z, .asm_91fd3 ld b, $1e ; Female .asm_91fd3 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 ; 0x91ff2 Function91ff2: ; 91ff2 ld hl, TownMapGFX ld de, VTiles2 lb bc, BANK(TownMapGFX), $30 call DecompressRequest2bpp ret ; 91fff JohtoMap: ; 91fff INCBIN "gfx/misc/johto.bin" ; 92168 KantoMap: ; 92168 INCBIN "gfx/misc/kanto.bin" ; 922d1 GFX_922d1: ; 922d1 INCBIN "gfx/unknown/0922d1.2bpp" GFX_922e1: ; 922e1 INCBIN "gfx/unknown/0922e1.2bpp" GFX_92301: ; 92301 INCBIN "gfx/unknown/092301.2bpp" Function92311: ; 92311 xor a ld [DefaultFlypoint], a call WhiteBGMap 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, [DefaultFlypoint] ld l, a ld h, 0 add hl, hl ld de, Flypoints + 1 add hl, de ld a, [hl] .asm_9239f ld [DefaultFlypoint], a pop af ld [hInMenu], a call WhiteBGMap ld a, $90 ld [hWY], a xor a ld [hBGMapAddress], a ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a ld a, [DefaultFlypoint] 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, DefaultFlypoint ld a, [hl] cp FLY_INDIGO jr c, .asm_923d0 ld [hl], -1 .asm_923d0 inc [hl] jr .asm_923dd .asm_923d3 ld hl, DefaultFlypoint ld a, [hl] and a jr nz, .asm_923dc ld [hl], FLY_INDIGO + 1 .asm_923dc dec [hl] .asm_923dd ld a, [DefaultFlypoint] 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 "data/wild/fish.asm" _SlotMachine: ld hl, Options set 4, [hl] call Function926f7 call DelayFrame .asm_926d2 call Function927af jr nc, .asm_926d2 call WaitSFX ld de, SFX_QUIT_SLOTS call PlaySFX call WaitSFX call WhiteBGMap callba MobileFn_105fd0 ld hl, Options res 4, [hl] ld hl, rLCDC ; $ff40 res 2, [hl] ret Function926f7: ; 926f7 (24:66f7) call WhiteBGMap call ClearTileMap call ClearSprites ld de, MUSIC_NONE call PlayMusic call DelayFrame call DisableLCD ld hl, VBGMap0 tile $00 lb bc, 4, 0 ld a, $7f call ByteFill ld b, $5 call GetSGBLayout callab Function8cf53 ld hl, wc6d0 ld bc, $48 xor a call ByteFill ld hl, Slots2LZ ld de, VTiles0 tile $00 call Decompress ld hl, Slots3LZ ld de, VTiles0 tile $40 call Decompress ld hl, Slots1LZ ld de, VTiles2 tile $00 call Decompress ld hl, Slots2LZ ld de, VTiles2 tile $25 call Decompress ld hl, SlotsTilemap decoord 0, 0 ld bc, 20 * 12 call CopyBytes ld hl, rLCDC ; $ff40 set 2, [hl] call EnableLCD ld hl, wc6d0 ld bc, $64 xor a call ByteFill call Function92a98 call Function9279b ld a, $7 ld hl, wc300 ld [hli], a ld [hl], $40 xor a ld [wJumptableIndex], a ld a, $ff ld [wc709], a ld de, MUSIC_GAME_CORNER call PlayMusic xor a ld [wd002], a call Random and $2a ret nz ld a, $1 ld [wd002], a ret Function9279b: ; 9279b (24:679b) ld a, $e4 call DmgToCgbBGPals lb de, $e4, $e4 ld a, [hCGB] ; $ff00+$e6 and a jr nz, .asm_927ab lb de, $c0, $e4 .asm_927ab call DmgToCgbObjPals ret Function927af: ; 927af (24:67af) ld a, [wJumptableIndex] bit 7, a jr nz, .asm_927d1 call Function92844 call Function92b0f xor a ld [wc3b5], a callab Function8cfa8 call Function927f8 call Function927d3 call DelayFrame and a ret .asm_927d1 scf ret Function927d3: ; 927d3 (24:67d3) ret ; 927d4 (24:67d4) Function927d4: ; 927d4 ld a, [wc6d0] and a ret nz ld a, [wc6e0] and a ret nz ld a, [wc70c] and a jr nz, .asm_927ea ld a, $e4 call DmgToCgbBGPals ret .asm_927ea ld a, [TextDelayFrames] and $7 ret nz ld a, [rBGP] xor %1100 call DmgToCgbBGPals ret ; 927f8 Function927f8: ; 927f8 (24:67f8) hlcoord 5, 1 ld de, Coins lb bc, PRINTNUM_LEADINGZEROS | 2, 4 call PrintNum hlcoord 11, 1 ld de, wc711 lb bc, PRINTNUM_LEADINGZEROS | 2, 4 call PrintNum ret ; 92811 (24:6811) Function92811: ; 92811 ld a, [wc709] add 0 daa ld e, a and $f add "0" hlcoord 1, 0 ld [hl], a ld a, e swap a and $f add "0" hlcoord 0, 0 ld [hl], a ret ; 9282c Function9282c: ; 9282c ld hl, wcf66 ld a, [hl] inc [hl] and $7 ret nz ld hl, Sprites + $42 ld c, $18 .asm_92839 ld a, [hl] xor $20 ld [hli], a rept 3 inc hl endr dec c jr nz, .asm_92839 ret ; 92844 Function92844: ; 92844 (24:6844) ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, Jumptable_92853 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 92853 (24:6853) Jumptable_92853: ; 92853 (24:6853) dw Function9287e dw Function9288e dw Function928c6 dw Function928d6 dw Function928e6 dw Function92900 dw Function92910 dw Function9292a dw Function9293a dw Function92879 dw Function92879 dw Function92879 dw Function92955 dw Function9296b dw Function92987 dw Function9299e dw Function929a4 dw Function929d9 dw Function929f0 Function92879: ; 92879 (24:6879) ld hl, wJumptableIndex inc [hl] ret Function9287e: ; 9287e (24:687e) call Function92879 xor a ld [wc70b], a ld [wc70c], a ld a, $ff ld [wc70d], a ret Function9288e: ; 9288e (24:688e) call Function9307c jr nc, .asm_92899 ld a, $12 ld [wJumptableIndex], a ret .asm_92899 call Function92879 call Function9303f call Function93002 ld a, $20 ld [wcf64], a ld a, $4 ld [wc6d0], a ld [wc6e0], a ld [wc6f0], a ld a, $4 ld [wc6d9], a ld [wc6e9], a ld [wc6f9], a call WaitSFX ld a, SFX_SLOT_MACHINE_START call Function9331e ret Function928c6: ; 928c6 (24:68c6) ld hl, wcf64 ld a, [hl] and a jr z, .asm_928cf dec [hl] ret .asm_928cf call Function92879 xor a ld [hJoypadSum], a ; $ff00+$a5 ret Function928d6: ; 928d6 (24:68d6) ld hl, hJoypadSum ; $ffa5 ld a, [hl] and A_BUTTON ret z call Function92879 call Function92a2b ld [wc6d0], a Function928e6: ; 928e6 (24:68e6) ld a, [wc6d0] cp $0 ret nz ld a, SFX_STOP_SLOT call Function9331e ld bc, wc6d0 ld de, wc700 call Function929f6 call Function92879 xor a ld [hJoypadSum], a ; $ff00+$a5 Function92900: ; 92900 (24:6900) ld hl, hJoypadSum ; $ffa5 ld a, [hl] and A_BUTTON ret z call Function92879 call Function92a2e ld [wc6e0], a Function92910: ; 92910 (24:6910) ld a, [wc6e0] cp $0 ret nz ld a, SFX_STOP_SLOT call Function9331e ld bc, wc6e0 ld de, wc703 call Function929f6 call Function92879 xor a ld [hJoypadSum], a ; $ff00+$a5 Function9292a: ; 9292a (24:692a) ld hl, hJoypadSum ; $ffa5 ld a, [hl] and A_BUTTON ret z call Function92879 call Function92a60 ld [wc6f0], a Function9293a: ; 9293a (24:693a) ld a, [wc6f0] cp $0 ret nz ld a, SFX_STOP_SLOT call Function9331e ld bc, wc6f0 ld de, wc706 call Function929f6 call Function92879 xor a ld [hJoypadSum], a ; $ff00+$a5 ret Function92955: ; 92955 (24:6955) ld a, [wc70d] cp $ff jr nz, .asm_92963 call Function92879 call Function92879 ret .asm_92963 call Function92879 ld a, $10 ld [wcf64], a Function9296b: ; 9296b (24:696b) ld hl, wcf64 ld a, [hl] and a jr z, .asm_92980 dec [hl] srl a ret z ld a, [rOBP0] ; $ff00+$48 xor $ff ld e, a ld d, a call DmgToCgbObjPals ret .asm_92980 call Function9279b call Function92879 ret Function92987: ; 92987 (24:6987) xor a ld [wc70b], a ld [wc70c], a ld a, $e4 call DmgToCgbBGPals call Function93124 xor a ld [wcf64], a call Function92879 ret Function9299e: ; 9299e (24:699e) call Function93158 call Function92879 Function929a4: ; 929a4 (24:69a4) ld hl, wcf64 ld a, [hl] inc [hl] and $1 ret z ld hl, wc711 ld a, [hli] ld d, a or [hl] jr z, .asm_929d5 ld e, [hl] dec de ld [hl], e dec hl ld [hl], d ld hl, Coins ld d, [hl] inc hl ld e, [hl] call Function92a04 jr c, .asm_929c5 inc de .asm_929c5 ld [hl], e dec hl ld [hl], d ld a, [wcf64] and $7 ret z ld de, SFX_GET_COIN_FROM_SLOTS call PlaySFX ret .asm_929d5 call Function92879 ret Function929d9: ; 929d9 (24:69d9) call Function9304c call Functiona80 call Function930e9 jr c, .asm_929ea ld a, $0 ld [wJumptableIndex], a ret .asm_929ea ld a, $12 ld [wJumptableIndex], a ret Function929f0: ; 929f0 (24:69f0) ld hl, wJumptableIndex set 7, [hl] ret Function929f6: ; 929f6 (24:69f6) push de call Function92a12 pop de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a ret Function92a04: ; 92a04 (24:6a04) ld a, d cp 9999 / $100 jr c, .asm_92a10 ld a, e cp 9999 % $100 jr c, .asm_92a10 scf ret .asm_92a10 and a ret Function92a12: ; 92a12 (24:6a12) ld hl, $3 add hl, bc ld a, [hl] and a jr nz, .asm_92a1c ld a, $f .asm_92a1c dec a and $f ld e, a ld d, $0 ld hl, $1 add hl, bc ld a, [hli] ld h, [hl] ld l, a add hl, de ret Function92a2b: ; 92a2b (24:6a2b) ld a, $7 ret Function92a2e: ; 92a2e (24:6a2e) ld a, [wc70a] cp $2 jr c, .asm_92a4e ld a, [wc709] and a jr z, .asm_92a3f cp $ff jr nz, .asm_92a4e .asm_92a3f call Function92a51 jr nz, .asm_92a4e call Random cp $50 jr nc, .asm_92a4e ld a, $a ret .asm_92a4e ld a, $8 ret Function92a51: ; 92a51 (24:6a51) ld a, [wc700] and a ret z ld a, [wc701] and a ret z ld a, [wc702] and a ret Function92a60: ; 92a60 (24:6a60) ld a, [wc70b] and a jr z, .asm_92a95 ld a, [wc70c] and a jr z, .asm_92a95 ld a, [wc709] and a jr nz, .asm_92a84 call Random cp 180 jr nc, .asm_92a95 cp 120 jr nc, .asm_92a92 cp 60 jr nc, .asm_92a8f ld a, $15 ret .asm_92a84 call Random cp $a0 jr nc, .asm_92a95 cp $50 jr nc, .asm_92a92 .asm_92a8f ld a, $12 ret .asm_92a92 ld a, $10 ret .asm_92a95 ld a, $9 ret Function92a98: ; 92a98 (24:6a98) ld bc, wc6d0 ld hl, $6 add hl, bc ld de, Sprites + $40 ld [hl], e inc hl ld [hl], d ld hl, $1 add hl, bc ld de, Unknown_93327 ld [hl], e inc hl ld [hl], d ld hl, $8 add hl, bc ld [hl], $30 call Function92af9 ld bc, wc6e0 ld hl, $6 add hl, bc ld de, Sprites + $60 ld [hl], e inc hl ld [hl], d ld hl, $1 add hl, bc ld de, Unknown_93339 ld [hl], e inc hl ld [hl], d ld hl, $8 add hl, bc ld [hl], $50 call Function92af9 ld bc, wc6f0 ld hl, $6 add hl, bc ld de, Sprites + $80 ld [hl], e inc hl ld [hl], d ld hl, $1 add hl, bc ld de, Unknown_9334b ld [hl], e inc hl ld [hl], d ld hl, $8 add hl, bc ld [hl], $70 call Function92af9 ret Function92af9: ; 92af9 (24:6af9) ld hl, $ add hl, bc ld [hl], $0 ld hl, $3 add hl, bc ld [hl], $e ld hl, $4 add hl, bc ld [hl], $0 call Function92b53 ret Function92b0f: ; 92b0f (24:6b0f) ld bc, wc6d0 call Function92b22 ld bc, wc6e0 call Function92b22 ld bc, wc6f0 call Function92b22 ret Function92b22: ; 92b22 (24:6b22) ld hl, $4 add hl, bc ld a, [hl] and $f jr nz, .asm_92b2e call Function92bd4 .asm_92b2e ld hl, $5 add hl, bc ld a, [hl] and a ret z ld d, a ld hl, $4 add hl, bc add [hl] ld [hl], a and $f jr z, Function92b53 ld hl, $6 add hl, bc ld a, [hli] ld h, [hl] ld l, a ld e, $8 .asm_92b49 ld a, [hl] add d ld [hli], a rept 3 inc hl endr dec e jr nz, .asm_92b49 ret Function92b53: ; 92b53 (24:6b53) ld hl, $8 add hl, bc ld a, [hl] ld [wc712 + 1], a ld a, $50 ld [wc712 + 2], a ld hl, $3 add hl, bc ld e, [hl] ld d, $0 ld hl, $1 add hl, bc ld a, [hli] ld h, [hl] ld l, a add hl, de ld e, l ld d, h call Function92b83 ld hl, $3 add hl, bc ld a, [hl] inc a and $f cp $f jr nz, .asm_92b81 xor a .asm_92b81 ld [hl], a ret Function92b83: ; 92b83 (24:6b83) ld hl, $6 add hl, bc ld a, [hli] ld h, [hl] ld l, a .asm_92b8a ld a, [wc712 + 2] ld [hli], a ld a, [wc712 + 1] ld [hli], a ld a, [de] ld [hli], a srl a srl a set 7, a ld [hli], a ld a, [wc712 + 2] ld [hli], a ld a, [wc712 + 1] add $8 ld [hli], a ld a, [de] rept 2 inc a endr ld [hli], a srl a srl a set 7, a ld [hli], a inc de ld a, [wc712 + 2] sub $10 ld [wc712 + 2], a cp $10 jr nz, .asm_92b8a ret ; 92bbe (24:6bbe) Function92bbe: ; 92bbe push hl srl a srl a add Unknown_92bce % $100 ld l, a ld a, 0 adc Unknown_92bce / $100 ld h, a ld a, [hl] pop hl ret ; 92bce Unknown_92bce: ; 92bce db 0, 1, 2, 3, 4, 5 ; 92bd4 Function92bd4: ; 92bd4 (24:6bd4) ld hl, 0 add hl, bc ld e, [hl] ld d, 0 ld hl, Jumptable_92be4 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 92be4 (24:6be4) Jumptable_92be4: ; 92be4 dw Function92c16 dw Function92c4c dw Function92c17 dw Function92c1e dw Function92c25 dw Function92c2c dw Function92c33 dw Function92c5e dw Function92c86 dw Function92ca9 dw Function92cd2 dw Function92cf8 dw Function92d13 dw Function92df7 dw Function92e10 dw Function92e31 dw Function92e47 dw Function92e64 dw Function92d20 dw Function92d4f dw Function92d6e dw Function92d7e dw Function92da4 dw Function92db3 dw Function92dca ; 92c16 Function92c16: ; 92c16 ret ; 92c17 Function92c17: ; 92c17 ld hl, $5 add hl, bc ld [hl], $10 ret ; 92c1e Function92c1e: ; 92c1e ld hl, $5 add hl, bc ld [hl], $8 ret ; 92c25 Function92c25: ; 92c25 ld hl, $5 add hl, bc ld [hl], $4 ret ; 92c2c Function92c2c: ; 92c2c ld hl, $5 add hl, bc ld [hl], $2 ret ; 92c33 Function92c33: ; 92c33 ld hl, $5 add hl, bc ld [hl], $1 ret ; 92c3a Function92c3a: ; 92c3a ld hl, $5 add hl, bc ld [hl], $0 ld hl, 0 add hl, bc ld [hl], $1 ld hl, $f add hl, bc ld [hl], $3 Function92c4c: ; 92c4c ld hl, $f add hl, bc ld a, [hl] and a jr z, .asm_92c56 dec [hl] ret .asm_92c56 ld hl, 0 add hl, bc ld a, $0 ld [hl], a ret ; 92c5e Function92c5e: ; 92c5e ld a, [wc709] cp $ff jr z, .asm_92c72 ld hl, $9 add hl, bc ld a, [hl] and a jr z, .asm_92c72 dec [hl] call Function92c76 ret nz .asm_92c72 call Function92c3a ret ; 92c76 Function92c76: ; 92c76 call Function92a12 ld a, [wc709] ld e, a ld a, [hli] cp e ret z ld a, [hli] cp e ret z ld a, [hl] cp e ret ; 92c86 Function92c86: ; 92c86 call Function92e94 jr nc, .asm_92c94 ld a, [wc717] ld hl, wc709 cp [hl] jr z, .asm_92ca5 .asm_92c94 ld a, [wc709] cp $ff jr z, .asm_92ca5 ld hl, $9 add hl, bc ld a, [hl] and a jr z, .asm_92ca5 dec [hl] ret .asm_92ca5 call Function92c3a ret ; 92ca9 Function92ca9: ; 92ca9 call Function92f1d jr nc, .asm_92cbd ld hl, wc709 cp [hl] jr z, .asm_92cce ld hl, $9 add hl, bc ld a, [hl] and a ret z dec [hl] ret .asm_92cbd ld a, [wc709] cp $ff jr z, .asm_92cce ld hl, $9 add hl, bc ld a, [hl] and a jr z, .asm_92cce dec [hl] ret .asm_92cce call Function92c3a ret ; 92cd2 Function92cd2: ; 92cd2 call Function92e94 jr nc, .asm_92ce1 ld a, [wc70c] and a jr z, .asm_92ce1 call Function92c3a ret .asm_92ce1 ld a, SFX_STOP_SLOT call Function9331e ld hl, 0 add hl, bc inc [hl] ld hl, $a add hl, bc ld [hl], $20 ld hl, $5 add hl, bc ld [hl], $0 ret ; 92cf8 Function92cf8: ; 92cf8 ld hl, $a add hl, bc ld a, [hl] and a jr z, .asm_92d02 dec [hl] ret .asm_92d02 ld a, SFX_THROW_BALL call Function9331e ld hl, 0 add hl, bc inc [hl] ld hl, $5 add hl, bc ld [hl], $8 ret ; 92d13 Function92d13: ; 92d13 call Function92e94 ret nc ld a, [wc70c] and a ret z call Function92c3a ret ; 92d20 Function92d20: ; 92d20 call Function92f1d ret c ld a, SFX_STOP_SLOT call Function9331e call Function93316 ld hl, 0 add hl, bc inc [hl] ld hl, $5 add hl, bc ld [hl], $0 call Function92fc0 push bc push af ld de, $6068 ld a, $6 call Function3b2a ld hl, $e add hl, bc pop af ld [hl], a pop bc xor a ld [wcf64], a Function92d4f: ; 92d4f ld a, [wcf64] cp $2 jr z, .asm_92d5b cp $1 jr z, .asm_92d62 ret .asm_92d5b call Function92f1d call Function92c3a ret .asm_92d62 ld hl, 0 add hl, bc inc [hl] ld hl, $5 add hl, bc ld [hl], $8 ret ; 92d6e Function92d6e: ; 92d6e xor a ld [wcf64], a ld hl, 0 add hl, bc dec [hl] ld hl, $5 add hl, bc ld [hl], $0 ret ; 92d7e Function92d7e: ; 92d7e call Function92f1d ret c ld a, SFX_STOP_SLOT call Function9331e call Function93316 ld hl, 0 add hl, bc inc [hl] ld hl, $5 add hl, bc ld [hl], $0 push bc ld de, $6000 ld a, $7 call Function3b2a pop bc xor a ld [wcf64], a ret ; 92da4 Function92da4: ; 92da4 ld a, [wcf64] and a ret z ld hl, 0 add hl, bc inc [hl] ld a, $2 ld [wcf64], a Function92db3: ; 92db3 ld a, [wcf64] cp $4 ret c ld hl, 0 add hl, bc inc [hl] ld hl, $5 add hl, bc ld [hl], $10 ld hl, $a add hl, bc ld [hl], $11 Function92dca: ; 92dca ld hl, $a add hl, bc ld a, [hl] and a jr z, .asm_92dd4 dec [hl] ret .asm_92dd4 call Function92f1d jr nc, .asm_92de5 and a jr nz, .asm_92de5 ld a, $5 ld [wcf64], a call Function92c3a ret .asm_92de5 ld hl, $5 add hl, bc ld [hl], $0 ld hl, 0 add hl, bc rept 2 dec [hl] endr ld a, $1 ld [wcf64], a ret ; 92df7 Function92df7: ; 92df7 call Function92f1d ret c ld a, SFX_STOP_SLOT call Function9331e call Function93316 ld hl, 0 add hl, bc inc [hl] call Function92fc0 ld hl, $a add hl, bc ld [hl], a Function92e10: ; 92e10 ld hl, $a add hl, bc ld a, [hl] and a jr nz, .asm_92e1f call Function92f1d call Function92c3a ret .asm_92e1f dec [hl] ld hl, 0 add hl, bc inc [hl] ld hl, $b add hl, bc ld [hl], $20 ld hl, $5 add hl, bc ld [hl], $0 Function92e31: ; 92e31 ld hl, $b add hl, bc ld a, [hl] and a jr z, .asm_92e3b dec [hl] ret .asm_92e3b ld hl, 0 add hl, bc dec [hl] ld hl, $5 add hl, bc ld [hl], $8 ret ; 92e47 Function92e47: ; 92e47 call Function92f1d ret c ld a, SFX_STOP_SLOT call Function9331e call Function93316 ld hl, $5 add hl, bc ld [hl], $1 ld hl, 0 add hl, bc inc [hl] ld hl, $a add hl, bc ld [hl], $10 Function92e64: ; 92e64 ld hl, $a add hl, bc ld a, [hl] and a jr z, .asm_92e73 dec [hl] .asm_92e6d ld a, SFX_GOT_SAFARI_BALLS call Function9331e ret .asm_92e73 ld a, [wc709] and a jr nz, .asm_92e88 call Function92f1d jr nc, .asm_92e6d and a jr nz, .asm_92e6d call Function92c3a call WaitSFX ret .asm_92e88 call Function92f1d jr c, .asm_92e6d call Function92c3a call WaitSFX ret ; 92e94 Function92e94: ; 92e94 xor a ld [wc70b], a ld [wc70c], a call Function92a12 call Function92fb4 ld a, [wc70a] and 3 ld e, a ld d, 0 ld hl, Jumptable_92ebd rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ld de, .asm_92eb6 push de jp [hl] .asm_92eb6 ld a, [wc70b] and a ret z scf ret ; 92ebd Jumptable_92ebd: ; 92ebd dw Function92ed4 dw Function92ed1 dw Function92ecb dw Function92ec5 ; 92ec5 Function92ec5: ; 92ec5 call Function92ee0 call Function92ef6 Function92ecb: ; 92ecb call Function92ed5 call Function92f01 Function92ed1: ; 92ed1 call Function92eeb Function92ed4: ; 92ed4 ret ; 92ed5 Function92ed5: ; 92ed5 ld hl, wc70e ld a, [EnemyScreens] cp [hl] call z, Function92f0c ret ; 92ee0 Function92ee0: ; 92ee0 ld hl, wc70f ld a, [wc700] cp [hl] call z, Function92f0c ret ; 92eeb Function92eeb: ; 92eeb ld hl, wc70f ld a, [wc701] cp [hl] call z, Function92f0c ret ; 92ef6 Function92ef6: ; 92ef6 ld hl, wc70f ld a, [wc702] cp [hl] call z, Function92f0c ret ; 92f01 Function92f01: ; 92f01 ld hl, wc710 ld a, [wc702] cp [hl] call z, Function92f0c ret ; 92f0c Function92f0c: ; 92f0c ld [wc717], a and a jr nz, .asm_92f17 ld a, $1 ld [wc70c], a .asm_92f17 ld a, $1 ld [wc70b], a ret ; 92f1d Function92f1d: ; 92f1d ld a, $ff ld [EffectFailed], a call Function92a12 call Function92fb4 ld a, [wc70a] and 3 ld e, a ld d, 0 ld hl, Jumptable_92f48 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ld de, .asm_92f3d push de jp [hl] .asm_92f3d ld a, [wc70d] cp $ff jr nz, .asm_92f46 and a ret .asm_92f46 scf ret ; 92f48 Jumptable_92f48: ; 92f48 dw Function92f5f dw Function92f5c dw Function92f56 dw Function92f50 ; 92f50 Function92f50: ; 92f50 call Function92f70 call Function92f90 Function92f56: ; 92f56 call Function92f60 call Function92fa0 Function92f5c: ; 92f5c call Function92f80 Function92f5f: ; 92f5f ret ; 92f60 Function92f60: ; 92f60 ld hl, wc70e ld a, [wc700] cp [hl] ret nz ld hl, wc703 cp [hl] call z, Function92fb0 ret ; 92f70 Function92f70: ; 92f70 ld hl, wc710 ld a, [wc700] cp [hl] ret nz ld hl, wc704 cp [hl] call z, Function92fb0 ret ; 92f80 Function92f80: ; 92f80 ld hl, wc70f ld a, [wc701] cp [hl] ret nz ld hl, wc704 cp [hl] call z, Function92fb0 ret ; 92f90 Function92f90: ; 92f90 ld hl, wc70e ld a, [wc702] cp [hl] ret nz ld hl, wc704 cp [hl] call z, Function92fb0 ret ; 92fa0 Function92fa0: ; 92fa0 ld hl, wc710 ld a, [wc702] cp [hl] ret nz ld hl, wc705 cp [hl] call z, Function92fb0 ret ; 92fb0 Function92fb0: ; 92fb0 ld [wc70d], a ret ; 92fb4 Function92fb4: ; 92fb4 ld de, wc70e ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ret ; 92fc0 Function92fc0: ; 92fc0 ld hl, $3 add hl, bc ld a, [hl] push af push hl call Function92fcf pop hl pop af ld [hl], a ld a, e ret ; 92fcf Function92fcf: ; 92fcf ld a, [wc709] and a jr nz, .asm_92fe8 ld e, $0 .asm_92fd7 ld hl, $3 add hl, bc inc [hl] inc e push de call Function92f1d pop de jr nc, .asm_92fd7 and a jr nz, .asm_92fd7 ret .asm_92fe8 call Random and $7 cp $4 jr c, .asm_92fe8 ld e, a .asm_92ff2 ld a, e inc e ld hl, $3 add hl, bc add [hl] ld [hl], a push de call Function92f1d pop de jr c, .asm_92ff2 ret ; 93002 Function93002: ; 93002 (24:7002) ld a, [wc709] and a ret z ld hl, Unknown_93023 ld a, [ScriptVar] and a jr z, .asm_93013 ld hl, Unknown_93031 .asm_93013 call Random ld c, a .asm_93017 ld a, [hli] cp c jr nc, .asm_9301e inc hl jr .asm_93017 .asm_9301e ld a, [hl] ld [wc709], a ret ; 93023 (24:7023) Unknown_93023: ; 93023 db $01, $00 db $03, $04 db $0a, $14 db $14, $10 db $28, $0c db $30, $08 db $ff, $ff ; 93031 Unknown_93031: ; 93031 db $02, $00 db $03, $04 db $08, $14 db $10, $10 db $1e, $0c db $50, $08 db $ff, $ff ; 9303f Function9303f: ; 9303f (24:703f) ld b, $14 ld a, [wc70a] dec a jr z, asm_93066 dec a jr z, asm_9305a jr asm_9304e Function9304c: ; 9304c (24:704c) ld b, $23 asm_9304e: ; 9304e (24:704e) hlcoord 3, 2 call Function93069 hlcoord 3, 10 call Function93069 asm_9305a: ; 9305a (24:705a) hlcoord 3, 4 call Function93069 hlcoord 3, 8 call Function93069 asm_93066: ; 93066 (24:7066) hlcoord 3, 6 Function93069: ; 93069 (24:7069) ld a, b ld [hl], a ld de, $d add hl, de ld [hl], a ld de, $7 add hl, de inc a ld [hl], a ld de, $d add hl, de ld [hl], a ret Function9307c: ; 9307c (24:707c) ld hl, UnknownText_0x930c7 call PrintText ld hl, MenuDataHeader_0x930d6 call LoadMenuDataHeader call InterpretMenu2 call WriteBackup ret c ld a, [MenuSelection2] ld b, a ld a, $4 sub b ld [wc70a], a ld hl, Coins ld c, a ld a, [hli] and a jr nz, .asm_930ad ld a, [hl] cp c jr nc, .asm_930ad ld hl, UnknownText_0x930d1 call PrintText jr Function9307c .asm_930ad ld hl, Coins + 1 ld a, [hl] sub c ld [hld], a jr nc, .asm_930b6 dec [hl] .asm_930b6 call WaitSFX ld de, SFX_PAY_DAY call PlaySFX ld hl, UnknownText_0x930cc call PrintText and a ret ; 930c7 (24:70c7) UnknownText_0x930c7: ; 0x930c7 ; Bet how many coins? text_jump UnknownText_0x1c5049 db "@" ; 0x930cc UnknownText_0x930cc: ; 0x930cc ; Start! text_jump UnknownText_0x1c505e db "@" ; 0x930d1 UnknownText_0x930d1: ; 0x930d1 ; Not enough coins. text_jump UnknownText_0x1c5066 db "@" ; 0x930d6 MenuDataHeader_0x930d6: ; 0x930d6 db $40 ; flags db 10, 14 ; start coords db 17, 19 ; end coords dw MenuData2_0x930de db 1 ; default option ; 0x930de MenuData2_0x930de: ; 0x930de db $80 ; flags db 3 ; items db " 3@" db " 2@" db " 1@" ; 0x930e9 Function930e9: ; 930e9 (24:70e9) ld hl, Coins ld a, [hli] or [hl] jr nz, .asm_930fd ld hl, UnknownText_9311a call PrintText ld c, $3c call DelayFrames jr .asm_93118 .asm_930fd ld hl, UnknownText_9311f call PrintText call LoadMenuTextBox lb bc, 14, 12 call PlaceYesNoBox ld a, [MenuSelection2] dec a call WriteBackup and a jr nz, .asm_93118 and a ret .asm_93118 scf ret ; 9311a (24:711a) UnknownText_9311a: ; 9311a text_jump UnknownText_0x1c5079 db "@" UnknownText_9311f: ; 9311f text_jump UnknownText_0x1c5092 db "@" Function93124: ; 93124 (24:7124) ld a, [EffectFailed] cp $ff jr z, .asm_93151 srl a ld e, a ld d, 0 ld hl, .data_93145 add hl, de ld a, [hli] ld [PlayerUsedMoves], a ld e, a ld a, [hl] ld [wc711], a ld d, a callba MobileFn_105fe3 ret .data_93145 db $2c, $01 db $32, $00 db $06, $00 db $08, $00 db $0a, $00 db $0f, $00 .asm_93151 ld hl, wc711 xor a ld [hli], a ld [hl], a ret Function93158: ; 93158 (24:7158) ld a, [EffectFailed] cp $ff jr nz, .asm_9316c ld hl, UnknownText_0x931e0 call PrintText callba MobileFn_105fd0 ret .asm_9316c srl a ld e, a ld d, 0 ld hl, Unknown_93195 rept 3 add hl, de endr ld de, StringBuffer2 ld bc, $4 call CopyBytes ld a, [hli] ld h, [hl] ld l, a ld de, .asm_93188 push de jp [hl] .asm_93188 ld hl, UnknownText_0x931b9 call PrintText callba MobileFn_105f9f ret ; 93195 (24:7195) Unknown_93195: ; 93195 db "300@" dw Function931e5 db "50@@" dw Function9320b db "6@@@" dw Function93214 db "8@@@" dw Function93214 db "10@@" dw Function93214 db "15@@" dw Function93214 ; 931b9 UnknownText_0x931b9: ; 0x931b9 start_asm ; 0x931ba Function931ba: ; 931ba ld a, [EffectFailed] add $25 ldcoord_a 2, 13 inc a ldcoord_a 2, 14 inc a ldcoord_a 3, 13 inc a ldcoord_a 3, 14 hlcoord 18, 17 ld [hl], $ee ld hl, UnknownText_0x931db rept 4 inc bc endr ret ; 931db UnknownText_0x931db: ; 0x931db ; lined up! Won @ coins! text_jump UnknownText_0x1c509f db "@" ; 0x931e0 UnknownText_0x931e0: ; 0x931e0 ; Darn! text_jump UnknownText_0x1c50bb db "@" ; 0x931e5 Function931e5: ; 931e5 ld a, SFX_2ND_PLACE call Function9331e call WaitSFX ld a, [wd002] and a jr nz, .asm_931ff call Random and $14 ret z ld a, $ff ld [wc709], a ret .asm_931ff call Random and $1c ret z ld a, $ff ld [wc709], a ret ; 9320b Function9320b: ; 9320b ld a, SFX_3RD_PLACE call Function9331e call WaitSFX ret ; 93214 Function93214: ; 93214 ld a, SFX_PRESENT call Function9331e call WaitSFX ret ; 9321d Function9321d: ; 9321d (24:721d) ld hl, $b add hl, bc ld e, [hl] ld d, 0 ld hl, Jumptable_9322d rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] Jumptable_9322d: ; 9322d (24:722d) dw Function93233 dw Function93259 dw Function93289 Function93233: ; 93233 (24:7233) ld hl, $e add hl, bc ld a, [hl] and a jr nz, .asm_93247 ld a, $2 ld [wcf64], a ld hl, $ add hl, bc ld [hl], $0 ret .asm_93247 dec [hl] ld hl, $b add hl, bc inc [hl] ld hl, $c add hl, bc ld [hl], $30 ld hl, $6 add hl, bc ld [hl], $0 Function93259: ; 93259 (24:7259) ld hl, $c add hl, bc ld a, [hl] cp $20 jr c, .asm_93273 dec [hl] ld e, a ld d, $70 callba Functionce765 ld a, e ld hl, $7 add hl, bc ld [hl], a ret .asm_93273 ld hl, $b add hl, bc inc [hl] ld hl, $d add hl, bc ld [hl], $2 ld a, $1 ld [wcf64], a ld a, SFX_PLACE_PUZZLE_PIECE_DOWN call Function9331e ret Function93289: ; 93289 (24:7289) ld hl, $6 add hl, bc ld a, [hl] rept 2 inc [hl] endr cp $48 jr nc, .asm_932a3 and $3 ret nz ld hl, $d add hl, bc ld a, [hl] xor $ff inc a ld [hl], a ld [hSCY], a ; $ff00+$d0 ret .asm_932a3 ld hl, $b add hl, bc xor a ld [hl], a ld [hSCY], a ; $ff00+$d0 ret Function932ac: ; 932ac (24:72ac) ld hl, $b add hl, bc ld e, [hl] ld d, 0 ld hl, Jumptable_932bc rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] Jumptable_932bc: ; 932bc (24:72bc) dw Function932c2 dw Function932e0 dw Function932fc Function932c2: ; 932c2 (24:72c2) ld hl, $4 add hl, bc ld a, [hl] inc [hl] cp $68 jr z, .asm_932d6 and $f ret nz ld de, SFX_JUMP_OVER_LEDGE call PlaySFX ret .asm_932d6 ld hl, $b add hl, bc inc [hl] ld a, $1 ld [wcf64], a Function932e0: ; 932e0 (24:72e0) ld a, [wcf64] cp $2 jr z, .asm_932f1 cp $5 ret nz ld hl, $ add hl, bc ld [hl], $0 ret .asm_932f1 ld hl, $b add hl, bc inc [hl] ld hl, $c add hl, bc ld [hl], $8 Function932fc: ; 932fc (24:72fc) ld hl, $c add hl, bc ld a, [hl] and a jr z, .asm_93306 dec [hl] ret .asm_93306 ld hl, $b add hl, bc dec [hl] push bc ld de, $606c ld a, $8 call Function3b2a pop bc ret ; 93316 (24:7316) Function93316: ; 93316 push bc ld c, $10 call DelayFrames pop bc ret ; 9331e Function9331e: ; 9331e (24:731e) push de ld e, a ld d, 0 call PlaySFX pop de ret ; 93327 (24:7327) Unknown_93327: ; 93327 db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14 Unknown_93339: ; 93339 db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08 Unknown_9334b: ; 9334b db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08 ; 9335d SlotsTilemap: ; 9335d INCBIN "gfx/slots.tilemap" ; 9344d Slots1LZ: ; 9344d INCBIN "gfx/slots_1.2bpp.lz" ; 935cd Slots2LZ: ; 935cd INCBIN "gfx/slots_2.2bpp.lz" ; 9382d Slots3LZ: ; 9382d INCBIN "gfx/slots_3.2bpp.lz" ; 93a3d SECTION "bank28", 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] INCLUDE "text/phone/anthony_overworld.asm" INCLUDE "text/phone/todd_overworld.asm" INCLUDE "text/phone/gina_overworld.asm" INCLUDE "text/phone/irwin_overworld.asm" INCLUDE "text/phone/arnie_overworld.asm" INCLUDE "text/phone/alan_overworld.asm" INCLUDE "text/phone/dana_overworld.asm" INCLUDE "text/phone/chad_overworld.asm" INCLUDE "text/phone/derek_overworld.asm" INCLUDE "text/phone/tully_overworld.asm" INCLUDE "text/phone/brent_overworld.asm" INCLUDE "text/phone/tiffany_overworld.asm" INCLUDE "text/phone/vance_overworld.asm" INCLUDE "text/phone/wilton_overworld.asm" INCLUDE "text/phone/kenji_overworld.asm" INCLUDE "text/phone/parry_overworld.asm" INCLUDE "text/phone/erin_overworld.asm" SECTION "Tileset Data 5", ROMX, BANK[TILESETS_5] INCLUDE "tilesets/data_5.asm" SECTION "bank2E", ROMX, BANK[$2E] ReturnFromMapSetupScript:: ; b8000 xor a ld [hBGMapMode], a ; For some reson, GameFreak chose to use a callba here instead of just falling through. ; No other function in the game references the function at 2E:400A, here labeled ; ReturnFromMapSetupScript.inefficientcallba. callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes ret ; b800a .inefficientcallba: ; b800a ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a call GetWorldMapLocation ld [wc2d9], a call Functionb8089 jr z, .asm_b8024 call GetMapPermission cp $6 jr nz, .asm_b8029 .asm_b8024 ld a, -1 ld [wc2d9], a .asm_b8029 ld hl, wd83e bit 1, [hl] res 1, [hl] jr nz, .asm_b8054 call Functionb8064 jr z, .asm_b8054 ld a, [wc2d9] ld [wc2d8], a call Functionb8070 jr z, .asm_b8054 ld a, $3c ld [wc2da], a call Functionb80c6 call Functionb80d3 callba Function104303 ret .asm_b8054 ld a, [wc2d9] ld [wc2d8], a ld a, $90 ld [rWY], a ld [hWY], a xor a ld [hLCDStatCustom], a ret ; b8064 Functionb8064: ; b8064 ld a, [wc2d9] ld c, a ld a, [wc2d8] cp c ret z cp $0 ret ; b8070 Functionb8070: ; b8070 cp -1 ret z cp SPECIAL_MAP ret z cp RADIO_TOWER ret z cp LAV_RADIO_TOWER ret z cp UNDERGROUND ret z cp INDIGO_PLATEAU ret z cp POWER_PLANT ret z ld a, $1 and a ret ; b8089 Functionb8089: ; b8089 ld a, [MapGroup] cp GROUP_ROUTE_35_NATIONAL_PARK_GATE ret nz ld a, [MapNumber] cp MAP_ROUTE_35_NATIONAL_PARK_GATE ret z cp MAP_ROUTE_36_NATIONAL_PARK_GATE ret ; b8098 Functionb8098:: ; b8098 (2e:4098) ld hl, wc2da ld a, [hl] and a jr z, .asm_b80bc dec [hl] cp $3c ret z cp $3b jr nz, .asm_b80b3 call Functionb80d3 call Functionb80e1 callba Function104303 .asm_b80b3 ld a, $80 ld a, $70 ld [rWY], a ; $ff00+$4a ld [hWY], a ; $ff00+$d2 ret .asm_b80bc ld a, $90 ld [rWY], a ; $ff00+$4a ld [hWY], a ; $ff00+$d2 xor a ld [hLCDStatCustom], a ; $ff00+$c6 ret Functionb80c6: ; b80c6 ld de, GFX_f9344 ld hl, VTiles2 tile $60 lb bc, BANK(GFX_f9344), $e call Get2bpp ret ; b80d3 Functionb80d3: ; b80d3 hlcoord 0, 0 ld b, $2 ld c, $12 call Functionb8115 call Functionb812f ret ; b80e1 Functionb80e1: ; b80e1 (2e:40e1) ld a, [wc2d9] ld e, a callba GetLandmarkName call Functionb8101 ld a, $14 sub c srl a ld b, $0 ld c, a hlcoord 0, 2 add hl, bc ld de, StringBuffer1 call PlaceString ret Functionb8101: ; b8101 (2e:4101) ld c, $0 push hl ld hl, StringBuffer1 .loop ld a, [hli] cp $50 jr z, .stop cp $25 jr z, .loop inc c jr .loop .stop pop hl ret Functionb8115: ; b8115 ld de, AttrMap - TileMap add hl, de rept 2 inc b endr rept 2 inc c endr ld a, $87 .loop push bc push hl .inner_loop ld [hli], a dec c jr nz, .inner_loop pop hl ld de, SCREEN_WIDTH add hl, de pop bc dec b jr nz, .loop ret ; b812f Functionb812f: ; b812f hlcoord 0, 0 ld a, $61 ld [hli], a ld a, $62 call .Fill5Words ld a, $64 ld [hli], a ld a, $65 ld [hli], a call .Fill18Bytes ld a, $6b ld [hli], a ld a, $66 ld [hli], a call .Fill18Bytes ld a, $6c ld [hli], a ld a, $67 ld [hli], a ld a, $68 call .Fill5Words ld a, $6a ld [hl], a ret ; b815b .Fill18Bytes: ; b815b ld c, 18 ld a, $6d .loop ld [hli], a dec c jr nz, .loop ret ; b8164 .Fill5Words: ; b8164 ld c, 5 jr .enterloop .continueloop rept 2 ld [hli], a endr .enterloop inc a rept 2 ld [hli], a endr dec a dec c jr nz, .continueloop ret ; b8172 CheckForSignpostItems: ; b8172 ; Checks to see if there are hidden items on the screen that have not yet been found. If it finds one, returns carry. call GetMapScriptHeaderBank ld [Buffer1], a ; Get the coordinate of the bottom right corner of the screen, and load it in wd1ec/wd1ed. ld a, [XCoord] add SCREEN_WIDTH / 4 ld [wd1ed], a ld a, [YCoord] add SCREEN_HEIGHT / 4 ld [wd1ec], a ; Get the pointer for the first signpost header in the map... ld hl, wdc02 ld a, [hli] ld h, [hl] ld l, a ; ... before even checking to see if there are any signposts on this map. ld a, [wCurrentMapSignpostCount] and a jr z, .nosignpostitems ; For i = 1:wCurrentMapSignpostCount... .loop ; Store the counter in Buffer2, and store the signpost header pointer in the stack. ld [Buffer2], a push hl ; Get the Y coordinate of the signpost. call .GetFarByte ld e, a ; Is the Y coordinate of the signpost on the screen? If not, go to the next signpost. ld a, [wd1ec] sub e jr c, .next cp SCREEN_HEIGHT / 2 jr nc, .next ; Is the X coordinate of the signpost on the screen? If not, go to the next signpost. call .GetFarByte ld d, a ld a, [wd1ed] sub d jr c, .next cp SCREEN_WIDTH / 2 jr nc, .next ; Is this signpost a hidden item? If not, go to the next signpost. call .GetFarByte cp SIGNPOST_ITEM jr nz, .next ; Has this item already been found? If not, set off the Itemfinder. ld a, [Buffer1] call GetFarHalfword ld a, [Buffer1] call GetFarHalfword ld d, h ld e, l ld b, CHECK_FLAG call EventFlagAction ld a, c and a jr z, .itemnearby .next ; Restore the signpost header pointer and increment it by the length of a signpost header. pop hl ld bc, 5 add hl, bc ; Restore the signpost counter and decrement it. If it hits zero, there are no hidden items in range. ld a, [Buffer2] dec a jr nz, .loop .nosignpostitems xor a ret .itemnearby pop hl scf ret ; b81e2 .GetFarByte: ; b81e2 ld a, [Buffer1] call GetFarByte inc hl ret ; b81ea TreeMonEncounter: ; b81ea callba MobileFn_1060ef xor a ld [TempWildMonSpecies], a ld [CurPartyLevel], a ld hl, TreeMonMaps call GetTreeMonSet jr nc, .no_battle call GetTreeMons jr nc, .no_battle call GetTreeMon jr nc, .no_battle ld a, BATTLETYPE_TREE ld [BattleType], a ld a, 1 ld [ScriptVar], a ret .no_battle xor a ld [ScriptVar], a ret ; b8219 RockMonEncounter: ; b8219 xor a ld [TempWildMonSpecies], a ld [CurPartyLevel], a ld hl, RockMonMaps call GetTreeMonSet jr nc, .no_battle call GetTreeMons jr nc, .no_battle ld a, 10 call RandomRange cp 4 jr nc, .no_battle call SelectTreeMon jr nc, .no_battle ret .no_battle xor a ret ; b823e db $05 ; ???? GetTreeMonSet: ; b823f ; Return carry and treemon set in a ; if the current map is in table hl. ld a, [MapNumber] ld e, a ld a, [MapGroup] ld d, a .loop ld a, [hli] cp -1 jr z, .not_in_table cp d jr nz, .skip2 ld a, [hli] cp e jr nz, .skip1 jr .in_table .skip2 inc hl .skip1 inc hl jr .loop .not_in_table xor a ret .in_table ld a, [hl] scf ret ; b825e TreeMonMaps: ; b825e treemon_map: macro map \1 db \2 ; treemon set endm treemon_map ROUTE_26, 4 treemon_map ROUTE_27, 4 treemon_map ROUTE_28, 0 treemon_map ROUTE_29, 3 treemon_map ROUTE_30, 3 treemon_map ROUTE_31, 3 treemon_map ROUTE_32, 4 treemon_map ROUTE_33, 2 treemon_map ROUTE_34, 3 treemon_map ROUTE_35, 3 treemon_map ROUTE_36, 3 treemon_map ROUTE_37, 3 treemon_map ROUTE_38, 3 treemon_map ROUTE_39, 3 treemon_map ROUTE_40, 0 treemon_map ROUTE_41, 0 treemon_map ROUTE_42, 2 treemon_map ROUTE_43, 5 treemon_map ROUTE_44, 1 treemon_map ROUTE_45, 1 treemon_map ROUTE_46, 1 treemon_map NEW_BARK_TOWN, 0 treemon_map CHERRYGROVE_CITY, 0 treemon_map VIOLET_CITY, 0 treemon_map AZALEA_TOWN, 2 treemon_map CIANWOOD_CITY, 0 treemon_map GOLDENROD_CITY, 0 treemon_map OLIVINE_CITY, 0 treemon_map ECRUTEAK_CITY, 0 treemon_map MAHOGANY_TOWN, 0 treemon_map LAKE_OF_RAGE, 5 treemon_map BLACKTHORN_CITY, 0 treemon_map SILVER_CAVE_OUTSIDE, 0 treemon_map ILEX_FOREST, 6 db -1 ; b82c5 RockMonMaps: ; b82c5 treemon_map CIANWOOD_CITY, 7 treemon_map ROUTE_40, 7 treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7 treemon_map SLOWPOKE_WELL_B1F, 7 db -1 ; b82d2 GetTreeMons: ; b82d2 ; Return the address of TreeMon table a in hl. ; Return nc if table a doesn't exist. cp 8 jr nc, .quit and a jr z, .quit ld e, a ld d, 0 ld hl, TreeMons rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a scf ret .quit xor a ret ; b82e8 TreeMons: ; b82e8 dw TreeMons1 dw TreeMons1 dw TreeMons2 dw TreeMons3 dw TreeMons4 dw TreeMons5 dw TreeMons6 dw RockMons dw TreeMons1 ; Two tables each (normal, rare). ; Structure: ; db %, species, level TreeMons1: ; b82fa db 50, SPEAROW, 10 db 15, SPEAROW, 10 db 15, SPEAROW, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db -1 db 50, SPEAROW, 10 db 15, HERACROSS, 10 db 15, HERACROSS, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db -1 TreeMons2: ; b8320 db 50, SPEAROW, 10 db 15, EKANS, 10 db 15, SPEAROW, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db -1 db 50, SPEAROW, 10 db 15, HERACROSS, 10 db 15, HERACROSS, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db -1 TreeMons3: ; b8346 db 50, HOOTHOOT, 10 db 15, SPINARAK, 10 db 15, LEDYBA, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db -1 db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db -1 TreeMons4: ; b836c db 50, HOOTHOOT, 10 db 15, EKANS, 10 db 15, HOOTHOOT, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db -1 db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db -1 TreeMons5: ; b8392 db 50, HOOTHOOT, 10 db 15, VENONAT, 10 db 15, HOOTHOOT, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db -1 db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db -1 TreeMons6: ; b83b8 db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, NOCTOWL, 10 db 5, BUTTERFREE, 10 db 5, BEEDRILL, 10 db -1 db 50, HOOTHOOT, 10 db 15, CATERPIE, 10 db 15, WEEDLE, 10 db 10, HOOTHOOT, 10 db 5, METAPOD, 10 db 5, KAKUNA, 10 db -1 RockMons: ; b83de db 90, KRABBY, 15 db 10, SHUCKLE, 15 db -1 ; b83e5 GetTreeMon: ; b83e5 push hl call GetTreeScore pop hl and a jr z, .bad cp 1 jr z, .good cp 2 jr z, .rare ret .bad ld a, 10 call RandomRange and a jr nz, NoTreeMon jr SelectTreeMon .good ld a, 10 call RandomRange cp 5 jr nc, NoTreeMon jr SelectTreeMon .rare ld a, 10 call RandomRange cp 8 jr nc, NoTreeMon jr .skip .skip ld a, [hli] cp -1 jr nz, .skip call SelectTreeMon ret ; b841f SelectTreeMon: ; b841f ; Read a TreeMons table and pick one monster at random. ld a, 100 call RandomRange .loop sub [hl] jr c, .ok rept 3 inc hl endr jr .loop .ok ld a, [hli] cp $ff jr z, NoTreeMon ld a, [hli] ld [TempWildMonSpecies], a ld a, [hl] ld [CurPartyLevel], a scf ret NoTreeMon: ; b843b xor a ld [TempWildMonSpecies], a ld [CurPartyLevel], a ret ; b8443 GetTreeScore: ; b8443 call .CoordScore ld [Buffer1], a call .OTIDScore ld [Buffer2], a ld c, a ld a, [Buffer1] sub c jr z, .rare jr nc, .ok add 10 .ok cp 5 jr c, .good .bad xor a ret .good ld a, 1 ret .rare ld a, 2 ret ; b8466 .CoordScore: ; b8466 call GetFacingTileCoord ld hl, 0 ld c, e ld b, 0 ld a, d and a jr z, .next .loop add hl, bc dec a jr nz, .loop .next add hl, bc ld c, d add hl, bc ld a, h ld [hDividend], a ld a, l ld [hDividend + 1], a ld a, 5 ld [hDivisor], a ld b, 2 call Divide ld a, [hQuotient + 1] ld [hDividend], a ld a, [hQuotient + 2] ld [hDividend + 1], a ld a, 10 ld [hDivisor], a ld b, 2 call Divide ld a, [hQuotient + 3] ret ; b849d .OTIDScore: ; b849d ld a, [PlayerID] ld [hDividend], a ld a, [PlayerID + 1] ld [hDividend + 1], a ld a, 10 ld [hDivisor], a ld b, 2 call Divide ld a, [hQuotient + 3] ret ; b84b3 Functionb84b3: ; b84b3 ld a, [rVBK] push af ld a, $1 ld [rVBK], a ld de, FishingGFX ld a, [PlayerGender] bit 0, a jr z, .asm_b84c7 ld de, KrisFishingGFX .asm_b84c7 ld hl, VTiles0 tile $02 call Functionb84e3 ld hl, VTiles0 tile $06 call Functionb84e3 ld hl, VTiles0 tile $0a call Functionb84e3 ld hl, VTiles2 tile $00 - $40 call Functionb84e3 pop af ld [rVBK], a ret ; b84e3 Functionb84e3: ; b84e3 lb bc, BANK(FishingGFX), 2 push de call Get2bpp pop de ld hl, $20 add hl, de ld d, h ld e, l ret ; b84f2 FishingGFX: ; b84f2 INCBIN "gfx/unknown/0b84f2.2bpp" ; b8582 KrisFishingGFX: ; b8582 INCBIN "gfx/unknown/0b8582.2bpp" ; b8612 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 WhiteBGMap 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 WhiteBGMap 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 Function3786 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 SECTION "bank2F", ROMX, BANK[$2F] INCLUDE "engine/std_scripts.asm" INCLUDE "engine/phone_scripts.asm" SECTION "bank30", ROMX, BANK[$30] INCLUDE "gfx/overworld/sprites_1.asm" SECTION "bank31", ROMX, BANK[$31] INCLUDE "gfx/overworld/sprites_2.asm" SECTION "bank32", ROMX, BANK[$32] INCLUDE "battle/bg_effects.asm" INCLUDE "battle/anims.asm" Functioncbcdd: ; cbcdd call Functioncbce5 ld a, [hCGB] and a ret nz ret ; cbce5 Functioncbce5: ; cbce5 ld a, [hCGB] and a jr nz, .asm_cbd06 ld a, [TimeOfDayPal] and $3 cp $3 ld a, $0 jr z, .asm_cbcf7 ld a, $aa .asm_cbcf7 call DmgToCgbBGPals ld c, $4 call DelayFrames callba _UpdateTimePals ret .asm_cbd06 ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld hl, BGPals ld c, $20 .asm_cbd12 ld a, $bc ld [hli], a ld a, $7e ld [hli], a dec c jr nz, .asm_cbd12 pop af ld [rSVBK], a ld a, $1 ld [hCGBPalUpdate], a ld c, $4 call DelayFrames callba _UpdateTimePals ret ; cbd2e TheEndGFX:: ; cbd2e INCBIN "gfx/credits/theend.2bpp" ; cbe2e SECTION "bank33", ROMX, BANK[$33] DisplayCaughtContestMonStats: ; cc000 call WhiteBGMap call ClearTileMap call ClearSprites call LoadFontsBattleExtra ld hl, Options ld a, [hl] push af set 4, [hl] hlcoord 0, 0 ld b, 4 ld c, 13 call TextBox hlcoord 0, 6 ld b, 4 ld c, 13 call TextBox hlcoord 2, 0 ld de, .Stock call PlaceString hlcoord 2, 6 ld de, .This call PlaceString hlcoord 5, 4 ld de, .Health call PlaceString hlcoord 5, 10 ld de, .Health call PlaceString ld a, [wContestMon] ld [wd265], a call GetPokemonName ld de, StringBuffer1 hlcoord 1, 2 call PlaceString ld h, b ld l, c ld a, [wContestMonLevel] ld [TempMonLevel], a call PrintLevel ld de, EnemyMonNick hlcoord 1, 8 call PlaceString ld h, b ld l, c ld a, [EnemyMonLevel] ld [TempMonLevel], a call PrintLevel hlcoord 11, 4 ld de, wContestMonMaxHP lb bc, 2, 3 call PrintNum hlcoord 11, 10 ld de, EnemyMonMaxHP call PrintNum ld hl, SwitchMonText call PrintText pop af ld [Options], a call WaitBGMap ld b, $8 call GetSGBLayout call SetPalettes ret ; cc0a7 .Health db "HEALTH@" .Stock db " STOCK ", $4a, " @" .This db " THIS ", $4a, " @" SwitchMonText: ; cc0c2 ; Switch #MON? text_jump UnknownText_0x1c10cf db "@" ; cc0c7 DisplayAlreadyCaughtText: ; cc0c7 call GetPokemonName ld hl, .AlreadyCaughtText jp PrintText ; cc0d0 .AlreadyCaughtText: ; 0xcc0d0 ; You already caught a @ . text_jump UnknownText_0x1c10dd db "@" ; 0xcc0d5 Predef2F: Predef38: Predef39: ; cc0d5 ret ; cc0d6 INCLUDE "battle/anim_commands.asm" INCLUDE "battle/anim_objects.asm" SECTION "Pic Animations 1", ROMX, BANK[$34] INCLUDE "gfx/pics/animation.asm" ; Pic animations are assembled in 3 parts: ; Top-level animations: ; frame #, duration: Frame 0 is the original pic (no change) ; setrepeat #: Sets the number of times to repeat ; dorepeat #: Repeats from command # (starting from 0) ; end ; Bitmasks: ; Layered over the pic to designate affected tiles ; Frame definitions: ; first byte is the bitmask used for this frame ; following bytes are tile ids mapped to each bit in the mask ; Main animations (played everywhere) INCLUDE "gfx/pics/anim_pointers.asm" INCLUDE "gfx/pics/anims.asm" ; Extra animations, appended to the main animation ; Used in the status screen (blinking, tail wags etc.) INCLUDE "gfx/pics/extra_pointers.asm" INCLUDE "gfx/pics/extras.asm" ; Unown has its own animation data despite having an entry in the main tables INCLUDE "gfx/pics/unown_anim_pointers.asm" INCLUDE "gfx/pics/unown_anims.asm" INCLUDE "gfx/pics/unown_extra_pointers.asm" INCLUDE "gfx/pics/unown_extras.asm" ; Bitmasks INCLUDE "gfx/pics/bitmask_pointers.asm" INCLUDE "gfx/pics/bitmasks.asm" INCLUDE "gfx/pics/unown_bitmask_pointers.asm" INCLUDE "gfx/pics/unown_bitmasks.asm" SECTION "Pic Animations 2", ROMX, BANK[$35] INCLUDE "gfx/pics/frame_pointers.asm" INCLUDE "gfx/pics/kanto_frames.asm" SECTION "bank36", ROMX, BANK[$36] FontInversed: INCBIN "gfx/misc/font_inversed.1bpp" SECTION "Pic Animations 3", ROMX, BANK[$36] INCLUDE "gfx/pics/johto_frames.asm" INCLUDE "gfx/pics/unown_frame_pointers.asm" INCLUDE "gfx/pics/unown_frames.asm" SECTION "Tileset Data 6", ROMX, BANK[TILESETS_6] INCLUDE "tilesets/data_6.asm" SECTION "bank38", ROMX, BANK[$38] Functione0000: ; e0000 push de xor a call GetSRAMBank ld hl, sScratch ld bc, 0 .asm_e000b push bc push hl push bc ld de, wd002 call Functione004e call Functione0057 ld hl, Unknown_e008b pop bc rept 2 add hl, bc endr ld a, [hli] ld e, a ld d, [hl] ld hl, wd012 call Functione004e pop hl ld bc, $10 add hl, bc pop bc inc c ld a, c cp $31 jr c, .asm_e000b ld hl, OverworldMap ld de, sScratch ld bc, $310 call CopyBytes pop hl ld de, sScratch ld c, $31 ld a, [hROMBank] ld b, a call Get2bpp call CloseSRAM ret ; e004e Functione004e: ; e004e ld c, $10 .asm_e0050 ld a, [hli] ld [de], a inc de dec c jr nz, .asm_e0050 ret ; e0057 Functione0057: ; e0057 ld hl, wd012 ld e, $80 ld d, $8 .asm_e005e push hl ld hl, wd002 call Functione0078 pop hl ld a, b ld [hli], a push hl ld hl, wd003 call Functione0078 pop hl ld a, b ld [hli], a srl e dec d jr nz, .asm_e005e ret ; e0078 Functione0078: ; e0078 ld b, $0 ld c, $8 .asm_e007c ld a, [hli] and e jr z, .asm_e0083 scf jr .asm_e0084 .asm_e0083 and a .asm_e0084 rr b inc hl dec c jr nz, .asm_e007c ret ; e008b Unknown_e008b: ; e008b dw wcaa0, wca30, wc9c0, wc950, wc8e0, wc870, wc800 dw wcab0, wca40, wc9d0, wc960, wc8f0, wc880, wc810 dw wcac0, wca50, wc9e0, wc970, wc900, wc890, wc820 dw wcad0, wca60, wc9f0, wc980, wc910, wc8a0, wc830 dw wcae0, wca70, wca00, wc990, wc920, wc8b0, wc840 dw wcaf0, wca80, wca10, wc9a0, wc930, wc8c0, wc850 dw wcb00, wca90, wca20, wc9b0, wc940, wc8d0, wc860 ; e00ed Unknown_e00ed: ; Graphics for an unused Game Corner ; game were meant to be here. Functione00ed: ; e00ed (38:40ed) ret ; e00ee (38:40ee) _CardFlip: ; e00ee (38:40ee) ld hl, Options set 4, [hl] call WhiteBGMap call ClearTileMap call ClearSprites ld de, MUSIC_NONE call PlayMusic call DelayFrame call DisableLCD call LoadStandardFont call LoadFontsExtra ld hl, LZ_e0d16 ld de, VTiles2 tile $00 call Decompress ld hl, LZ_e0ea8 ld de, VTiles2 tile $3e call Decompress ld hl, LZ_e0cdb ld de, VTiles0 tile $00 call Decompress ld hl, GFX_e0cf6 ld de, VTiles1 tile $6f ld bc, $10 call CopyBytes ld hl, GFX_e0d06 ld de, VTiles1 tile $75 ld bc, $10 call CopyBytes call Functione0521 call Functione04c1 call Functione0c37 call EnableLCD call Function3200 ld a, $e4 call DmgToCgbBGPals ld de, $e4e4 call DmgToCgbObjPals call DelayFrame xor a ld [wJumptableIndex], a ld a, $2 ld [wcf64], a ld [wcf65], a ld de, MUSIC_GAME_CORNER call PlayMusic .MasterLoop ld a, [wJumptableIndex] bit 7, a jr nz, .leavethegame call .CardFlip jr .MasterLoop .leavethegame call WaitSFX ld de, SFX_QUIT_SLOTS call PlaySFX call WaitSFX call WhiteBGMap ld hl, Options res 4, [hl] ret .CardFlip: ; e0191 (38:4191) 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] ; e01a0 (38:41a0) .Jumptable: ; e01a0 dw .AskPlayWithThree dw .DeductCoins dw .ChooseACard dw .PlaceYourBet dw .CheckTheCard dw .TabulateTheResult dw .PlayAgain dw .Quit ; e01b0 .Increment: ; e01b0 ld hl, wJumptableIndex inc [hl] ret ; e01b5 .AskPlayWithThree: ; e01b5 ld hl, .PlayWithThreeCoinsText call Functione0489 call YesNoBox jr c, .SaidNo call Functione0366 call .Increment ret .SaidNo ld a, $7 ld [wJumptableIndex], a ret ; e01cd .PlayWithThreeCoinsText: ; 0xe01cd ; Play with three coins? text_jump UnknownText_0x1c5793 db "@" ; 0xe01d2 .DeductCoins: ; e01d2 ld a, [Coins] ld h, a ld a, [Coins + 1] ld l, a ld a, h and a jr nz, .deduct ; You have at least 256 coins. ld a, l cp 3 jr nc, .deduct ; You have at least 3 coins. ld hl, .NotEnoughCoinsText call Functione0489 ld a, $7 ld [wJumptableIndex], a ret .deduct ld de, -3 add hl, de ld a, h ld [Coins], a ld a, l ld [Coins + 1], a ld de, SFX_TRANSACTION call PlaySFX xor a ld [hBGMapMode], a call Functione049c ld a, $1 ld [hBGMapMode], a call WaitSFX call .Increment ret ; e0212 .NotEnoughCoinsText: ; 0xe0212 ; Not enough coins… text_jump UnknownText_0x1c57ab db "@" ; 0xe0217 .ChooseACard: ; e0217 xor a ld [hBGMapMode], a hlcoord 0, 0 lb bc, 12, 9 call Functione04e5 hlcoord 9, 0 ld bc, SCREEN_WIDTH ld a, [wc6e8] call AddNTimes ld [hl], $f5 ld a, $1 ld [hBGMapMode], a ld c, $14 call DelayFrames hlcoord 2, 0 call Functione03c1 ld a, $1 ld [hBGMapMode], a ld c, $14 call DelayFrames hlcoord 2, 6 call Functione03c1 call WaitBGMap ld hl, .ChooseACardText call Functione0489 xor a ld [wcf66], a .loop call JoyTextDelay ld a, [hJoyLast] and A_BUTTON jr nz, .next ld de, SFX_KINESIS call PlaySFX call Functione0849 ld c, $4 call DelayFrames ld hl, wcf66 ld a, [hl] xor $1 ld [hl], a jr .loop .next ld de, SFX_SLOT_MACHINE_START call PlaySFX ld a, $3 .loop2 push af call Functione0849 ld c, $4 call DelayFrames call ClearSprites ld c, $4 call DelayFrames pop af dec a jr nz, .loop2 ld hl, wcf66 ld a, [hl] push af xor $1 ld [hl], a call Functione03ac lb bc, 6, 5 call Functione04e5 pop af ld [wcf66], a call .Increment ret ; e02b2 .ChooseACardText: ; 0xe02b2 ; Choose a card. text_jump UnknownText_0x1c57be db "@" ; 0xe02b7 .PlaceYourBet: ; e02b7 ld hl, .PlaceYourBetText call Functione0489 .betloop call JoyTextDelay ld a, [hJoyLast] and A_BUTTON jr nz, .betdone call Functione089c call Functione0960 call DelayFrame jr .betloop .betdone call .Increment ret ; e02d5 .PlaceYourBetText: ; 0xe02d5 ; Place your bet. text_jump UnknownText_0x1c57ce db "@" ; 0xe02da .CheckTheCard: ; e02da xor a ld [$ff9b], a call Functione0960 call WaitSFX ld de, SFX_CHOOSE_A_CARD call PlaySFX call WaitSFX ld a, [wc6e8] ld e, a ld d, $0 ld hl, wc6d0 rept 2 add hl, de endr ld a, [wcf66] ld e, a add hl, de ld a, [hl] ld [CurEnemyMoveNum], a ld e, a ld hl, wc6ea add hl, de ld [hl], $1 call Functione03ac call Functione03ec call Function3200 call .Increment ret ; e0314 .TabulateTheResult: ; e0314 call Functione0637 call Functiona80 call .Increment ret ; e031e .PlayAgain: ; e031e call ClearSprites ld hl, .PlayAgainText call Functione0489 call YesNoBox jr nc, .Continue call .Increment ret .Continue ld a, [wc6e8] inc a ld [wc6e8], a cp $c jr c, .KeepTheCurrentDeck call Functione04c1 ld a, $1 ld [hBGMapMode], a call Functione0366 ld hl, .CardsShuffledText call PrintText jr .LoopAround .KeepTheCurrentDeck call Functione0534 .LoopAround ld a, $1 ld [wJumptableIndex], a ret ; e0356 .PlayAgainText: ; 0xe0356 ; Want to play again? text_jump UnknownText_0x1c57df db "@" ; 0xe035b .CardsShuffledText: ; 0xe035b ; The cards have been shuffled. text_jump UnknownText_0x1c57f4 db "@" ; 0xe0360 .Quit: ; e0360 ld hl, wJumptableIndex set 7, [hl] ret ; e0366 Functione0366: ; e0366 ld hl, wc6d0 ld bc, $18 xor a call ByteFill ld de, wc6d0 ld c, $17 .asm_e0375 call Random and $1f cp $18 jr nc, .asm_e0375 ld l, a ld h, $0 add hl, de ld a, [hl] and a jr nz, .asm_e0375 ld [hl], c dec c jr nz, .asm_e0375 xor a ld [wc6e8], a ld hl, wc6ea ld bc, $18 call ByteFill ret ; e0398 Functione0398: ; e0398 ld hl, 0 ld bc, 6 ld a, [wcf64] call AddNTimes ld b, $0 ld a, [wcf65] ld c, a add hl, bc ret ; e03ac Functione03ac: ; e03ac ld a, [wcf66] and a jr nz, .asm_e03ba hlcoord 2, 0 ld bc, $1018 jr .asm_e03c0 .asm_e03ba hlcoord 2, 6 ld bc, $4018 .asm_e03c0 ret ; e03c1 Functione03c1: ; e03c1 xor a ld [hBGMapMode], a ld de, Unknown_e03ce lb bc, 6, 5 call Functione04f7 ret ; e03ce Unknown_e03ce: ; e03ce db $08, $09, $09, $09, $0a db $0b, $28, $2b, $28, $0c db $0b, $2c, $2d, $2e, $0c db $0b, $2f, $30, $31, $0c db $0b, $32, $33, $34, $0c db $0d, $0e, $0e, $0e, $0f ; e03ec Functione03ec: ; e03ec xor a ld [hBGMapMode], a push hl push hl ld de, Unknown_e043b lb bc, 6, 5 call Functione04f7 ld a, [CurEnemyMoveNum] ld e, a ld d, 0 ld hl, Unknown_e0459 rept 2 add hl, de endr ld a, [hli] ld e, a ld d, [hl] pop hl ld bc, $17 add hl, bc ld [hl], e ld bc, SCREEN_HEIGHT add hl, bc ld a, d ld de, SCREEN_WIDTH ld b, $3 .asm_e0418 push hl ld c, $3 .asm_e041b ld [hli], a inc a dec c jr nz, .asm_e041b pop hl add hl, de dec b jr nz, .asm_e0418 pop hl ld a, [hCGB] and a ret z ld de, AttrMap - TileMap add hl, de ld a, [CurEnemyMoveNum] and 3 inc a lb bc, 6, 5 call Functione04e7 ret ; e043b Unknown_e043b: ; e043b db $18, $19, $19, $19, $1a db $1b, $35, $7f, $7f, $1c db $0b, $28, $28, $28, $0c db $0b, $28, $28, $28, $0c db $0b, $28, $28, $28, $0c db $1d, $1e, $1e, $1e, $1f ; e0459 Unknown_e0459: ; e0459 db $f7,$4e, $f7,$57, $f7,$69, $f7,$60 db $f8,$4e, $f8,$57, $f8,$69, $f8,$60 db $f9,$4e, $f9,$57, $f9,$69, $f9,$60 db $fa,$4e, $fa,$57, $fa,$69, $fa,$60 db $fb,$4e, $fb,$57, $fb,$69, $fb,$60 db $fc,$4e, $fc,$57, $fc,$69, $fc,$60 ; e0489 Functione0489: ; e0489 push hl hlcoord 0, 12 ld b, $4 ld c, $12 call TextBox pop hl call PrintTextBoxText call Functione049c ret ; e049c Functione049c: ; e049c hlcoord 9, 15 ld b, $1 ld c, $9 call TextBox hlcoord 10, 16 ld de, String_e04bc call PlaceString hlcoord 15, 16 ld de, Coins lb bc, PRINTNUM_LEADINGZEROS | 2, 4 call PrintNum ret ; e04bc String_e04bc: db "COIN@" ; e04c1 Functione04c1: ; e04c1 (38:44c1) xor a ld [hBGMapMode], a ; $ff00+$d4 hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, $29 call ByteFill hlcoord 9, 0 ld de, Unknown_e110c lb bc, 12, 11 call Functione04f7 hlcoord 0, 12 lb bc, 4, 18 call TextBox ret ; e04e5 (38:44e5) Functione04e5: ; e04e5 ld a, $29 Functione04e7: ; e04e7 (38:44e7) push bc push hl .asm_e04e9 ld [hli], a dec c jr nz, .asm_e04e9 pop hl ld bc, $14 add hl, bc pop bc dec b jr nz, Functione04e7 ret Functione04f7: ; e04f7 (38:44f7) push bc push hl .asm_e04f9 ld a, [de] inc de ld [hli], a dec c jr nz, .asm_e04f9 pop hl ld bc, $14 add hl, bc pop bc dec b jr nz, Functione04f7 ret ; e0509 (38:4509) Functione0509: ; e0509 ld de, Sprites ld a, [hli] .asm_e050d push af ld a, [hli] add b ld [de], a inc de ld a, [hli] add c ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de pop af dec a jr nz, .asm_e050d ret ; e0521 Functione0521: ; e0521 (38:4521) ld de, VTiles1 tile $76 ld hl, $8f62 ld bc, $9e call CopyBytes ld hl, $8ffe xor a ld [hli], a ld [hl], a ret ; e0534 (38:4534) Functione0534: ; e0534 xor a ld [hBGMapMode], a ld a, [CurEnemyMoveNum] ld e, a ld d, 0 and 3 ld c, a ld b, 0 ld a, e and $1c srl a add Jumptable_e0553 % $100 ld l, a ld a, 0 adc Jumptable_e0553 / $100 ld h, a ld a, [hli] ld h, [hl] ld l, a jp [hl] ; e0553 Jumptable_e0553: ; e0553 dw Functione055f dw Functione0583 dw Functione05a7 dw Functione05cb dw Functione05ef dw Functione0613 ; e055f Functione055f: ; e055f ld hl, wc6e6 + 8 add hl, de ld a, [hl] and a jr nz, .asm_e0575 hlcoord 13, 3 rept 2 add hl, bc endr ld [hl], $36 ld bc, SCREEN_WIDTH add hl, bc ld [hl], $37 ret .asm_e0575 hlcoord 13, 3 rept 2 add hl, bc endr ld [hl], $36 ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3d ret ; e0583 Functione0583: ; e0583 ld hl, wc6e6 add hl, de ld a, [hl] and a jr nz, .asm_e0599 hlcoord 13, 4 rept 2 add hl, bc endr ld [hl], $3b ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3a ret .asm_e0599 hlcoord 13, 4 rept 2 add hl, bc endr ld [hl], $3d ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3a ret ; e05a7 Functione05a7: ; e05a7 ld hl, wc6e6 + 8 add hl, de ld a, [hl] and a jr nz, .asm_e05bd hlcoord 13, 6 rept 2 add hl, bc endr ld [hl], $36 ld bc, SCREEN_WIDTH add hl, bc ld [hl], $38 ret .asm_e05bd hlcoord 13, 6 rept 2 add hl, bc endr ld [hl], $36 ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3d ret ; e05cb Functione05cb: ; e05cb ld hl, wc6e6 add hl, de ld a, [hl] and a jr nz, .asm_e05e1 hlcoord 13, 7 rept 2 add hl, bc endr ld [hl], $3c ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3a ret .asm_e05e1 hlcoord 13, 7 rept 2 add hl, bc endr ld [hl], $3d ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3a ret ; e05ef Functione05ef: ; e05ef ld hl, wc6e6 + 8 add hl, de ld a, [hl] and a jr nz, .asm_e0605 hlcoord 13, 9 rept 2 add hl, bc endr ld [hl], $36 ld bc, SCREEN_WIDTH add hl, bc ld [hl], $39 ret .asm_e0605 hlcoord 13, 9 rept 2 add hl, bc endr ld [hl], $36 ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3d ret ; e0613 Functione0613: ; e0613 ld hl, wc6e6 add hl, de ld a, [hl] and a jr nz, .asm_e0629 hlcoord 13, 10 rept 2 add hl, bc endr ld [hl], $3c ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3a ret .asm_e0629 hlcoord 13, 10 rept 2 add hl, bc endr ld [hl], $3d ld bc, SCREEN_WIDTH add hl, bc ld [hl], $3a ret ; e0637 Functione0637: ; e0637 call Functione0398 add hl, hl ld de, Jumptable_e0643 add hl, de ld a, [hli] ld h, [hl] ld l, a jp [hl] ; e0643 Jumptable_e0643: ; e0643 dw Functione06a3 dw Functione06a3 dw Functione06a6 dw Functione06a6 dw Functione06b0 dw Functione06b0 dw Functione06a3 dw Functione06a3 dw Functione06ec dw Functione06f6 dw Functione0702 dw Functione070e dw Functione06c2 dw Functione0722 dw Functione0770 dw Functione0774 dw Functione0778 dw Functione077c dw Functione06c2 dw Functione072c dw Functione0780 dw Functione0784 dw Functione0788 dw Functione078c dw Functione06cc dw Functione0738 dw Functione0790 dw Functione0794 dw Functione0798 dw Functione079c dw Functione06cc dw Functione0744 dw Functione07a0 dw Functione07a4 dw Functione07a8 dw Functione07ac dw Functione06d8 dw Functione0750 dw Functione07b0 dw Functione07b4 dw Functione07b8 dw Functione07bc dw Functione06d8 dw Functione075c dw Functione07c0 dw Functione07c4 dw Functione07c8 dw Functione07cc ; e06a3 Functione06a3: ; e06a3 jp Functione07db ; e06a6 Functione06a6: ; e06a6 ld a, [CurEnemyMoveNum] and $2 jp nz, Functione07db jr Functione06ba Functione06b0: ; e06b0 ld a, [CurEnemyMoveNum] and $2 jr nz, Functione06ba jp Functione07db Functione06ba: ; e06ba ld c, $6 ld de, SFX_2ND_PLACE jp Functione07eb ; e06c2 Functione06c2: ; e06c2 ld a, [CurEnemyMoveNum] and $18 jr z, Functione06e4 jp Functione07db Functione06cc: ; e06cc ld a, [CurEnemyMoveNum] and $18 cp $8 jr z, Functione06e4 jp Functione07db Functione06d8: ; e06d8 ld a, [CurEnemyMoveNum] and $18 cp $10 jr z, Functione06e4 jp Functione07db Functione06e4: ; e06e4 ld c, $9 ld de, SFX_2ND_PLACE jp Functione07eb ; e06ec Functione06ec: ; e06ec ld a, [CurEnemyMoveNum] and $3 jr z, Functione071a jp Functione07db Functione06f6: ; e06f6 ld a, [CurEnemyMoveNum] and $3 cp $1 jr z, Functione071a jp Functione07db Functione0702: ; e0702 ld a, [CurEnemyMoveNum] and $3 cp $2 jr z, Functione071a jp Functione07db Functione070e: ; e070e ld a, [CurEnemyMoveNum] and $3 cp $3 jr z, Functione071a jp Functione07db Functione071a: ; e071a ld c, $c ld de, SFX_2ND_PLACE jp Functione07eb ; e0722 Functione0722: ; e0722 ld a, [CurEnemyMoveNum] and $1c jr z, Functione0768 jp Functione07db Functione072c: ; e072c ld a, [CurEnemyMoveNum] and $1c cp $4 jr z, Functione0768 jp Functione07db Functione0738: ; e0738 ld a, [CurEnemyMoveNum] and $1c cp $8 jr z, Functione0768 jp Functione07db Functione0744: ; e0744 ld a, [CurEnemyMoveNum] and $1c cp $c jr z, Functione0768 jp Functione07db Functione0750: ; e0750 ld a, [CurEnemyMoveNum] and $1c cp $10 jr z, Functione0768 jp Functione07db Functione075c: ; e075c ld a, [CurEnemyMoveNum] and $1c cp $14 jr z, Functione0768 jp Functione07db Functione0768: ; e0768 ld c, $12 ld de, SFX_2ND_PLACE jp Functione07eb ; e0770 Functione0770: ; e0770 ld e, $0 jr Functione07ce Functione0774: ; e0774 ld e, $1 jr Functione07ce Functione0778: ; e0778 ld e, $2 jr Functione07ce Functione077c: ; e077c ld e, $3 jr Functione07ce Functione0780: ; e0780 ld e, $4 jr Functione07ce Functione0784: ; e0784 ld e, $5 jr Functione07ce Functione0788: ; e0788 ld e, $6 jr Functione07ce Functione078c: ; e078c ld e, $7 jr Functione07ce Functione0790: ; e0790 ld e, $8 jr Functione07ce Functione0794: ; e0794 ld e, $9 jr Functione07ce Functione0798: ; e0798 ld e, $a jr Functione07ce Functione079c: ; e079c ld e, $b jr Functione07ce Functione07a0: ; e07a0 ld e, $c jr Functione07ce Functione07a4: ; e07a4 ld e, $d jr Functione07ce Functione07a8: ; e07a8 ld e, $e jr Functione07ce Functione07ac: ; e07ac ld e, $f jr Functione07ce Functione07b0: ; e07b0 ld e, $10 jr Functione07ce Functione07b4: ; e07b4 ld e, $11 jr Functione07ce Functione07b8: ; e07b8 ld e, $12 jr Functione07ce Functione07bc: ; e07bc ld e, $13 jr Functione07ce Functione07c0: ; e07c0 ld e, $14 jr Functione07ce Functione07c4: ; e07c4 ld e, $15 jr Functione07ce Functione07c8: ; e07c8 ld e, $16 jr Functione07ce Functione07cc: ; e07cc ld e, $17 Functione07ce: ; e07ce ld a, [CurEnemyMoveNum] cp e jr nz, Functione07db ld c, $48 ld de, SFX_2ND_PLACE jr Functione07eb Functione07db: ; e07db ld de, SFX_WRONG call PlaySFX ld hl, UnknownText_0xe0816 call Functione0489 call WaitSFX ret Functione07eb: ; e07eb push bc push de ld hl, UnknownText_0xe0811 call Functione0489 pop de call PlaySFX call WaitSFX pop bc .asm_e07fb push bc call Functione0833 jr c, .asm_e0804 call Functione081b .asm_e0804 call Functione049c ld c, $2 call DelayFrames pop bc dec c jr nz, .asm_e07fb ret ; e0811 UnknownText_0xe0811: ; 0xe0811 ; Yeah! text_jump UnknownText_0x1c5813 db "@" ; 0xe0816 UnknownText_0xe0816: ; 0xe0816 ; Darn… text_jump UnknownText_0x1c581a db "@" ; 0xe081b Functione081b: ; e081b ld a, [Coins] ld h, a ld a, [Coins + 1] ld l, a inc hl ld a, h ld [Coins], a ld a, l ld [Coins + 1], a ld de, SFX_PAY_DAY call PlaySFX ret ; e0833 Functione0833: ; e0833 ld a, [Coins] cp 9999 / $100 jr c, .asm_e0847 jr z, .asm_e083e jr .asm_e0845 .asm_e083e ld a, [Coins + 1] cp 9999 % $100 jr c, .asm_e0847 .asm_e0845 scf ret .asm_e0847 and a ret ; e0849 Functione0849: ; e0849 call Functione03ac ld hl, Unknown_e0853 call Functione0509 ret ; e0853 Unknown_e0853: ; e0853 db 18 db $00, $00, $04, $00 db $00, $08, $06, $00 db $00, $10, $06, $00 db $00, $18, $06, $00 db $00, $20, $04, $20 db $08, $00, $05, $00 db $08, $20, $05, $20 db $10, $00, $05, $00 db $10, $20, $05, $20 db $18, $00, $05, $00 db $18, $20, $05, $20 db $20, $00, $05, $00 db $20, $20, $05, $20 db $28, $00, $04, $40 db $28, $08, $06, $40 db $28, $10, $06, $40 db $28, $18, $06, $40 db $28, $20, $04, $60 ; e089c Functione089c: ; e089c ld hl, hJoyLast ld a, [hl] and D_LEFT jp nz, Functione08b8 ld a, [hl] and D_RIGHT jp nz, Functione08ef ld a, [hl] and D_UP jp nz, Functione090a ld a, [hl] and D_DOWN jp nz, Functione093d ret ; e08b8 Functione08b8: ; e08b8 ld hl, wcf65 ld a, [wcf64] and a jr z, .asm_e08d5 cp $1 jr z, .asm_e08cc ld a, [hl] and a ret z dec [hl] jp Functione0959 .asm_e08cc ld a, [hl] cp $3 jr c, .asm_e08e2 dec [hl] jp Functione0959 .asm_e08d5 ld a, [hl] and $e ld [hl], a cp $3 jr c, .asm_e08e2 rept 2 dec [hl] endr jp Functione0959 .asm_e08e2 ld a, $2 ld [wcf64], a ld a, $1 ld [wcf65], a jp Functione0959 ; e08ef Functione08ef: ; e08ef ld hl, wcf65 ld a, [wcf64] and a jr z, .asm_e08ff ld a, [hl] cp $5 ret nc inc [hl] jr Functione0959 .asm_e08ff ld a, [hl] and $e ld [hl], a cp $4 ret nc rept 2 inc [hl] endr jr Functione0959 Functione090a: ; e090a ld hl, wcf64 ld a, [wcf65] and a jr z, .asm_e0925 cp $1 jr z, .asm_e091d ld a, [hl] and a ret z dec [hl] jr Functione0959 .asm_e091d ld a, [hl] cp $3 jr c, .asm_e0931 dec [hl] jr Functione0959 .asm_e0925 ld a, [hl] and $e ld [hl], a cp $3 jr c, .asm_e0931 rept 2 dec [hl] endr jr Functione0959 .asm_e0931 ld a, $1 ld [wcf64], a ld a, $2 ld [wcf65], a jr Functione0959 Functione093d: ; e093d ld hl, wcf64 ld a, [wcf65] and a jr z, .asm_e0950 ld hl, wcf64 ld a, [hl] cp $7 ret nc inc [hl] jr Functione0959 .asm_e0950 ld a, [hl] and $e ld [hl], a cp $6 ret nc rept 2 inc [hl] endr Functione0959: ; e0959 ld de, SFX_POKEBALLS_PLACED_ON_TABLE call PlaySFX ret ; e0960 Functione0960: ; e0960 call ClearSprites ld a, [hCGB] and a jr nz, .asm_e096d ld a, [$ff9b] and $4 ret nz .asm_e096d call Functione0398 rept 2 add hl, hl endr ld de, Unknown_e0981 add hl, de ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a call Functione0509 ret ; e0981 Unknown_e0981: ; e0981 dbbw $58, $10, Unknown_e0c26 dbbw $60, $10, Unknown_e0c26 dbbw $68, $10, Unknown_e0b8d dbbw $68, $10, Unknown_e0b8d dbbw $88, $10, Unknown_e0b8d dbbw $88, $10, Unknown_e0b8d dbbw $58, $18, Unknown_e0c26 dbbw $60, $18, Unknown_e0c26 dbbw $68, $18, Unknown_e0a5a dbbw $78, $18, Unknown_e0a5a dbbw $88, $18, Unknown_e0a5a dbbw $98, $18, Unknown_e0a5a dbbw $58, $28, Unknown_e0b14 dbbw $60, $28, Unknown_e0ac3 dbbw $68, $28, Unknown_e0a41 dbbw $78, $28, Unknown_e0a41 dbbw $88, $28, Unknown_e0a41 dbbw $98, $28, Unknown_e0a41 dbbw $58, $28, Unknown_e0b14 dbbw $60, $34, Unknown_e0ac3 dbbw $68, $34, Unknown_e0a41 dbbw $78, $34, Unknown_e0a41 dbbw $88, $34, Unknown_e0a41 dbbw $98, $34, Unknown_e0a41 dbbw $58, $40, Unknown_e0b14 dbbw $60, $40, Unknown_e0ac3 dbbw $68, $40, Unknown_e0a41 dbbw $78, $40, Unknown_e0a41 dbbw $88, $40, Unknown_e0a41 dbbw $98, $40, Unknown_e0a41 dbbw $58, $40, Unknown_e0b14 dbbw $60, $4c, Unknown_e0ac3 dbbw $68, $4c, Unknown_e0a41 dbbw $78, $4c, Unknown_e0a41 dbbw $88, $4c, Unknown_e0a41 dbbw $98, $4c, Unknown_e0a41 dbbw $58, $58, Unknown_e0b14 dbbw $60, $58, Unknown_e0ac3 dbbw $68, $58, Unknown_e0a41 dbbw $78, $58, Unknown_e0a41 dbbw $88, $58, Unknown_e0a41 dbbw $98, $58, Unknown_e0a41 dbbw $58, $58, Unknown_e0b14 dbbw $60, $64, Unknown_e0ac3 dbbw $68, $64, Unknown_e0a41 dbbw $78, $64, Unknown_e0a41 dbbw $88, $64, Unknown_e0a41 dbbw $98, $64, Unknown_e0a41 ; e0a41 Unknown_e0a41: ; e0a41 db 6 db $00, $ff, $00, $80 db $00, $00, $02, $80 db $00, $08, $03, $80 db $05, $ff, $00, $c0 db $05, $00, $02, $c0 db $05, $08, $03, $80 Unknown_e0a5a: ; e0a5a db 26 db $00, $ff, $00, $80 db $00, $00, $02, $80 db $00, $08, $00, $a0 db $08, $ff, $01, $80 db $08, $08, $01, $a0 db $10, $ff, $01, $80 db $10, $08, $03, $80 db $18, $ff, $01, $80 db $18, $08, $03, $80 db $20, $ff, $01, $80 db $20, $08, $03, $80 db $28, $ff, $01, $80 db $28, $08, $03, $80 db $30, $ff, $01, $80 db $30, $08, $03, $80 db $38, $ff, $01, $80 db $38, $08, $03, $80 db $40, $ff, $01, $80 db $40, $08, $03, $80 db $48, $ff, $01, $80 db $48, $08, $03, $80 db $50, $ff, $01, $80 db $50, $08, $03, $80 db $51, $ff, $00, $c0 db $51, $00, $02, $c0 db $51, $08, $03, $80 Unknown_e0ac3: ; e0ac3 db 20 db $00, $ff, $00, $80 db $00, $00, $02, $80 db $00, $08, $02, $80 db $00, $10, $03, $80 db $00, $18, $02, $80 db $00, $20, $03, $80 db $00, $28, $02, $80 db $00, $30, $03, $80 db $00, $38, $02, $80 db $00, $40, $03, $80 db $05, $ff, $00, $c0 db $05, $00, $02, $c0 db $05, $08, $02, $c0 db $05, $10, $03, $80 db $05, $18, $02, $c0 db $05, $20, $03, $80 db $05, $28, $02, $c0 db $05, $30, $03, $80 db $05, $38, $02, $c0 db $05, $40, $03, $80 Unknown_e0b14: ; e0b14 db 30 db $00, $00, $00, $80 db $00, $08, $02, $80 db $00, $10, $02, $80 db $00, $18, $03, $80 db $00, $20, $02, $80 db $00, $28, $03, $80 db $00, $30, $02, $80 db $00, $38, $03, $80 db $00, $40, $02, $80 db $00, $48, $03, $80 db $08, $00, $01, $80 db $08, $18, $03, $80 db $08, $28, $03, $80 db $08, $38, $03, $80 db $08, $48, $03, $80 db $10, $00, $01, $80 db $10, $18, $03, $80 db $10, $28, $03, $80 db $10, $38, $03, $80 db $10, $48, $03, $80 db $11, $00, $00, $c0 db $11, $08, $02, $c0 db $11, $10, $02, $c0 db $11, $18, $03, $80 db $11, $20, $03, $80 db $11, $28, $03, $80 db $11, $30, $03, $80 db $11, $38, $03, $80 db $11, $40, $03, $80 db $11, $48, $03, $80 Unknown_e0b8d: ; e0b8d db 38 db $00, $ff, $00, $80 db $00, $18, $00, $a0 db $08, $ff, $01, $80 db $08, $18, $01, $a0 db $10, $ff, $01, $80 db $10, $18, $01, $a0 db $18, $ff, $01, $80 db $18, $08, $03, $80 db $18, $18, $03, $80 db $20, $ff, $01, $80 db $20, $08, $03, $80 db $20, $18, $03, $80 db $28, $ff, $01, $80 db $28, $08, $03, $80 db $28, $18, $03, $80 db $30, $ff, $01, $80 db $30, $08, $03, $80 db $30, $18, $03, $80 db $38, $ff, $01, $80 db $38, $08, $03, $80 db $38, $18, $03, $80 db $40, $ff, $01, $80 db $40, $08, $03, $80 db $40, $18, $03, $80 db $48, $ff, $01, $80 db $48, $08, $03, $80 db $48, $18, $03, $80 db $50, $ff, $01, $80 db $50, $08, $03, $80 db $50, $18, $03, $80 db $58, $ff, $01, $80 db $58, $08, $03, $80 db $58, $18, $03, $80 db $59, $ff, $00, $c0 db $59, $00, $02, $c0 db $59, $08, $03, $c0 db $59, $10, $02, $c0 db $59, $18, $03, $e0 Unknown_e0c26: ; e0c26 db 4 db $00, $00, $00, $80 db $00, $08, $00, $a0 db $08, $00, $00, $c0 db $08, $08, $00, $e0 ; e0c37 Functione0c37: ; e0c37 (38:4c37) ld a, [hCGB] ; $ff00+$e6 and a ret z hlcoord 0, 0, AttrMap ld bc, SCREEN_HEIGHT * SCREEN_WIDTH xor a call ByteFill hlcoord 12, 1, AttrMap lb bc, 2, 2 ld a, $1 call Functione04e7 hlcoord 14, 1, AttrMap lb bc, 2, 2 ld a, $2 call Functione04e7 hlcoord 16, 1, AttrMap lb bc, 2, 2 ld a, $3 call Functione04e7 hlcoord 18, 1, AttrMap lb bc, 2, 2 ld a, $4 call Functione04e7 hlcoord 9, 0, AttrMap lb bc, 12, 1 ld a, $1 call Functione04e7 ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e0c93 ld de, Unkn1Pals ld bc, $48 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 ret ; e0c93 (38:4c93) Palette_e0c93: ; e0c93 RGB 31, 31, 31 RGB 17, 07, 31 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 29, 25, 00 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 31, 13, 30 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 08, 17, 30 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 08, 31, 08 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 17, 07, 31 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 17, 07, 31 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 17, 07, 31 RGB 06, 19, 08 RGB 00, 00, 00 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 00, 00 RGB 31, 00, 00 ; e0cdb LZ_e0cdb: ; e0cdb INCBIN "gfx/unknown/0e0cdb.2bpp.lz" GFX_e0cf6: ; e0cf6 INCBIN "gfx/unknown/0e0cf6.2bpp" GFX_e0d06: ; e0d06 INCBIN "gfx/unknown/0e0d06.2bpp" LZ_e0d16: ; e0d16 INCBIN "gfx/unknown/0e0d16.2bpp.lz" LZ_e0ea8: ; e0ea8 INCBIN "gfx/unknown/0e0ea8.2bpp.lz" Unknown_e110c: ; e110c db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27 db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d db $ef, $25, $04, $00, $01, $00, $01, $00, $01, $00, $01 db $ef, $05, $14, $10, $11, $10, $11, $10, $11, $10, $11 db $ef, $16, $24, $20, $21, $20, $21, $20, $21, $20, $21 db $ef, $25, $04, $00, $02, $00, $02, $00, $02, $00, $02 db $ef, $05, $14, $10, $12, $10, $12, $10, $12, $10, $12 db $ef, $16, $24, $20, $22, $20, $22, $20, $22, $20, $22 db $ef, $25, $04, $00, $03, $00, $03, $00, $03, $00, $03 db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13 db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23 ; e1190 Functione1190: ; e1190 ld a, [hInMenu] push af ld a, $1 ld [hInMenu], a call WhiteBGMap call ClearTileMap call ClearSprites xor a ld [hBGMapMode], a call DisableLCD ld hl, wc608 ld bc, $1e0 xor a call ByteFill ld hl, GFX_e17c5 ld de, VTiles1 tile $60 ld bc, $40 call CopyBytes ld hl, LZ_e1805 ld de, VTiles1 tile $6d call Decompress call Functione17a3 hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, $ee call ByteFill hlcoord 4, 3 lb bc, 12, 12 ld a, $ef call Functione13ee call Functione124e call Functione13fe call Functione127d xor a ld [hSCY], a ld [hSCX], a ld [rWY], a ld [wJumptableIndex], a ld [wcf64], a ld [wcf65], a ld [wcf66], a ld a, $93 ld [rLCDC], a call WaitBGMap ld b, $18 call GetSGBLayout ld a, $e4 call DmgToCgbBGPals ld a, $24 call Functioncf8 xor a ld [wd0ec], a call DelayFrame .asm_e1217 call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .asm_e123d call Functione12ca ld a, [wcf64] and a jr nz, .asm_e1230 ld a, [$ff9b] and $10 jr z, .asm_e1235 .asm_e1230 call Functione14d9 jr .asm_e1238 .asm_e1235 call ClearSprites .asm_e1238 call DelayFrame jr .asm_e1217 .asm_e123d pop af ld [hInMenu], a call WhiteBGMap call ClearTileMap call ClearSprites ld a, $e3 ld [rLCDC], a ret ; e124e Functione124e: ; e124e ld c, $1 ld b, $10 .asm_e1252 call Random and $f ld hl, Unknown_e126d ld e, a ld d, $0 add hl, de ld e, [hl] ld hl, wc6d0 add hl, de ld a, [hl] and a jr nz, .asm_e1252 ld [hl], c inc c dec b jr nz, .asm_e1252 ret ; e126d Unknown_e126d: ; e126d db $00, $01, $02, $03 db $04, $05, $06, $0b db $0c, $11, $12, $17 db $18, $1d, $1e, $23 ; e127d Functione127d: ; e127d call Functione128d hlcoord 5, 16 ld a, $f6 ld c, $a .asm_e1287 ld [hli], a inc a dec c jr nz, .asm_e1287 ret ; e128d Functione128d: ; e128d hlcoord 4, 15 ld a, $f0 ld [hli], a ld bc, $a ld a, $f1 call ByteFill hlcoord 15, 15 ld a, $f2 ld [hli], a hlcoord 4, 16 ld a, $f3 ld [hli], a ld bc, $a ld a, $ef call ByteFill hlcoord 15, 16 ld a, $f3 ld [hli], a hlcoord 4, 17 ld a, $f4 ld [hli], a ld bc, $a ld a, $f1 call ByteFill hlcoord 15, 17 ld a, $f5 ld [hl], a ret ; e12ca Functione12ca: ; e12ca ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, Jumptable_e12d9 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; e12d9 Jumptable_e12d9: ; e12d9 dw Functione12db ; e12db Functione12db: ; e12db ld a, [hJoyPressed] and START jp nz, Functione13de ld a, [hJoyPressed] and A_BUTTON jp nz, Functione1376 ld hl, hJoyLast ld a, [hl] and D_UP jr nz, .asm_e1301 ld a, [hl] and D_DOWN jr nz, .asm_e130d ld a, [hl] and D_LEFT jr nz, .asm_e1325 ld a, [hl] and D_RIGHT jr nz, .asm_e1345 ret .asm_e1301 ld hl, wcf65 ld a, [hl] cp $6 ret c sub $6 ld [hl], a jr .asm_e1364 .asm_e130d ld hl, wcf65 ld a, [hl] cp $19 ret z cp $1a ret z cp $1b ret z cp $1c ret z cp $1e ret nc add $6 ld [hl], a jr .asm_e1364 .asm_e1325 ld hl, wcf65 ld a, [hl] and a ret z cp $6 ret z cp $c ret z cp $12 ret z cp $18 ret z cp $1e ret z cp $23 jr z, .asm_e1341 dec [hl] jr .asm_e1364 .asm_e1341 ld [hl], $1e jr .asm_e1364 .asm_e1345 ld hl, wcf65 ld a, [hl] cp $5 ret z cp $b ret z cp $11 ret z cp $17 ret z cp $1d ret z cp $23 ret z cp $1e jr z, .asm_e1362 inc [hl] jr .asm_e1364 .asm_e1362 ld [hl], $23 .asm_e1364 ld a, [wcf64] and a jr nz, .asm_e136f ld de, SFX_POUND jr .asm_e1372 .asm_e136f ld de, SFX_MOVE_PUZZLE_PIECE .asm_e1372 call PlaySFX ret ; e1376 Functione1376: ; e1376 ld a, [wcf64] and a jr nz, .asm_e139f call Functione1475 and a jr z, Functione13e4 ld de, SFX_MEGA_KICK call PlaySFX ld [hl], $0 ld [wcf66], a call Functione14d9 call Functione1441 call WaitBGMap call WaitSFX ld a, $1 ld [wcf64], a ret .asm_e139f call Functione1475 and a jr nz, Functione13e4 ld de, SFX_PLACE_PUZZLE_PIECE_DOWN call PlaySFX ld a, [wcf66] ld [hl], a call Functione141f call WaitBGMap xor a ld [wcf66], a call Functione14d9 xor a ld [wcf64], a call WaitSFX call Functione14a0 ret nc call Functione128d call ClearSprites ld de, SFX_1ST_PLACE call PlaySFX call WaitSFX call Functionaa5 ld a, $1 ld [wd0ec], a Functione13de: ; e13de ld hl, wJumptableIndex set 7, [hl] ret Functione13e4: ; e13e4 ld de, SFX_WRONG call PlaySFX call WaitSFX ret ; e13ee Functione13ee: ; e13ee ld de, SCREEN_WIDTH .asm_e13f1 push bc push hl .asm_e13f3 ld [hli], a dec c jr nz, .asm_e13f3 pop hl add hl, de pop bc dec b jr nz, .asm_e13f1 ret ; e13fe Functione13fe: ; e13fe xor a ld [wcf65], a ld c, $24 .asm_e1404 push bc call Functione1475 ld [wcf66], a and a jr z, .asm_e1413 call Functione141f jr .asm_e1416 .asm_e1413 call Functione1441 .asm_e1416 ld hl, wcf65 inc [hl] pop bc dec c jr nz, .asm_e1404 ret ; e141f Functione141f: ; e141f ld a, $2 call Functione1463 ld a, [hli] ld h, [hl] ld l, a push hl call Functione1481 pop hl ld de, SCREEN_WIDTH ld b, $3 .asm_e1431 ld c, $3 push hl .asm_e1434 ld [hli], a inc a dec c jr nz, .asm_e1434 add $9 pop hl add hl, de dec b jr nz, .asm_e1431 ret ; e1441 Functione1441: ; e1441 ld a, $2 call Functione1463 ld a, [hli] ld h, [hl] ld l, a push hl ld a, $4 call Functione1463 ld a, [hl] pop hl ld de, SCREEN_WIDTH ld b, $3 .asm_e1456 ld c, $3 push hl .asm_e1459 ld [hli], a dec c jr nz, .asm_e1459 pop hl add hl, de dec b jr nz, .asm_e1456 ret ; e1463 Functione1463: ; e1463 ld e, a ld d, 0 ld hl, Unknown_e1559 add hl, de ld a, [wcf65] ld e, a rept 4 add hl, de endr rept 2 add hl, de endr ret ; e1475 Functione1475: ; e1475 ld hl, wc6d0 ld a, [wcf65] ld e, a ld d, $0 add hl, de ld a, [hl] ret ; e1481 Functione1481: ; e1481 ld a, [wcf66] ld hl, Unknown_e148f add l ld l, a ld a, $0 adc h ld h, a ld a, [hl] ret ; e148f Unknown_e148f: ; e148f db $e0 db $00, $03, $06, $09 db $24, $27, $2a, $2d db $48, $4b, $4e, $51 db $6c, $6f, $72, $75 ; e14a0 Functione14a0: ; e14a0 ld hl, Unknown_e14b5 ld de, wc6d0 ld c, $24 .asm_e14a8 ld a, [de] cp [hl] jr nz, .asm_e14b3 inc de inc hl dec c jr nz, .asm_e14a8 scf ret .asm_e14b3 and a ret ; e14b5 Unknown_e14b5: ; e14b5 db $00, $00, $00, $00, $00, $00 db $00, $01, $02, $03, $04, $00 db $00, $05, $06, $07, $08, $00 db $00, $09, $0a, $0b, $0c, $00 db $00, $0d, $0e, $0f, $10, $00 db $00, $00, $00, $00, $00, $00 ; e14d9 Functione14d9: ; e14d9 call Functione1481 ld [DefaultFlypoint], a xor a call Functione1463 ld a, [hli] ld b, [hl] ld c, a ld a, [DefaultFlypoint] cp $e0 jr z, .asm_e14f2 ld hl, Unknown_e150f jr .asm_e14f5 .asm_e14f2 ld hl, Unknown_e1534 .asm_e14f5 ld de, Sprites .asm_e14f8 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, [DefaultFlypoint] add [hl] ld [de], a inc hl inc de ld a, [hli] ld [de], a inc de jr .asm_e14f8 ; e150f Unknown_e150f: ; e150f db $f4, $f4, $00, $00 db $f4, $fc, $01, $00 db $f4, $04, $02, $00 db $fc, $f4, $0c, $00 db $fc, $fc, $0d, $00 db $fc, $04, $0e, $00 db $04, $f4, $18, $00 db $04, $fc, $19, $00 db $04, $04, $1a, $00 db $ff Unknown_e1534: ; e1534 db $f4, $f4, $00, $00 db $f4, $fc, $01, $00 db $f4, $04, $00, $20 db $fc, $f4, $02, $00 db $fc, $fc, $03, $00 db $fc, $04, $02, $20 db $04, $f4, $00, $40 db $04, $fc, $01, $40 db $04, $04, $00, $60 db $ff Unknown_e1559: ; e1559 macro_e1559: macro db \1, \2 dwcoord \3, \4 db \5, \6 endm macro_e1559 $1c, $1c, 1, 0, $ee, $00 macro_e1559 $34, $1c, 4, 0, $ee, $00 macro_e1559 $4c, $1c, 7, 0, $ee, $00 macro_e1559 $64, $1c, 10, 0, $ee, $00 macro_e1559 $7c, $1c, 13, 0, $ee, $00 macro_e1559 $94, $1c, 16, 0, $ee, $00 macro_e1559 $1c, $34, 1, 3, $ee, $00 macro_e1559 $34, $34, 4, 3, $ef, $00 macro_e1559 $4c, $34, 7, 3, $ef, $00 macro_e1559 $64, $34, 10, 3, $ef, $00 macro_e1559 $7c, $34, 13, 3, $ef, $00 macro_e1559 $94, $34, 16, 3, $ee, $00 macro_e1559 $1c, $4c, 1, 6, $ee, $00 macro_e1559 $34, $4c, 4, 6, $ef, $00 macro_e1559 $4c, $4c, 7, 6, $ef, $00 macro_e1559 $64, $4c, 10, 6, $ef, $00 macro_e1559 $7c, $4c, 13, 6, $ef, $00 macro_e1559 $94, $4c, 16, 6, $ee, $00 macro_e1559 $1c, $64, 1, 9, $ee, $00 macro_e1559 $34, $64, 4, 9, $ef, $00 macro_e1559 $4c, $64, 7, 9, $ef, $00 macro_e1559 $64, $64, 10, 9, $ef, $00 macro_e1559 $7c, $64, 13, 9, $ef, $00 macro_e1559 $94, $64, 16, 9, $ee, $00 macro_e1559 $1c, $7c, 1, 12, $ee, $00 macro_e1559 $34, $7c, 4, 12, $ef, $00 macro_e1559 $4c, $7c, 7, 12, $ef, $00 macro_e1559 $64, $7c, 10, 12, $ef, $00 macro_e1559 $7c, $7c, 13, 12, $ef, $00 macro_e1559 $94, $7c, 16, 12, $ee, $00 macro_e1559 $1c, $94, 1, 15, $ee, $00 macro_e1559 $34, $94, 4, 15, $ee, $00 macro_e1559 $4c, $94, 7, 15, $ee, $00 macro_e1559 $64, $94, 10, 15, $ee, $00 macro_e1559 $7c, $94, 13, 15, $ee, $00 macro_e1559 $94, $94, 16, 15, $ee, $00 Functione1631: ; e1631 ld hl, VTiles2 ld de, VTiles0 ld b, $6 .asm_e1639 push bc push hl push hl call Functione1654 pop hl ld bc, 8 add hl, bc call Functione1654 pop hl ld bc, $60 add hl, bc pop bc dec b jr nz, .asm_e1639 call Functione16c7 ret ; e1654 Functione1654: ; e1654 ld c, $6 .asm_e1656 push bc push hl push hl ld c, $4 .asm_e165b push bc ld a, [hli] and $f0 swap a call Functione16aa ld c, a ld a, [hli] and $f0 swap a call Functione16aa ld b, a ld a, c ld [de], a inc de ld a, b ld [de], a inc de ld a, c ld [de], a inc de ld a, b ld [de], a inc de pop bc dec c jr nz, .asm_e165b pop hl ld c, $4 .asm_e1681 push bc ld a, [hli] and $f call Functione16aa ld c, a ld a, [hli] and $f call Functione16aa ld b, a ld a, c ld [de], a inc de ld a, b ld [de], a inc de ld a, c ld [de], a inc de ld a, b ld [de], a inc de pop bc dec c jr nz, .asm_e1681 pop hl ld bc, $10 add hl, bc pop bc dec c jr nz, .asm_e1656 ret ; e16aa Functione16aa: ; e16aa push hl ld hl, Unknown_e16b7 add l ld l, a ld a, 0 adc h ld h, a ld a, [hl] pop hl ret ; e16b7 Unknown_e16b7: ; e16b7 db $00, $03, $0c, $0f db $30, $33, $3c, $3f db $c0, $c3, $cc, $cf db $f0, $f3, $fc, $ff ; e16c7 Functione16c7: ; e16c7 ld hl, Unknown_e1703 ld a, $8 .asm_e16cc push af push hl ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld h, [hl] ld l, a call Functione16e2 pop hl rept 4 inc hl endr pop af dec a jr nz, .asm_e16cc ret ; e16e2 Functione16e2: ; e16e2 lb bc, 4, 4 .asm_e16e5 push bc .asm_e16e6 push de push hl ld b, $10 .asm_e16ea ld a, [de] or [hl] ld [hli], a inc de dec b jr nz, .asm_e16ea pop hl ld de, $30 add hl, de pop de dec c jr nz, .asm_e16e6 ld bc, $180 add hl, bc pop bc dec b jr nz, .asm_e16e5 ret ; e1703 Unknown_e1703: ; e1703 dw GFX_e1723 + $00, $8000 dw GFX_e1723 + $10, $8010 dw GFX_e1723 + $20, $8020 dw GFX_e1723 + $30, $80c0 dw GFX_e1723 + $40, $80e0 dw GFX_e1723 + $50, $8180 dw GFX_e1723 + $60, $8190 dw GFX_e1723 + $70, $81a0 ; e1723 GFX_e1723: ; e1723 INCBIN "gfx/unknown/0e1723.2bpp" Functione17a3: ; e17a3 ld a, [ScriptVar] and 3 ld e, a ld d, 0 ld hl, Unknown_e17bd rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ld de, VTiles2 call Decompress call Functione1631 ret ; e17bd Unknown_e17bd: ; e17bd dw LZ_e1bab dw LZ_e1c9b dw LZ_e19fb dw LZ_e18ab ; e17c5 GFX_e17c5: ; e17c5 INCBIN "gfx/unknown/0e17c5.2bpp" LZ_e1805: ; e1805 INCBIN "gfx/unknown/0e1805.2bpp.lz" LZ_e18ab: ; e18ab INCBIN "gfx/unknown/0e18ab.2bpp.lz" LZ_e19fb: ; e19fb INCBIN "gfx/unknown/0e19fb.2bpp.lz" LZ_e1bab: ; e1bab INCBIN "gfx/unknown/0e1bab.2bpp.lz" LZ_e1c9b: ; e1c9b INCBIN "gfx/unknown/0e1c9b.2bpp.lz" _DummyGame: ; e1e5b (38:5e5b) call Functione1e67 call DelayFrame .asm_e1e61 call Functione1ebb jr nc, .asm_e1e61 ret Functione1e67: ; e1e67 (38:5e67) call DisableLCD ld b, $8 call GetSGBLayout callab Function8cf53 ld hl, LZ_e2221 ld de, VTiles2 tile $00 call Decompress ld hl, Unknown_e00ed ld de, VTiles0 tile $00 ld bc, $40 ld a, BANK(Unknown_e00ed) call FarCopyBytes ld a, $8 ld hl, wc300 ld [hli], a ld [hl], $0 hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH xor a call ByteFill xor a ld [hSCY], a ; $ff00+$d0 ld [hSCX], a ; $ff00+$cf ld [rWY], a ; $ff00+$4a ld [wJumptableIndex], a ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 ld a, $e3 ld [rLCDC], a ; $ff00+$40 ld a, $e4 call DmgToCgbBGPals ld a, $e0 call Functioncf8 ret Functione1ebb: ; e1ebb (38:5ebb) ld a, [wJumptableIndex] bit 7, a jr nz, .asm_e1ed0 call Functione1ed2 callab Function8cf69 call DelayFrame and a ret .asm_e1ed0 scf ret Functione1ed2: ; e1ed2 (38:5ed2) ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, Jumptable_e1ee1 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; e1ee1 (38:5ee1) Jumptable_e1ee1: ; e1ee1 dw Functione1ef3 dw Functione1efb dw Functione1f1c dw Functione1f42 dw Functione1f61 dw Functione1f8b dw Functione1fba dw Functione1fcc dw Functione2000 ; e1ef3 Functione1ef3: ; e1ef3 call Functione2152 ld hl, wJumptableIndex inc [hl] ret ; e1efb Functione1efb: ; e1efb call Functione00ed jr nc, .asm_e1f06 ld hl, wJumptableIndex set 7, [hl] ret .asm_e1f06 call Functione209d ld hl, wJumptableIndex inc [hl] xor a ld [wc708], a ld hl, wc703 rept 4 ld [hli], a endr ld [hl], a ld [wc709], a Functione1f1c: ; e1f1c ld hl, wc708 ld a, [hl] cp $2d jr nc, .asm_e1f30 inc [hl] call Functione2183 xor a ld [wc6fd], a call Functione2128 ret .asm_e1f30 ld de, $341c ld a, $c call Function3b2a ld a, $5 ld [wc702], a ld hl, wJumptableIndex inc [hl] ret ; e1f42 Functione1f42: ; e1f42 ld a, [wc702] hlcoord 17, 0 add $f6 ld [hl], a ld hl, wc702 ld a, [hl] and a jr nz, .asm_e1f58 ld a, $7 ld [wJumptableIndex], a ret .asm_e1f58 dec [hl] xor a ld [wcf64], a ld hl, wJumptableIndex inc [hl] Functione1f61: ; e1f61 ld a, [wcf64] and a ret z dec a ld e, a ld d, $0 ld hl, wc6d0 add hl, de ld a, [hl] cp $ff ret z ld [wc6fd], a ld [wc6fe], a ld a, e ld [EnemyScreens], a call Functione2183 call Functione2128 xor a ld [wcf64], a ld hl, wJumptableIndex inc [hl] ret ; e1f8b Functione1f8b: ; e1f8b ld a, [wcf64] and a ret z dec a ld hl, EnemyScreens cp [hl] ret z ld e, a ld d, $0 ld hl, wc6d0 add hl, de ld a, [hl] cp $ff ret z ld [wc6fd], a ld [PlayerScreens], a ld a, e ld [wc701], a call Functione2183 call Functione2128 ld a, $40 ld [wc708], a ld hl, wJumptableIndex inc [hl] Functione1fba: ; e1fba ld hl, wc708 ld a, [hl] and a jr z, .asm_e1fc3 dec [hl] ret .asm_e1fc3 call Functione2010 ld a, $3 ld [wJumptableIndex], a ret ; e1fcc Functione1fcc: ; e1fcc ld a, [hJoypadPressed] and A_BUTTON ret z xor a ld [wc708], a .asm_e1fd5 ld hl, wc708 ld a, [hl] cp $2d jr nc, .asm_e1ff9 inc [hl] push af call Functione2183 pop af push hl ld e, a ld d, $0 ld hl, wc6d0 add hl, de ld a, [hl] pop hl cp $ff jr z, .asm_e1fd5 ld [wc6fd], a call Functione2128 jr .asm_e1fd5 .asm_e1ff9 call Functiona80 ld hl, wJumptableIndex inc [hl] Functione2000: ; e2000 call Functione00ed jr nc, .asm_e200b ld hl, wJumptableIndex set 7, [hl] ret .asm_e200b xor a ld [wJumptableIndex], a ret ; e2010 Functione2010: ; e2010 ld hl, wc6fe ld a, [hli] cp [hl] jr nz, .asm_e2066 ld a, [EnemyScreens] call Functione2183 call Functione2142 ld a, [wc701] call Functione2183 call Functione2142 ld a, [EnemyScreens] ld e, a ld d, $0 ld hl, wc6d0 add hl, de ld [hl], $ff ld a, [wc701] ld e, a ld d, $0 ld hl, wc6d0 add hl, de ld [hl], $ff ld hl, wc703 .asm_e2044 ld a, [hli] and a jr nz, .asm_e2044 dec hl ld a, [wc6fe] ld [hl], a ld [wc6fd], a ld hl, wc709 ld e, [hl] rept 2 inc [hl] endr ld d, $0 hlcoord 5, 0 add hl, de call Functione2128 ld hl, UnknownText_0xe2083 call PrintText ret .asm_e2066 xor a ld [wc6fd], a ld a, [EnemyScreens] call Functione2183 call Functione2128 ld a, [wc701] call Functione2183 call Functione2128 ld hl, UnknownText_0xe2098 call PrintText ret ; e2083 UnknownText_0xe2083: ; 0xe2083 start_asm ; 0xe2084 Functione2084: ; e2084 push bc hlcoord 2, 13 call Functione2128 ld hl, UnknownText_0xe2093 pop bc rept 3 inc bc endr ret ; e2093 UnknownText_0xe2093: ; 0xe2093 ; , yeah! text_jump UnknownText_0x1c1a5b db "@" ; 0xe2098 UnknownText_0xe2098: ; 0xe2098 ; Darn… text_jump UnknownText_0x1c1a65 db "@" ; 0xe209d Functione209d: ; e209d ld hl, wc6d0 ld bc, $2d xor a call ByteFill call Functione2101 ld c, $2 ld b, [hl] call Functione20e5 ld c, $8 ld b, [hl] call Functione20e5 ld c, $4 ld b, [hl] call Functione20e5 ld c, $7 ld b, [hl] call Functione20e5 ld c, $3 ld b, [hl] call Functione20e5 ld c, $6 ld b, [hl] call Functione20e5 ld c, $1 ld b, [hl] call Functione20e5 ld c, $5 ld hl, wc6d0 ld b, $2d .asm_e20db ld a, [hl] and a jr nz, .asm_e20e0 ld [hl], c .asm_e20e0 inc hl dec b jr nz, .asm_e20db ret ; e20e5 Functione20e5: ; e20e5 push hl ld de, wc6d0 .asm_e20e9 call Random and $3f cp $2d jr nc, .asm_e20e9 ld l, a ld h, $0 add hl, de ld a, [hl] and a jr nz, .asm_e20e9 ld [hl], c dec b jr nz, .asm_e20e9 pop hl inc hl ret ; e2101 Functione2101: ; e2101 ld a, [MenuSelection2] dec a ld l, a ld h, 0 rept 3 add hl, hl endr ld de, Unknown_e2110 add hl, de ret ; e2110 Unknown_e2110: ; e2110 db $02, $03, $06, $06, $06, $08, $08, $06 db $02, $02, $04, $06, $06, $08, $08, $09 db $02, $02, $02, $04, $07, $08, $08, $0c ; e2128 Functione2128: ; e2128 ld a, [wc6fd] sla a sla a add $4 ld [hli], a inc a ld [hld], a inc a ld bc, SCREEN_WIDTH add hl, bc ld [hli], a inc a ld [hl], a ld c, $3 call DelayFrames ret ; e2142 Functione2142: ; e2142 ld a, $1 ld [hli], a ld [hld], a ld bc, SCREEN_WIDTH add hl, bc ld [hli], a ld [hl], a ld c, $3 call DelayFrames ret ; e2152 Functione2152: ; e2152 hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, $1 call ByteFill hlcoord 0, 0 ld de, String_e2177 call PlaceString hlcoord 15, 0 ld de, String_e217d call PlaceString ld hl, UnknownText_0xe2176 call PrintText ret ; e2176 UnknownText_0xe2176: ; 0xe2176 db "@" ; 0xe2177 String_e2177: db "とったもの@" String_e217d: db "あと かい@" ; e2183 Functione2183: ; e2183 ld d, $0 .asm_e2185 sub $9 jr c, .asm_e218c inc d jr .asm_e2185 .asm_e218c add $9 ld e, a hlcoord 1, 2 ld bc, $28 .asm_e2195 ld a, d and a jr z, .asm_e219d add hl, bc dec d jr .asm_e2195 .asm_e219d sla e add hl, de ret ; e21a1 Functione21a1: ; e21a1 (38:61a1) ld a, [wJumptableIndex] cp $7 jr nc, .asm_e21c8 call JoyTextDelay ld hl, hJoypadPressed ; $ffa3 ld a, [hl] and A_BUTTON jr nz, .asm_e21cf ld a, [hl] and D_LEFT jr nz, .asm_e21d9 ld a, [hl] and D_RIGHT jr nz, .asm_e21e9 ld a, [hl] and D_UP jr nz, .asm_e21fa ld a, [hl] and D_DOWN jr nz, .asm_e220d ret .asm_e21c8 ld hl, $ add hl, bc ld [hl], $0 ret .asm_e21cf ld hl, $c add hl, bc ld a, [hl] inc a ld [wcf64], a ret .asm_e21d9 ld hl, $6 add hl, bc ld a, [hl] and a ret z sub $10 ld [hl], a ld hl, $c add hl, bc dec [hl] ret .asm_e21e9 ld hl, $6 add hl, bc ld a, [hl] cp $80 ret z add $10 ld [hl], a ld hl, $c add hl, bc inc [hl] ret .asm_e21fa ld hl, $7 add hl, bc ld a, [hl] and a ret z sub $10 ld [hl], a ld hl, $c add hl, bc ld a, [hl] sub $9 ld [hl], a ret .asm_e220d ld hl, $7 add hl, bc ld a, [hl] cp $40 ret z add $10 ld [hl], a ld hl, $c add hl, bc ld a, [hl] add $9 ld [hl], a ret ; e2221 (38:6221) LZ_e2221: ; e2221 INCBIN "gfx/unknown/0e2221.2bpp.lz" Functione2391: ; e2391 (38:6391) ld hl, Options ld a, [hl] push af set 4, [hl] ld a, [VramState] push af xor a ld [VramState], a ld a, [hInMenu] push af ld a, $1 ld [hInMenu], a xor a ld [hMapAnims], a call Functione2963 xor a ld [wcb2e], a call DelayFrame .asm_e23b4 call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .asm_e23c6 call Functione23d5 call DelayFrame jr .asm_e23b4 .asm_e23c6 call ClearSprites pop af ld [hInMenu], a pop af ld [VramState], a pop af ld [Options], a ret Functione23d5: ; e23d5 (38:63d5) ld a, [wJumptableIndex] ld hl, Jumptable_e23df call Functione33df jp [hl] Jumptable_e23df: ; e23df (38:63df) dw Functione23e9 dw Functione241a dw Functione245d dw Functione247d dw Functione2992 Functione23e9: ; e23e9 (38:63e9) xor a ld [hBGMapMode], a ; $ff00+$d4 call ClearSprites call Functione2d30 call Functione2a8e ld de, PCString_ChooseaPKMN call Functione2a6e ld a, $5 ld [wcb2d], a call Functione2c2c call PCMonInfo ld a, $ff ld [CurPartySpecies], a ld a, $17 call Functione33d0 call WaitBGMap call Functione2e01 call Functione298d ret Functione241a: ; e241a (38:641a) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and B_BUTTON jr nz, .asm_e2457 ld a, [hl] and A_BUTTON jr nz, .asm_e2443 call Functione29b5 and a ret z call Functione2e01 xor a ld [hBGMapMode], a ; $ff00+$d4 call Functione2c2c call PCMonInfo ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 call DelayFrame call DelayFrame ret .asm_e2443 call Functione2def and a ret z cp $ff jr z, .asm_e2457 ld a, $2 ld [wJumptableIndex], a ret ; e2452 (38:6452) .asm_e2452 ld hl, wJumptableIndex dec [hl] ret .asm_e2457 ld a, $4 ld [wJumptableIndex], a ret Functione245d: ; e245d (38:645d) xor a ld [hBGMapMode], a ; $ff00+$d4 call ClearSprites call Functione2def ld [CurPartySpecies], a ld a, $17 call Functione33d0 ld de, PCString_WhatsUp call Functione2a6e ld a, $1 ld [MenuSelection2], a call Functione298d ret Functione247d: ; e247d (38:647d) ld hl, BillsPCDepositMenuDataHeader call CopyMenuDataHeader ld a, [MenuSelection2] call Function1d4b call InterpretMenu2 jp c, BillsPCDepositFuncCancel ld a, [MenuSelection2] dec a and $3 ld e, a ld d, 0 ld hl, BillsPCDepositJumptable rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] BillsPCDepositJumptable: ; e24a1 (38:64a1) dw BillsPCDepositFuncDeposit ; Deposit Pokemon dw BillsPCDepositFuncStats ; Pokemon Stats dw BillsPCDepositFuncRelease ; Release Pokemon dw BillsPCDepositFuncCancel ; Cancel BillsPCDepositFuncDeposit: ; e24a9 (38:64a9) call Functione2f18 jp c, BillsPCDepositFuncCancel call Functione307c jr c, .no_overflow_31 ld a, $0 ld [wJumptableIndex], a xor a ld [wcb2b], a ld [wcb2a], a ret .no_overflow_31 ld de, PCString_WhatsUp call Functione2a6e ret BillsPCDepositFuncStats: ; e24c8 (38:64c8) call LoadMenuDataHeader_0x1d75 call Functione2f7e call ExitMenu call PCMonInfo call Functione2def ld [CurPartySpecies], a ld a, $17 call Functione33d0 ret BillsPCDepositFuncRelease: ; e24e0 (38:64e0) call Functione2f18 jr c, BillsPCDepositFuncCancel call Functione2f5f jr c, BillsPCDepositFuncCancel ld a, [MenuSelection2] push af ld de, PCString_ReleasePKMN call Functione2a6e call LoadMenuDataHeader_0x1d75 lb bc, 14, 11 call PlaceYesNoBox ld a, [MenuSelection2] dec a call ExitMenu and a jr nz, .asm_e252c ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a xor a ld [wd10b], a callba Functione039 call Functione3180 ld a, $0 ld [wJumptableIndex], a xor a ld [wcb2b], a ld [wcb2a], a pop af ret .asm_e252c ld de, PCString_WhatsUp call Functione2a6e pop af ld [MenuSelection2], a ret BillsPCDepositFuncCancel: ; e2537 (38:6537) ld a, $0 ld [wJumptableIndex], a ret ; e253d (38:653d) BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d) db $40 ; flags db 04, 09 ; start coords db 13, 19 ; end coords dw BillsPCDepositMenuData db 1 ; default option ; 0xe2545 BillsPCDepositMenuData: ; 0xe2545 (38:6545) db $80 ; flags db 4 ; items db "DEPOSIT@" db "STATS@" db "RELEASE@" db "CANCEL@" ; 0xe2564 (38:6564) Functione2564: ; e2564 hlcoord 0, 0 ld b, $4 ld c, $8 call ClearBox hlcoord 0, 4 ld b, $a ld c, $9 call ClearBox hlcoord 0, 14 ld b, $2 ld c, $8 call ClearBox ret ; e2583 Functione2583: ; e2583 (38:6583) ld hl, Options ld a, [hl] push af set 4, [hl] ld a, [VramState] push af xor a ld [VramState], a ld a, [hInMenu] push af ld a, $1 ld [hInMenu], a xor a ld [hMapAnims], a call Functione2963 ld a, $f ld [wcb2e], a call DelayFrame .asm_e25a7 call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .no_overflow_49 call Functione25c8 call DelayFrame jr .asm_e25a7 .no_overflow_49 call ClearSprites pop af ld [hInMenu], a pop af ld [VramState], a pop af ld [Options], a ret Functione25c8: ; e25c8 (38:65c8) ld a, [wJumptableIndex] ld hl, .jumptable call Functione33df jp [hl] .jumptable: ; e25d2 (38:65d2) dw Functione25dc dw Functione2612 dw Functione2655 dw BillsPC_Withdraw dw Functione2992 Functione25dc: ; e25dc (38:65dc) ld a, $f ld [wcb2e], a xor a ld [hBGMapMode], a ; $ff00+$d4 call ClearSprites call Functione2d30 call Functione2a8e ld de, PCString_ChooseaPKMN call Functione2a6e ld a, $5 ld [wcb2d], a call Functione2c2c call PCMonInfo ld a, $ff ld [CurPartySpecies], a ld a, $17 call Functione33d0 call WaitBGMap call Functione2e01 call Functione298d ret Functione2612: ; e2612 (38:6612) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and B_BUTTON jr nz, .asm_e264f ld a, [hl] and A_BUTTON jr nz, .asm_e263b call Functione29b5 and a ret z call Functione2e01 xor a ld [hBGMapMode], a ; $ff00+$d4 call Functione2c2c call PCMonInfo ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 call DelayFrame call DelayFrame ret .asm_e263b call Functione2def and a ret z cp $ff jr z, .asm_e264f ld a, $2 ld [wJumptableIndex], a ret ; e264a (38:664a) .asm_e264a ld hl, wJumptableIndex dec [hl] ret .asm_e264f ld a, $4 ld [wJumptableIndex], a ret ; e2655 Functione2655: ; e2655 (38:6655) xor a ld [hBGMapMode], a ; $ff00+$d4 call ClearSprites call Functione2def ld [CurPartySpecies], a ld a, $17 call Functione33d0 ld de, PCString_WhatsUp call Functione2a6e ld a, $1 ld [MenuSelection2], a call Functione298d ret BillsPC_Withdraw: ; e2675 (38:6675) ld hl, .MenuDataHeader call CopyMenuDataHeader ld a, [MenuSelection2] call Function1d4b call InterpretMenu2 jp c, .cancel ld a, [MenuSelection2] dec a 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] .jumptable: ; e2699 (38:6699) #mark dw .withdraw ; Withdraw dw .stats ; Stats dw .release ; Release dw .cancel ; Cancel .withdraw: ; e26a1 (38:66a1) call Functione2f18 jp c, .cancel call TryWithdrawPokemon jr c, .FailedWithdraw ld a, $0 ld [wJumptableIndex], a xor a ld [wcb2b], a ld [wcb2a], a ret .FailedWithdraw ld de, PCString_WhatsUp call Functione2a6e ret .stats: ; e26c0 (38:66c0) call LoadMenuDataHeader_0x1d75 call Functione2f7e call ExitMenu call PCMonInfo call Functione2def ld [CurPartySpecies], a ld a, $17 call Functione33d0 ret .release: ; e26d8 (38:66d8) ld a, [MenuSelection2] push af call Functione2f5f jr c, .FailedRelease ld de, PCString_ReleasePKMN call Functione2a6e call LoadMenuDataHeader_0x1d75 lb bc, 14, 11 call PlaceYesNoBox ld a, [MenuSelection2] dec a call ExitMenu and a jr nz, .FailedRelease ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a ld a, $1 ld [wd10b], a callba Functione039 call Functione3180 ld a, $0 ld [wJumptableIndex], a xor a ld [wcb2b], a ld [wcb2a], a pop af ret .FailedRelease ld de, PCString_WhatsUp call Functione2a6e pop af ld [MenuSelection2], a ret .cancel: ; e272b (38:672b) ld a, $0 ld [wJumptableIndex], a ret ; e2731 (38:6731) .MenuDataHeader: ; 0xe2731 db $40 ; flags db 04, 09 ; start coords db 13, 19 ; end coords dw .MenuData db 1 ; default option ; 0xe2739 .MenuData: ; 0xe2739 db $80 ; flags db 4 ; items db "WITHDRAW@" db "STATS@" db "RELEASE@" db "CANCEL@" ; 0xe2759 Functione2759: ; e2759 ld hl, Options ld a, [hl] push af set 4, [hl] ld a, [VramState] push af xor a ld [VramState], a ld a, [hInMenu] push af ld a, $1 ld [hInMenu], a xor a ld [hMapAnims], a call Functione2963 ld a, [wCurBox] and $f inc a ld [wcb2e], a call DelayFrame .asm_e2781 call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .asm_e2793 call Functione27a2 call DelayFrame jr .asm_e2781 .asm_e2793 call ClearSprites pop af ld [hInMenu], a pop af ld [VramState], a pop af ld [Options], a ret ; e27a2 Functione27a2: ; e27a2 ld a, [wJumptableIndex] ld hl, Jumptable_e27ac call Functione33df jp [hl] ; e27ac Jumptable_e27ac: ; e27ac dw Functione27ba dw Functione27eb dw Functione283d dw Functione285d dw Functione28df dw Functione2903 dw Functione2992 ; e27ba Functione27ba: ; e27ba xor a ld [hBGMapMode], a call ClearSprites call Functione2d30 ld de, PCString_ChooseaPKMN call Functione2a6e ld a, $5 ld [wcb2d], a call Functione2c2c call Functione2a80 call PCMonInfo ld a, $ff ld [CurPartySpecies], a ld a, $17 call Functione33d0 call WaitBGMap call Functione2e01 call Functione298d ret ; e27eb Functione27eb: ; e27eb ld hl, hJoyPressed ld a, [hl] and B_BUTTON jr nz, .asm_e2837 ld a, [hl] and A_BUTTON jr nz, .asm_e2823 call Functione29d0 jr c, .asm_e2816 and a ret z call Functione2e01 xor a ld [hBGMapMode], a call Functione2c2c call PCMonInfo ld a, $1 ld [hBGMapMode], a call DelayFrame call DelayFrame ret .asm_e2816 xor a ld [wcb2b], a ld [wcb2a], a ld a, $0 ld [wJumptableIndex], a ret .asm_e2823 call Functione2def and a ret z cp $ff jr z, .asm_e2837 ld a, $2 ld [wJumptableIndex], a ret ld hl, wJumptableIndex dec [hl] ret .asm_e2837 ld a, $6 ld [wJumptableIndex], a ret ; e283d Functione283d: ; e283d xor a ld [hBGMapMode], a call ClearSprites call Functione2def ld [CurPartySpecies], a ld a, $17 call Functione33d0 ld de, PCString_WhatsUp call Functione2a6e ld a, $1 ld [MenuSelection2], a call Functione298d ret ; e285d Functione285d: ; e285d ld hl, MenuDataHeader_0xe28c3 call CopyMenuDataHeader ld a, [MenuSelection2] call Function1d4b call InterpretMenu2 jp c, Functione28bd ld a, [MenuSelection2] dec a and 3 ld e, a ld d, 0 ld hl, Jumptable_e2881 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; e2881 Jumptable_e2881: ; e2881 dw Functione2887 dw Functione28a5 dw Functione28bd ; e2887 Functione2887: ; e2887 call Functione2f18 jp c, Functione28bd ld a, [wcb2a] ld [wcb2f], a ld a, [wcb2b] ld [wcb30], a ld a, [wcb2e] ld [wcb31], a ld a, $4 ld [wJumptableIndex], a ret ; e28a5 Functione28a5: ; e28a5 call LoadMenuDataHeader_0x1d75 call Functione2f7e call ExitMenu call PCMonInfo call Functione2def ld [CurPartySpecies], a ld a, $17 call Functione33d0 ret ; e28bd Functione28bd: ; e28bd ld a, $0 ld [wJumptableIndex], a ret ; e28c3 MenuDataHeader_0xe28c3: ; 0xe28c3 db $40 ; flags db 04, 09 ; start coords db 13, 19 ; end coords dw MenuData2_0xe28cb db 1 ; default option ; 0xe28cb MenuData2_0xe28cb: ; 0xe28cb db $80 ; flags db 3 ; items db "MOVE@" db "STATS@" db "CANCEL@" ; 0xe28df Functione28df: ; e28df xor a ld [hBGMapMode], a call Functione2d30 ld de, PCString_MoveToWhere call Functione2a6e ld a, $5 ld [wcb2d], a call Functione2c2c call Functione2a80 call ClearSprites call Functione2e8c call WaitBGMap call Functione298d ret ; e2903 Functione2903: ; e2903 ld hl, hJoyPressed ld a, [hl] and B_BUTTON jr nz, .asm_e294b ld a, [hl] and A_BUTTON jr nz, .asm_e2938 call Functione29f4 jr c, .asm_e292b and a ret z call Functione2e8c xor a ld [hBGMapMode], a call Functione2c2c ld a, $1 ld [hBGMapMode], a call DelayFrame call DelayFrame ret .asm_e292b xor a ld [wcb2b], a ld [wcb2a], a ld a, $4 ld [wJumptableIndex], a ret .asm_e2938 call Functione2ee5 jr c, .asm_e2946 call Functione31e7 ld a, $0 ld [wJumptableIndex], a ret .asm_e2946 ld hl, wJumptableIndex dec [hl] ret .asm_e294b ld a, [wcb2f] ld [wcb2a], a ld a, [wcb30] ld [wcb2b], a ld a, [wcb31] ld [wcb2e], a ld a, $0 ld [wJumptableIndex], a ret ; e2963 Functione2963: ; e2963 (38:6963) call WhiteBGMap call ClearSprites call ClearTileMap call Functione33e8 ld hl, OverworldMap ld bc, $338 xor a call ByteFill xor a ld [wJumptableIndex], a ld [wcf64], a ld [wcf65], a ld [wcf66], a ld [wcb2b], a ld [wcb2a], a ret Functione298d: ; e298d (38:698d) ld hl, wJumptableIndex inc [hl] ret Functione2992: ; e2992 (38:6992) ld hl, wJumptableIndex set 7, [hl] ret Functione2998: ; e2998 (38:6998) ld a, [wcb2d] ld d, a ld a, [wcb2c] and a jr z, .asm_e29b2 dec a cp $1 jr z, .asm_e29b2 ld e, a ld a, [hl] and D_UP jr nz, Functione2a18 ld a, [hl] and D_DOWN jr nz, Functione2a2c .asm_e29b2 jp Functione2a65 Functione29b5: ; e29b5 (38:69b5) ld hl, hJoyLast ld a, [wcb2d] ld d, a ld a, [wcb2c] ld e, a and a jr z, .asm_e29cd ld a, [hl] and D_UP jr nz, Functione2a18 ld a, [hl] and D_DOWN jr nz, Functione2a2c .asm_e29cd jp Functione2a65 ; e29d0 (38:69d0) Functione29d0: ; e29d0 ld hl, hJoyLast ld a, [wcb2d] ld d, a ld a, [wcb2c] ld e, a and a jr z, .asm_e29e8 ld a, [hl] and D_UP jr nz, Functione2a18 ld a, [hl] and D_DOWN jr nz, Functione2a2c .asm_e29e8 ld a, [hl] and D_LEFT jr nz, Functione2a48 ld a, [hl] and D_RIGHT jr nz, Functione2a56 jr Functione2a65 Functione29f4: ; e29f4 ld hl, hJoyLast ld a, [wcb2d] ld d, a ld a, [wcb2c] ld e, a and a jr z, .asm_e2a0c ld a, [hl] and D_UP jr nz, Functione2a18 ld a, [hl] and D_DOWN jr nz, Functione2a2c .asm_e2a0c ld a, [hl] and D_LEFT jr nz, Functione2a48 ld a, [hl] and D_RIGHT jr nz, Functione2a56 jr Functione2a65 Functione2a18: ; e2a18 (38:6a18) ld hl, wcb2b ld a, [hl] and a jr z, .asm_e2a22 dec [hl] jr Functione2a68 .asm_e2a22 ld hl, wcb2a ld a, [hl] and a jr z, Functione2a65 dec [hl] jr Functione2a68 Functione2a2c: ; e2a2c (38:6a2c) ld a, [wcb2b] ld hl, wcb2a add [hl] inc a cp e jr nc, Functione2a65 ld hl, wcb2b ld a, [hl] inc a cp d jr nc, .asm_e2a42 inc [hl] jr Functione2a68 .asm_e2a42 ld hl, wcb2a inc [hl] jr Functione2a68 ; e2a48 (38:6a48) Functione2a48: ; e2a48 ld hl, wcb2e ld a, [hl] and a jr z, .asm_e2a52 dec [hl] jr Functione2a6c .asm_e2a52 ld [hl], $e jr Functione2a6c Functione2a56: ; e2a56 ld hl, wcb2e ld a, [hl] cp $e jr z, .asm_e2a61 inc [hl] jr Functione2a6c .asm_e2a61 ld [hl], $0 jr Functione2a6c Functione2a65: ; e2a65 (38:6a65) xor a and a ret Functione2a68: ; e2a68 (38:6a68) ld a, $1 and a ret ; e2a6c (38:6a6c) Functione2a6c: ; e2a6c scf ret ; e2a6e Functione2a6e: ; e2a6e (38:6a6e) push de hlcoord 0, 15 lb bc, 1, 18 call TextBox pop de hlcoord 1, 16 call PlaceString ret ; e2a80 (38:6a80) Functione2a80: ; e2a80 call Functione2a8e hlcoord 8, 1 ld [hl], $5f hlcoord 19, 1 ld [hl], $5e ret ; e2a8e Functione2a8e: ; e2a8e (38:6a8e) hlcoord 8, 0 lb bc, 1, 10 call TextBox ld a, [wcb2e] and a jr z, .party cp NUM_BOXES + 1 jr nz, .gotbox ld a, [wCurBox] inc a .gotbox dec a ld hl, wBoxNames ld bc, BOX_NAME_LENGTH call AddNTimes ld e, l ld d, h jr .print .party ld de, String_e2abd .print hlcoord 10, 1 call PlaceString ret ; e2abd (38:6abd) String_e2abd: db "PARTY <PK><MN>@" ; e2ac6 PCMonInfo: ; e2ac6 (38:6ac6) ; Display a monster's pic and ; attributes when highlighting ; it in a PC menu. ; Includes the neat cascading ; effect when showing the pic. ; Example: Species, level, gender, ; whether it's holding an item. hlcoord 0, 0 lb bc, 15, 8 call ClearBox hlcoord 8, 14 lb bc, 1, 3 call ClearBox call Functione2def and a ret z cp $ff ret z ld [wd265], a hlcoord 1, 4 xor a ld b, 7 .asm_e2ae9 ld c, 7 push af push hl .asm_e2aed ld [hli], a add 7 dec c jr nz, .asm_e2aed pop hl ld de, 20 add hl, de pop af inc a dec b jr nz, .asm_e2ae9 call Functione2b6d ld a, [wd265] ld [CurPartySpecies], a ld [CurSpecies], a ld hl, TempMonDVs predef GetUnownLetter call GetBaseData ld de, VTiles2 tile $00 predef GetFrontpic xor a ld [wcb32], a ld a, [CurPartySpecies] ld [wd265], a cp EGG ret z call GetBasePokemonName hlcoord 1, 14 call PlaceString hlcoord 1, 12 call PrintLevel ld a, $3 ld [MonType], a callba GetGender jr c, .asm_e2b4f ld a, "♂" jr nz, .printgender ld a, "♀" .printgender hlcoord 5, 12 ld [hl], a .asm_e2b4f ld a, [TempMonItem] and a ret z ld d, a callab ItemIsMail jr c, .mail ld a, $5d ; item icon jr .printitem .mail ld a, $1 ld [wcb32], a ld a, $5c ; mail icon .printitem hlcoord 7, 12 ld [hl], a ret Functione2b6d: ; e2b6d (38:6b6d) ld a, [wcb2b] ld hl, wcb2a add [hl] ld e, a ld d, $0 ld hl, wc801 rept 3 add hl, de endr ld a, [hl] and a jr z, .asm_e2bc6 cp $f jr z, .asm_e2bf5 ld b, a call Functione3396 ld a, b call GetSRAMBank push hl ld bc, $35 add hl, bc ld bc, $20 ld a, e call AddNTimes ld a, [hl] ld [TempMonLevel], a pop hl push hl ld bc, $17 add hl, bc ld bc, $20 ld a, e call AddNTimes ld a, [hl] ld [TempMonItem], a pop hl ld bc, $2b add hl, bc ld bc, $20 ld a, e call AddNTimes ld de, TempMonDVs ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a call CloseSRAM ret .asm_e2bc6 ld hl, PartyMon1Level ld bc, $30 ld a, e call AddNTimes ld a, [hl] ld [TempMonLevel], a ld hl, PartyMon1Item ld bc, $30 ld a, e call AddNTimes ld a, [hl] ld [TempMonItem], a ld hl, PartyMon1DVs ld bc, $30 ld a, e call AddNTimes ld de, TempMonDVs ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ret .asm_e2bf5 ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxMon1Level ld bc, $20 ld a, e call AddNTimes ld a, [hl] ld [TempMonLevel], a ld hl, sBoxMon1Item ld bc, $20 ld a, e call AddNTimes ld a, [hl] ld [TempMonItem], a ld hl, sBoxMon1DVs ld bc, $20 ld a, e call AddNTimes ld de, TempMonDVs ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a call CloseSRAM ret Functione2c2c: ; e2c2c (38:6c2c) hlcoord 8, 2 lb bc, 10, 10 call TextBox hlcoord 8, 2 ld [hl], "└" hlcoord 19, 2 ld [hl], "┘" ld a, [wcb2a] ld e, a ld d, 0 ld hl, OverworldMap rept 3 add hl, de endr ld e, l ld d, h hlcoord 9, 4 ld a, [wcb2d] .asm_e2c53 push af push de push hl call Functione2c6e pop hl ld de, $28 add hl, de pop de rept 3 inc de endr pop af dec a jr nz, .asm_e2c53 ret ; e2c67 (38:6c67) String_e2c67: db "CANCEL@" ; e2c6e Functione2c6e: ; e2c6e (38:6c6e) ld a, [de] and a ret z cp $ff jr nz, .asm_e2c7c ld de, String_e2c67 call PlaceString ret .asm_e2c7c inc de ld a, [de] ld b, a inc de ld a, [de] ld e, a ld a, b and a jr z, .asm_e2cc8 cp $f jr z, .asm_e2cf1 push hl call Functione3396 ld a, b call GetSRAMBank push hl ld bc, $16 add hl, bc ld bc, $20 ld a, e call AddNTimes ld a, [hl] pop hl and a jr z, .asm_e2cc2 ld bc, $372 add hl, bc ld bc, $b ld a, e call AddNTimes ld de, StringBuffer1 ld bc, $b call CopyBytes call CloseSRAM pop hl ld de, StringBuffer1 call PlaceString ret .asm_e2cc2 call CloseSRAM pop hl jr .asm_e2d23 .asm_e2cc8 push hl ld hl, PartySpecies ld d, $0 add hl, de ld a, [hl] and a jr z, .asm_e2cee ld hl, PartyMonNicknames ld bc, $b ld a, e call AddNTimes ld de, StringBuffer1 ld bc, $b call CopyBytes pop hl ld de, StringBuffer1 call PlaceString ret .asm_e2cee pop hl jr .asm_e2d23 .asm_e2cf1 push hl ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxSpecies ld d, $0 add hl, de ld a, [hl] and a jr z, .asm_e2d1f ld hl, sBoxMonNicknames ld bc, PKMN_NAME_LENGTH ld a, e call AddNTimes ld de, StringBuffer1 ld bc, PKMN_NAME_LENGTH call CopyBytes call CloseSRAM pop hl ld de, StringBuffer1 call PlaceString ret .asm_e2d1f call CloseSRAM pop hl .asm_e2d23 ld de, String_e2d2a call PlaceString ret ; e2d2a (38:6d2a) String_e2d2a: db "-----@" ; e2d30 Functione2d30: ; e2d30 (38:6d30) xor a ld hl, OverworldMap ld bc, $5a call ByteFill ld de, OverworldMap xor a ld [wd003], a ld [wd004], a ld a, [wcb2e] and a jr z, .asm_e2d87 cp $f jr z, .asm_e2db7 ld b, a call Functione3396 ld a, b call GetSRAMBank inc hl .asm_e2d57 ld a, [hl] cp $ff jr z, .asm_e2d79 and a jr z, .asm_e2d79 ld [de], a inc de ld a, [wcb2e] ld [de], a inc de ld a, [wd003] ld [de], a inc a ld [wd003], a inc de inc hl ld a, [wd004] inc a ld [wd004], a jr .asm_e2d57 .asm_e2d79 call CloseSRAM ld a, $ff ld [de], a ld a, [wd004] inc a ld [wcb2c], a ret .asm_e2d87 ld hl, PartySpecies .asm_e2d8a ld a, [hl] cp $ff jr z, .asm_e2dac and a jr z, .asm_e2dac ld [de], a inc de ld a, [wcb2e] ld [de], a inc de ld a, [wd003] ld [de], a inc a ld [wd003], a inc de inc hl ld a, [wd004] inc a ld [wd004], a jr .asm_e2d8a .asm_e2dac ld a, $ff ld [de], a ld a, [wd004] inc a ld [wcb2c], a ret .asm_e2db7 ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxSpecies .asm_e2dbf ld a, [hl] cp $ff jr z, .asm_e2de1 and a jr z, .asm_e2de1 ld [de], a inc de ld a, [wcb2e] ld [de], a inc de ld a, [wd003] ld [de], a inc a ld [wd003], a inc de inc hl ld a, [wd004] inc a ld [wd004], a jr .asm_e2dbf .asm_e2de1 call CloseSRAM ld a, $ff ld [de], a ld a, [wd004] inc a ld [wcb2c], a ret Functione2def: ; e2def (38:6def) ld a, [wcb2b] ld hl, wcb2a add [hl] ld e, a ld d, $0 ld hl, OverworldMap rept 3 add hl, de endr ld a, [hl] ret Functione2e01: ; e2e01 (38:6e01) ld a, [wcb2c] and a jr nz, .asm_e2e0b call ClearSprites ret .asm_e2e0b ld hl, Unknown_e2e2b ld de, Sprites .done1 ld a, [hl] cp $ff ret z ld a, [wcb2b] and $7 swap a add [hl] inc hl ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de jr .done1 ; e2e2b (38:6e2b) Unknown_e2e2b: ; e2e2b db $26, $50, $00, $00 db $26, $58, $00, $00 db $26, $60, $00, $00 db $26, $68, $00, $00 db $26, $70, $00, $00 db $26, $78, $00, $00 db $26, $80, $00, $00 db $26, $88, $00, $00 db $26, $90, $00, $00 db $26, $97, $00, $00 db $39, $50, $00, $40 db $39, $58, $00, $40 db $39, $60, $00, $40 db $39, $68, $00, $40 db $39, $70, $00, $40 db $39, $78, $00, $40 db $39, $80, $00, $40 db $39, $88, $00, $40 db $39, $90, $00, $40 db $39, $97, $00, $40 db $2e, $4e, $01, $00 db $31, $4e, $01, $40 db $2e, $99, $01, $20 db $31, $99, $01, $60 db $ff ; e2e8c Functione2e8c: ; e2e8c ld hl, Unknown_e2eac ld de, Sprites .asm_e2e92 ld a, [hl] cp $ff ret z ld a, [wcb2b] and $7 swap a add [hl] inc hl ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de jr .asm_e2e92 ; e2eac Unknown_e2eac: ; e2eac db $27, $50, $06, $00 db $2b, $58, $00, $40 db $2b, $60, $00, $40 db $2b, $68, $00, $40 db $2b, $70, $00, $40 db $2b, $78, $00, $40 db $2b, $80, $00, $40 db $2b, $88, $00, $40 db $2b, $90, $00, $40 db $27, $98, $07, $00 db $ff ; e2ed5 Functione2ed5: ; e2ed5 .asm_e2ed5 push bc push hl .asm_e2ed7 ld [hli], a dec c jr nz, .asm_e2ed7 pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .asm_e2ed5 ret ; e2ee5 Functione2ee5: ; e2ee5 ld hl, wcb2e ld a, [wcb31] cp [hl] jr z, .asm_e2f00 ld a, [wcb2e] and a jr z, .asm_e2ef8 ld e, $15 jr .asm_e2efa .asm_e2ef8 ld e, $7 .asm_e2efa ld a, [wcb2c] cp e jr nc, .asm_e2f02 .asm_e2f00 and a ret .asm_e2f02 ld de, PCString_TheresNoRoom call Functione2a6e ld de, SFX_WRONG call WaitPlaySFX call WaitSFX ld c, 50 call DelayFrames scf ret ; e2f18 Functione2f18: ; e2f18 (38:6f18) ld a, [wcb2e] and a jr nz, .Okay ld a, [wcb2c] cp $3 jr c, .ItsYourLastPokemon ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a callba CheckCurPartyMonFainted jr c, .AllOthersFainted ld a, [wcb32] and a jr nz, .HasMail .Okay and a ret .HasMail ld de, PCString_RemoveMail jr .NotOkay .AllOthersFainted ld de, PCString_NoMoreUsablePKMN jr .NotOkay .ItsYourLastPokemon ld de, PCString_ItsYourLastPKMN .NotOkay call Functione2a6e ld de, SFX_WRONG call WaitPlaySFX call WaitSFX ld c, 50 call DelayFrames scf ret Functione2f5f: ; e2f5f (38:6f5f) ld a, [CurPartySpecies] cp EGG jr z, .asm_e2f68 and a ret .asm_e2f68 ld de, PCString_NoReleasingEGGS call Functione2a6e ld de, SFX_WRONG call WaitPlaySFX call WaitSFX ld c, 50 call DelayFrames scf ret Functione2f7e: ; e2f7e (38:6f7e) call LowVolume call Functione2fd6 ld a, $3 ld [MonType], a predef StatsScreenInit call Functione33e8 call MaxVolume ret Functione2f95: ; e2f95 (38:6f95) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and A_BUTTON | B_BUTTON | D_RIGHT + D_LEFT ld [wcf73], a jr nz, .asm_e2fd0 ld a, [hl] and D_DOWN | D_UP ld [wcf73], a jr nz, .asm_e2faa jr .asm_e2fd0 .asm_e2faa call Functione2998 and a jr z, .asm_e2fd1 call Functione2def ld [wd265], a call Functione2b6d ld a, [wd265] ld [CurPartySpecies], a ld [CurSpecies], a ld hl, TempMonDVs predef GetUnownLetter call GetBaseData call Functione2fd6 .asm_e2fd0 ret .asm_e2fd1 xor a ld [wcf73], a ret Functione2fd6: ; e2fd6 (38:6fd6) ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a ld a, [wcb2e] and a jr z, .asm_e3020 cp $f jr nz, .asm_e3048 ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxSpecies call Functione3357 ld hl, sBoxMonNicknames call Functione3363 ld hl, sBoxMonOT call Functione3376 ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes ld de, wd018 ld bc, $30 call CopyBytes call CloseSRAM callba Function5088b ret .asm_e3020 ld hl, PartySpecies call Functione3357 ld hl, PartyMonNicknames call Functione3363 ld hl, PartyMonOT call Functione3376 ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, $30 ld a, [CurPartyMon] call AddNTimes ld de, wd018 ld bc, $30 call CopyBytes ret .asm_e3048 ld b, a call Functione3396 ld a, b call GetSRAMBank push hl inc hl call Functione3357 pop hl push hl ld bc, $372 add hl, bc call Functione3363 pop hl push hl ld bc, $296 add hl, bc call Functione3376 pop hl ld bc, $16 add hl, bc ld bc, $20 call Functione3389 call CloseSRAM callba Function5088b ret Functione307c: ; e307c (38:707c) ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a ld hl, PartyMonNicknames ld a, [CurPartyMon] call GetNick ld a, $1 ld [wd10b], a predef SentGetPkmnIntoFromBox jr c, .asm_boxisfull xor a ld [wd10b], a callba Functione039 ld a, [CurPartySpecies] call PlayCry hlcoord 0, 0 lb bc, 15, 8 call ClearBox hlcoord 8, 14 lb bc, 1, 3 call ClearBox hlcoord 0, 15 lb bc, 1, 18 call TextBox call WaitBGMap hlcoord 1, 16 ld de, PCString_Stored call PlaceString ld l, c ld h, b ld de, StringBuffer1 call PlaceString ld a, "!" ld [bc], a ld c, 50 call DelayFrames and a ret .asm_boxisfull ld de, PCString_BoxFull call Functione2a6e ld de, SFX_WRONG call WaitPlaySFX call WaitSFX ld c, 50 call DelayFrames scf ret TryWithdrawPokemon: ; e30fa (38:70fa) ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a ld a, BANK(sBoxMonNicknames) call GetSRAMBank ld a, [CurPartyMon] ld hl, sBoxMonNicknames call GetNick call CloseSRAM xor a ld [wd10b], a predef SentGetPkmnIntoFromBox jr c, .PartyFull ld a, $1 ld [wd10b], a callba Functione039 ld a, [CurPartySpecies] call PlayCry hlcoord 0, 0 lb bc, 15, 8 call ClearBox hlcoord 8, 14 lb bc, 1, 3 call ClearBox hlcoord 0, 15 lb bc, 1, 18 call TextBox call WaitBGMap hlcoord 1, 16 ld de, PCString_Got call PlaceString ld l, c ld h, b ld de, StringBuffer1 call PlaceString ld a, $e7 ld [bc], a ld c, 50 call DelayFrames and a ret .PartyFull ld de, PCString_PartyFull call Functione2a6e ld de, SFX_WRONG call WaitPlaySFX call WaitSFX ld c, 50 call DelayFrames scf ret Functione3180: ; e3180 (38:7180) hlcoord 0, 0 lb bc, 15, 8 call ClearBox hlcoord 8, 14 lb bc, 1, 3 call ClearBox hlcoord 0, 15 lb bc, 1, 18 call TextBox call WaitBGMap ld a, [CurPartySpecies] call GetCryIndex jr c, .asm_e31ab ld e, c ld d, b call PlayCryHeader .asm_e31ab ld a, [CurPartySpecies] ld [wd265], a call GetPokemonName hlcoord 1, 16 ld de, PCString_ReleasedPKMN call PlaceString ld c, 80 call DelayFrames hlcoord 0, 15 lb bc, 1, 18 call TextBox hlcoord 1, 16 ld de, PCString_Bye call PlaceString ld l, c ld h, b inc hl ld de, StringBuffer1 call PlaceString ld l, c ld h, b ld [hl], $e7 ld c, 50 call DelayFrames ret ; e31e7 (38:71e7) Functione31e7: ; e31e7 push hl push de push bc push af hlcoord 0, 15 lb bc, 1, 18 call TextBox hlcoord 1, 16 ld de, String_e3233 call PlaceString ld c, 20 call DelayFrames pop af pop bc pop de pop hl ld a, [wCurBox] push af ld bc, 0 ld a, [wcb31] and a jr nz, .asm_e3215 set 0, c .asm_e3215 ld a, [wcb2e] and a jr nz, .asm_e321d set 1, c .asm_e321d ld hl, Jumptable_e3245 rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ld de, Functione322a push de jp [hl] ; e322a Functione322a: ; e322a pop af ld e, a callba Function14ad5 ret ; e3233 String_e3233: db "Saving… Leave ON!@" ; e3245 Jumptable_e3245: ; e3245 dw Functione324d dw Functione3267 dw Functione327d dw Functione3284 ; e324d Functione324d: ; e324d ld hl, wcb31 ld a, [wcb2e] cp [hl] jr z, .asm_e325d call Functione32b0 call Functione32fa ret .asm_e325d call Functione32b0 call Functione328e call Functione32fa ret ; e3267 Functione3267: ; e3267 call Functione3316 ld a, $1 ld [wc2cd], a callba SaveGameData xor a ld [wc2cd], a call Functione32fa ret ; e327d Functione327d: ; e327d call Functione32b0 call Functione3346 ret ; e3284 Functione3284: ; e3284 call Functione3316 call Functione328e call Functione3346 ret ; e328e Functione328e: ; e328e ld a, [wcb2b] ld hl, wcb2a add [hl] ld e, a ld a, [wcb30] ld hl, wcb2f add [hl] cp e ret nc ld hl, wcb2b ld a, [hl] and a jr z, .asm_e32a8 dec [hl] ret .asm_e32a8 ld hl, wcb2a ld a, [hl] and a ret z dec [hl] ret ; e32b0 Functione32b0: ; e32b0 ld a, [wcb31] dec a ld e, a callba Function14ac2 ld a, [wcb30] ld hl, wcb2f add [hl] ld [CurPartyMon], a ld a, $1 call GetSRAMBank ld hl, sBoxSpecies call Functione3357 ld hl, sBoxMonNicknames call Functione3363 ld hl, sBoxMonOT call Functione3376 ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH call Functione3389 call CloseSRAM callba Function5088b ld a, $1 ld [wd10b], a callba Functione039 ret ; e32fa Functione32fa: ; e32fa ld a, [wcb2e] dec a ld e, a callba Function14ac2 ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a callba Function51322 ret ; e3316 Functione3316: ; e3316 ld a, [wcb30] ld hl, wcb2f add [hl] ld [CurPartyMon], a ld hl, PartySpecies call Functione3357 ld hl, PartyMonNicknames call Functione3363 ld hl, PartyMonOT call Functione3376 ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH call Functione3389 xor a ld [wd10b], a callba Functione039 ret ; e3346 Functione3346: ; e3346 ld a, [wcb2b] ld hl, wcb2a add [hl] ld [CurPartyMon], a callba Function5138b ret ; e3357 Functione3357: ; e3357 (38:7357) ld a, [CurPartyMon] ld c, a ld b, $0 add hl, bc ld a, [hl] ld [CurPartySpecies], a ret Functione3363: ; e3363 (38:7363) ld bc, $b ld a, [CurPartyMon] call AddNTimes ld de, DefaultFlypoint ld bc, $b call CopyBytes ret Functione3376: ; e3376 (38:7376) ld bc, $b ld a, [CurPartyMon] call AddNTimes ld de, wd00d ld bc, $b call CopyBytes ret Functione3389: ; e3389 (38:7389) ld a, [CurPartyMon] call AddNTimes ld de, wd018 call CopyBytes ret Functione3396: ; e3396 (38:7396) dec b ld c, b ld b, 0 ld hl, Unknown_e33a6 rept 3 add hl, bc endr ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a ret ; e33a6 (38:73a6) Unknown_e33a6: ; e33a6 ; bank, address dba sBox1 dba sBox2 dba sBox3 dba sBox4 dba sBox5 dba sBox6 dba sBox7 dba sBox8 dba sBox9 dba sBox10 dba sBox11 dba sBox12 dba sBox13 dba sBox14 ; e33d0 Functione33d0: ; e33d0 (38:73d0) ld b, a call GetSGBLayout ld a, $e4 call DmgToCgbBGPals ld a, $fc call Functioncf8 ret Functione33df: ; e33df (38:73df) ld e, a ld d, $0 rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a ret Functione33e8: ; e33e8 (38:73e8) call DisableLCD ld hl, VTiles2 tile $00 ld bc, $310 xor a call ByteFill call LoadStandardFont call LoadFontsBattleExtra ld hl, PCMailGFX ld de, VTiles2 tile $5c ld bc, $40 call CopyBytes ld hl, PCSelectLZ ld de, VTiles0 tile $00 call Decompress ld a, 6 call SkipMusic call EnableLCD ret ; e3419 (38:7419) PCSelectLZ: INCBIN "gfx/pc.2bpp.lz" PCMailGFX: INCBIN "gfx/pc_mail.2bpp" ; e34dd PCString_ChooseaPKMN: db "Choose a <PK><MN>.@" PCString_WhatsUp: db "What's up?@" PCString_ReleasePKMN: db "Release <PK><MN>?@" PCString_MoveToWhere: db "Move to where?@" PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@" PCString_TheresNoRoom: db "There's no room!@" PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@" PCString_RemoveMail: db "Remove MAIL.@" PCString_ReleasedPKMN: db "Released <PK><MN>.@" PCString_Bye: db "Bye,@" PCString_Stored: db "Stored @" PCString_Got: db "Got @" PCString_Non: db "Non.@" PCString_BoxFull: db "The BOX is full.@" PCString_PartyFull: db "The party's full!@" PCString_NoReleasingEGGS: db "No releasing EGGS!@" ; e35aa Functione35aa: ; e35aa (38:75aa) call LoadMenuDataHeader_0x1d75 call Functione35e2 .loop xor a ld [hBGMapMode], a ; $ff00+$d4 call Functione36cf call Functione379c ld hl, Functione35aa_menudataheader call CopyMenuDataHeader xor a ld [wd0e4], a hlcoord 0, 4 lb bc, 8, 9 call TextBox call Function350c ld a, [wcf73] cp $2 jr z, .done call Functione37af call Functione36f9 jr .loop .done call WriteBackup ret Functione35e2: ; e35e2 (38:75e2) xor a ld [hBGMapMode], a ; $ff00+$d4 hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, " " call ByteFill ret ; e35f1 (38:75f1) Functione35aa_menudataheader: ; 0xe35f1 db $40 ; flags db 05, 01 ; start coords db 12, 09 ; end coords dw .menudata2 db 1 ; default option ; 0xe35f9 .menudata2: ; 0xe35f9 db $22 ; flags db 4, 0 db 1 dba .boxes dba .boxnames dba NULL dba Functione3632 ; e3609 .boxes: ; e3609 db NUM_BOXES x = 1 rept NUM_BOXES db x x = x + 1 endr db -1 ; e3619 .boxnames: ; e3619 push de ld a, [MenuSelection] dec a call GetBoxName pop hl call PlaceString ret ; e3626 GetBoxName: ; e3626 (38:7626) ld bc, BOX_NAME_LENGTH ld hl, wBoxNames call AddNTimes ld d, h ld e, l ret ; e3632 (38:7632) Functione3632: ; e3632 hlcoord 11, 7 lb bc, 5, 7 call TextBox ld a, [MenuSelection] cp -1 ret z hlcoord 12, 9 ld de, String_e3663 call PlaceString call GetBoxCount ld [wd265], a hlcoord 13, 11 ld de, wd265 lb bc, 1, 2 call PrintNum ld de, String_e3668 call PlaceString ret ; e3663 String_e3663: ; e3663 db "#MON@" ; e3668 String_e3668: ; e3668 ; db "/20@" db "/" db "0" + MONS_PER_BOX / 10 ; "2" db "0" + MONS_PER_BOX % 10 ; "0" db "@" ; e366c GetBoxCount: ; e366c (38:766c) ld a, [wCurBox] ld c, a ld a, [MenuSelection] dec a cp c jr z, .activebox ld c, a ld b, 0 ld hl, .boxbanks rept 3 add hl, bc endr ld a, [hli] ld b, a call GetSRAMBank ld a, [hli] ld h, [hl] ld l, a ld a, [hl] call CloseSRAM ld c, a ld a, [wSavedAtLeastOnce] and a jr z, .newfile ld a, c ret .newfile xor a ret .activebox ld a, BANK(sBoxCount) ld b, a call GetSRAMBank ld hl, sBoxCount ld a, [hl] call CloseSRAM ret ; e36a5 (38:76a5) .boxbanks: ; e36a5 dba sBox1 dba sBox2 dba sBox3 dba sBox4 dba sBox5 dba sBox6 dba sBox7 dba sBox8 dba sBox9 dba sBox10 dba sBox11 dba sBox12 dba sBox13 dba sBox14 ; e36cf Functione36cf: ; e36cf (38:76cf) hlcoord 0, 0 ld b, 2 ld c, 18 call TextBox hlcoord 1, 2 ld de, String_e36f1 call PlaceString ld a, [wCurBox] and $f call GetBoxName hlcoord 11, 2 call PlaceString ret ; e36f1 (38:76f1) String_e36f1: ; e36f1 db "CURRENT@" ; e36f9 Functione36f9: ; e36f9 (38:76f9) ld hl, MenuDataHeader_0xe377b call LoadMenuDataHeader call InterpretMenu2 call ExitMenu ret c ld a, [MenuSelection2] cp $1 jr z, .asm_e3734 cp $2 jr z, .asm_e3745 cp $3 jr z, .asm_e3717 and a ret .asm_e3717 call GetBoxCount and a jr z, .asm_e372f ld e, l ld d, h ld a, [MenuSelection] dec a ld c, a callba Function844bc call Functione35e2 and a ret .asm_e372f call Functione37be and a ret .asm_e3734 ld a, [MenuSelection] dec a ld e, a ld a, [wCurBox] cp e ret z callba Function14a83 ret .asm_e3745 ld b, $4 ld de, DefaultFlypoint callba Function116c1 call ClearTileMap call LoadStandardFont call LoadFontsBattleExtra ld a, [MenuSelection] dec a call GetBoxName ld e, l ld d, h ld hl, DefaultFlypoint ld c, $8 call InitString ld a, [MenuSelection] dec a call GetBoxName ld de, DefaultFlypoint call CopyName2 ret ; e3778 (38:7778) hlcoord 11, 7 ; XXX MenuDataHeader_0xe377b: ; 0xe377b db $40 ; flags db 04, 11 ; start coords db 13, 19 ; end coords dw MenuData2_0xe3783 db 1 ; default option ; 0xe3783 MenuData2_0xe3783: ; 0xe3783 db $80 ; flags db 4 ; items db "SWITCH@" db "NAME@" db "PRINT@" db "QUIT@" ; 0xe379c Functione379c: ; e379c (38:779c) ld de, String_e37a1 jr Functione37e3 ; e37a1 (38:77a1) String_e37a1: ; e37a1 db "Choose a BOX.@" ; e37af Functione37af: ; e37af (38:77af) ld de, String_e37b4 jr Functione37e3 ; e37b4 (38:77b4) String_e37b4: ; e37b4 db "What's up?@" ; e37be Functione37be: ; e37be (38:77be) ld de, String_e37d3 call Functione37e3 ld de, SFX_WRONG call WaitPlaySFX call WaitSFX ld c, 50 call DelayFrames ret ; e37d3 (38:77d3) String_e37d3: ; e37d3 db "There's no #MON.@" ; e37e3 Functione37e3: ; e37e3 (38:77e3) push de hlcoord 0, 14 lb bc, 2, 18 call TextBox pop de hlcoord 1, 16 call PlaceString ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 ret SECTION "bank39", ROMX, BANK[$39] CopyrightGFX:: ; e4000 INCBIN "gfx/misc/copyright.2bpp" ; e41d0 _OptionsMenu: ; e41d0 ld hl, hInMenu ld a, [hl] push af ld [hl], $1 call WhiteBGMap 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 WhiteBGMap 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, $64 call DelayFrames call ClearTileMap callba GBCOnlyScreen call Functione45e8 .asm_e45c0 call JoyTextDelay ld a, [hJoyLast] and BUTTONS jr nz, .asm_e45de ld a, [wJumptableIndex] bit 7, a jr nz, .asm_e45e3 call Functione4670 callba Function8cf69 call DelayFrame jr .asm_e45c0 .asm_e45de call Functione465e scf ret .asm_e45e3 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, $10 call DelayFrames ret ; e4670 Functione4670: ; e4670 ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, Jumptable_e467f rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; e467f Jumptable_e467f: ; e467f dw Functione468c dw Functione468d dw Functione46ba dw Functione46dd ; e4687 Functione4687: ; e4687 ld hl, wJumptableIndex inc [hl] ret ; e468c Functione468c: ; e468c ret ; e468d Functione468d: ; e468d ld hl, wcf65 ld a, [hl] cp $20 jr nc, .asm_e4697 inc [hl] ret .asm_e4697 ld [hl], 0 ld hl, .GAME_FREAK decoord 5, 10 ld bc, .end - .GAME_FREAK call CopyBytes call Functione4687 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 Functione46ba: ; e46ba ld hl, wcf65 ld a, [hl] cp $40 jr nc, .asm_e46c4 inc [hl] ret .asm_e46c4 ld [hl], 0 ld hl, .presents decoord 7,11 ld bc, .end - .presents call CopyBytes call Functione4687 ret ; e46d6 .presents db 7, 8, 9, 10, 11, 12 .end db "@" ; e46dd Functione46dd: ; e46dd ld hl, wcf65 ld a, [hl] cp $80 jr nc, .asm_e46e7 inc [hl] ret .asm_e46e7 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld a, [hli] ld [OBPals + 12], a ld a, [hli] ld [OBPals + 13], a pop af ld [rSVBK], a ; $ff00+$70 ld a, $1 ld [hCGBPalUpdate], a ; $ff00+$e5 ret .asm_e47a3 ld hl, $b add hl, bc inc [hl] call Functione4687 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 WhiteBGMap 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 ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap001 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_365ad ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_365ad ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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 ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap003 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, IntroBackgroundGFX ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap004 ld de, VBGMap0 tile $00 call Functione54fa ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e5edd ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e5edd ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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 ; $ff00+$d4 ld [hLCDStatCustom], a ; $ff00+$c6 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap005 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_365ad ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_365ad ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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 ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f 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 ; $ff00+$4f 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e5edd ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e5edd ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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 ; $ff00+$c6 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 ; $ff00+$d4 call DelayFrame call DelayFrame call DelayFrame ld a, $c ld [hBGMapAddress], a ; $ff00+$d6 call DelayFrame call DelayFrame call DelayFrame xor a ld [hBGMapMode], a ; $ff00+$d4 ld [hBGMapAddress], a ; $ff00+$d6 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 ; $ff00+$d4 ld [hLCDStatCustom], a ; $ff00+$c6 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap007 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, IntroUnownsGFX ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap008 ld de, VBGMap0 tile $00 call Functione54fa ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_365ad ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_365ad ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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 ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap003 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e5edd ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e5edd ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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] ; $ff00+$cf sub 10 ld [hSCX], a ; $ff00+$cf 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 ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap009 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e77dd ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e77dd ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld a, $90 ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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] ; $ff00+$d0 and a ret z add 8 ld [hSCY], a ; $ff00+$d0 ret .done call NextIntroScene ret IntroScene17: ; e4ef5 (39:4ef5) ; ... call Functione54a3 call ClearSprites call ClearTileMap xor a ld [hBGMapMode], a ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap011 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, IntroSuicuneCloseGFX ld de, VTiles1 tile $00 call Functione54de ld hl, IntroTilemap012 ld de, VBGMap0 tile $00 call Functione54fa ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e6d6d ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e6d6d ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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] ; $ff00+$cf cp $60 ret z add 8 ld [hSCX], a ; $ff00+$cf ret .done call NextIntroScene ret IntroScene19: ; e4f7e (39:4f7e) ; More setup. call Functione54a3 call ClearSprites call ClearTileMap xor a ld [hBGMapMode], a ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap013 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e77dd ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e77dd ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld a, $d8 ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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] ; $ff00+$d0 inc a ld [hSCY], a ; $ff00+$d0 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 ; $ff00+$d4 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 WhiteBGMap call ClearSprites call ClearTileMap xor a ld [hBGMapMode], a ; $ff00+$d4 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, IntroTilemap015 ld de, VBGMap0 tile $00 call Functione54fa ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, IntroCrystalUnownsGFX ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap017 ld de, VBGMap0 tile $00 call Functione54fa ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, Palette_e679d ld de, Unkn1Pals ld bc, $80 call CopyBytes ld hl, Palette_e679d ld de, BGPals ld bc, $80 call CopyBytes pop af ld [rSVBK], a ; $ff00+$70 xor a ld [hSCX], a ; $ff00+$cf ld [hSCY], a ; $ff00+$d0 ld a, $7 ld [hWX], a ; $ff00+$d1 ld a, $90 ld [hWY], a ; $ff00+$d2 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 WhiteBGMap 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 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 ; $ff00+$70 ld a, $1 ld [hCGBPalUpdate], a ; $ff00+$e5 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 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 ; $ff00+$70 ld a, $1 ld [hCGBPalUpdate], a ; $ff00+$e5 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 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, Unkn1Pals 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 ; $ff00+$70 ld a, $1 ld [hCGBPalUpdate], a ; $ff00+$e5 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] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 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 ; $ff00+$70 ld a, $1 ld [hCGBPalUpdate], a ; $ff00+$e5 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] ; $ff00+$70 push af ld a, $6 ld [rSVBK], a ; $ff00+$70 ld hl, Unkn1Pals decoord 0, 0 ld b, $12 .asm_e542a ld c, $14 .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 ; $ff00+$70 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 ; $ff00+$d4 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 ; $ff00+$d4 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 ; $ff00+$e5 ret Functione54a3: ; e54a3 (39:54a3) ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, BGPals ld bc, $80 xor a call ByteFill pop af ld [rSVBK], a ; $ff00+$70 ld a, $1 ld [hCGBPalUpdate], a ; $ff00+$e5 call DelayFrame call DelayFrame ret Functione54c2: ; e54c2 (39:54c2) ld a, [rSVBK] ; $ff00+$70 push af ld a, $6 ld [rSVBK], a ; $ff00+$70 push de ld de, Unkn1Pals call Decompress pop hl ld de, Unkn1Pals ld bc, $180 call Request2bpp pop af ld [rSVBK], a ; $ff00+$70 ret Functione54de: ; e54de (39:54de) ld a, [rSVBK] ; $ff00+$70 push af ld a, $6 ld [rSVBK], a ; $ff00+$70 push de ld de, Unkn1Pals call Decompress pop hl ld de, Unkn1Pals ld bc, $1ff call Request2bpp pop af ld [rSVBK], a ; $ff00+$70 ret Functione54fa: ; e54fa (39:54fa) ld a, [rSVBK] ; $ff00+$70 push af ld a, $6 ld [rSVBK], a ; $ff00+$70 push de ld de, Unkn1Pals call Decompress pop hl ld de, Unkn1Pals ld bc, $140 call Request2bpp pop af ld [rSVBK], a ; $ff00+$70 ret Functione5516: ; e5516 (39:5516) ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 ld hl, LYOverrides ld bc, $90 xor a call ByteFill pop af ld [rSVBK], a ; $ff00+$70 ld a, $43 ld [hLCDStatCustom], a ; $ff00+$c6 ret Functione552f: ; e552f (39:552f) ld a, [rSVBK] ; $ff00+$70 push af ld a, $5 ld [rSVBK], a ; $ff00+$70 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 ; $ff00+$cf pop af ld [rSVBK], a ; $ff00+$70 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" 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: ; f8ea4 INCBIN "gfx/unknown/0f8ea4.2bpp" ; f8f24 GFX_f8f24: ; f8f24 INCBIN "gfx/unknown/0f8f24.2bpp" ; f8f34 GFX_f8f34: ; f8f34 INCBIN "gfx/unknown/0f8f34.2bpp" ; f9204 GFX_f9204: ; f9204 INCBIN "gfx/unknown/0f9204.2bpp" ; f9214 GFX_f9214: ; f9214 INCBIN "gfx/unknown/0f9214.2bpp" ; f9344 GFX_f9344: ; f9344 INCBIN "gfx/unknown/0f9344.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, GFX_f9214 ld hl, VTiles2 tile $60 lb bc, BANK(GFX_f9214), 1 call Get1bpp_2 ld de, GFX_f8f24 ld hl, VTiles2 tile $62 lb bc, BANK(GFX_f8f24), 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, GFX_f9204 lb bc, BANK(GFX_f9204), 1 call Get1bpp_2 ret ; fb4f2 Functionfb4f2: ; 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 Functionfb50d: ; 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, GFX_f9214 + 9 * LEN_2BPP_TILE ld hl, VTiles2 tile $5e lb bc, BANK(GFX_f9214), 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, [DefaultFlypoint] 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 WhiteBGMap 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 Functiona80 ld a, $1 ld [wPokedexStatus], a callba Function4424d call Functiona80 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 Function3da97 ld a, [hli] ld [TempMonDVs], a ld a, [hl] ld [TempMonDVs + 1], a ld b, $1c call GetSGBLayout call SetPalettes ret ; fb8f1 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 ld a, [UnownLetter] ld c, a ld b, 26 ld hl, UnownDex .asm_fba21 ld a, [hli] and a jr z, .asm_fba2b cp c ret z dec b jr nz, .asm_fba21 ret .asm_fba2b dec hl ld [hl], c ret ; fba2e Functionfba2e: ; fba2e (3e:7a2e) hlcoord 4, 15 ld bc, $c ld a, $7f call ByteFill ld a, [wc7dd] ld e, a ld d, 0 ld hl, UnownDex add hl, de ld a, [hl] ld e, a ld d, 0 ld hl, UnownWords rept 2 add hl, de endr ld a, [hli] ld e, a ld d, [hl] hlcoord 4, 15 .asm_fba52 ld a, [de] cp $ff ret z inc de ld [hli], a jr .asm_fba52 ; fba5a (3e:7a5a) UnownWords: ; fba5a dw UnownWord1 dw UnownWord1 dw UnownWord2 dw UnownWord3 dw UnownWord4 dw UnownWord5 dw UnownWord6 dw UnownWord7 dw UnownWord8 dw UnownWord9 dw UnownWord10 dw UnownWord11 dw UnownWord12 dw UnownWord13 dw UnownWord14 dw UnownWord15 dw UnownWord16 dw UnownWord17 dw UnownWord18 dw UnownWord19 dw UnownWord20 dw UnownWord21 dw UnownWord22 dw UnownWord23 dw UnownWord24 dw UnownWord25 dw UnownWord26 ; fba90 unownword: macro x = 1 rept STRLEN(\1) db STRSUB(\1, x, 1) - $40 x = x + 1 endr db -1 endm UnownWord1: unownword "ANGRY" UnownWord2: unownword "BEAR" UnownWord3: unownword "CHASE" UnownWord4: unownword "DIRECT" UnownWord5: unownword "ENGAGE" UnownWord6: unownword "FIND" UnownWord7: unownword "GIVE" UnownWord8: unownword "HELP" UnownWord9: unownword "INCREASE" UnownWord10: unownword "JOIN" UnownWord11: unownword "KEEP" UnownWord12: unownword "LAUGH" UnownWord13: unownword "MAKE" UnownWord14: unownword "NUZZLE" UnownWord15: unownword "OBSERVE" UnownWord16: unownword "PERFORM" UnownWord17: unownword "QUICKEN" UnownWord18: unownword "REASSURE" UnownWord19: unownword "SEARCH" UnownWord20: unownword "TELL" UnownWord21: unownword "UNDO" UnownWord22: unownword "VANISH" UnownWord23: unownword "WANT" UnownWord24: unownword "XXXXX" UnownWord25: unownword "YIELD" UnownWord26: unownword "ZOOM" ; fbb32 INCLUDE "event/magikarp.asm" INCLUDE "battle/hidden_power.asm" INCLUDE "battle/misc.asm" SECTION "bank3F", ROMX, BANK[$3F] INCLUDE "tilesets/animations.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 [wc733], 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 [wd10b], 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, wc72f call Functionfce0f ld hl, PartyMon1DVs ld bc, PARTYMON_STRUCT_LENGTH call Functionfcdde ld hl, wc72f call Functionfce0f ld e, TRADE_OT_ID call GetTradeAttribute ld de, wc732 call Functionfce15 ld hl, PartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH call Functionfcdde ld hl, wc731 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, wd851 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, wd851 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 [$ffc4], a ld a, [hli] ld [$ffc5], a ld de, wd851 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 "misc/mobile_40.asm" SECTION "bank41", ROMX, BANK[$41] Function104000:: ; 104000 ld hl, Function104006 jp Function104177 ; 104006 Function104006: ; 104006 decoord 0, 0, AttrMap ld hl, w6_d400 call Function104263 decoord 0, 0 ld hl, w6_d000 call Function10425f ld a, $0 ld [rVBK], a ld hl, w6_d000 call Function10419d ld a, $1 ld [rVBK], a ld hl, w6_d400 call Function10419d ret ; 10402d Function10402d:: ; 10402d ld hl, Function104033 jp Function104177 ; 104033 Function104033: ; 104033 decoord 0, 0 ld hl, w6_d000 call Function10425f ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, w6_d000 call Function10419d ret ; 104047 Function104047: ; 104047 ld hl, Function10404d jp Function104177 ; 10404d Function10404d: ; 10404d decoord 0, 0, AttrMap ld hl, w6_d400 call Function104263 ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, w6_d400 call Function10419d ret ; 104061 Function104061:: ; 104061 ld hl, Function104067 jp Function104177 ; 104067 Function104067: ; 104067 decoord 0, 0, AttrMap ld hl, w6_d400 call Function104263 decoord 0, 0 ld hl, w6_d000 call Function10425f call DelayFrame di ld a, [rVBK] ; $ff00+$4f push af ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, w6_d400 call Function1041ad ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, w6_d000 call Function1041ad pop af ld [rVBK], a ; $ff00+$4f ei ret Function104099: ; 104099 ld hl, Function104061 ld hl, Function1040a2 jp Function104177 ; 1040a2 Function1040a2: ; 1040a2 decoord 0, 0, AttrMap ld hl, w6_d400 call Function104263 decoord 0, 0 ld hl, w6_d000 call Function10425f call DelayFrame di ld a, [rVBK] push af ld a, $1 ld [rVBK], a ld hl, w6_d400 call Function1041c1 ld a, $0 ld [rVBK], a ld hl, w6_d000 call Function1041c1 pop af ld [rVBK], a ei ret ; 1040d4 Function1040d4: ; 1040d4 ld hl, Function1040da jp Function104177 ; 1040da Function1040da: ; 1040da ld a, $1 ld [rVBK], a ld a, $3 ld [rSVBK], a ld de, $d800 ld a, [hBGMapAddress + 1] ld [rHDMA1], a ld a, [hBGMapAddress] ld [rHDMA2], a ld a, d ld [rHDMA3], a ld a, e ld [rHDMA4], a ld a, $23 ld [hDMATransfer], a call Function1041a4 ret ; 1040fb Function1040fb: ; 1040fb ld hl, Function104101 jp Function104177 ; 104101 Function104101: ; 104101 ld a, $1 ld [rVBK], a ld a, $3 ld [rSVBK], a ld hl, $d800 call Function10419d ret ; 104110 Function104110:: ; 104110 ld hl, Function104116 jp Function104177 ; 104116 Function104116: ; 104116 decoord 0, 0, AttrMap ld hl, w6_d400 call Function104263 decoord 0, 0 ld hl, w6_d000 call Function10425f call DelayFrame di ld a, [rVBK] ; $ff00+$4f push af ld a, $1 ld [rVBK], a ; $ff00+$4f ld hl, w6_d400 call Function1041b7 ld a, $0 ld [rVBK], a ; $ff00+$4f ld hl, w6_d000 call Function1041b7 pop af ld [rVBK], a ; $ff00+$4f ei ret ; 104148 Function104148: ; 104148 (41:4148) ld hl, Function10414e jp Function104177 ; 10414e (41:414e) Function10414e: ; 10414e decoord 0, 0, AttrMap ld hl, w6_d400 call Function104263 ld c, $ff decoord 0, 0 ld hl, w6_d000 call Function104265 ld a, $1 ld [rVBK], a ld hl, w6_d400 call Function1041ad ld a, $0 ld [rVBK], a ld hl, w6_d000 call Function1041ad ret ; 104177 Function104177: ; 104177 ld a, [hBGMapMode] push af ld a, [hMapAnims] push af xor a ld [hBGMapMode], a ld [hMapAnims], a ld a, [rSVBK] push af ld a, 6 ld [rSVBK], a ld a, [rVBK] push af call Function10419c pop af ld [rVBK], a pop af ld [rSVBK], a pop af ld [hMapAnims], a pop af ld [hBGMapMode], a ret ; 10419c Function10419c: ; 10419c jp [hl] ; 10419d Function10419d: ; 10419d (41:419d) call Function10424e ld a, $23 ld [hDMATransfer], a ; $ff00+$e8 Function1041a4: ; 104a14 .asm_1041a4 call DelayFrame ld a, [hDMATransfer] ; $ff00+$e8 and a jr nz, .asm_1041a4 ret Function1041ad: ; 1041ad (41:41ad) ld a, [hBGMapAddress + 1] ld d, a ld a, [hBGMapAddress] ; $ff00+$d6 ld e, a ld c, $24 jr Function104209 Function1041b7: ; 1041b7 (41:41b7) ld a, [hBGMapAddress + 1] ld d, a ld a, [hBGMapAddress] ; $ff00+$d6 ld e, a ld c, $24 jr asm_104205 ; 1041c1 (41:41c1) Function1041c1: ; 1041c1 ld a, [hBGMapAddress + 1] ld d, a ld a, [hBGMapAddress] ld e, a ld c, $24 ld a, h ld [rHDMA1], a ld a, l and $f0 ld [rHDMA2], a ld a, d and $1f ld [rHDMA3], a ld a, e and $f0 ld [rHDMA4], a ld a, c dec c or $80 ld b, a ld a, $7f sub c ld d, a .loop1 ld a, [rLY] cp d jr nc, .loop1 .loop2 ld a, [rSTAT] and $3 jr z, .loop2 ld a, b ld [rHDMA5], a ld a, [rLY] inc c ld hl, rLY .loop3 cp [hl] jr z, .loop3 ld a, [hl] dec c jr nz, .loop3 ld hl, rHDMA5 res 7, [hl] ret ; 104205 asm_104205: ld b, $7b jr asm_10420b Function104209: ; LY magic ld b, $7f asm_10420b: ld a, h ld [rHDMA1], a ld a, l and $f0 ; high nybble ld [rHDMA2], a ld a, d and $1f ; lower 5 bits ld [rHDMA3], a ld a, e and $f0 ; high nybble ld [rHDMA4], a ld a, c dec c or $80 ; set 7, a ld e, a ld a, b sub c ld d, a .ly_loop ld a, [rLY] cp d jr nc, .ly_loop di .rstat_loop_1 ld a, [rSTAT] and $3 jr nz, .rstat_loop_1 .rstat_loop_2 ld a, [rSTAT] and $3 jr z, .rstat_loop_2 ld a, e ld [rHDMA5], a ld a, [rLY] inc c ld hl, rLY .final_ly_loop cp [hl] jr z, .final_ly_loop ld a, [hl] dec c jr nz, .final_ly_loop ld hl, rHDMA5 res 7, [hl] ei ret ; 10424e Function10424e: ; 10424e (41:424e) ld a, h ld [rHDMA1], a ; $ff00+$51 ld a, l ld [rHDMA2], a ; $ff00+$52 ld a, [hBGMapAddress + 1] and $1f ld [rHDMA3], a ; $ff00+$53 ld a, [hBGMapAddress] ; $ff00+$d6 ld [rHDMA4], a ; $ff00+$54 ret Function10425f: ; 10425f (41:425f) ld c, $7f jr Function104265 Function104263: ; 104263 (41:4263) ld c, $0 Function104265: ; 104265 (41:4265) ; back up the value of c to hMapObjectIndexBuffer ld a, [hMapObjectIndexBuffer] push af ld a, c ld [hMapObjectIndexBuffer], a ; for each row on the screen ld c, SCREEN_HEIGHT .loop1 ; for each tile in the row ld b, SCREEN_WIDTH .loop2 ; copy from de to hl ld a, [de] inc de ld [hli], a dec b jr nz, .loop2 ; load the original value of c into hl 12 times ld a, [hMapObjectIndexBuffer] ld b, 12 .loop3 ld [hli], a dec b jr nz, .loop3 dec c jr nz, .loop1 ; restore the original value of hMapObjectIndexBuffer pop af ld [hMapObjectIndexBuffer], a ret _Get2bpp:: ; 104284 ; 2bpp when [rLCDC] & $80 ; switch to WRAM bank 6 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push bc push hl ; Copy c tiles of the 2bpp from b:de to w6_d000 ld a, b ; bank ld l, c ; number of tiles ld h, $0 rept 4 add hl, hl ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile) endr ld b, h ld c, l ld h, d ; address ld l, e ld de, w6_d000 call FarCopyBytes pop hl pop bc push bc call DelayFrame pop bc ld d, h ld e, l ld hl, w6_d000 call Function104209 ; restore the previous bank pop af ld [rSVBK], a ret ; 1042b2 _Get1bpp:: ; 1042b2 ; 1bpp when [rLCDC] & $80 .loop ld a, c cp $10 jp c, .bankswitch jp z, .bankswitch push bc push hl push de ld c, $10 call .bankswitch pop de ld hl, $80 add hl, de ld d, h ld e, l pop hl lb bc, 1, 0 add hl, bc pop bc ld a, c sub $10 ld c, a jr .loop ; 1042d6 .bankswitch: ; 1042d6 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push bc push hl ld a, b ld l, c ld h, $0 rept 3 add hl, hl ; multiply by 8 endr ld c, l ld b, h ld h, d ld l, e ld de, w6_d000 call FarCopyBytesDouble_DoubleBankSwitch pop hl pop bc push bc call DelayFrame pop bc ld d, h ld e, l ld hl, w6_d000 call Function104209 pop af ld [rSVBK], a ret ; 104303 Function104303: ; 104303 ld hl, Function104309 jp Function104177 ; 104309 Function104309: ld hl, w6_d000 decoord 0, 0 call Function10433a ld hl, w6_d000 + $80 decoord 0, 0, AttrMap call Function10433a ld a, $1 ld [rVBK], a ; $ff00+$4f ld c, $8 ld hl, w6_d000 + $80 ld de, VBGMap1 tile $00 call Function104209 ld a, $0 ld [rVBK], a ; $ff00+$4f ld c, $8 ld hl, w6_d000 ld de, VBGMap1 tile $00 call Function104209 ret Function10433a: ; 10433a (41:433a) ld b, $4 .asm_10433c ld c, $14 .asm_10433e ld a, [de] ld [hli], a inc de dec c jr nz, .asm_10433e ld a, l add $c ld l, a ld a, h adc $0 ld h, a dec b jr nz, .asm_10433c 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" FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp" FishingRodGFX3: INCBIN "gfx/misc/fishing3.2bpp" FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp" RunCallback_05_03: ; 1045b0 call Clearwc7e8 call ResetMapBufferEventFlags call ResetFlashIfOutOfCave call GetCurrentMapTrigger call ResetBikeFlags ld a, $5 call RunMapCallback RunCallback_03: ; 1045c4 callba Function97df9 ld a, $3 call RunMapCallback call GetMapHeaderTimeOfDayNybble ld [wc2d0], a ret EnterMapConnection: ; 1045d6 ; Return carry if a connection has been entered. ld a, [wd151] and a jp z, EnterSouthConnection cp 1 jp z, EnterNorthConnection cp 2 jp z, EnterWestConnection cp 3 jp z, EnterEastConnection ret ; 1045ed EnterWestConnection: ; 1045ed ld a, [WestConnectedMapGroup] ld [MapGroup], a ld a, [WestConnectedMapNumber] ld [MapNumber], a ld a, [WestConnectionStripXOffset] ld [XCoord], a ld a, [WestConnectionStripYOffset] ld hl, YCoord add [hl] ld [hl], a ld c, a ld hl, WestConnectionWindow ld a, [hli] ld h, [hl] ld l, a srl c jr z, .asm_10461e ld a, [WestConnectedMapWidth] add 6 ld e, a ld d, 0 .asm_10461a add hl, de dec c jr nz, .asm_10461a .asm_10461e ld a, l ld [wd194], a ld a, h ld [wd195], a jp EnteredConnection ; 104629 EnterEastConnection: ; 104629 ld a, [EastConnectedMapGroup] ld [MapGroup], a ld a, [EastConnectedMapNumber] ld [MapNumber], a ld a, [EastConnectionStripXOffset] ld [XCoord], a ld a, [EastConnectionStripYOffset] ld hl, YCoord add [hl] ld [hl], a ld c, a ld hl, EastConnectionWindow ld a, [hli] ld h, [hl] ld l, a srl c jr z, .asm_10465a ld a, [EastConnectedMapWidth] add 6 ld e, a ld d, 0 .asm_104656 add hl, de dec c jr nz, .asm_104656 .asm_10465a ld a, l ld [wd194], a ld a, h ld [wd195], a jp EnteredConnection ; 104665 EnterNorthConnection: ; 104665 ld a, [NorthConnectedMapGroup] ld [MapGroup], a ld a, [NorthConnectedMapNumber] ld [MapNumber], a ld a, [NorthConnectionStripYOffset] ld [YCoord], a ld a, [NorthConnectionStripXOffset] ld hl, XCoord add [hl] ld [hl], a ld c, a ld hl, NorthConnectionWindow ld a, [hli] ld h, [hl] ld l, a ld b, 0 srl c add hl, bc ld a, l ld [wd194], a ld a, h ld [wd195], a jp EnteredConnection ; 104696 EnterSouthConnection: ; 104696 ld a, [SouthConnectedMapGroup] ld [MapGroup], a ld a, [SouthConnectedMapNumber] ld [MapNumber], a ld a, [SouthConnectionStripYOffset] ld [YCoord], a ld a, [SouthConnectionStripXOffset] ld hl, XCoord add [hl] ld [hl], a ld c, a ld hl, SouthConnectionWindow ld a, [hli] ld h, [hl] ld l, a ld b, 0 srl c add hl, bc ld a, l ld [wd194], a ld a, h ld [wd195], a ; fallthrough ; 1046c4 EnteredConnection: ; 1046c4 scf ret ; 1046c6 LoadWarpData: ; 1046c6 call Function1046df call Function104718 ld a, [wd146] ld [WarpNumber], a ld a, [wd147] ld [MapGroup], a ld a, [wd148] ld [MapNumber], a ret Function1046df: ; 1046df (41:46df) call GetMapPermission call CheckOutdoorMap ret nz ld a, [wd147] ld b, a ld a, [wd148] ld c, a call GetAnyMapPermission call CheckIndoorMap ret nz ld a, [wd14a] cp $f jr nz, .asm_104705 ld a, [wd14b] cp $a ret z cp $c ret z .asm_104705 ld a, [wd149] ld [wdca9], a ld a, [wd14a] ld [wdcaa], a ld a, [wd14b] ld [wdcab], a ret Function104718: ; 104718 (41:4718) call GetMapPermission call CheckOutdoorMap ret nz ld a, [wd147] ld b, a ld a, [wd148] ld c, a call GetAnyMapPermission call CheckIndoorMap ret nz ld a, [wd147] ld b, a ld a, [wd148] ld c, a call GetAnyMapTileset ld a, c cp $7 jr z, .asm_104743 cp $15 jr z, .asm_104743 ret .asm_104743 ld a, [wd14a] ld [wdcb2], a ld a, [wd14b] ld [wdcb3], a ret LoadMapTimeOfDay: ; 104750 ld hl, VramState res 6, [hl] ld a, $1 ld [wc2ce], a callba Function8c0e5 callba Function8c001 call Function2173 call Function104770 call Function1047a3 ret Function104770: ; 104770 (41:4770) ld a, $98 ld [wd153], a xor a ld [wd152], a ld [hSCY], a ; $ff00+$d0 ld [hSCX], a ; $ff00+$cf callba Function5958 ld a, [rVBK] ; $ff00+$4f push af ld a, $1 ld [rVBK], a ; $ff00+$4f xor a lb bc, 4, 0 ld hl, VBGMap0 tile $00 call ByteFill pop af ld [rVBK], a ; $ff00+$4f ld a, $60 lb bc, 4, 0 ld hl, VBGMap0 tile $00 call ByteFill ret Function1047a3: ; 1047a3 (41:47a3) decoord 0, 0 call Function1047b4 ld a, [hCGB] ; $ff00+$e6 and a ret z decoord 0, 0, AttrMap ld a, $1 ld [rVBK], a ; $ff00+$4f Function1047b4: ; 1047b4 (41:47b4) ld hl, VBGMap0 tile $00 ld c, $14 ld b, $12 .asm_1047bb push bc .asm_1047bc ld a, [de] inc de ld [hli], a dec c jr nz, .asm_1047bc ld bc, $c add hl, bc pop bc dec b jr nz, .asm_1047bb ld a, $0 ld [rVBK], a ; $ff00+$4f ret LoadGraphics: ; 1047cf call LoadTilesetHeader call Function2821 xor a ld [hMapAnims], a xor a ld [hTileAnimFrame], a ; $ff00+$df callba RefreshSprites call LoadFontsExtra callba Function106594 ret LoadMapPalettes: ; 1047eb ld b, $9 jp GetSGBLayout ; 1047f0 RefreshMapSprites: ; 1047f0 call ClearSprites callba ReturnFromMapSetupScript call Function2914 callba Function579d callba Function154f7 ld hl, wPlayerSpriteSetupFlags bit 6, [hl] jr nz, .asm_104817 ld hl, VramState set 0, [hl] call Function2e31 .asm_104817 ld a, [wPlayerSpriteSetupFlags] and $1c ld [wPlayerSpriteSetupFlags], a ret CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) ld a, [wd151] cp STANDING ret z and a ; DOWN jr z, .down cp UP jr z, .up cp LEFT jr z, .left cp RIGHT jr z, .right and a ret .down ld a, [PlayerMapY] sub 4 ld b, a ld a, [MapHeight] add a cp b jr z, .ok and a ret .up ld a, [PlayerMapY] sub 4 cp -1 jr z, .ok and a ret .left ld a, [PlayerMapX] sub $4 cp -1 jr z, .ok and a ret .right ld a, [PlayerMapX] sub 4 ld b, a ld a, [MapWidth] add a cp b jr z, .ok and a ret .ok scf ret GetCoordOfUpperLeftCorner:: ; 10486d ld hl, OverworldMap ld a, [XCoord] bit 0, a jr nz, .asm_10487d srl a add $1 jr .asm_104881 .asm_10487d add $1 srl a .asm_104881 ld c, a ld b, $0 add hl, bc ld a, [MapWidth] add $6 ld c, a ld b, $0 ld a, [YCoord] bit 0, a jr nz, .asm_10489a srl a add $1 jr .asm_10489e .asm_10489a add $1 srl a .asm_10489e call AddNTimes ld a, l ld [wd194], a ld a, h ld [wd195], a ld a, [YCoord] and $1 ld [wd196], a ld a, [XCoord] and $1 ld [wd197], a ret ; 1048ba 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] ; $ff00+$ff push af call Function104a95 ld d, a xor a ld [rIF], a ; $ff00+$f pop af ld [rIE], a ; $ff00+$ff 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 MysteryGiftGetItem 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 ; $ff00+$40 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] ; $ff00+$44 cp $90 jr c, .asm_104ac8 ld c, $56 ld a, $c0 ld [$ff00+c], a ld b, $f0 .asm_104ad5 push bc call Function105038 ld b, $2 ld c, $56 .asm_104add ld a, [$ff00+c] and b ld b, a ld a, [rLY] ; $ff00+$44 cp $90 jr nc, .asm_104add .asm_104ae6 ld a, [$ff00+c] and b ld b, a ld a, [rLY] ; $ff00+$44 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, [$ffc4] 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 ; $ff00+$f ld a, [rIE] ; $ff00+$ff or $1 ld [rIE], a ; $ff00+$ff 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 ; $ff00+$f ld a, [rIE] ; $ff00+$ff or $1 ld [rIE], a ; $ff00+$ff 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 ; $ff00+$ff xor a ld [rIF], a ; $ff00+$f 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 ; $ff00+$7 ld a, $fe ld [rTMA], a ; $ff00+$6 ld [rTIMA], a ; $ff00+$5 ld a, $2 ld [rTAC], a ; $ff00+$7 or $4 ld [rTAC], a ; $ff00+$7 ret Function104d86: ; 104d86 (41:4d86) xor a ld [rTAC], a ; $ff00+$7 ld [rTMA], a ; $ff00+$6 ld [rTIMA], a ; $ff00+$5 ld a, $2 ld [rTAC], a ; $ff00+$7 or $4 ld [rTAC], a ; $ff00+$7 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 ; $ff00+$7 ret Function104da9: ; 104da9 (41:4da9) inc d ret z xor a ld [rIF], a ; $ff00+$f 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 ; $ff00+$f 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 ; $ff00+$f 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 ; $ff00+$f 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, $56 ld a, [$ffc4] 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, $56 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 ; $ff00+$56 ld a, $ff ld [hPrintNum10], a ret Function104e93: ; 104e93 (41:4e93) xor a ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier) ld [hMathBuffer], a ; $ff00+$b8 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] ; $ff00+$b7 (aliases: hMultiplier) ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) ld a, [hMathBuffer] ; $ff00+$b8 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] ; $ff00+$b4 (aliases: hMultiplicand) ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier) ld a, [$ffb5] ld [hMathBuffer], a ; $ff00+$b8 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 ; $ff00+$6 .asm_104eee inc b jr z, .asm_104f2e ld a, $8 ld [$ffb6], a ld a, [hli] ld e, a ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier) add e ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier) ld a, [hMathBuffer] ; $ff00+$b8 adc $0 ld [hMathBuffer], a ; $ff00+$b8 .asm_104f02 xor a ld [rIF], a ; $ff00+$f halt ld a, $c1 ld [rRP], a ; $ff00+$56 ld d, $1 ld a, e rlca ld e, a jr nc, .asm_104f13 inc d .asm_104f13 ld a, [rTIMA] ; $ff00+$5 cp $f8 jr c, .asm_104f13 ld a, $c0 ld [rRP], a ; $ff00+$56 dec d jr z, .asm_104f25 xor a ld [rIF], a ; $ff00+$f 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 ; $ff00+$6 xor a ld [rIF], a ; $ff00+$f 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 ; $ff00+$b7 (aliases: hMultiplier) ld [hMathBuffer], a ; $ff00+$b8 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] ; $ff00+$b4 (aliases: hMultiplicand) cp $5a jp nz, Function104f50 call Function104faf ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier) ld d, a ld a, [hMathBuffer] ; $ff00+$b8 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 ; $ff00+$b7 (aliases: hMultiplier) ld a, e ld [hMathBuffer], a ; $ff00+$b8 ret Function104faf: ; 104faf (41:4faf) ld c, $56 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 [$ffc5], 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, [$ffc5] ld d, a ld a, [rTIMA] ; $ff00+$5 ld [$ffc5], 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] ; $ff00+$b7 (aliases: hMultiplier) add e ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier) ld a, [hMathBuffer] ; $ff00+$b8 adc $0 ld [hMathBuffer], a ; $ff00+$b8 jr .asm_104fd2 .asm_10501a call Function104d74 xor a ld [rIF], a ; $ff00+$f 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 ; $ff00+$0 rept 2 ld a, [rJOYP] ; $ff00+$0 endr cpl and $f swap a ld b, a ld a, $10 ld [rJOYP], a ; $ff00+$0 rept 6 ld a, [rJOYP] ; $ff00+$0 endr cpl and $f or b ld c, a ld a, [hMoneyTemp] xor c and c ld [$ffc4], a ld a, c ld [hMoneyTemp], a ld a, $30 ld [rJOYP], a ; $ff00+$0 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 WhiteBGMap 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] ; $ff00+$ff push af call Function104c2d ld d, a xor a ld [rIF], a ; $ff00+$f pop af ld [rIE], a ; $ff00+$ff ld a, d cp $10 jp z, Function105712 cp $6c jp nz, Function10571a call Function1056eb ld c, $3c 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 ; $ff00+$40 ret ; 10572e (41:572e) String_10572e: ; 10572e db "エーボタン", $1f, "おすと" next "つうしん", $4a, "おこなわれるよ!" next "ビーボタン", $1f, "おすと" next "つうしん", $1f, "ちゅうし します" 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 WhiteBGMap 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 Function34548 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 SECTION "bank41_2", ROMX, BANK[$41] Mobile_HallOfFame2:: mobile ; 0x105ef6 ld a, $5 call GetSRAMBank ld hl, GameTimeHours ld de, $a001 ld bc, 4 call CopyBytes ld hl, $a010 ld de, $a005 ld bc, 4 call CopyBytes ld hl, $a039 ld de, $a009 ld bc, 4 call CopyBytes ld hl, $a01b ld de, $a00d ld bc, 3 call CopyBytes call Function106162 call CloseSRAM ret ; 105f33 MagikarpLength_Mobile: mobile ; 105f33 ld a, $5 call GetSRAMBank ld de, Buffer1 ld hl, $a07b ld a, [de] cp [hl] jr z, .asm_105f47 jr nc, .asm_105f4f jr .asm_105f55 .asm_105f47 inc hl inc de ld a, [de] cp [hl] dec hl dec de jr c, .asm_105f55 .asm_105f4f ld a, [de] inc de ld [hli], a ld a, [de] dec de ld [hl], a .asm_105f55 ld hl, $a07d ld a, [hli] or [hl] dec hl jr z, .asm_105f6d ld a, [de] cp [hl] jr z, .asm_105f65 jr c, .asm_105f6d jr .asm_105f72 .asm_105f65 inc hl inc de ld a, [de] cp [hl] jr nc, .asm_105f72 dec hl dec de .asm_105f6d ld a, [de] inc de ld [hli], a ld a, [de] ld [hl], a .asm_105f72 call Function106162 call CloseSRAM ret ; 105f79 MobileFn_105f79: mobile ; 105f79 ld a, $5 call GetSRAMBank ld a, [hProduct] ld hl, $a07f cp [hl] jr z, .asm_105f8b jr nc, .asm_105f92 jr .asm_105f98 .asm_105f8b inc hl ld a, [hMultiplicand] cp [hl] jr c, .asm_105f98 dec hl .asm_105f92 ld a, [hProduct] ld [hli], a ld a, [hMultiplicand] ld [hl], a .asm_105f98 call Function106162 call CloseSRAM ret ; 105f9f MobileFn_105f9f: mobile ; 105f9f ld a, $5 call GetSRAMBank ld hl, $a070 inc [hl] jr nz, .asm_105fae dec hl inc [hl] inc hl .asm_105fae dec hl ld a, [$a071] cp [hl] jr z, .asm_105fb9 jr c, .asm_105fc1 jr .asm_105fc9 .asm_105fb9 inc hl ld a, [$a072] cp [hl] jr nc, .asm_105fc9 dec hl .asm_105fc1 ld a, [hli] ld [$a071], a ld a, [hl] ld [$a072], a .asm_105fc9 call Function106162 call CloseSRAM ret ; 105fd0 MobileFn_105fd0: mobile ; 105fd0 ld a, $5 call GetSRAMBank ld hl, $a06f xor a ld [hli], a ld [hl], a call Function106162 call CloseSRAM ret ; 105fe3 MobileFn_105fe3: mobile ; 105fe3 ld a, $5 call GetSRAMBank ld hl, $a076 ld a, e add [hl] ld [hld], a ld a, d adc [hl] ld [hld], a jr nc, .asm_106001 inc [hl] jr nz, .asm_106001 dec hl inc [hl] jr nz, .asm_106001 ld a, $ff rept 3 ld [hli], a endr ld [hl], a .asm_106001 call Function106162 call CloseSRAM ret ; 106008 MobileFn_106008: mobile ; 106008 ld a, $5 call GetSRAMBank ld hl, $a07a ld a, [bc] dec bc add [hl] ld [hld], a ld a, [bc] dec bc adc [hl] ld [hld], a ld a, [bc] adc [hl] ld [hld], a jr nc, .asm_106027 inc [hl] jr nz, .asm_106027 ld a, $ff rept 3 ld [hli], a endr ld [hl], a .asm_106027 call Function106162 call CloseSRAM ret ; 10602e MobileFn_10602e: mobile ; 10602e (41:602e) ld hl, $a010 jp Function106117 MobileFn_106035: mobile ; 106035 ld a, $5 call GetSRAMBank ld a, [$aa8d] and a call CloseSRAM ret nz ld hl, $a014 jp Function106123 MobileFn_106049: mobile ; 106049 ld hl, $a018 jp Function10611d MobileFn_106050: mobile ; 106050 ld a, [BattleType] cp BATTLETYPE_TUTORIAL ret z ld hl, $a01b jp Function10611d MobileFn_10605d: mobile ; 10605d ld a, [BattleType] cp BATTLETYPE_TUTORIAL ret z ld hl, $a01e jp Function10611d MobileFn_10606a: mobile ; 10606a ld hl, $a021 jp Function10611d MobileFn_106071: mobile ; 106071 ld hl, $a024 jp Function10611d Mobile_HallOfFame:: mobile ; 0x106078 ld hl, $a027 jp Function10611d MobileFn_10607f: mobile ; 10607f (41:607f) ld hl, $a02a jp Function10611d MobileFn_106086: mobile ; 106086 ld hl, $a02d jp Function10611d MobileFn_10608d: mobile ; 10608d (41:608d) ld hl, $a030 jp Function10611d MobileFn_106094: mobile ; 106094 ld hl, $a033 jp Function10611d MobileFn_10609b: mobile ; 10609b ld hl, $a036 jp Function10611d Mobile_HealParty: mobile ; 1060a2 ld hl, $a039 jp Function10611d MobileFn_1060a9: mobile ; 1060a9 (41:60a9) ld hl, $a03c jr Function10611d MobileFn_1060af: mobile ; 1060af ld hl, $a03f jr Function10611d MobileFn_1060b5: mobile ; 1060b5 ld hl, $a042 jr Function10611d MobileFn_1060bb: mobile ; 1060bb ld hl, $a045 jr Function10611d MobileFn_1060c1: mobile ; 1060c1 ld hl, $a048 jr Function10611d MobileFn_1060c7: mobile ; 1060c7 ld hl, $a04b jr Function10611d MobileFn_1060cd: mobile ; 1060cd ld hl, $a04e jr Function106123 MobileFn_1060d3: mobile ; 1060d3 ld hl, $a051 jr Function10611d MobileFn_1060d9: mobile ; 1060df ld hl, $a054 jr Function10611d MobileFn_1060df: mobile ; 1060df ld hl, $a057 jr Function10611d MobileFn_1060e5: mobile ; 1060e5 ld a, [hBattleTurn] and a ret nz ld hl, $a05a jr Function10611d MobileFn_1060ef: mobile ; 1060ef ld hl, $a05d jr Function10611d MobileFn_1060f5: mobile ; 1060f5 ld hl, $a060 jr Function10611d MobileFn_1060fb: mobile ; 1060fb ld hl, $a063 jr Function10611d MobileFn_106101: mobile ; 106101 ld hl, $a066 jr Function10611d ; 106107 MobileFn_106107: mobile ; 106107 ld hl, $a069 jr Function10611d ; 10610d MobileFn_10610d: mobile ; 10610d ld a, [hBattleTurn] and a ret nz ld hl, $a06c jr Function10611d ; 106117 Function106117: ; 106117 push bc ld bc, 3 jr Function10612d ; 10611d Function10611d: ; 10611d push bc ld bc, 2 jr Function10612d ; 106123 Function106123: ; 106123 push bc ld bc, 1 jr Function10612d ; 106129 Function106129: ; 106129 push bc ld bc, 0 Function10612d: ; 10612d ld a, $5 call GetSRAMBank push hl push de ld e, c inc e .asm_106136 ld a, [hli] inc a jr nz, .asm_10613d dec e jr nz, .asm_106136 .asm_10613d pop de pop hl jr z, .asm_10614d add hl, bc .asm_106142 inc [hl] jr nz, .asm_10614d ld a, c and a jr z, .asm_10614d dec hl dec c jr .asm_106142 .asm_10614d call Function106162 call CloseSRAM pop bc ret ; 106155 MobileFn_106155: mobile ; 106155 ld a, $5 call GetSRAMBank call Function106162 call CloseSRAM ret ; 106162 Function106162: ; 106162 push de call Function10616e ld hl, $a081 ; s5_a081 ld [hl], d inc hl ld [hl], e pop de ret ; 10616e Function10616e: ; 10616e push bc ld hl, $a001 ; s5_a001 ld bc, $80 xor a ld de, 0 .asm_106179 ld a, e add [hl] ld e, a jr nc, .asm_10617f inc d .asm_10617f inc hl dec bc ld a, b or c jr nz, .asm_106179 pop bc ret ; 106187 BackupMobileEventIndex: ; 106187 ld a, BANK(sMobileEventIndex) call GetSRAMBank ld a, [sMobileEventIndex] push af ld a, BANK(sMobileEventIndexBackup) call GetSRAMBank pop af ld [sMobileEventIndexBackup], a call CloseSRAM ret ; 10619d RestoreMobileEventIndex: ; 10619d (41:619d) ld a, BANK(sMobileEventIndexBackup) call GetSRAMBank ld a, [sMobileEventIndexBackup] push af ld a, BANK(sMobileEventIndex) call GetSRAMBank pop af ld [sMobileEventIndex], a call CloseSRAM ret ; 1061b3 (41:61b3) Function1061b3: ; 1061b3 call Function10616e ld hl, $a081 ; s5_a081 ld a, d cp [hl] ret nz inc hl ld a, e cp [hl] ret ; 1061c0 DeleteMobileEventIndex: ; 1061c0 (41:61c0) ld a, BANK(sMobileEventIndex) call GetSRAMBank xor a ld [sMobileEventIndex], a call CloseSRAM ret ; 1061cd (41:61cd) Function1061cd: ; unreferenced ld hl, $a001 ld bc, $82 xor a call ByteFill ld hl, $a07d ld a, $3 ld [hli], a ld [hl], $e8 call Function106162 ld hl, $a001 ld de, $a084 ld bc, $82 call CopyBytes ret ; 1061ef _MobilePrintNum:: ; 1061ef ; Supports signed 31-bit integers (up to 10 digits) ; b: Bits 0-4 = # bytes ; Bit 7 = set if negative ; c: Number of digits ; de: highest byte of number to convert ; hl: where to print the converted string push bc xor a ld [hPrintNum1], a ld [hPrintNum2], a ld [hPrintNum3], a ld a, b and $f cp $1 jr z, .one_byte cp $2 jr z, .two_bytes cp $3 jr z, .three_bytes ; four bytes ld a, [de] ld [hPrintNum1], a inc de .three_bytes ld a, [de] ld [hPrintNum2], a inc de .two_bytes ld a, [de] ld [hPrintNum3], a inc de .one_byte ld a, [de] ld [hPrintNum4], a inc de push de xor a ld [hPrintNum9], a ld a, b ld [hPrintNum10], a ld a, c cp 2 jr z, .two_digits ld de, ._2 cp 3 jr z, .three_to_nine_digits ld de, ._3 cp 4 jr z, .three_to_nine_digits ld de, ._4 cp 5 jr z, .three_to_nine_digits ld de, ._5 cp 6 jr z, .three_to_nine_digits ld de, ._6 cp 7 jr z, .three_to_nine_digits ld de, ._7 cp 8 jr z, .three_to_nine_digits ld de, ._8 cp 9 jr z, .three_to_nine_digits ld de, ._9 .three_to_nine_digits rept 3 inc de endr rept 2 dec a endr .digit_loop push af call .Function1062b2 call .Function1062ff rept 4 inc de endr pop af dec a jr nz, .digit_loop .two_digits ld c, 0 ld a, [hPrintNum4] .mod_ten_loop cp 10 jr c, .simple_divide_done sub 10 inc c jr .mod_ten_loop .simple_divide_done ld b, a ld a, [hPrintNum9] or c ld [hPrintNum9], a jr nz, .create_digit call .LoadMinusTenIfNegative jr .done .create_digit ld a, "0" add c ld [hl], a .done call .Function1062ff ld a, "0" add b ld [hli], a pop de pop bc ret ; 106292 ._9 dd 1000000000 ._8 dd 100000000 ._7 dd 10000000 ._6 dd 1000000 ._5 dd 100000 ._4 dd 10000 ._3 dd 1000 ._2 dd 100 ; 1062b2 .Function1062b2: ; 1062b2 ld c, $0 .asm_1062b4 ld a, [de] dec de ld b, a ld a, [hPrintNum4] sub b ld [hPrintNum8], a ld a, [de] dec de ld b, a ld a, [hPrintNum3] sbc b ld [hPrintNum7], a ld a, [de] dec de ld b, a ld a, [hPrintNum2] sbc b ld [hPrintNum6], a ld a, [de] rept 3 inc de endr ld b, a ld a, [hPrintNum1] sbc b ld [hPrintNum5], a jr c, .asm_1062eb ld a, [hPrintNum5] ld [hPrintNum1], a ld a, [hPrintNum6] ld [hPrintNum2], a ld a, [hPrintNum7] ld [hPrintNum3], a ld a, [hPrintNum8] ld [hPrintNum4], a inc c jr .asm_1062b4 .asm_1062eb ld a, [hPrintNum9] or c jr z, .LoadMinusTenIfNegative ld a, -10 add c ld [hl], a ld [hPrintNum9], a ret .LoadMinusTenIfNegative: ld a, [hPrintNum10] bit 7, a ret z ld [hl], -10 ret ; 1062ff .Function1062ff: ; 1062ff ld a, [hPrintNum10] bit 7, a jr nz, .asm_10630d bit 6, a jr z, .asm_10630d ld a, [hPrintNum9] and a ret z .asm_10630d inc hl ret ; 10630f Function10630f: ; 10630f xor a ld [ScriptVar], a ret ; 106314 MobileFn_106314: mobile ; 106314 ld a, $4 call GetSRAMBank ld a, c cpl ld [$b000], a call CloseSRAM ld a, $7 call GetSRAMBank ld a, c ld [$a800], a call CloseSRAM ret ; 10632f Function10632f: ; 10632f or a mobile ld a, $4 call GetSRAMBank ld a, [$b000] cpl ld b, a call CloseSRAM ld a, $7 call GetSRAMBank ld a, [$a800] ld c, a call CloseSRAM ld a, c cp b jr nz, .asm_106359 and a jr z, .asm_106359 and $8f cp c jr nz, .asm_106359 ld c, a scf ret .asm_106359 xor a ld c, a ret ; 10635c Function10635c: ; 10635c ld a, [wcd25] bit 7, a ret nz ld a, [wcd25] ld hl, Jumptable_10636a rst JumpTable ret ; 10636a Jumptable_10636a: ; 10636a dw Function10637c dw Function106392 dw Function1063cc dw Function1063d8 dw Function1063e5 dw Function1063f3 dw Function106403 dw Function106442 dw Function106453 ; 10637c Function10637c: ; 10637c ld de, wcd30 ld hl, $41 ld bc, $41 ld a, $40 call Function3e32 ld a, [wcd25] inc a ld [wcd25], a ret ; 106392 Function106392: ; 106392 xor a ld [wcf64], a ld a, [wc821] bit 1, a jr nz, .asm_1063a2 bit 0, a jr z, .asm_1063bf ret .asm_1063a2 call Function10632f ld a, c and a jr nz, .asm_1063b4 ld a, $b ld [wcf64], a ld a, $7 ld [wcd25], a ret .asm_1063b4 ld a, $7 ld [wcf64], a ld a, $7 ld [wcd25], a ret .asm_1063bf ld a, $1 ld [wcf64], a ld a, [wcd25] inc a ld [wcd25], a ret ; 1063cc Function1063cc: ; 1063cc ld a, $78 ld [wcd42], a ld a, [wcd25] inc a ld [wcd25], a Function1063d8: ; 1063d8 ld hl, wcd42 dec [hl] ret nz ld a, [wcd25] inc a ld [wcd25], a ret ; 1063e5 Function1063e5: ; 1063e5 ld a, [wcf64] cp $3 ret nz ld a, [wcd25] inc a ld [wcd25], a ret ; 1063f3 Function1063f3: ; 1063f3 ld de, wcd31 ld a, $32 call Function3e32 ld a, [wcd25] inc a ld [wcd25], a ret ; 106403 Function106403: ; 106403 ld a, [wc821] bit 1, a jr nz, .asm_106426 bit 0, a jr z, .asm_10640f ret .asm_10640f ld a, [wcd31] and $80 ld c, a ld a, [wcd30] or c inc a ld c, a call MobileFn_106314 ld a, [wcd25] inc a ld [wcd25], a ret .asm_106426 call Function10632f ld a, c and a jr z, .asm_106435 ld a, [wcd25] inc a ld [wcd25], a ret .asm_106435 ld c, $0 call MobileFn_106314 ld a, [wcd25] inc a ld [wcd25], a ret ; 106442 Function106442: ; 106442 ld a, $36 call Function3e32 xor a ld [hMobile], a ld [$ffc9], a ld a, [wcd25] inc a ld [wcd25], a Function106453: ; 106453 ld a, [wcd25] set 7, a ld [wcd25], a nop ld a, $4 ld [wcf64], a ret ; 106462 Function106462: ; 106462 ret ; 106463 Function106463: ; 106463 ret ; 106464 Function106464:: ; 106464 ld de, GFX_f9214 ld hl, VTiles2 tile $60 lb bc, BANK(GFX_f9214), 1 call Get2bpp ld de, GFX_f9424 ld hl, VTiles2 tile $61 lb bc, BANK(GFX_f9424), 1 call Get2bpp ld de, GFX_106514 ld hl, VTiles2 tile $62 ld c, 9 ld b, BANK(GFX_106514) call Get2bpp ld de, $40b0 ld hl, VTiles2 tile $6b ld b, $f ; XXX no graphics at 0f:40b0 call Get2bpp callba LoadFrame ret ; 10649b Function10649b: ; 10649b ld a, [TextBoxFrame] and $7 ld bc, $30 ld hl, Frames call AddNTimes ld d, h ld e, l ld hl, VTiles2 tile $79 ld c, $6 ld b, BANK(Frames) call Function1064c3 ld hl, VTiles2 tile $7f ld de, GFX_f9204 ld c, $1 ld b, BANK(GFX_f9204) call Function1064c3 ret ; 1064c3 Function1064c3: ; 1064c3 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push bc push hl ld hl, Function3f88 ld a, b rst FarCall pop hl pop bc pop af ld [rSVBK], a jr asm_1064ed Function1064d8: ; 1064d8 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push bc push hl ld hl, Function3f9f ld a, b rst FarCall pop hl pop bc pop af ld [rSVBK], a jr asm_1064ed asm_1064ed ld de, w6_d000 ld b, $0 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a ld a, [rVBK] push af ld a, $1 ld [rVBK], a call Get2bpp pop af ld [rVBK], a pop af ld [rSVBK], a ret ; 10650a Function10650a: ; 10650a ld de, GFX_f9214 + $20 lb bc, BANK(GFX_f9214), $11 call Get2bpp ret ; 106514 GFX_106514: INCBIN "gfx/unknown/106514.2bpp" Function106594:: ; 106594 ld de, GFX_1065ad ld hl, VTiles1 lb bc, BANK(GFX_1065ad), $80 call Get2bpp ld de, GFX_1065ad + $800 ld hl, VTiles2 tile $7f lb bc, BANK(GFX_1065ad), 1 call Get2bpp ret ; 1065ad GFX_1065ad: INCBIN "gfx/unknown/1065ad.2bpp" INCLUDE "misc/mobile_42.asm" SECTION "Intro Logo", ROMX, BANK[$42] IntroLogoGFX: ; 109407 INCBIN "gfx/intro/logo.2bpp.lz" ; 109847 INCLUDE "misc/unused_title.asm" INCLUDE "engine/title.asm" INCLUDE "misc/mobile_45.asm" INCLUDE "misc/mobile_46.asm" SECTION "bank47", ROMX, BANK[$47] INCLUDE "misc/battle_tower_47.asm" SECTION "bank5B", ROMX, BANK[$5B] INCLUDE "misc/mobile_5b.asm" SECTION "bank5C", ROMX, BANK[$5C] INCLUDE "misc/mobile_5c.asm" SECTION "bank5D", ROMX, BANK[$5D] INCLUDE "text/phone/extra3.asm" SECTION "bank5E", ROMX, BANK[$5E] Function178000: callba DrawPlayerHUD ld hl, PlayerHPPal call SetHPPal callba DrawEnemyHUD ld hl, EnemyHPPal call SetHPPal callba Function3ee27 ret ; 17801f (5e:401f) INCLUDE "misc/mobile_5f.asm" SECTION "Common Text 1", ROMX, BANK[$6C] INCLUDE "text/common.asm" INCLUDE "text/phone/jack_overworld.asm" INCLUDE "text/phone/beverly_overworld.asm" INCLUDE "text/phone/huey_overworld.asm" INCLUDE "text/phone/gaven_overworld.asm" INCLUDE "text/phone/beth_overworld.asm" INCLUDE "text/phone/jose_overworld.asm" INCLUDE "text/phone/reena_overworld.asm" INCLUDE "text/phone/joey_overworld.asm" INCLUDE "text/phone/wade_overworld.asm" INCLUDE "text/phone/ralph_overworld.asm" INCLUDE "text/phone/liz_overworld.asm" SECTION "bank6D", ROMX, BANK[$6D] INCLUDE "text/phone/mom.asm" INCLUDE "text/phone/bill.asm" INCLUDE "text/phone/elm.asm" INCLUDE "text/phone/trainers1.asm" SECTION "Common Text 2", ROMX, BANK[$6F] INCLUDE "text/common_2.asm" SECTION "Common Text 3", ROMX, BANK[$70] INCLUDE "text/common_3.asm" SECTION "Common Text 4", ROMX, BANK[$71] INCLUDE "text/common_4.asm" SECTION "bank72", ROMX, BANK[$72] ItemNames:: INCLUDE "items/item_names.asm" INCLUDE "items/item_descriptions.asm" MoveNames:: INCLUDE "battle/move_names.asm" INCLUDE "engine/landmarks.asm" SECTION "bank75", ROMX, BANK[$75] SECTION "bank76", ROMX, BANK[$76] SECTION "bank77", ROMX, BANK[$77] UnownFont: ; 1dc000 INCBIN "gfx/misc/unown_font.2bpp" ; 1dc1b0 Function1dc1b0: ; 1dc1b0 hlcoord 0, 0 ld de, wca90 ld bc, 17 * SCREEN_WIDTH call CopyBytes ld hl, wcab5 ld a, $62 ld [hli], a inc a ld [hl], a ld hl, wcac9 ld a, $64 ld [hli], a inc a ld [hl], a ld hl, wcb45 ld a, $7f ld [hli], a ld [hl], a ld hl, wcb59 ld a, $61 ld [hli], a ld [hl], a ld hl, wcb6e lb bc, 5, 18 call ClearBox ld a, [wd265] dec a call CheckCaughtMon push af ld a, [wd265] ld b, a ld c, $1 callba Function44355 pop af ld a, b ld hl, wcb6d call nz, FarString ld hl, wcaa3 ld [hl], $35 ld de, SCREEN_WIDTH add hl, de ld b, $f .asm_1dc20a ld [hl], $37 add hl, de dec b jr nz, .asm_1dc20a ld [hl], $3a ret ; 1dc213 Function1dc213: ; 1dc213 ld hl, wca90 ld bc, $a0 ld a, " " call ByteFill ld hl, wca90 ld a, $36 ld b, $6 call Function1dc26a ld hl, wcaa3 ld a, $37 ld b, $6 call Function1dc26a ld hl, wcb08 ld [hl], $38 inc hl ld a, $39 ld bc, SCREEN_HEIGHT call ByteFill ld [hl], $3a ld hl, wcb1c ld bc, SCREEN_WIDTH ld a, $32 call ByteFill ld a, [wd265] dec a call CheckCaughtMon push af ld a, [wd265] ld b, a ld c, $2 callba Function44355 pop af ld hl, wcaa5 ld a, b call nz, FarString ret ; 1dc26a Function1dc26a: ; 1dc26a push de ld de, SCREEN_WIDTH .asm_1dc26e ld [hl], a add hl, de dec b jr nz, .asm_1dc26e pop de ret ; 1dc275 GBPrinterStrings: String_1dc275: db "@" String_1dc276: next " CHECKING LINK...@" String_1dc289: next " TRANSMITTING...@" String_1dc29c: next " PRINTING...@" String_1dc2ad: db " Printer Error 1" next "" next "Check the Game Boy" next "Printer Manual." db "@" String_1dc2e2: db " Printer Error 2" next "" next "Check the Game Boy" next "Printer Manual." db "@" String_1dc317: db " Printer Error 3" next "" next "Check the Game Boy" next "Printer Manual." db "@" String_1dc34c: db " Printer Error 4" next "" next "Check the Game Boy" next "Printer Manual." db "@" ; 1dc381 Function1dc381: ; 1dc381 call WhiteBGMap call ClearTileMap call ClearSprites xor a ld [hBGMapMode], a call LoadFontsBattleExtra ld de, MobileHPIcon ld hl, VTiles2 tile $71 lb bc, BANK(MobileHPIcon), 1 call Request1bpp ld de, MobileLvIcon ld hl, VTiles2 tile $6e lb bc, BANK(MobileLvIcon), 1 call Request1bpp ld de, ShinyIcon ld hl, VTiles2 tile $3f lb bc, BANK(ShinyIcon), 1 call Get2bpp xor a ld [MonType], a callba CopyPkmnToTempMon hlcoord 0, 7 ld b, 9 ld c, 18 call TextBox hlcoord 8, 2 ld a, [TempMonLevel] call Function383d hlcoord 12, 2 ld [hl], "◀" ; Filled left triangle inc hl ld de, TempMonMaxHP lb bc, 2, 3 call PrintNum ld a, [CurPartySpecies] ld [wd265], a ld [CurSpecies], a ld hl, PartyMonNicknames call Function1dc50e hlcoord 8, 4 call PlaceString hlcoord 9, 6 ld [hl], "/" call GetPokemonName hlcoord 10, 6 call PlaceString hlcoord 8, 0 ld [hl], "№" inc hl ld [hl], "." inc hl ld de, wd265 lb bc, PRINTNUM_LEADINGZEROS | 1, 3 call PrintNum hlcoord 1, 9 ld de, String1dc550 call PlaceString ld hl, PartyMonOT call Function1dc50e hlcoord 4, 9 call PlaceString hlcoord 1, 11 ld de, String1dc559 call PlaceString hlcoord 4, 11 ld de, TempMonID lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum hlcoord 1, 14 ld de, String1dc554 call PlaceString hlcoord 7, 14 ld a, [TempMonMoves + 0] call Function1dc51a call Function1dc52c ld hl, TempMonDVs predef GetUnownLetter ld hl, wc2c6 xor a ld [hl], a ld a, [CurPartySpecies] cp UNOWN jr z, .asm_1dc469 inc [hl] .asm_1dc469 hlcoord 0, 0 call Function378b call WaitBGMap ld b, $3 call GetSGBLayout call SetPalettes ret ; 1dc47b Function1dc47b: ; 1dc47b call WhiteBGMap call ClearTileMap call ClearSprites xor a ld [hBGMapMode], a call LoadFontsBattleExtra xor a ld [MonType], a callba CopyPkmnToTempMon hlcoord 0, 0 ld b, 15 ld c, 18 call TextBox ld bc, SCREEN_WIDTH decoord 0, 0 hlcoord 0, 1 call CopyBytes hlcoord 7, 0 ld a, [TempMonMoves + 1] call Function1dc51a hlcoord 7, 2 ld a, [TempMonMoves + 2] call Function1dc51a hlcoord 7, 4 ld a, [TempMonMoves + 3] call Function1dc51a hlcoord 7, 7 ld de, String1dc55d call PlaceString hlcoord 16, 7 ld de, TempMonAttack call Function1dc507 hlcoord 16, 9 ld de, TempMonDefense call Function1dc507 hlcoord 16, 11 ld de, TempMonSpclAtk call Function1dc507 hlcoord 16, 13 ld de, TempMonSpclDef call Function1dc507 hlcoord 16, 15 ld de, TempMonSpeed call Function1dc507 call WaitBGMap ld b, $3 call GetSGBLayout call SetPalettes ret ; 1dc507 Function1dc507: ; 1dc507 lb bc, 2, 3 call PrintNum ret ; 1dc50e Function1dc50e: ; 1dc50e ld bc, NAME_LENGTH ld a, [CurPartyMon] call AddNTimes ld e, l ld d, h ret ; 1dc51a Function1dc51a: ; 1dc51a and a jr z, .asm_1dc525 ld [wd265], a call GetMoveName jr .asm_1dc528 .asm_1dc525 ld de, String1dc584 .asm_1dc528 call PlaceString ret ; 1dc52c Function1dc52c: ; 1dc52c callba GetGender ld a, " " jr c, .got_gender ld a, "♂" jr nz, .got_gender ld a, "♀" .got_gender hlcoord 17, 2 ld [hl], a ld bc, TempMonDVs callba CheckShininess ret nc hlcoord 18, 2 ld [hl], "<SHINY>" ret ; 1dc550 String1dc550: ; 1dc550 db "OT/@" String1dc554: ; 1dc554 db "MOVE@" String1dc559: ; 1dc559 db "<ID>№.@" String1dc55d: ; 1dc55d db "ATTACK" next "DEFENSE" next "SPCL.ATK" next "SPCL.DEF" next "SPEED" db "@" String1dc584: ; 1dc584 db "------------@" ; 1dc591 MobileHPIcon: ; 1dc591 INCBIN "gfx/mobile/hp.1bpp" MobileLvIcon: ; 1dc599 INCBIN "gfx/mobile/lv.1bpp" SECTION "Tileset Data 7", ROMX, BANK[TILESETS_7] INCLUDE "tilesets/data_7.asm" SECTION "bank77_2", ROMX, BANK[$77] Function1dd6a9: ; 1dd6a9 ld a, b ld b, c ld c, a push bc push de ld hl, [sp+$2] ld d, h ld e, l pop hl lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum pop bc ret ; 1dd6bb Function1dd6bb: ; 1dd6bb (77:56bb) ld a, b cp 12 push af jr c, .asm_1dd6c7 jr z, .asm_1dd6cc sub $c jr .asm_1dd6cc .asm_1dd6c7 or a jr nz, .asm_1dd6cc ld a, $c .asm_1dd6cc ld b, a push bc ld hl, [sp+$1] push de push hl pop de pop hl ld [hl], $7f lb bc, 1, 2 call PrintNum ld [hl], $9c inc hl ld d, h ld e, l ld hl, [sp+$0] push de push hl pop de pop hl lb bc, PRINTNUM_LEADINGZEROS | 1, 2 call PrintNum pop bc ld de, String_AM pop af jr c, .asm_1dd6f7 ld de, String_PM .asm_1dd6f7 inc hl call PlaceString ret ; 1dd6fc (77:56fc) String_AM: db "AM@" ; 1dd6fc String_PM: db "PM@" ; 1dd6ff ; 1dd702 INCLUDE "engine/diploma.asm" Function1ddf1c: ; 1ddf1c ld hl, LZ_1ddf33 ld de, VTiles2 tile $31 call Decompress ret ; 1ddf26 Function1ddf26: ; 1ddf26 (77:5f26) ld hl, LZ_1ddf33 ld de, VTiles2 tile $31 lb bc, BANK(LZ_1ddf33), $3a call DecompressRequest2bpp ret ; 1ddf33 (77:5f33) LZ_1ddf33: ; 1ddf33 INCBIN "gfx/unknown/1ddf33.2bpp.lz" ; 1de0d7 Function1de0d7: ; 1de0d7 ld hl, LZ_1de0e1 ld de, sScratch call Decompress ret ; 1de0e1 LZ_1de0e1: ; 1de0e1 INCBIN "gfx/unknown/1de0e1.2bpp.lz" ; 1de171 Function1de171: ; 1de171 (77:6171) ld a, $32 hlcoord 0, 17 ld bc, 12 call ByteFill hlcoord 0, 1 lb bc, 15, 11 call ClearBox ld a, $34 hlcoord 0, 0 ld bc, $b call ByteFill ld a, $39 hlcoord 0, 16 ld bc, $b call ByteFill hlcoord 5, 0 ld [hl], $3f hlcoord 5, 16 ld [hl], $40 ld a, [wc7d4] cp $1 jr z, .asm_1de1bf hlcoord 11, 0 ld [hl], $50 ld a, $51 hlcoord 11, 1 ld b, $f call Function1de27f ld [hl], $52 jr .asm_1de1d0 .asm_1de1bf hlcoord 11, 0 ld [hl], $66 ld a, $67 hlcoord 11, 1 ld b, $f call Function1de27f ld [hl], $68 .asm_1de1d0 ret Function1de1d1: ; 1de1d1 (77:61d1) ld a, $34 hlcoord 0, 0 ld bc, $b call ByteFill ld a, $39 hlcoord 0, 10 ld bc, $b call ByteFill hlcoord 5, 0 ld [hl], $3f hlcoord 5, 10 ld [hl], $40 hlcoord 11, 0 ld [hl], $66 ld a, $67 hlcoord 11, 1 ld b, $9 call Function1de27f ld [hl], $68 ld a, $34 hlcoord 0, 11 ld bc, $b call ByteFill ld a, $39 hlcoord 0, 17 ld bc, $b call ByteFill hlcoord 11, 11 ld [hl], $66 ld a, $67 hlcoord 11, 12 ld b, $5 call Function1de27f ld [hl], $68 hlcoord 0, 12 lb bc, 5, 11 call ClearBox ld de, String_1de23c hlcoord 0, 12 call PlaceString ret ; 1de23c (77:623c) String_1de23c: ; 1de23c ; At a glance, this is less coherent in the Japanese charset. db "ESULTS" db $4e db $4e db "D!@" ; 1de247 Function1de247: ; 1de247 ld a, [hBGMapAddress] ld l, a ld a, [hBGMapAddress + 1] ld h, a push hl inc hl ld a, l ld [hBGMapAddress], a ld a, h ld [hBGMapAddress + 1], a hlcoord 19, 0 ld [hl], $66 hlcoord 19, 1 ld a, $67 ld b, $f call Function1de27f ld [hl], $68 hlcoord 19, 17 ld [hl], $3c xor a ld b, $12 hlcoord 19, 0, AttrMap call Function1de27f call Function3200 pop hl ld a, l ld [hBGMapAddress], a ld a, h ld [hBGMapAddress + 1], a ret ; 1de27f Function1de27f: ; 1de27f push de ld de, SCREEN_WIDTH .asm_1de283 ld [hl], a add hl, de dec b jr nz, .asm_1de283 pop de ret ; 1de28a _DudeAutoInput_A:: ; 1de28a ld hl, DudeAutoInput_A jr _DudeAutoInput ; 1de28f _DudeAutoInput_RightA: ; 1de28f ld hl, DudeAutoInput_RightA jr _DudeAutoInput ; 1de294 _DudeAutoInput_DownA: ; 1de294 ld hl, DudeAutoInput_DownA jr _DudeAutoInput ; 1de299 _DudeAutoInput: ; 1de299 ld a, BANK(DudeAutoInputs) call StartAutoInput ret ; 1de29f DudeAutoInputs: DudeAutoInput_A: ; 1de29f db NO_INPUT, $50 db A_BUTTON, $00 db NO_INPUT, $ff ; end ; 1de2a5 DudeAutoInput_RightA: ; 1de2a5 db NO_INPUT, $08 db D_RIGHT, $00 db NO_INPUT, $08 db A_BUTTON, $00 db NO_INPUT, $ff ; end ; 1de2af DudeAutoInput_DownA: ; 1de2af db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db D_DOWN, $00 db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db A_BUTTON, $00 db NO_INPUT, $ff ; end ; 1de2c5 Function1de2c5: ; 1de2c5 ld hl, StringBuffer1 .asm_1de2c8 ld a, [hl] cp $50 jr z, .asm_1de2da cp $25 jr z, .asm_1de2d8 cp $1f jr z, .asm_1de2d8 inc hl jr .asm_1de2c8 .asm_1de2d8 ld [hl], $22 .asm_1de2da ld de, StringBuffer1 hlcoord 9, 0 call PlaceString ret ; 1de2e4 PokegearGFX: ; 1de2e4 INCBIN "gfx/misc/pokegear.2bpp.lz" ; 1de5c8 Function1de5c8: ; 1de5c8 ld c, $0 ld hl, $29 add hl, de ld a, [hli] cp $84 ret nz ld a, [hli] inc c cp $85 ret z inc c cp $86 ret z inc c cp $88 ret z inc c cp $92 ret z ld c, $0 ret ; 1de5e6 ; The regular font. GFX_1de5e6: ; 1de5e6 INCBIN "gfx/unknown/1de5e6.2bpp" ; An extended font. GFX_1de9e6: ; 1de9e6 INCBIN "gfx/unknown/1de9e6.2bpp" ; An even more extended font. GFX_1dede6: ; 1dede6 INCBIN "gfx/unknown/1dede6.2bpp" Function1df1e6: ; 1df1e6 ld b, $21 ld h, d ld l, e .asm_1df1ea 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 add $cd .asm_1df1fd ld [hl], a .asm_1df1fe inc hl dec b jr nz, .asm_1df1ea ret ; 1df203 Function1df203: ; 1df203 ld b, $21 ld h, d ld l, e .asm_1df207 ld a, [hl] cp $d4 jr nz, .asm_1df210 ld a, $dc jr .asm_1df21a .asm_1df210 sub $cd jr c, .asm_1df21b cp $3 jr nc, .asm_1df21b add $d4 .asm_1df21a ld [hl], a .asm_1df21b inc hl dec b jr nz, .asm_1df207 ret ; 1df220 Function1df220: ; 1df220 ld b, $21 ld h, d ld l, e .asm_1df224 ld a, [hl] and $f0 cp $d0 jr nz, .asm_1df233 ld a, [hl] add $8 and $f or $d0 ld [hl], a .asm_1df233 inc hl dec b jr nz, .asm_1df224 ret ; 1df238 SECTION "Tileset Data 8", ROMX, BANK[TILESETS_8] INCLUDE "tilesets/data_8.asm" SECTION "bank79", ROMX, BANK[$79] SECTION "bank7A", ROMX, BANK[$7A] SECTION "bank7B", ROMX, BANK[$7B] INCLUDE "text/battle_tower.asm" SECTION "bank7C", ROMX, BANK[$7C] INCLUDE "data/battle_tower_2.asm" SECTION "bank7D", ROMX, BANK[$7D] db $cc, $6b, $1e ; XXX Function1f4003: ; 1f4003 ld a, $6 call GetSRAMBank ld hl, Unknown_1f4018 ld de, $a000 ld bc, $1000 call CopyBytes call CloseSRAM ret ; 1f4018 Unknown_1f4018: INCBIN "unknown/1f4018.bin" Function1f4dbe: ; 1f4dbe ld a, $6 call GetSRAMBank ld hl, Unknown_1f4dd3 ld de, $a000 ld bc, $1000 call CopyBytes call CloseSRAM ret ; 1f4dd3 Unknown_1f4dd3: INCBIN "unknown/1f4dd3.bin" Function1f5d9f: ; 1f5d9f ld a, $6 call GetSRAMBank ld hl, Unknown_1f5db4 ld de, $a000 ld bc, $1000 call CopyBytes call CloseSRAM ret ; 1f5db4 Unknown_1f5db4: INCBIN "unknown/1f5db4.bin" SECTION "bank7E", ROMX, BANK[$7E] INCLUDE "data/battle_tower.asm" INCLUDE "data/odd_eggs.asm" SECTION "bank7F", ROMX, BANK[$7F] SECTION "stadium2", ROMX[$8000-$220], BANK[$7F] IF DEF(CRYSTAL11) INCBIN "misc/stadium2_2.bin" ELSE INCBIN "misc/stadium2_1.bin" ENDC