diff options
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 1483 |
1 files changed, 30 insertions, 1453 deletions
@@ -14,12 +14,12 @@ Function4000:: ; 4000 jr z, .notinbattle call TextBox - jr .incave + jr .proceed .notinbattle predef Function28eef -.incave +.proceed hlcoord 4, 11 ld de, .Waiting call PlaceString @@ -58,1430 +58,7 @@ PushOAMEnd INCLUDE "engine/map_objects.asm" - -Function5ae8: ; 5ae8 - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - ld de, MUSIC_MAIN_MENU - ld a, e - ld [wMapMusic], a - call PlayMusic - callba MainMenu - jp Function6219 -; 5b04 - -; unreferenced - ret -; 5b05 - -PrintDayOfWeek: ; 5b05 - push de - ld hl, .Days - ld a, b - call GetNthString - ld d, h - ld e, l - pop hl - call PlaceString - ld h, b - ld l, c - ld de, .Day - call PlaceString - ret -; 5b1c - -.Days ; 5b1c - db "SUN@" - db "MON@" - db "TUES@" - db "WEDNES@" - db "THURS@" - db "FRI@" - db "SATUR@" -; 5b40 - -.Day ; 5b40 - db "DAY@" -; 5b44 - -NewGame_ClearTileMapEtc: ; 5b44 - xor a - ld [hMapAnims], a - call ClearTileMap - call LoadFontsExtra - call LoadStandardFont - call ResetTextRelatedRAM - ret -; 5b54 - -MysteryGift: ; 5b54 - call UpdateTime - callba DoMysteryGiftIfDayHasPassed - callba DoMysteryGift - ret -; 5b64 - -OptionsMenu: ; 5b64 - callba _OptionsMenu - ret -; 5b6b - -NewGame: ; 5b6b - xor a - ld [wc2cc], a - call ResetWRAM - call NewGame_ClearTileMapEtc - call AreYouABoyOrAreYouAGirl - call OakSpeech - call InitializeWorld - ld a, 1 - ld [wPreviousLandmark], a - - ld a, SPAWN_HOME - ld [DefaultSpawnpoint], a - - ld a, MAPSETUP_WARP - ld [hMapEntryMethod], a - jp FinishContinueFunction -; 5b8f - -AreYouABoyOrAreYouAGirl: ; 5b8f - callba Function10632f ; some mobile stuff - jr c, .ok - callba InitGender - ret - -.ok - ld c, 0 - callba Function4802f - ret -; 5ba7 - -ResetWRAM: ; 5ba7 - xor a - ld [hBGMapMode], a - call _ResetWRAM - ret -; 5bae - -_ResetWRAM: ; 5bae - - ld hl, Sprites - ld bc, Options - Sprites - xor a - call ByteFill - - ld hl, wd000 - ld bc, wGameData - wd000 - xor a - call ByteFill - - ld hl, wGameData - ld bc, wGameDataEnd - wGameData - xor a - call ByteFill - - ld a, [rLY] - ld [hSecondsBackup], a - call DelayFrame - ld a, [hRandomSub] - ld [PlayerID], a - - ld a, [rLY] - ld [hSecondsBackup], a - call DelayFrame - ld a, [hRandomAdd] - ld [PlayerID + 1], a - - call Random - ld [wSecretID], a - call DelayFrame - call Random - ld [wSecretID + 1], a - - ld hl, PartyCount - call InitList - - xor a - ld [wCurBox], a - ld [wSavedAtLeastOnce], a - - call SetDefaultBoxNames - - ld a, BANK(sBoxCount) - call GetSRAMBank - ld hl, sBoxCount - call InitList - call CloseSRAM - - ld hl, NumItems - call InitList - - ld hl, NumKeyItems - call InitList - - ld hl, NumBalls - call InitList - - ld hl, PCItems - call InitList - - xor a - ld [wRoamMon1Species], a - ld [wRoamMon2Species], a - ld [wRoamMon3Species], a - ld a, -1 - ld [wRoamMon1MapGroup], a - ld [wRoamMon2MapGroup], a - ld [wRoamMon3MapGroup], a - ld [wRoamMon1MapNumber], a - ld [wRoamMon2MapNumber], a - ld [wRoamMon3MapNumber], a - - ld a, BANK(sMysteryGiftItem) - call GetSRAMBank - ld hl, sMysteryGiftItem - xor a - ld [hli], a - dec a - ld [hl], a - call CloseSRAM - - call LoadOrRegenerateLuckyIDNumber - call InitializeMagikarpHouse - - xor a - ld [MonType], a - - ld [JohtoBadges], a - ld [KantoBadges], a - - ld [Coins], a - ld [Coins + 1], a - -START_MONEY EQU 3000 - -IF START_MONEY / $10000 - ld a, START_MONEY / $10000 -ENDC - ld [Money], a - ld a, START_MONEY / $100 % $100 - ld [Money + 1], a - ld a, START_MONEY % $100 - ld [Money + 2], a - - xor a - ld [wdc17], a - - ld hl, wdc19 - ld [hl], 2300 / $10000 - inc hl - ld [hl], 2300 / $100 % $100 - inc hl - ld [hl], 2300 % $100 - - call InitializeNPCNames - - callba InitDecorations - - callba DeletePartyMonMail - - callba DeleteMobileEventIndex - - call ResetGameTime - ret -; 5ca1 - -InitList: ; 5ca1 -; Loads 0 in the count and -1 in the first item or mon slot. - xor a - ld [hli], a - dec a - ld [hl], a - ret -; 5ca6 - -SetDefaultBoxNames: ; 5ca6 - ld hl, wBoxNames - ld c, 0 -.loop - push hl - ld de, .Box - call CopyName2 - dec hl - ld a, c - inc a - cp 10 - jr c, .less - sub 10 - ld [hl], "1" - inc hl - -.less - add "0" - ld [hli], a - ld [hl], "@" - pop hl - ld de, 9 - add hl, de - inc c - ld a, c - cp NUM_BOXES - jr c, .loop - ret - -.Box - db "BOX@" -; 5cd3 - -InitializeMagikarpHouse: ; 5cd3 - ld hl, wBestMagikarpLengthFeet - ld a, $3 - ld [hli], a - ld a, $6 - ld [hli], a - ld de, .Ralph - call CopyName2 - ret -; 5ce3 - -.Ralph ; 5ce3 - db "RALPH@" -; 5ce9 - -InitializeNPCNames: ; 5ce9 - ld hl, .Rival - ld de, RivalName - call .Copy - - ld hl, .Mom - ld de, MomsName - call .Copy - - ld hl, .Red - ld de, RedsName - call .Copy - - ld hl, .Green - ld de, GreensName - -.Copy - ld bc, NAME_LENGTH - call CopyBytes - ret - -.Rival db "???@" -.Red db "RED@" -.Green db "GREEN@" -.Mom db "MOM@" -; 5d23 - -InitializeWorld: ; 5d23 - call ShrinkPlayer - callba GetSpawnCoord - callba _InitializeStartDay - ret -; 5d33 - -LoadOrRegenerateLuckyIDNumber: ; 5d33 - ld a, BANK(sLuckyIDNumber) - call GetSRAMBank - ld a, [CurDay] - inc a - ld b, a - ld a, [sLuckyNumberDay] - cp b - ld a, [sLuckyIDNumber + 1] - ld c, a - ld a, [sLuckyIDNumber] - jr z, .skip - ld a, b - ld [sLuckyNumberDay], a - call Random - ld c, a - call Random - -.skip - ld [wLuckyIDNumber], a - ld [sLuckyIDNumber], a - ld a, c - ld [wLuckyIDNumber + 1], a - ld [sLuckyIDNumber + 1], a - jp CloseSRAM -; 5d65 - -Continue: ; 5d65 - callba TryLoadSaveFile - jr c, .FailToLoad - callba Function150b9 - call LoadStandardMenuDataHeader - call Function5e85 - ld a, $1 - ld [hBGMapMode], a - ld c, 20 - call DelayFrames - call ConfirmContinue - jr nc, .Check1Pass - call WriteBackup - jr .FailToLoad - -.Check1Pass - call Function5e48 - jr nc, .Check2Pass - call WriteBackup - jr .FailToLoad - -.Check2Pass - ld a, $8 - ld [MusicFade], a - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - call ClearBGPalettes - call Function5df0 - call WriteBackup - call ClearTileMap - ld c, 20 - call DelayFrames - callba JumpRoamMons - callba Function105091 - callba Function140ae ; time-related - ld a, [wSpawnAfterChampion] - cp SPAWN_LANCE - jr z, .SpawnAfterE4 - ld a, MAPSETUP_CONTINUE - ld [hMapEntryMethod], a - jp FinishContinueFunction - -.FailToLoad - ret - -.SpawnAfterE4 - ld a, SPAWN_NEW_BARK - ld [wd001], a - call PostCreditsSpawn - jp FinishContinueFunction -; 5de2 - -SpawnAfterRed: ; 5de2 - ld a, SPAWN_MT_SILVER - ld [wd001], a -; 5de7 - -PostCreditsSpawn: ; 5de7 - xor a - ld [wSpawnAfterChampion], a - ld a, MAPSETUP_WARP - ld [hMapEntryMethod], a - ret -; 5df0 - -Function5df0: ; 5df0 - callba Function10632f - ret nc - ld hl, wd479 - bit 1, [hl] - ret nz - ld a, $5 - ld [MusicFade], a - ld a, MUSIC_MOBILE_ADAPTER_MENU % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_MOBILE_ADAPTER_MENU / $100 - ld [MusicFadeIDHi], a - ld c, 20 - call DelayFrames - ld c, $1 - callba Function4802f - callba _SaveData - ld a, $8 - ld [MusicFade], a - ld a, MUSIC_NONE % $100 - ld [MusicFadeIDLo], a - ld a, MUSIC_NONE / $100 - ld [MusicFadeIDHi], a - ld c, 35 - call DelayFrames - ret -; 5e34 - -ConfirmContinue: ; 5e34 -.loop - call DelayFrame - call GetJoypad - ld hl, hJoyPressed - bit 0, [hl] - jr nz, .PressA - bit 1, [hl] - jr z, .loop - scf - ret - -.PressA - ret -; 5e48 - -Function5e48: ; 5e48 - call Function6e3 - and %10000000 ; Day count exceeded 16383 - jr z, .pass - callba RestartClock - ld a, c - and a - jr z, .pass - scf - ret - -.pass - xor a - ret -; 5e5d - -FinishContinueFunction: ; 5e5d -.loop - xor a - ld [wc2c1], a - ld [wLinkMode], a - ld hl, GameTimerPause - set 0, [hl] - res 7, [hl] - ld hl, wEnteredMapFromContinue - set 1, [hl] - callba OverworldLoop - ld a, [wSpawnAfterChampion] - cp SPAWN_RED - jr z, .AfterRed - jp Reset - -.AfterRed - call SpawnAfterRed - jr .loop -; 5e85 - -Function5e85: ; 5e85 - call Function6e3 - and $80 - jr z, .asm_5e93 - lb de, 4, 8 - call Function5eaf - ret - -.asm_5e93 - lb de, 4, 8 - call Function5e9f - ret -; 5e9a - -Function5e9a: ; 5e9a - lb de, 4, 0 - jr Function5e9f -; 5e9f - -Function5e9f: ; 5e9f - call Function5ebf - call Function5f1c - call Function5f40 - call LoadFontsExtra - call UpdateSprites - ret -; 5eaf - -Function5eaf: ; 5eaf - call Function5ebf - call Function5f1c - call Function5f48 - call LoadFontsExtra - call UpdateSprites - ret -; 5ebf - -Function5ebf: ; 5ebf - xor a - ld [hBGMapMode], a - ld hl, MenuDataHeader_0x5ed9 - ld a, [StatusFlags] - bit 0, a ; pokedex - jr nz, .asm_5ecf - ld hl, MenuDataHeader_0x5efb - -.asm_5ecf - call Function1e35 - call MenuBox - call Function1c89 - ret -; 5ed9 - -MenuDataHeader_0x5ed9: ; 5ed9 - db $40 ; flags - db 00, 00 ; start coords - db 09, 15 ; end coords - dw MenuData2_0x5ee1 - db 1 ; default option -; 5ee1 - -MenuData2_0x5ee1: ; 5ee1 - db $00 ; flags - db 4 ; items - db "PLAYER@" - db "BADGES@" - db "#DEX@" - db "TIME@" -; 5efb - -MenuDataHeader_0x5efb: ; 5efb - db $40 ; flags - db 00, 00 ; start coords - db 09, 15 ; end coords - dw MenuData2_0x5f03 - db 1 ; default option -; 5f03 - -MenuData2_0x5f03: ; 5f03 - db $00 ; flags - db 4 ; items - db "PLAYER <PLAYER>@" - db "BADGES@" - db " @" - db "TIME@" -; 5f1c - - -Function5f1c: ; 5f1c - call MenuBoxCoord2Tile - push hl - ld de, $5d - add hl, de - call DisplayBadgeCount - pop hl - push hl - ld de, $84 - add hl, de - call DisplayPokedexNumCaught - pop hl - push hl - ld de, $30 - add hl, de - ld de, .Player - call PlaceString - pop hl - ret - -.Player - db "<PLAYER>@" -; 5f40 - -Function5f40: ; 5f40 - ld de, $a9 - add hl, de - call DisplayGameTime - ret -; 5f48 - -Function5f48: ; 5f48 - ld de, $a9 - add hl, de - ld de, .text_5f53 - call PlaceString - ret - -.text_5f53 - db " ???@" -; 5f58 - -DisplayBadgeCount: ; 5f58 - push hl - ld hl, JohtoBadges - ld b, $2 - call CountSetBits - pop hl - ld de, wd265 - lb bc, 1, 2 - jp PrintNum -; 5f6b - -DisplayPokedexNumCaught: ; 5f6b - ld a, [StatusFlags] - bit 0, a - ret z - push hl - ld hl, PokedexCaught - ld b, $20 - call CountSetBits - pop hl - ld de, wd265 - lb bc, 1, 3 - jp PrintNum -; 5f84 - -DisplayGameTime: ; 5f84 - ld de, GameTimeHours - lb bc, 2, 3 - call PrintNum - ld [hl], $6d - inc hl - ld de, GameTimeMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - jp PrintNum -; 5f99 - - -OakSpeech: ; 0x5f99 - callba InitClock - call Function4dd - call ClearTileMap - - ld de, MUSIC_ROUTE_30 - call PlayMusic - - call Function4a3 - call FadeToWhite - xor a - ld [CurPartySpecies], a - ld a, POKEMON_PROF - ld [TrainerClass], a - call Intro_PrepTrainerPic - - ld b, SCGB_1C - call GetSGBLayout - call Intro_FadeInFrontpic - - ld hl, OakText1 - call PrintText - call FadeToWhite - call ClearTileMap - - ld a, WOOPER - ld [CurSpecies], a - ld [CurPartySpecies], a - call GetBaseData - - hlcoord 6, 4 - call PrepMonFrontpic - - xor a - ld [TempMonDVs], a - ld [TempMonDVs + 1], a - - ld b, SCGB_1C - call GetSGBLayout - call Intro_WipeInFrontpic - - ld hl, OakText2 - call PrintText - ld hl, OakText4 - call PrintText - call FadeToWhite - call ClearTileMap - - xor a - ld [CurPartySpecies], a - ld a, POKEMON_PROF - ld [TrainerClass], a - call Intro_PrepTrainerPic - - ld b, SCGB_1C - call GetSGBLayout - call Intro_FadeInFrontpic - - ld hl, OakText5 - call PrintText - call FadeToWhite - call ClearTileMap - - xor a - ld [CurPartySpecies], a - callba DrawIntroPlayerPic - - ld b, SCGB_1C - call GetSGBLayout - call Intro_FadeInFrontpic - - ld hl, OakText6 - call PrintText - call NamePlayer - ld hl, OakText7 - call PrintText - ret - -OakText1: ; 0x6045 - text_jump _OakText1 - db "@" - -OakText2: ; 0x604a - text_jump _OakText2 - start_asm - ld a, WOOPER - call PlayCry - call WaitSFX - ld hl, OakText3 - ret - -OakText3: ; 0x605b - text_jump _OakText3 - db "@" - -OakText4: ; 0x6060 - text_jump _OakText4 - db "@" - -OakText5: ; 0x6065 - text_jump _OakText5 - db "@" - -OakText6: ; 0x606a - text_jump _OakText6 - db "@" - -OakText7: ; 0x606f - text_jump _OakText7 - db "@" - -NamePlayer: ; 0x6074 - callba MovePlayerPicRight - callba ShowPlayerNamingChoices - ld a, [MenuSelection2] - dec a - jr z, .NewName - call StorePlayerName - callba Function8c1d - callba MovePlayerPicLeft - ret - -.NewName - ld b, 1 - ld de, PlayerName - callba NamingScreen - - call FadeToWhite - call ClearTileMap - - call LoadFontsExtra - call WaitBGMap - - xor a - ld [CurPartySpecies], a - callba DrawIntroPlayerPic - - ld b, SCGB_1C - call GetSGBLayout - call Function4f0 - - ld hl, PlayerName - ld de, .Chris - ld a, [PlayerGender] - bit 0, a - jr z, .Male - ld de, .Kris -.Male - call InitName - ret - -.Chris - db "CHRIS@@@@@@" -.Kris - db "KRIS@@@@@@@" -; 60e9 - -Function60e9: ; Unreferenced - call LoadMenuDataHeader - call InterpretMenu2 - ld a, [MenuSelection2] - dec a - call CopyNameFromMenu - call WriteBackup - ret -; 60fa - -StorePlayerName: ; 60fa - ld a, "@" - ld bc, NAME_LENGTH - ld hl, PlayerName - call ByteFill - ld hl, PlayerName - ld de, StringBuffer2 - call CopyName2 - ret -; 610f - -ShrinkPlayer: ; 610f - - ld a, [hROMBank] - push af - - ld a, 0 << 7 | 32 ; fade out - ld [MusicFade], a - ld de, MUSIC_NONE - ld a, e - ld [MusicFadeIDLo], a - ld a, d - ld [MusicFadeIDHi], a - - ld de, SFX_ESCAPE_ROPE - call PlaySFX - pop af - rst Bankswitch - - ld c, 8 - call DelayFrames - - ld hl, Shrink1Pic - ld b, BANK(Shrink1Pic) - call ShrinkFrame - - ld c, 8 - call DelayFrames - - ld hl, Shrink2Pic - ld b, BANK(Shrink2Pic) - call ShrinkFrame - - ld c, 8 - call DelayFrames - - hlcoord 6, 5 - ld b, 7 - ld c, 7 - call ClearBox - - ld c, 3 - call DelayFrames - - call Intro_PlacePlayerSprite - call LoadFontsExtra - - ld c, 50 - call DelayFrames - - call FadeToWhite - call ClearTileMap - ret -; 616a - -Intro_FadeInFrontpic: ; 616a - ld hl, IntroFadePalettes - ld b, IntroFadePalettesEnd - IntroFadePalettes -.loop - ld a, [hli] - call DmgToCgbBGPals - ld c, 10 - call DelayFrames - dec b - jr nz, .loop - ret -; 617c - -IntroFadePalettes: ; 0x617c - db %01010100 - db %10101000 - db %11111100 - db %11111000 - db %11110100 - db %11100100 -IntroFadePalettesEnd -; 6182 - -Intro_WipeInFrontpic: ; 6182 - ld a, $77 - ld [hWX], a - call DelayFrame - ld a, %11100100 - call DmgToCgbBGPals -.loop - call DelayFrame - ld a, [hWX] - sub $8 - cp -1 - ret z - ld [hWX], a - jr .loop -; 619c - -Intro_PrepTrainerPic: ; 619c - ld de, VTiles2 - callba GetTrainerPic - xor a - ld [hFillBox], a - hlcoord 6, 4 - lb bc, 7, 7 - predef FillBox - ret -; 61b4 - -ShrinkFrame: ; 61b4 - ld de, VTiles2 - ld c, $31 - predef DecompressPredef - xor a - ld [hFillBox], a - hlcoord 6, 4 - lb bc, 7, 7 - predef FillBox - ret -; 61cd - -Intro_PlacePlayerSprite: ; 61cd - - callba GetPlayerIcon - ld c, $c - ld hl, VTiles0 - call Request2bpp - - ld hl, Sprites - ld de, .sprites - ld a, [de] - inc de - - ld c, a -.loop - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - - ld b, 0 - ld a, [PlayerGender] - bit 0, a - jr z, .male - ld b, 1 -.male - ld a, b - - ld [hli], a - dec c - jr nz, .loop - ret -; 61fe - -.sprites ; 61fe - db 4 - db $4c, $48, 0 - db $4c, $50, 1 - db $54, $48, 2 - db $54, $50, 3 -; 620b - - -Function620b: ; 620b - callab Functione4579 - jr c, Function6219 - callba CrystalIntro - -Function6219: ; 6219 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - - call TitleScreen - call DelayFrame -.loop - call Function627b - jr nc, .loop - - call ClearSprites - call ClearBGPalettes - - pop af - ld [rSVBK], a - - ld hl, rLCDC - res 2, [hl] - call ClearScreen - call Function3200 - xor a - ld [hLCDStatCustom], a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - ld b, SCGB_08 - call GetSGBLayout - call UpdateTimePals - ld a, [wcf64] - cp $5 - jr c, .ok - xor a -.ok - ld e, a - ld d, 0 - ld hl, .jumptable_626a -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 626a - -.jumptable_626a - dw Function5ae8 - dw Function6389 - dw Function620b - dw Function620b - dw ResetClock -; 6274 - - -TitleScreen: ; 6274 - callba _TitleScreen - ret -; 627b - -Function627b: ; 627b - ld a, [wJumptableIndex] - bit 7, a - jr nz, .done_title - call TitleScreenScene - callba SuicuneFrameIterator - call DelayFrame - and a - ret - -.done_title - scf - ret -; 6292 - -Function6292: ; 6292 ; unreferenced - ld a, [hVBlankCounter] - and $7 - ret nz - ld hl, LYOverrides + $5f - ld a, [hl] - dec a - ld bc, 2 * SCREEN_WIDTH - call ByteFill - ret -; 62a3 - -TitleScreenScene: ; 62a3 - ld e, a - ld d, 0 - ld hl, .scenes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 62af - -.scenes - dw TitleScreenEntrance - dw TitleScreenTimer - dw TitleScreenMain - dw TitleScreenEnd -; 62b7 - -Function62b7: ; Unreferenced - ld hl, wJumptableIndex - inc [hl] - ret -; 62bc - - -TitleScreenEntrance: ; 62bc - -; Animate the logo: -; Move each line by 4 pixels until our count hits 0. - ld a, [hSCX] - and a - jr z, .done - sub 4 - ld [hSCX], a - -; Lay out a base (all lines scrolling together). - ld e, a - ld hl, LYOverrides - ld bc, 8 * 10 ; logo height - call ByteFill - -; Reversed signage for every other line's position. -; This is responsible for the interlaced effect. - ld a, e - xor -1 - inc a - - ld b, 8 * 10 / 2 ; logo height / 2 - ld hl, LYOverrides + 1 -.loop - ld [hli], a - inc hl - dec b - jr nz, .loop - - callba AnimateTitleCrystal - ret - -.done -; Next scene - ld hl, wJumptableIndex - inc [hl] - xor a - ld [hLCDStatCustom], a - -; Play the title screen music. - ld de, MUSIC_TITLE - call PlayMusic - - ld a, $88 - ld [hWY], a - ret -; 62f6 - - -TitleScreenTimer: ; 62f6 - -; Next scene - ld hl, wJumptableIndex - inc [hl] - -; Start a timer - ld hl, wcf65 - ld de, $1140 ; 73.6 seconds - ld [hl], e - inc hl - ld [hl], d - ret -; 6304 - -TitleScreenMain: ; 6304 - -; Run the timer down. - ld hl, wcf65 - ld e, [hl] - inc hl - ld d, [hl] - ld a, e - or d - jr z, .end - - dec de - ld [hl], d - dec hl - ld [hl], e - -; Save data can be deleted by pressing Up + B + Select. - call GetJoypad - ld hl, hJoyDown - ld a, [hl] - and D_UP + B_BUTTON + SELECT - cp D_UP + B_BUTTON + SELECT - jr z, .delete_save_data - -; To bring up the clock reset dialog: - -; Hold Down + B + Select to initiate the sequence. - ld a, [$ffeb] - cp $34 - jr z, .check_clock_reset - - ld a, [hl] - and D_DOWN + B_BUTTON + SELECT - cp D_DOWN + B_BUTTON + SELECT - jr nz, .check_start - - ld a, $34 - ld [$ffeb], a - jr .check_start - -; Keep Select pressed, and hold Left + Up. -; Then let go of Select. -.check_clock_reset - bit 2, [hl] ; SELECT - jr nz, .check_start - - xor a - ld [$ffeb], a - - ld a, [hl] - and D_LEFT + D_UP - cp D_LEFT + D_UP - jr z, .clock_reset - -; Press Start or A to start the game. -.check_start - ld a, [hl] - and START | A_BUTTON - jr nz, .incave - ret - -.incave - ld a, 0 - jr .done - -.delete_save_data - ld a, 1 - -.done - ld [wcf64], a - -; Return to the intro sequence. - ld hl, wJumptableIndex - set 7, [hl] - ret - -.end -; Next scene - ld hl, wJumptableIndex - inc [hl] - -; Fade out the title screen music - xor a - ld [MusicFadeIDLo], a - ld [MusicFadeIDHi], a - ld hl, MusicFade - ld [hl], 8 ; 1 second - - ld hl, wcf65 - inc [hl] - ret - -.clock_reset - ld a, 4 - ld [wcf64], a - -; Return to the intro sequence. - ld hl, wJumptableIndex - set 7, [hl] - ret -; 6375 - -TitleScreenEnd: ; 6375 - -; Wait until the music is done fading. - - ld hl, wcf65 - inc [hl] - - ld a, [MusicFade] - and a - ret nz - - ld a, 2 - ld [wcf64], a - -; Back to the intro. - ld hl, wJumptableIndex - set 7, [hl] - ret -; 6389 - -Function6389: ; 6389 - callba Function4d54c - jp Init -; 6392 - -ResetClock: ; 6392 - callba _ResetClock - jp Init -; 639b - -Function639b: ; unreferenced - ; If bit 0 or 1 of [wcf65] is set, we don't need to be here. - ld a, [wcf65] - and $3 - ret nz - ld bc, SpriteAnim10 - ld hl, SpriteAnim10FrameIndex - SpriteAnim10 - 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, SPRITE_ANIM_INDEX_01 - call _InitSpriteAnimStruct - ret -; 63ca - -Data63ca: ; 63ca -; frame 0 y, x; frame 1 y, x - db $5c, $50, $00, $00 - db $5c, $68, $5c, $58 - db $5c, $68, $5c, $78 - db $5c, $88, $5c, $78 - db $00, $00, $5c, $78 - db $00, $00, $5c, $58 -; 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 TryLoadSaveData - call ResetTextRelatedRAM - call ClearBGPalettes - call ClearTileMap - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - xor a - ld [hBGMapAddress], a - ld [hJoyDown], a - ld [hSCX], a - ld [hSCY], a - ld a, $90 - ld [hWY], a - call WaitBGMap - jp Function620b -; 6454 +INCLUDE "engine/intro_menu.asm" Function6454:: ; 6454 call DelayFrame @@ -10745,10 +9322,10 @@ SaveRTC: ; 1406a ld a, $c ld [MBC3SRamBank], a res 7, [hl] - ld a, BANK(s0_ac60) + ld a, BANK(sRTCStatusFlags) ld [MBC3SRamBank], a xor a - ld [s0_ac60], a + ld [sRTCStatusFlags], a call CloseSRAM ret ; 14089 @@ -10762,7 +9339,7 @@ StartClock:: ; 14089 jr nc, .skip_set ; bit 5: Day count exceeds 139 ; bit 6: Day count exceeds 255 - call Function6d3 ; set flag on s0_ac60 + call RecordRTCStatus ; set flag on sRTCStatusFlags .skip_set call StartRTC @@ -10781,12 +9358,12 @@ Function1409b: ; 1409b .set_bit_7 ; Day count exceeds 16383 ld a, %10000000 - call Function6d3 ; set bit 7 on s0_ac60 + call RecordRTCStatus ; set bit 7 on sRTCStatusFlags ret ; 140ae Function140ae: ; 140ae - call Function6e3 + call CheckRTCStatus ld c, a and %11000000 ; Day count exceeded 255 or 16383 jr nz, .time_overflow @@ -19105,7 +17682,7 @@ EmptyAllSRAMBanks: ; 4cf1f ; 4cf45 -SaveMenu_LoadDETile: ; 4cf45 (13:4f45) +SaveMenu_LoadEDTile: ; 4cf45 (13:4f45) ld a, [hCGB] and a jp z, WaitBGMap @@ -19249,7 +17826,7 @@ endr ret ; 4d188 -Function4d188: ; 4d188 +PhoneRing_LoadEDTile: ; 4d188 ld a, [hCGB] and a jp z, WaitBGMap @@ -19275,11 +17852,11 @@ Function4d188: ; 4d188 ld a, 1 ; BANK(VBGMap2) ld [rVBK], a hlcoord 0, 0, AttrMap - call Function4d1cb + call .LoadEDTile ld a, 0 ; BANK(VBGMap0) ld [rVBK], a hlcoord 0, 0 - call Function4d1cb + call .LoadEDTile .wait2 ld a, [rLY] cp $8f @@ -19293,7 +17870,7 @@ Function4d188: ; 4d188 ret ; 4d1cb -Function4d1cb: ; 4d1cb +.LoadEDTile: ; 4d1cb ld [hSPBuffer], sp ld sp, hl ld a, [hBGMapAddress + 1] @@ -19458,10 +18035,10 @@ _ResetClock: ; 4d3b1 ret z call ClockResetPassword jr c, .wrongpassword - ld a, BANK(s0_ac60) + ld a, BANK(sRTCStatusFlags) call GetSRAMBank ld a, $80 - ld [s0_ac60], a + ld [sRTCStatusFlags], a call CloseSRAM ld hl, .text_okay call PrintText @@ -19680,7 +18257,7 @@ ClockResetPassword: ; 4d41e ld c, $2 call .ComponentFromNumber ld hl, sPlayerData + (PlayerName - wPlayerData) - ld c, $5 + ld c, $5 ; PLAYER_NAME_LENGTH_J call .ComponentFromString ld hl, sPlayerData + (Money - wPlayerData) ld c, $3 @@ -25211,13 +23788,13 @@ Function104309: ld [rVBK], a ld c, $8 ld hl, w6_d000 + $80 - ld de, VBGMap1 tile $00 + debgcoord 0, 0, VBGMap1 call Function104209 ld a, $0 ld [rVBK], a ld c, $8 ld hl, w6_d000 - ld de, VBGMap1 tile $00 + debgcoord 0, 0, VBGMap1 call Function104209 ret @@ -25515,13 +24092,13 @@ Function104770: ; 104770 (41:4770) ld [rVBK], a xor a lb bc, 4, 0 - ld hl, VBGMap0 tile $00 + hlbgcoord 0, 0 call ByteFill pop af ld [rVBK], a ld a, $60 lb bc, 4, 0 - ld hl, VBGMap0 tile $00 + hlbgcoord 0, 0 call ByteFill ret @@ -25536,7 +24113,7 @@ Function1047a3: ; 1047a3 (41:47a3) ld [rVBK], a Function1047b4: ; 1047b4 (41:47b4) - ld hl, VBGMap0 tile $00 + hlbgcoord 0, 0 ld c, $14 ld b, $12 .asm_1047bb @@ -26788,7 +25365,7 @@ Function105069: ; 105069 (41:5069) call GetMysteryGiftBank ld d, $0 ld b, $2 - ld hl, s0_abf0 + ld hl, sMysteryGiftDecorationsReceived predef_id FlagPredef push hl push bc @@ -26809,29 +25386,29 @@ Function105069: ; 105069 (41:5069) Function105091: ; 105091 (41:5091) call GetMysteryGiftBank ld c, $0 -.asm_105096 +.loop push bc ld d, $0 - ld b, $2 - ld hl, s0_abf0 + ld b, CHECK_FLAG + ld hl, sMysteryGiftDecorationsReceived predef FlagPredef ld a, c and a pop bc - jr z, .asm_1050b0 + jr z, .skip push bc callab SetSpecificDecorationFlag pop bc -.asm_1050b0 +.skip inc c ld a, c - cp $2a + 1 - jr c, .asm_105096 + cp Trophys - DecorationIDs + jr c, .loop jp CloseSRAM Special_UnlockMysteryGift: ; 1050b9 call GetMysteryGiftBank - ld hl, s0_abe3 + ld hl, sMysteryGiftUnlocked ld a, [hl] inc a jr nz, .ok |