diff options
Diffstat (limited to 'engine/menu')
-rw-r--r-- | engine/menu/debug_menu.asm | 109 | ||||
-rw-r--r-- | engine/menu/main_menu.asm | 339 |
2 files changed, 247 insertions, 201 deletions
diff --git a/engine/menu/debug_menu.asm b/engine/menu/debug_menu.asm new file mode 100644 index 0000000..be46a00 --- /dev/null +++ b/engine/menu/debug_menu.asm @@ -0,0 +1,109 @@ +INCLUDE "constants.asm" + +SECTION "Debug Menu", ROMX[$4031], BANK[$01] + +DebugMenu:: ; $4031 + call ClearTileMap + call ClearWindowData + call LoadFont + call LoadFontsBattleExtra + call ClearSprites + call GetMemSGBLayout + xor a + ld [wWhichIndexSet], a + ld hl, DebugMenuHeader + call LoadMenuHeader + call OpenMenu + call CloseWindow + jp c, TitleSequenceStart + ld a, $41 + ld [wce5f], a + ld a, [wMenuSelection] + ld hl, DebugJumpTable + jp CallJumptable + +DebugJumpTable:: ; 4064 + dw DebugMenuOptionFight + dw DebugMenuOptionField + dw Function094c ; sound test + dw DebugMenuOptionSubGames + dw DebugMenuOptionMonsterTest + dw DebugMenuOptionName + +DebugMenuHeader: ; 4070 + db MENU_BACKUP_TILES ; flags + menu_coords 05, 02, SCREEN_WIDTH - 7, SCREEN_HEIGHT - 1 + dw .MenuData + db 01 ; default option + +.MenuData: ; 4078 + db $A0 + db 0 ; items + dw DebugMenuItems + db $8A, $1F + dw .Strings + +.Strings + db "ファイト@" + db "フィールド@" + db "サウンド@" + db "サブゲーム@" + db "モンスター@" + db "なまえ@" + +DebugMenuItems: + db 06 + db 00 + db 01 + db 02 + db 03 + db 04 + db 05 + db -1 + +DebugMenuOptionField:: ; 40A8 + ld hl, wDebugFlags + set DEBUG_FIELD_F, [hl] ; set debug mode + jp StartNewGame + +DebugMenuOptionFight:: ; 40B0 + ld hl, wDebugFlags + set DEBUG_BATTLE_F, [hl] + ld a, $54 + call Predef + ld hl, wDebugFlags + res DEBUG_BATTLE_F, [hl] + ret + +DebugMenuOptionSubGames:: ; 40C0 + callab CallSubGameMenu + jp DebugMenu + +DebugMenuOptionMonsterTest:: ; 40CB + ld hl, wPokedexOwned + ld de, wPokedexSeen + ld b, $1F + ld a, $FF +.loop + ld [hl+], a + ld [de], a + inc de + dec b + jr nz, .loop + ld a, $03 + ld [hl], a + ld [de], a + callab MonsterTest + ld a, $e4 + ldh [rBGP], a + +Function40eb:: + jp DebugMenu + +DebugMenuOptionName:: ; 40EE + callab OpenPokegear + ld a, $e4 + ldh [rBGP], a + jp DebugMenu + +; 40FD
\ No newline at end of file diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm index 27e8f1d..432570a 100644 --- a/engine/menu/main_menu.asm +++ b/engine/menu/main_menu.asm @@ -1,45 +1,45 @@ INCLUDE "constants.asm" -SECTION "Main Menu Definition", ROMX[$53cc], BANK[$01] +SECTION "Main Menu", ROMX[$53CC], BANK[$01] -MainMenu: - ld hl, wd4a9 +MainMenu:: ; 01:53CC + ld hl, wd4a9 res 0, [hl] call ClearTileMap call GetMemSGBLayout call LoadFontExtra call LoadFont call ClearWindowData - call $5388 - ld hl, $ce60 + call Function5388 + ld hl, wce60 bit 0, [hl] - jr nz, .skip1 - xor a ; new game - jr .next1 -.skip1 - ld a, 1 ; continue -.next1 - ld a, [$ffa3] - and $83 - cp $83 - jr nz, .skip2 - ld a, 3 ; play pokemon, set time - jr .next2 -.skip2 - ld a, 2 ; play pokemon -.next2 - ld [$cbf7],a + jr nz, .setMenuContinue + xor a + jr .skip +.setMenuContinue + ld a, M_CONTINUE +.skip + ldh a, [hJoyState] + and D_DOWN | B_BUTTON | A_BUTTON + cp D_DOWN | B_BUTTON | A_BUTTON + jr nz, .setMenuPlay + ld a, M_SET_TIME + jr .triggerMenu +.setMenuPlay + ld a, M_PLAY_GAME +.triggerMenu + ld [wWhichIndexSet], a ld hl, MainMenuHeader call LoadMenuHeader call OpenMenu call CloseWindow - jp c, $5dae + jp c, TitleSequenceStart ld hl, MainMenuJumptable - ld a, [$cbf5] + ld a, [wMenuSelection] jp CallJumptable -MainMenuHeader: - db $40 +MainMenuHeader: ; 01:5418 + db MENU_BACKUP_TILES menu_coords 0, 0, 13, 7 dw .MenuData db 1 ; default option @@ -59,17 +59,11 @@ MainMenuHeader: db "じかんセット@" MainMenuJumptable: ; 01:5457 - dw $547c - dw NewGame - dw $5cf3 - dw NewGame - dw $5473 - -CONTINUE EQU 0 -NEW_GAME EQU 1 -OPTION EQU 2 -PLAY_POKEMON EQU 3 -SET_TIME EQU 4 + dw MainMenuOptionContinue + dw StartNewGame + dw MenuCallSettings + dw StartNewGame + dw MainMenuOptionSetTime MainMenuItems: @@ -99,176 +93,119 @@ PlayPokemonSetTimeMenu: db SET_TIME db -1 -SECTION "Oak Speech", ROMX[$555c], BANK[$01] +MainMenuOptionSetTime:: ; 5473 + callab SetTime + ret + +MainMenuOptionContinue:: ;547C + callab Function14624 + call DisplayContinueGameInfo +.loop + call ClearJoypad + call GetJoypad + ldh a, [hJoyState] + bit A_BUTTON_F, a + jr nz, .escape + bit B_BUTTON_F, a + jp nz, MainMenu + jr .loop +.escape + call Function5397 + call Function53b0 + ld hl, wDebugFlags + res DEBUG_FIELD_F, [hl] + set CONTINUED_F, [hl] + set 3, [hl] + ldh a, [hJoyState] + bit SELECT_F, a + jr z, .skip + set 1, [hl] +.skip + call ClearBGPalettes + call ClearTileMap + ld c, $0A + call DelayFrames + jp OverworldStart + +DisplayContinueGameInfo:: ; 54BF + xor a + ldh [hBGMapMode], a + hlcoord 4, 7 + ld b, $08 + ld c, $0D + call DrawTextBox + hlcoord 5, 9 + ld de, PlayerInfoText + call PlaceString + hlcoord 13, 9 + ld de, wPlayerName + call PlaceString + hlcoord 14, 11 + call PrintNumBadges + hlcoord 13, 13 + call PrintNumOwnedMons + hlcoord 12, 15 + call PrintPlayTime + ld a, $01 + ldh [hBGMapMode], a + ld c, $1E + call DelayFrames + ret -NewGame: - ld de, 0 +PrintNumBadges:: ;54FA + push hl + ld hl, wd163 ; badges? + ld b, $01 + call CountSetBits + pop hl + ld de, wCountSetBitsResult + ld bc, $0102 ; flags and constants for this? 1 byte source, 2 digit display + jp PrintNumber + +PrintNumOwnedMons:: ; 550D + push hl + ld hl, wPokedexOwned + ld b, $20 ; flag_array NUM_POKEMON? + call CountSetBits + pop hl + ld de, wCountSetBitsResult + ld bc, $0103 ; 1 byte, 3 digit + jp PrintNumber + +PrintPlayTime:: ; 5520 + ld de, hRTCHours + ld bc, $0103 ; 1 byte, 3 digit + call PrintNumber + ld [hl], ":" + inc hl + ld de, hRTCMinutes + ld bc, $8102 ; PRINTNUM_LEADINGZEROS, 1 byte, 2 digit + jp PrintNumber + +PlayerInfoText: + db "しゅじんこう" + next "もっているバッジ こ" + next "#ずかん ひき" + next "プレイじかん" + text_end + +StartNewGame:: ; 555C + ld de, MUSIC_NONE call PlayMusic - ld de, 3 + ld de, MUSIC_OAK_INTRO call PlayMusic call LoadFontExtra xor a - ld [$ffde], a - ld a, 1 - ld hl, $52f9 - call FarCall_hl + ldh [hBGMapMode], a + callba Function52f9 call ClearTileMap call ClearWindowData xor a - ld [$ffe8], a - ld a, [wce63] - bit 1, a - jp z, .OakSpeechPlayPokemon - call Function5715 - jp .PlayerShrink - -.OakSpeechPlayPokemon - ld de, OakPic - lb bc, BANK(OakPic), 0 - call $5d27 - call $5cf7 - ld hl, $587b - call PrintText - call RotateThreePalettesRight - call ClearTileMap - ld de, ProtagonistPic - lb bc, BANK(ProtagonistPic), 0 - call $5d27 - call $5d0e - ld a, $d0 - ld [$ff48], a - call $5849 - jp .PlayerShrink - -.OakSpeechNewGame - ld de, OakPic - lb bc, BANK(OakPic), 0 - call $5d27 - call $5cf7 - ld hl, $5956 - call PrintText - call RotateThreePalettesRight - call ClearTileMap - ld a, DEX_YADOKING - ld [$cb5b], a - ld [$cd78], a - call GetMonHeader - ld hl, $c2f6 - ld hl, $c2f6 - call PrepMonFrontpic - call $5d0e - ld hl, $599f - call PrintText - ld a, DEX_YADOKING - call PlayCry - ld hl, $59e8 - call PrintText - call RotateThreePalettesRight - call ClearTileMap - ld de, ProtagonistPic - lb bc, BANK(ProtagonistPic), 0 - call $5d27 - call $5d0e - ld hl, $5a35 - call PrintText - call $5b25 ; naming screen - call RotateThreePalettesRight - call ClearTileMap - ld de, RivalPic - lb bc, BANK(RivalPic), 0 - call $5d27 - call $5cf7 - ld hl, $5a52 - call PrintText - call $5ba9 ; naming screen - call RotateThreePalettesRight - call ClearTileMap - ld de, OakPic - lb bc, BANK(OakPic), 0 - call $5d27 - call $5cf7 - ld hl, $5a8f - call PrintText - ld a, $24 - ld hl, $4000 - call FarCall_hl - call Function04ac - call RotateThreePalettesRight - call ClearTileMap - ld de, ProtagonistPic - lb bc, BANK(ProtagonistPic), 0 - call $5d27 - call RotateThreePalettesLeft - ld hl, $5ac2 - call PrintText - ld a, [$ff98] - push af - ld a, $20 - ld [$c1a5], a - ld de, 0 - ld a, e - ld [$c1a7], a - ld a, d - ld [$c1a8], a - ld de, $b - call PlaySFX - pop af - call Bankswitch - ld c, 4 - call DelayFrames -.PlayerShrink - ld de, $4743 - ld bc, $400 - call $5d27 - ld c, 4 - call DelayFrames - ld de, $479d - ld bc, $400 - call $5d27 - ld c, 20 - call DelayFrames - ld hl, $c30a - ld b, 7 - ld c, 7 - call ClearBox - ld c, 20 - call DelayFrames - call $5d5d - call LoadFontExtra - ld c, 50 - call DelayFrames - call RotateThreePalettesRight - call ClearTileMap - call Function0502 - ld a, 0 - ld [$d638], a - ld [$d637], a - call Function56e8 - ld hl, wce63 - bit 2, [hl] - call z, Function15b5 - ld hl, wd4a9 - set 0, [hl] - jp Function2a85 - -Function56e8: - ld a, 4 - ld [$d65e], a - ld a, $f2 - ld [$ff9a], a - ld hl, $ce63 - bit 2, [hl] - ret nz - ld a, $f1 - ld [$ff9a], a - ld a, 0 - ld [$cc39], a - ld hl, .Data - ld de, $d656 - ld bc, 8 - call CopyBytes - ret -.Data - db $01, $09, $33, $c6, $04, $04, $00, $01 - -Function5715: + ldh [hMapAnims], a + ld a, [wDebugFlags] + bit DEBUG_FIELD_F, a + jp z, DemoStart + call DebugSetUpPlayer + jp IntroCleanup + +; 558D |