diff options
-rw-r--r-- | constants/music_constants.asm | 12 | ||||
-rw-r--r-- | constants/trainer_constants.asm | 4 | ||||
-rwxr-xr-x | engine/main_menu.asm | 1074 | ||||
-rwxr-xr-x | engine/title.asm | 450 | ||||
-rw-r--r-- | home.asm | 10 | ||||
-rw-r--r-- | home/audio.asm | 2 | ||||
-rw-r--r-- | home/copy.asm | 2 | ||||
-rw-r--r-- | home/copy2.asm | 2 | ||||
-rw-r--r-- | home/map.asm | 14 | ||||
-rw-r--r-- | home/map_objects.asm | 2 | ||||
-rw-r--r-- | main.asm | 154 | ||||
-rw-r--r-- | wram.asm | 86 |
12 files changed, 1695 insertions, 117 deletions
diff --git a/constants/music_constants.asm b/constants/music_constants.asm index 5c54c3dc..3a73da9b 100644 --- a/constants/music_constants.asm +++ b/constants/music_constants.asm @@ -93,15 +93,5 @@ const MUSIC_LAKE_OF_RAGE_ROCKET_RADIO ; 5a const MUSIC_PRINTER ; 5b const MUSIC_POST_CREDITS ; 5c - const MUSIC_CLAIR ; 5d - const MUSIC_MOBILE_ADAPTER_MENU ; 5e - const MUSIC_MOBILE_ADAPTER ; 5f - const MUSIC_BUENAS_PASSWORD ; 60 - const MUSIC_MYSTICALMAN_ENCOUNTER ; 61 - const MUSIC_CRYSTAL_OPENING ; 62 - const MUSIC_BATTLE_TOWER_THEME ; 63 - const MUSIC_SUICUNE_BATTLE ; 64 - const MUSIC_BATTLE_TOWER_LOBBY ; 65 - const MUSIC_MOBILE_CENTER ; 66 -MUSIC_MAHOGANY_MART EQU $64 ; leftover from gold +MUSIC_MAHOGANY_MART EQU $64 diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index 74b1e341..e6563591 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -6,7 +6,6 @@ CHRIS EQU __enum__ const PHONECONTACT_BIKESHOP const PHONECONTACT_BILL const PHONECONTACT_ELM - const PHONECONTACT_BUENA KRIS EQU __enum__ trainerclass FALKNER ; 1 @@ -612,9 +611,6 @@ KRIS EQU __enum__ trainerclass GRUNTF ; 42 - trainerclass MYSTICALMAN ; 43 - const EUSINE - NUM_TRAINER_CLASSES EQU __enum__ const_def diff --git a/engine/main_menu.asm b/engine/main_menu.asm new file mode 100755 index 00000000..dc8c7fb1 --- /dev/null +++ b/engine/main_menu.asm @@ -0,0 +1,1074 @@ +MainMenu_: + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld de, MUSIC_MAIN_MENU + ld a, e + ld [wMapMusic], a + call PlayMusic +.asm_5a60 + xor a + ld [wc1d6], a + call Function5bf7 + ld b, $8 + call GetSGBLayout + ld hl, wGameTimerPause + res 0, [hl] + call Function5ae4 + ld [wWhichIndexSet], a + call Function5b27 + ld hl, .MenuDataHeader + call LoadMenuDataHeader + call Function5b0a + call CloseWindow + jr c, .asm_5a94 + call ClearTileMap + ld a, [wMenuSelection] + ld hl, .Jumptable ; $5acd + rst JumpTable + jr .asm_5a60 + +.asm_5a94 + jp StartTitleScreen + +.MenuDataHeader: + db $40 + db 00, 00 + db 07, 14 + dw .MenuData2 + db 1 + +.MenuData2: + db $80 + db 0 + dw MainMenuItems + dw PlaceMenuStrings + dw .Strings + +.Strings: + db "CONTINUE@" + db "NEW GAME@" + db "OPTION@" + db "MYSTERY GIFT@" + +.Jumptable: + dw MainMenu_Continue ; 5dd9 + dw MainMenu_NewGame ; 5c1e + dw MainMenu_Options ; 5c17 + dw MainMenu_MysteryGift ; 5c07 + +CONTINUE EQU 0 +NEW_GAME EQU 1 +OPTION EQU 2 +MYSTERY_GIFT EQU 3 + +MainMenuItems: + db 2 + db NEW_GAME + db OPTION + db -1 + + db 3 + db CONTINUE + db NEW_GAME + db OPTION + db -1 + + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db -1 + +Function5ae4: ; 5ae4 (1:5ae4) + nop + nop + nop + ld a, [wd19a] + and a + jr nz, .asm_5af0 + ld a, $0 + ret + +.asm_5af0 + ld a, [hCGB] + cp $1 + ld a, $1 + ret nz + ld a, $0 + call OpenSRAM + ld a, [$abe5] + cp $ff + call CloseSRAM + ld a, $1 + ret z + ld a, $2 + ret + +Function5b0a: ; 5b0a (1:5b0a) + call SetUpMenu +.asm_5b0d + call Function5b27 + call GetScrollingMenuJoypad + ld a, [wMenuJoypad] + cp $2 + jr z, .asm_5b25 + cp $1 + jr z, .asm_5b20 + jr .asm_5b0d + +.asm_5b20 + call PlayClickSFX + and a + ret + +.asm_5b25 + scf + ret + +Function5b27: ; 5b27 (1:5b27) + ld a, [wd19a] + and a + ret z + xor a + ld [hBGMapMode], a + call Function5b45 + ld hl, wd199 + ld a, [hl] + push af + set 4, [hl] + call Function5b5b + pop af + ld [wd199], a + ld a, $1 + ld [hBGMapMode], a + ret + +Function5b45: ; 5b45 (1:5b45) + call CheckRTCStatus + and $80 + jr nz, .asm_5b57 + hlcoord 0, 12 + ld b, $4 + ld c, $d + call TextBox + ret + +.asm_5b57 + call SpeechTextBox + ret + +Function5b5b: ; 5b5b (1:5b5b) + ld a, [wd19a] + and a + ret z + call CheckRTCStatus + and $80 + jp nz, Function5b9c + call UpdateTime + hlcoord 1, 13 + ld bc, IncGradGBPalTable_11 + 1 + call ClearBox + call GetWeekday + ld b, a + decoord 1, 14 + call Function5bb8 + decoord 4, 16 + ld a, [hHours] + ld c, a + callba PrintHour + ld [hl], $9c + inc hl + ld de, hMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ret + +.min + db "min.@" + +Function5b9c: ; 5b9c (1:5b9c) + hlcoord 1, 14 + ld de, .TimeNotSet + call PlaceString + ret + +.TimeNotSet + db "TIME NOT SET@" + +.UnusedText + text_jump ClockTimeUnknownText_ + db "@" + +Function5bb8: ; 5bb8 (1:5bb8) + 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 + +.Days: + db "SUN@" + db "MON@" + db "TUES@" + db "WEDNES@" + db "THURS@" + db "FRI@" + db "SATUR@" +.Day: + db "DAY@" + +Function5bf7: ; 5bf7 (1:5bf7) + xor a + ld [hMapAnims], a + call ClearTileMap + call LoadFontsExtra + call Functiond9e + call ClearWindowData + ret + +MainMenu_MysteryGift: + call UpdateTime + callba Function11934 + callba Function29dff + ret + +MainMenu_Options: + callba OptionsMenu + ret + +MainMenu_NewGame: + xor a + ld [wMonStatusFlags], a + call Function5c3a + call Function5bf7 + call OakSpeech + call InitializeWorld + ld a, $0 + ld [wceec], a + ld a, $f1 + ld [hMapEntryMethod], a + jp FinishContinueFunction + +Function5c3a: ; 5c3a (1:5c3a) + xor a + ld [hBGMapMode], a + call Function5c41 + ret + +Function5c41: ; 5c41 (1:5c41) + ld hl, wOAMBuffer + ld bc, Options - wOAMBuffer + 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 [wPlayerID], a + + ld a, [rLY] + ld [hSecondsBackup], a + call DelayFrame + ld a, [hRandomAdd] + ld [wPlayerID + 1], a + + ld hl, wPartyCount + call Function5d15 + + xor a + ld [wd8bc], a + ld [wSavedAtLeastOnce], a + + call Function5d1a + + ld a, BANK(s1_ad6c) + call OpenSRAM + ld hl, s1_ad6c + call Function5d15 + call CloseSRAM + + ld hl, wd5b7 + call Function5d15 + ld hl, wd5e1 + call Function5d15 + ld hl, wd5fc + call Function5d15 + ld hl, wd616 + call Function5d15 + + xor a + ld [wdd1a], a + ld [wdd21], a + ld [wdd28], a + ld a, $ff + ld [wdd1c], a + ld [wdd23], a + ld [wdd2a], a + ld [wdd1d], a + ld [wdd24], a + ld [wdd2b], a + + ld a, BANK(s0_abe2) + call OpenSRAM + ld hl, s0_abe2 + xor a + ld [hli], a + dec a + ld [hl], a + call CloseSRAM + + call LoadOrRegenerateLuckyIDNumber + call InitializeMagikarpHouse + + xor a + ld [wce5f], a + + ld [wJohtoBadges], a + ld [wKantoBadges], a + + ld [wCoins], a + ld [wCoins + 1], a + +START_MONEY EQU 3000 + +IF START_MONEY / $10000 + ld a, START_MONEY / $10000 +ENDC + ld [wMoney], a + ld a, START_MONEY / $100 % $100 + ld [wMoney + 1], a + ld a, START_MONEY % $100 + ld [wMoney + 2], a + + xor a + ld [wd961], a + + ld hl, wMomItemTriggerBalance + ld [hl], 2300 / $10000 + inc hl + ld [hl], 2300 / $100 % $100 + inc hl + ld [hl], 2300 % $100 + + call Function5d5d + + callba InitDecorations + + callba DeletePartyMonMail + + call ResetGameTime + ret + +Function5d15: ; 5d15 (1:5d15) + xor a + ld [hli], a + dec a + ld [hl], a + ret + +Function5d1a: ; 5d1a (1:5d1a) + ld hl, wd8bf + ld c, $0 +.asm_5d1f + push hl + ld de, .Box + call CopyName2 + dec hl + ld a, c + inc a + cp 10 + jr c, .asm_5d32 + sub 10 + ld [hl], "1" + inc hl +.asm_5d32 + 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, .asm_5d1f + ret + +.Box db "BOX@" + +InitializeMagikarpHouse: ; 5d47 (1:5d47) + ld hl, wdd33 + ld a, 3 + ld [hli], a + ld a, 6 + ld [hli], a + ld de, .Ralph + call CopyName2 + ret + +.Ralph db "RALPH@" + +Function5d5d: ; 5d5d (1:5d5d) + ld hl, .Rival + ld de, wRivalsName + call .CopyName + ld hl, .Mom + ld de, wMomsName + call .CopyName + ld hl, .Red + ld de, wRedsName + call .CopyName + ld hl, .Green + ld de, wGreensName +.CopyName: + ld bc, NAME_LENGTH + call CopyBytes + ret + +.Rival: db "???@" +.Red: db "RED@" +.Green: db "GREEN@" +.Mom: db "MOM@" + +InitializeWorld: ; 5d97 (1:5d97) + call ShrinkPlayer + callba SpawnPlayer + callba InitializeStartDay_ + ret + +LoadOrRegenerateLuckyIDNumber: ; 5da7 (1:5da7) + ld a, $0 + call OpenSRAM + ld a, [wCurDay] + inc a + ld b, a + ld a, [s0_ac68] + cp b + ld a, [s0_ac6a] + ld c, a + ld a, [s0_ac69] + jr z, .asm_5dc9 + ld a, b + ld [s0_ac68], a + call Random + ld c, a + call Random +.asm_5dc9 + ld [wd9e9], a + ld [s0_ac69], a + ld a, c + ld [wd9ea], a + ld [s0_ac6a], a + jp CloseSRAM + +MainMenu_Continue: + callba TryLoadSaveFile + jr c, .asm_5e41 + call LoadStandardMenuDataHeader + call DisplaySaveInfoOnContinue + ld a, $1 + ld [hBGMapMode], a + ld c, 20 + call DelayFrames + call ConfirmContinue + jr nc, .asm_5dfa + call CloseWindow + jr .asm_5e41 + +.asm_5dfa + call Continue_CheckRTC_RestartClock + jr nc, .asm_5e04 + call CloseWindow + jr .asm_5e41 + +.asm_5e04 + ld a, $8 + ld [wMusicFade], a + ld a, MUSIC_NONE % $100 + ld [wMusicFadeID], a + ld a, MUSIC_NONE / $100 + ld [wMusicFadeID + 1], a + call ClearBGPalettes + call CloseWindow + call ClearTileMap + ld c, 20 + call DelayFrames + callba JumpRoamMons + callba MysteryGift_CopyReceivedDecosToPC + callba ClockContinue + ld a, [wd1db] + cp $1 + jr z, .asm_5e42 + ld a, $f2 + ld [hMapEntryMethod], a + jp FinishContinueFunction + +.asm_5e41 + ret + +.asm_5e42 + ld a, $e + ld [wceec], a + call PostCreditsSpawn + jp FinishContinueFunction + +SpawnAfterRed: ; 5e4d (1:5e4d) + ld a, $1a + ld [wceec], a +PostCreditsSpawn: ; 5e52 (1:5e52) + xor a + ld [wd1db], a + ld a, $f1 + ld [hMapEntryMethod], a + ret + +ConfirmContinue: ; 5e5b (1:5e5b) + call DelayFrame + call GetJoypad + ld hl, hJoyPressed + bit 0, [hl] + jr nz, .asm_5e6e + bit 1, [hl] + jr z, ConfirmContinue + scf + ret + +.asm_5e6e + ret + +Continue_CheckRTC_RestartClock: ; 5e6f (1:5e6f) + call CheckRTCStatus + and $80 + jr z, .asm_5e82 + ld a, $8 + ld hl, $4021 + rst FarCall + ld a, c + and a + jr z, .asm_5e82 + scf + ret + +.asm_5e82 + xor a + ret + +FinishContinueFunction: ; 5e84 (1:5e84) + xor a + ld [wDontPlayMapMusicOnReload], a + ld hl, wGameTimerPause + set 0, [hl] + callba OverworldLoop + ld a, [wd1db] + cp $2 + jr z, .asm_5e9d + jp Reset + +.asm_5e9d + call SpawnAfterRed + jr FinishContinueFunction + +DisplaySaveInfoOnContinue: ; 5ea2 (1:5ea2) + call CheckRTCStatus + and $80 + jr z, .asm_5eb0 + lb de, 4, 8 + call DisplayContinueDataWithRTCError + ret + +.asm_5eb0 + lb de, 4, 8 + call DisplayNormalContinueData + ret + +DisplayNormalContinueData: ; 5eb7 (1:5eb7) + call Continue_LoadMenuHeader + call Continue_DisplayBadgesDex + call Continue_PrintGameTime + call LoadFontsExtra + call UpdateSprites + ret + +DisplayContinueDataWithRTCError: ; 5ec7 (1:5ec7) + call Continue_LoadMenuHeader + call Continue_DisplayBadgesDex + call Continue_UnknownGameTime + call LoadFontsExtra + call UpdateSprites + ret + +Continue_LoadMenuHeader: ; 5ed7 (1:5ed7) + xor a + ld [hBGMapMode], a + ld hl, .MenuDataHeader_Dex ; $5ef1 + ld a, [wStatusFlags] + bit 0, a + jr nz, .asm_5ee7 + ld hl, .MenuDataHeader_NoDex ; $5f15 +.asm_5ee7 + call OffsetMenuDataHeader_ + call MenuBox + call PlaceVerticalMenuItems + ret + +.MenuDataHeader_Dex: + db $40 + db 00, 00 + db 09, 15 + dw .MenuData2_Dex ; 5ef9 + db 1 + +.MenuData2_Dex + db $00 + db 4 + db "PLAYER <PLAYER>@" + db "BADGES@" + db "#DEX@" + db "TIME@" + +.MenuDataHeader_NoDex: + db $40 + db 00, 00 + db 09, 15 + dw .MenuData2_NoDex ; 5f1d + db 1 + +.MenuData2_NoDex + db $00 + db 4 + db "PLAYER <PLAYER>@" + db "BADGES@" + db " @" + db "TIME@" + +Continue_DisplayBadgesDex: ; 5f36 (1:5f36) + call MenuBoxCoord2Tile + push hl + decoord 13, 4, 0 + add hl, de + call Continue_DisplayBadgeCount + pop hl + push hl + decoord 12, 6, 0 + add hl, de + call Continue_DisplayPokedexNumCaught + pop hl + ret + +Continue_PrintGameTime: ; 5f4c (1:5f4c) + decoord 9, 8, 0 + add hl, de + call Continue_DisplayGameTime + ret + +Continue_UnknownGameTime: ; 5f54 (1:5f54) + decoord 9, 8, 0 + add hl, de + ld de, .three_question_marks + call PlaceString + ret + +.three_question_marks + db " ???@" + +Continue_DisplayBadgeCount: ; 5f64 (1:5f64) + push hl + ld hl, wJohtoBadges + ld b, $2 + call CountSetBits + pop hl + ld de, wd151 + lb bc, 1, 2 + jp PrintNum + +Continue_DisplayPokedexNumCaught: ; 5f77 (1:5f77) + ld a, [wStatusFlags] + bit 0, a + ret z + push hl + ld hl, wPokedexCaught +IF NUM_POKEMON % 8 + ld b, NUM_POKEMON / 8 + 1 +ELSE + ld b, NUM_POKEMON / 8 +ENDC + call CountSetBits + pop hl + ld de, wd151 + lb bc, 1, 3 + jp PrintNum + +Continue_DisplayGameTime: ; 5f90 (1:5f90) + ld de, wGameTimeHours + lb bc, 2, 3 + call PrintNum + ld [hl], $6d + inc hl + ld de, wGameTimeMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + jp PrintNum + +OakSpeech: ; 5fa5 (1:5fa5) + callba InitClock + call RotateFourPalettesLeft + call ClearTileMap + ld de, MUSIC_ROUTE_30 + call PlayMusic + call RotateFourPalettesRight + call RotateThreePalettesRight + xor a + ld [wCurPartySpecies], a + ld a, POKEMON_PROF + ld [wTrainerClass], a + call Intro_PrepTrainerPic + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call Intro_FadeInFrontpic + ld hl, OakText1 + call PrintText + call RotateThreePalettesRight + call ClearTileMap + ld a, MARILL + ld [wce60], a + ld [wCurPartySpecies], a + call GetBaseData + hlcoord 6, 4 + hlcoord 6, 4 ; TriHard + call PrepMonFrontpic + xor a + ld [wTempMonDVs], a + ld [wTempMonDVs + 1], a + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call Intro_WipeInFrontpic + ld hl, OakText2 + call PrintText + ld hl, OakText4 + call PrintText + call RotateThreePalettesRight + call ClearTileMap + xor a + ld [wCurPartySpecies], a + ld a, POKEMON_PROF + ld [wTrainerClass], a + call Intro_PrepTrainerPic + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call Intro_FadeInFrontpic + ld hl, OakText5 + call PrintText + call RotateThreePalettesRight + call ClearTileMap + xor a + ld [wCurPartySpecies], a + ld a, CAL + ld [wTrainerClass], a + call Intro_PrepTrainerPic + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call Intro_FadeInFrontpic + ld hl, OakText6 + call PrintText + call NamePlayer + ld hl, OakText7 + call PrintText + ret + +OakText1: + text_jump OakText1_ + db "@" + +OakText2: + text_jump OakText2_ + start_asm + ld a, MARILL + call PlayCry + call WaitSFX + ld hl, OakText3 ; $606c + ret + +OakText3: + text_jump OakText3_ + db "@" + +OakText4: + text_jump OakText4_ + db "@" + +OakText5: + text_jump OakText5_ + db "@" + +OakText6: + text_jump OakText6_ + db "@" + +OakText7: + text_jump OakText7_ + db "@" + +NamePlayer: ; 6085 (1:6085) + call MovePlayerPicRight + ld hl, .PlayerNamingChoices ; $60d9 + call SelectPresetName + ld a, [wMenuCursorY] + dec a + jr z, .NewName + ld de, wPlayersName + call StorePlayerName + callba ApplyMonOrTrainerPals + call MovePlayerPicLeft + ret + +.NewName + ld b, $1 + ld de, wPlayersName + callba NamingScreen + call RotateThreePalettesRight + call ClearTileMap + call LoadFontsExtra + call WaitBGMap + xor a + ld [wCurPartySpecies], a + ld a, CAL + ld [wTrainerClass], a + call Intro_PrepTrainerPic + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call RotateThreePalettesLeft + ld hl, wPlayersName + ld de, .GoldSilver + call InitName + ret + +.PlayerNamingChoices: + db $40 + db 00, 00 + db 11, 10 + dw .MenuData2 + db 1 + +.MenuData2: + db $91 + db 5 + db "NEW NAME@" +.GoldSilver: +IF DEF(GOLD) + db "GOLD@" + db "HIRO@" + db "TAYLOR@" + db "KARL@" +ENDC +IF DEF(SILVER) + db "SILVER@" + db "KAMON@" + db "OSCAR@" + db "MAX@" +ENDC + db 2, "NAME@" + +SelectPresetName: ; 6108 (1:6108) + call LoadMenuDataHeader + call VerticalMenu + ld a, [wMenuCursorY] + dec a + call CopyNameFromMenu + call CloseWindow + ret + +StorePlayerName: ; 6119 (1:6119) + ld hl, wStringBuffer2 + ld bc, NAME_LENGTH + call CopyBytes + ret + +ShrinkPlayer: ; 6123 (1:6123) + ld a, [hROMBank] + push af + + ld a, 0 << 7 | 32 ; fade out + ld [wMusicFade], a + ld de, MUSIC_NONE + ld a, e + ld [wMusicFadeID], a + ld a, d + ld [wMusicFadeIDHi], 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 RotateThreePalettesRight + call ClearTileMap + ret + +MovePlayerPicRight: ; 617e (1:617e) + hlcoord 6, 4 + ld de, $1 + jr MovePlayerPic + +MovePlayerPicLeft: ; 6186 (1:6186) + hlcoord 13, 4 + ld de, -1 +MovePlayerPic + ld c, $8 +.asm_618e + push bc + push hl + push de + xor a + ld [hBGMapMode], a + ld bc, $707 + ld a, $13 + call Predef + xor a + ld [hBGMapThird], a + call WaitBGMap + call DelayFrame + pop de + pop hl + add hl, de + pop bc + dec c + jr nz, .asm_618e + ret + +Intro_FadeInFrontpic: ; 61ad (1:61ad) + ld hl, IntroFadePalettes + ld b, $6 +.asm_61b2 + ld a, [hli] + call DmgToCgbBGPals + ld c, $a + call DelayFrames + dec b + jr nz, .asm_61b2 + ret + +IntroFadePalettes: + db %01010100 + db %10101000 + db %11111100 + db %11111000 + db %11110100 + db %11100100 + +Intro_WipeInFrontpic: ; 61c5 (1:61c5) + ld a, $77 + ld [hWX], a + call DelayFrame + ld a, $e4 + call DmgToCgbBGPals +.asm_61d1 + call DelayFrame + ld a, [hWX] + sub $8 + cp $ff + ret z + ld [hWX], a + jr .asm_61d1 + +Intro_PrepTrainerPic: ; 61df, 61e0 (1:61df, 1:61e0) + ld de, $9000 + ld a, $14 + ld hl, $58a0 + rst FarCall + xor a + ld [hGraphicStartTile], a + hlcoord 6, 4 + ld bc, $707 + ld a, $13 + call Predef + ret + +ShrinkFrame: ; 61f7 (1:61f7) + ld de, $9000 + ld c, $31 + predef GetTrainerPic + xor a + ld [hGraphicStartTile], a + hlcoord 6, 4 + lb bc, 7, 7 + predef PlaceGraphic + ret + +Intro_PlacePlayerSprite: ; 6210 (1:6210) + ld de, PlayerIcon + lb bc, BANK(PlayerIcon), 12 + ld hl, $8000 + call Request2bpp + ld hl, wOAMBuffer + ld de, .OAMData + ld a, [de] + inc de + ld c, a +.asm_6225 + 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 + ld [hli], a + dec c + jr nz, .asm_6225 + ret + +.OAMData + db 4 + db 9 * 8 + 4, 9 * 8, 0 + db 9 * 8 + 4, 10 * 8, 1 + db 10 * 8 + 4, 9 * 8, 2 + db 10 * 8 + 4, 10 * 8, 3 diff --git a/engine/title.asm b/engine/title.asm new file mode 100755 index 00000000..c0c5006c --- /dev/null +++ b/engine/title.asm @@ -0,0 +1,450 @@ +IntroSequence: ; 6241 (1:6241) + callab Copyright_GFPresents + jr c, StartTitleScreen + callab GoldSilverIntro +StartTitleScreen: + call InitTitleScreen + call DelayFrame +.asm_6255 + call TitleScreenFrame + jr nc, .asm_6255 + call ClearSprites + call ClearBGPalettes + ld hl, rLCDC + res 2, [hl] + call ClearTileMap + xor a + ld [hLCDCPointer], a + ld b, $8 + call GetSGBLayout + call UpdateTimePals + ld a, [wce64] + cp $5 + jr c, .asm_627b + xor a +.asm_627b + ld e, a + ld d, $0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.Jumptable + dw MainMenu_ + dw DeleteSaveData + dw IntroSequence + dw IntroSequence + dw ResetClock + +InitTitleScreen: ; 6291 (1:6291) + call ClearBGPalettes + xor a + ld [wTimeOfDayPal], a + ld de, MUSIC_NONE + call PlayMusic + call ClearTileMap + call DisableLCD + call ClearSprites + xor a + ld [hBGMapMode], a + ld [hMapAnims], a + ld [hSCY], a + ld [hSCX], a + ld hl, $8000 + ld bc, $2000 + xor a + call ByteFill + callba ClearAnimatedObjectBuffer + + ld hl, TitleScreenGFX1 + ld de, $9000 + ld a, BANK(TitleScreenGFX1) + call FarDecompress + + ld hl, TitleScreenGFX2 + ld de, $8800 + ld a, BANK(TitleScreenGFX2) + call FarDecompress + + ld hl, TitleScreenGFX4 + ld de, $8000 + ld a, BANK(TitleScreenGFX4) + call FarDecompress + + ld hl, TitleScreenGFX3 + ld de, $8f80 + ld bc, $80 + ld a, BANK(TitleScreenGFX3) + call FarCopyBytes + + call Function636e + call Function63b6 + ld hl, wAnimatedObjectDynamicVTileOffsets + xor a + ld [hli], a + ld [hl], a + ld hl, rLCDC + set 2, [hl] + call EnableLCD + xor a + ld hl, wce63 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld de, $6058 + ld a, $2c ; HO-OH + call InitAnimatedObjectStruct + ld hl, wAnimatedObjectStruct1 + ld de, wAnimatedObjectStruct10 + ld bc, $a + call CopyBytes + ld hl, wAnimatedObjectStruct1 + ld [hl], $0 + ld hl, wc700 + ld bc, $90 + xor a + call ByteFill + ld a, $43 + ld [hLCDCPointer], a + ld b, $c + call GetSGBLayout + call Function6341 + ld de, MUSIC_TITLE + call PlayMusic + ret + +Function6341: ; 6341 (1:6341) + ld a, [hCGB] + and a + jr nz, .asm_6365 + ld a, [hSGB] + and a + jr nz, .asm_6358 + ld a, $d8 + ld [rBGP], a +IF DEF(GOLD) + ld a, $ff + ld [rOBP0], a + ld a, $f8 +ENDC +IF DEF(SILVER) + ld a, $f0 + ld [rOBP0], a + ld a, $f0 +ENDC + ld [rOBP1], a + ret + +.asm_6358 + ld a, $e4 + ld [rBGP], a +IF DEF(GOLD) + ld a, $ff + ld [rOBP0], a + ld a, $e4 +ENDC +IF DEF(SILVER) + ld a, $f0 + ld [rOBP0], a + ld a, $e0 +ENDC + ld [rOBP1], a + ret + +.asm_6365 + ld a, $e4 + call DmgToCgbBGPals +IF DEF(SILVER) + ld a, $e0 +ENDC + call DmgToCgbObjPal0 + ret + +Function636e: ; 636e (1:636e) + ld a, [hCGB] + and a + ret z + ld a, $1 + ld [rVBK], a + ld hl, $9800 + ld bc, $240 + xor a + call ByteFill + ld hl, $9800 + ld bc, $714 + ld a, $1 + call Function63a6 + ld hl, $98c5 + ld bc, $10a + ld a, $3 + call Function63a6 + ld hl, $9980 + ld bc, $a0 + ld a, $4 + call ByteFill + ld a, $0 + ld [rVBK], a + ret + +Function63a6: ; 63a6 (1:63a6) + push bc + push hl +.asm_63a8 + ld [hli], a + dec c + jr nz, .asm_63a8 + pop hl + ld bc, $20 + add hl, bc + pop bc + dec b + jr nz, Function63a6 + ret + +Function63b6: ; 63b6 (1:63b6) + ld hl, GSIntroTilemap ; $4616 + ld de, $9800 +.asm_63bc + ld a, BANK(GSIntroTilemap) ; $26 + call GetFarByte + cp $ff + jr z, .asm_63ca + inc hl + ld [de], a + inc de + jr .asm_63bc + +.asm_63ca + ld a, [hCGB] + and a + ret nz + ld hl, $9960 + ld bc, $20 + ld a, $50 + call ByteFill + ret + +TitleScreenFrame: ; 63da (1:63da) + call Function63fe + ld a, [wce63] + bit 7, a + jr nz, .asm_63fc + call Function640f + ld a, $1 + ld [hOAMUpdate], a + callba AnimatedObjects_PlayFrame + xor a + ld [hOAMUpdate], a + call Function64b1 + call DelayFrame + and a + ret + +.asm_63fc + scf + ret + +Function63fe: ; 63fe (1:63fe) +IF DEF(GOLD) + ld a, [hVBlankCounter] + and $7 + ret nz +ENDC + ld hl, wc75f + ld a, [hl] + dec a + ld bc, $28 + call ByteFill + ret + +Function640f: ; 640f (1:640f) + ld e, a + ld d, $0 + ld hl, .Jumptable ; $641b + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.Jumptable + dw Function6426 + dw Function6434 + dw Function648b + +Function6421: + ld hl, wce63 + inc [hl] + ret + +Function6426: + ld hl, wce63 + inc [hl] + ld hl, wce65 +IF DEF(GOLD) + ld de, $13c0 +ENDC +IF DEF(SILVER) + ld de, $1140 +ENDC + ld [hl], e + inc hl + ld [hl], d + ret + +Function6434: + ld hl, wce65 + ld e, [hl] + inc hl + ld d, [hl] + ld a, e + or d + jr z, .asm_646b + dec de + ld [hl], d + dec hl + ld [hl], e + call GetJoypad + ld hl, hJoyDown + ld a, [hl] + and D_UP + B_BUTTON + SELECT + cp D_UP + B_BUTTON + SELECT + jr z, .asm_6460 + ld a, [hl] + and D_DOWN + B_BUTTON + SELECT + cp D_DOWN + B_BUTTON + SELECT + jr z, .asm_6480 + ld a, [hl] + and START | A_BUTTON + jr nz, .asm_645c + ret + +.asm_645c + ld a, $0 + jr .asm_6462 + +.asm_6460 + ld a, $1 +.asm_6462 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +.asm_646b + ld hl, wce63 + inc [hl] + xor a + ld [wMusicFadeIDLo], a + ld [wMusicFadeIDHi], a + ld hl, wMusicFade + ld [hl], $8 + ld hl, wce65 + inc [hl] + ret + +.asm_6480 + ld a, $4 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +Function648b: + ld hl, wce65 + inc [hl] + ld a, [wMusicFade] + and a + ret nz + ld a, $2 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +DeleteSaveData: + callba DeleteSaveData_ + jp Init + +ResetClock: + callba ResetClock_ + jp Init + +Function64b1: ; 64b1 (1:64b1) + ld a, [wce65] + and $3 + ret nz +IF DEF(GOLD) + ld bc, wAnimatedObjectStruct10Index + ld hl, $a + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, hl + ld de, .Data_64e0 + add hl, de + ld a, [wce65] + and $4 + srl a + srl a + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + and a + ret z + ld e, a + ld d, [hl] +ENDC + +IF DEF(SILVER) + ld de, $7c58 +ENDC + ld a, $f + call InitAnimatedObjectStruct + ret + +IF DEF(GOLD) +.Data_64e0: + 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 +ENDC + +Copyright: + call ClearTileMap + call LoadFontsExtra + ld de, TitleScreenGFX5 + ld hl, $9600 + lb bc, BANK(TitleScreenGFX5), 30 + call Request2bpp + hlcoord 2, 7 + ld de, CopyrightString + jp PlaceString + +CopyrightString: + db $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $65, $66, $67, $68, $69, $6a + next $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $6b, $6c, $6d, $6e, $6f, $70, $71, $72 + next $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $73, $74, $75, $76, $77, $78, $79, $71, $72 + db "@" + +GameInit:: ; 6545 (1:6545) + call ClearWindowData + ld a, $5 + ld hl, $4f60 + rst FarCall + jp IntroSequence @@ -237,12 +237,12 @@ ReloadTilesFromBuffer_:: Function317b:: ; 317b (0:317b) ld hl, wStringBuffer2 -.asm_317e +CopyName2:: ld a, [de] inc de ld [hli], a - cp $50 - jr nz, .asm_317e + cp "@" + jr nz, CopyName2 ret IsInArray:: @@ -704,7 +704,7 @@ Function343a:: and a ret -Function3449:: +ClearBGPalettes:: call ClearPalettes WaitBGMap:: ; 344c (0:344c) ld a, $1 @@ -1629,7 +1629,7 @@ PrepMonFrontpic_:: INCLUDE "home/cry.asm" PrintLevel:: ; 3a50 - ld a, [wd02a] + ld a, [wTempMonLevel] ld [hl], $6e inc hl ld c, $2 diff --git a/home/audio.asm b/home/audio.asm index f54445f7..0d0f1114 100644 --- a/home/audio.asm +++ b/home/audio.asm @@ -243,7 +243,7 @@ FadeToMapMusic:: ld a, e ld [wMusicFadeID], a ld a, d - ld [wc1aa], a + ld [wMusicFadeID + 1], a ld a, e ld [wChannelsEnd], a .asm_3eb8 diff --git a/home/copy.asm b/home/copy.asm index 879abb60..cb1e718d 100644 --- a/home/copy.asm +++ b/home/copy.asm @@ -36,7 +36,7 @@ Functionda5:: callba Functionf8032 ret -Functiondac:: +LoadFontsExtra:: callba Functionf800c ret diff --git a/home/copy2.asm b/home/copy2.asm index 82cb8349..3ba05db9 100644 --- a/home/copy2.asm +++ b/home/copy2.asm @@ -13,7 +13,7 @@ CopyBytes:: ; 311a (0:311a) jr nz, .asm_311e ret -SwapBytes:: ; 3128 (0:3128) +GetFarByte:: ; 3128 (0:3128) ld [wBuffer], a ld a, [hROMBank] push af diff --git a/home/map.asm b/home/map.asm index 015785c0..b6a89742 100644 --- a/home/map.asm +++ b/home/map.asm @@ -269,7 +269,7 @@ Function2112:: xor a ld [hTileAnimFrame], a callba Function1416d - call Functiondac + call LoadFontsExtra ret Function2128:: @@ -1938,7 +1938,7 @@ GetCoordTile:: ; 2b21 (0:2b21) inc hl .asm_2b41 ld a, [wd0c8] - call SwapBytes + call GetFarByte ret .asm_2b48 @@ -2104,7 +2104,7 @@ FadeToMenu:: ret CloseSubmenu:: - call Function3449 + call ClearBGPalettes call ReloadTilesetAndPalettes call UpdateSprites call Call_ExitMenu @@ -2112,7 +2112,7 @@ CloseSubmenu:: jr FinishExitMenu ExitAllMenus:: - call Function3449 + call ClearBGPalettes call Call_ExitMenu call ReloadTilesetAndPalettes call UpdateSprites @@ -2129,7 +2129,7 @@ ReturnToMapWithSpeechTextbox:: push af ld a, $1 ld [wRTCEnabled], a - call Function3449 + call ClearBGPalettes call ClearSprites call ReloadTilesetAndPalettes hlcoord 0, 12 @@ -2153,7 +2153,7 @@ ReloadTilesetAndPalettes:: ; 2c87 (0:2c87) call ClearSprites callba RefreshSprites call Functiond9e - call Functiondac + call LoadFontsExtra ld a, [hROMBank] push af ld a, [wMapGroup] @@ -2277,7 +2277,7 @@ GetAnyMapBlockdataBank:: ; 2d34 (0:2d34) ld de, $3 add hl, de ld a, c - call SwapBytes + call GetFarByte rst Bankswitch pop bc pop de diff --git a/home/map_objects.asm b/home/map_objects.asm index 3e67a217..aef1e3d0 100644 --- a/home/map_objects.asm +++ b/home/map_objects.asm @@ -451,7 +451,7 @@ GetInitialFacing:: add hl, de add hl, de ld a, BANK(SpriteMovementData) - call SwapBytes + call GetFarByte add a add a and $c @@ -48,12 +48,10 @@ PushOAM: PushOAMEnd INCLUDE "engine/map_objects.asm" +INCLUDE "engine/main_menu.asm" +INCLUDE "engine/title.asm" -MainMenu_: ; 5a4d IF DEF(GOLD) - dr $5a4d, $6545 -GameInit:: ; 6545 - dr $6545, $6551 ReanchorBGMap_NoOAMUpdate:: ; 6551 dr $6551, $65cb LoadFonts_NoOAMUpdate:: ; 65cb @@ -69,9 +67,6 @@ CheckNPCMovementPermissions: ; 6fa0 ENDC IF DEF(SILVER) - dr $5a4d, $650b -GameInit:: ; 650b - dr $650b, $6517 ReanchorBGMap_NoOAMUpdate:: ; 6517 dr $6517, $6591 LoadFonts_NoOAMUpdate:: ; 6591 @@ -90,7 +85,9 @@ SECTION "bank2", ROMX, BANK[$2] SwapTextboxPalettes:: dr $8000, $804f ScrollBGMapPalettes:: - dr $804f, $8653 + dr $804f, $861a +SpawnPlayer: + dr $861a, $8653 CopyDECoordsToMapObject: dr $8653, $86d7 CopyObjectStruct_:: @@ -104,7 +101,9 @@ Sine_e:: GetPredefPointer:: dr $8b3b, $8b5b PredefPointers:: - dr $8b5b, $9cfd + dr $8b5b, $91e5 +ApplyMonOrTrainerPals: + dr $91e5, $9cfd InitCGBPals:: ; 9cfd dr $9cfd, $bc3a @@ -146,14 +145,22 @@ ENDC SECTION "bank4", ROMX, BANK[$4] Function10000:: - dr $10000, $13e03 + dr $10000, $117f1 +InitializeStartDay_: + dr $117f1, $11934 +Function11934: + dr $11934, $11aad +NamingScreen: + dr $11aad, $13e03 SECTION "bank5", ROMX, BANK[$5] dr $14000, $14032 Function14032:: ; 14032 dr $14032, $14089 StartClock:: ; 14089 - dr $14089, $140ff + dr $14089, $140dc +ClockContinue: ; 140dc + dr $140dc, $140ff Function140ff:: ; 140ff dr $140ff, $1413c Function1413c:: ; 1413c @@ -173,7 +180,9 @@ Function14a18:: ; 14a18 Function14a2d:: ; 14a2d dr $14a2d, $14a44 Function14a44: ; 14a44 - dr $14a44, $15484 + dr $14a44, $14ef5 +TryLoadSaveFile: ; 14ef5 + dr $14ef5, $15484 RunMapSetupScript:: dr $15484, $15612 Function15612:: ; 15612 @@ -207,10 +216,18 @@ InitVerticalMenuCursor_:: InitScrollingMenu:: dr $244d7, $244f3 ScrollingMenu_:: - dr $244f3, $28000 + dr $244f3, $2692d +InitDecorations: ; 2692d + dr $2692d, $28000 SECTION "banka", ROMX, BANK[$a] - dr $28000, $2c000 + dr $28000, $29dff +Function29dff: + dr $29dff, $2a4bf +MysteryGift_CopyReceivedDecosToPC: + dr $2a4bf, $2a8e0 +JumpRoamMons: + dr $2a8e0, $2c000 SECTION "bankb", ROMX, BANK[$b] dr $2c000, $30000 @@ -242,7 +259,9 @@ SECTION "bank10", ROMX, BANK[$10] dr $40000, $44000 SECTION "bank11", ROMX, BANK[$11] - dr $44000, $48000 + dr $44000, $44870 +DeletePartyMonMail: + dr $44870, $48000 SECTION "bank12", ROMX, BANK[$12] dr $48000, $4c000 @@ -303,7 +322,13 @@ SECTION "bank22", ROMX, BANK[$22] dr $88000, $8c000 SECTION "bank23", ROMX, BANK[$23] - dr $8c000, $8c356 + dr $8c000, $8c17a + +ResetClock_: + dr $8c17a, $8c310 + +DeleteSaveData_: + dr $8c310, $8c356 UpdateTimeOfDayPal:: ; 8c356 dr $8c356, $8c366 @@ -321,7 +346,13 @@ Function8c3ab:: ; 8c3ab dr $8c3ab, $8c3e9 Function8c3e9:: ; 8c3e9 - dr $8c3e9, $8d1f7 + dr $8c3e9, $8d174 + +ClearAnimatedObjectBuffer: + dr $8d174, $8d18a + +AnimatedObjects_PlayFrame: + dr $8d18a, $8d1f7 InitAnimatedObjectStruct_:: ; 8d1f7 dr $8d1f7, $8d332 @@ -330,14 +361,21 @@ ReinitAnimatedObjectFrame_:: ; 8d332 dr $8d332, $90000 SECTION "bank24", ROMX, BANK[$24] - dr $90000, $94000 + dr $90000, $90641 +InitClock: + dr $90641, $90b0f +PrintHour: + dr $90b0f, $94000 SECTION "bank25", ROMX, BANK[$25] MapTriggers:: ; 94000 dr $94000, $940ed MapGroupPointers:: - dr $940ed, $96b89 + dr $940ed, $965f9 + +OverworldLoop:: + dr $965f9, $96b89 EnableScriptMode:: ; 96b89 dr $96b89, $96b91 @@ -352,7 +390,23 @@ Function97c2a:: ; 97c2a dr $97c2a, $98000 SECTION "bank26", ROMX, BANK[$26] - dr $98000, $9c000 +IF DEF(GOLD) +TitleScreenGFX1: + dr $98000, $98476 +TitleScreenGFX2: + dr $98476, $98616 +GSIntroTilemap: + dr $98616, $9c000 +ENDC + +IF DEF(SILVER) +TitleScreenGFX1: + dr $98000, $98498 +TitleScreenGFX2: + dr $98498, $9862a +GSIntroTilemap: + dr $9862a, $9c000 +ENDC SECTION "bank27", ROMX, BANK[$27] dr $9c000, $a0000 @@ -382,6 +436,7 @@ SECTION "bank2f", ROMX, BANK[$2f] dr $bc000, $c0000 SECTION "bank30", ROMX, BANK[$30] +PlayerIcon: dr $c0000, $c4000 SECTION "bank31", ROMX, BANK[$31] @@ -411,7 +466,32 @@ SECTION "bank38", ROMX, BANK[$38] dr $e0000, $e4000 SECTION "bank39", ROMX, BANK[$39] - dr $e4000, $e8000 +TitleScreenGFX5: + dr $e4000, $e41e0 +TitleScreenGFX3: +IF DEF(GOLD) + dr $e41e0, $e4260 +TitleScreenGFX4: + dr $e4260, $e4608 +OptionsMenu: + dr $e4608, $e49a8 +Copyright_GFPresents: + dr $e49a8, $e4cb1 +GoldSilverIntro: + dr $e4cb1, $e8000 +ENDC + +IF DEF(SILVER) + dr $e41e0, $e4220 +TitleScreenGFX4: + dr $e4220, $e4450 +OptionsMenu: + dr $e4450, $e47f0 +Copyright_GFPresents: + dr $e47f0, $e4af9 +GoldSilverIntro: + dr $e4af9, $e8000 +ENDC SECTION "bank3a", ROMX, BANK[$3a] DisableAudio_:: @@ -449,7 +529,11 @@ Functionf8032:: dr $f8032, $fb4be TileCollisionTable:: - dr $fb4be, $fc000 + dr $fb4be, $fb5be +Shrink1Pic: + dr $fb5be, $fb64e +Shrink2Pic: + dr $fb64e, $fc000 SECTION "bank3f", ROMX, BANK[$3f] dr $fc000, $100000 @@ -567,7 +651,31 @@ SECTION "bank64", ROMX, BANK[$64] dr $190000, $194000 SECTION "bank65", ROMX, BANK[$65] - dr $194000, $195b84 + dr $194000, $195610 + +ClockTimeUnknownText_:: ; 195610 + dr $195610, $195624 + +OakText1_:: + dr $195624, $195693 + +OakText2_:: + dr $195693, $1956d1 + +OakText3_:: ; 1956d1 + dr $1956d1, $1956d3 + +OakText4_:: + dr $1956d3, $19573f + +OakText5_:: + dr $19573f, $1957b7 + +OakText6_:: + dr $1957b7, $1957dd + +OakText7_:: + dr $1957dd, $195b84 ObjectEventText_:: ; 195b84 dr $195b84, $195b93 @@ -87,10 +87,8 @@ wMusicFade:: ; c1a7 wMusicFadeCount:: ; c1a8 ds 1 wMusicFadeID:: -wc1a9:: wMusicFadeIDLo:: ; c1a9 ds 1 -wc1aa:: wMusicFadeIDHi:: ; c1aa ds 1 ds 5 @@ -2386,6 +2384,8 @@ wd000:: ds 1 ; d000 wd001:: ds 1 ; d001 wd002:: ds 1 ; d002 wd003:: ds 1 ; d003 + +wCurPartySpecies:: wd004:: ds 1 ; d004 wd005:: ds 1 ; d005 wd006:: ds 1 ; d006 @@ -2393,54 +2393,9 @@ wd007:: ds 1 ; d007 wd008:: ds 1 ; d008 wd009:: ds 1 ; d009 wd00a:: ds 1 ; d00a -wd00b:: ds 1 ; d00b -wd00c:: ds 1 ; d00c -wd00d:: ds 1 ; d00d -wd00e:: ds 1 ; d00e -wd00f:: ds 1 ; d00f -wd010:: ds 1 ; d010 -wd011:: ds 1 ; d011 -wd012:: ds 1 ; d012 -wd013:: ds 1 ; d013 -wd014:: ds 1 ; d014 -wd015:: ds 1 ; d015 -wd016:: ds 1 ; d016 -wd017:: ds 1 ; d017 -wd018:: ds 1 ; d018 -wd019:: ds 1 ; d019 -wd01a:: ds 1 ; d01a -wd01b:: ds 1 ; d01b -wd01c:: ds 1 ; d01c -wd01d:: ds 1 ; d01d -wd01e:: ds 1 ; d01e -wd01f:: ds 1 ; d01f -wd020:: ds 1 ; d020 -wd021:: ds 1 ; d021 -wd022:: ds 1 ; d022 -wd023:: ds 1 ; d023 -wd024:: ds 1 ; d024 -wd025:: ds 1 ; d025 -wd026:: ds 1 ; d026 -wd027:: ds 1 ; d027 -wd028:: ds 1 ; d028 -wd029:: ds 1 ; d029 -wd02a:: ds 1 ; d02a -wd02b:: ds 1 ; d02b -wd02c:: ds 1 ; d02c -wd02d:: ds 1 ; d02d -wd02e:: ds 1 ; d02e -wd02f:: ds 1 ; d02f -wd030:: ds 1 ; d030 -wd031:: ds 1 ; d031 -wd032:: ds 1 ; d032 -wd033:: ds 1 ; d033 -wd034:: ds 1 ; d034 -wd035:: ds 1 ; d035 -wd036:: ds 1 ; d036 -wd037:: ds 1 ; d037 -wd038:: ds 1 ; d038 -wd039:: ds 1 ; d039 -wd03a:: ds 1 ; d03a + +wTempMon:: party_struct wTempMon ; d00b + wd03b:: ds 1 ; d03b wd03c:: ds 1 ; d03c wd03d:: ds 1 ; d03d @@ -2739,6 +2694,8 @@ wd195:: ds 1 ; d195 wd196:: ds 1 ; d196 wd197:: ds 1 ; d197 wd198:: ds 1 ; d198 + +Options:: wd199:: ds 1 ; d199 wd19a:: ds 1 ; d19a wd19b:: ds 1 ; d19b @@ -2747,8 +2704,10 @@ wd19d:: ds 1 ; d19d wd19e:: ds 1 ; d19e wd19f:: ds 1 ; d19f wd1a0:: ds 1 ; d1a0 -wd1a1:: ds 1 ; d1a1 -wd1a2:: ds 1 ; d1a2 + +SECTION "Game Data", WRAMX, BANK[1] +wGameData:: +wPlayerID:: dw ; d1a1 wPlayersName:: ds NAME_LENGTH ; d1a3 wMomsName:: ds NAME_LENGTH ; d1ae @@ -2756,7 +2715,7 @@ wRivalsName:: ds NAME_LENGTH ; d1b9 wRedsName:: ds NAME_LENGTH ; d1c4 wGreensName:: ds NAME_LENGTH ; d1cf -wd1da:: ds 1 ; d1da +wSavedAtLeastOnce:: ds 1 ; d1da wd1db:: ds 1 ; d1db wd1dc:: ds 1 ; d1dc wd1dd:: ds 1 ; d1dd @@ -2936,17 +2895,16 @@ wd56f:: ds 1 ; d56f wd570:: ds 1 ; d570 wStatusFlags:: ds 1 ; d571 wd572:: ds 1 ; d572 -wd573:: ds 1 ; d573 -wd574:: ds 1 ; d574 -wd575:: ds 1 ; d575 +wMoney:: ds 3 ; d573 wd576:: ds 1 ; d576 wd577:: ds 1 ; d577 wd578:: ds 1 ; d578 wd579:: ds 1 ; d579 -wd57a:: ds 1 ; d57a -wd57b:: ds 1 ; d57b -wd57c:: ds 1 ; d57c -wd57d:: ds 1 ; d57d + +wCoins:: dw ; d57a +wJohtoBadges:: ds 1 ; d57c +wKantoBadges:: ds 1 ; d57d + wd57e:: ds 1 ; d57e wd57f:: ds 1 ; d57f wd580:: ds 1 ; d580 @@ -3695,9 +3653,9 @@ wd95f:: ds 1 ; d95f wd960:: ds 1 ; d960 wd961:: ds 1 ; d961 wd962:: ds 1 ; d962 -wd963:: ds 1 ; d963 -wd964:: ds 1 ; d964 -wd965:: ds 1 ; d965 + +wMomItemTriggerBalance:: ds 3 ; d963 + wd966:: ds 1 ; d966 wd967:: ds 1 ; d967 wd968:: ds 1 ; d968 @@ -4281,6 +4239,8 @@ wOTPartyMon4Nickname:: ds PKMN_NAME_LENGTH ; dee0 wOTPartyMon5Nickname:: ds PKMN_NAME_LENGTH ; deeb wOTPartyMon6Nickname:: ds PKMN_NAME_LENGTH ; def6 +wGameDataEnd:: + SECTION "Stack", WRAMX[$dfff], BANK[1] wStackTop:: |