diff options
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 216 |
1 files changed, 113 insertions, 103 deletions
@@ -223,21 +223,21 @@ PointerTable_10a9b: ; 0x10a9b padded_dab Func_20bae ; STAGE_BLUE_FIELD_TOP padded_dab Func_20bae ; STAGE_BLUE_FIELD_BOTTOM -Func_10ab3: ; 0x10ab3 +StartEvolutionMode: ; 0x10ab3 ld a, [wInSpecialMode] and a ret nz ld a, [wCurrentStage] rst JumpTable ; calls JumpToFuncInTable -CallTable_10abc: ; 0x10abc - dw Func_10ebb ; STAGE_RED_FIELD_TOP - dw Func_10ebb ; STAGE_RED_FIELD_BOTTOM - dw Func_11054 - dw Func_11054 - dw Func_11061 ; STAGE_BLUE_FIELD_TOP - dw Func_11061 ; STAGE_BLUE_FIELD_BOTTOM - -Func_10ac8: ; 0x10ac8 +StartEvolutionMode_CallTable: ; 0x10abc + dw StartEvolutionMode_RedField ; STAGE_RED_FIELD_TOP + dw StartEvolutionMode_RedField ; STAGE_RED_FIELD_BOTTOM + dw StartEvolutionMode_UnusedField + dw StartEvolutionMode_UnusedField + dw StartEvolutionMode_BlueField ; STAGE_BLUE_FIELD_TOP + dw StartEvolutionMode_BlueField ; STAGE_BLUE_FIELD_BOTTOM + +ConcludeEvolutionMode: ; 0x10ac8 xor a ld [wd5ca], a call FillBottomMessageBufferWithBlackTile @@ -252,13 +252,13 @@ Func_10ac8: ; 0x10ac8 callba StopTimer ld a, [wCurrentStage] rst JumpTable ; calls JumpToFuncInTable -CallTable_10af3: ; 0x10af3 - dw Func_10fe3 ; STAGE_RED_FIELD_TOP - dw Func_10fe3 ; STAGE_RED_FIELD_BOTTOM - dw Func_11060 - dw Func_11060 - dw Func_11195 ; STAGE_BLUE_FIELD_TOP - dw Func_11195 ; STAGE_BLUE_FIELD_TOP +ConcludeEvolutionMode_CallTable: ; 0x10af3 + dw ConcludeEvolutionMode_RedField ; STAGE_RED_FIELD_TOP + dw ConcludeEvolutionMode_RedField ; STAGE_RED_FIELD_BOTTOM + dw DoNothing_11060 + dw DoNothing_11060 + dw ConcludeEvolutionMode_BlueField ; STAGE_BLUE_FIELD_TOP + dw ConcludeEvolutionMode_BlueField ; STAGE_BLUE_FIELD_TOP Func_10aff: ; 0x10aff ld a, [wCurrentStage] @@ -317,21 +317,22 @@ Func_10b3f: ; 0x10b3f call LoadTextHeader ret -Func_10b59: ; 0x10b59 +InitEvolutionSelectionMenu: ; 0x10b59 +; Initializes the list menu, which the player uses to select which pokemon to evolve. xor a - ld [wd4aa], a + ld [wDrawBottomMessageBox], a ld hl, wBottomMessageText ld a, $81 ld b, $30 -.asm_10b64 - ld [hli], a +.clearLoop + ld [hli], a ; load spaces into bottom text. repeat 192 times ld [hli], a ld [hli], a ld [hli], a dec b - jr nz, .asm_10b64 + jr nz, .clearLoop ld hl, wPartyMons - call Func_10b8e + call LoadMonNamesIntoEvolutionSelectionList ld a, BANK(InGameMenuSymbolsGfx) ld hl, InGameMenuSymbolsGfx + $50 ld de, vTilesSH tile $08 @@ -344,33 +345,38 @@ Func_10b59: ; 0x10b59 call LoadVRAMData ret -Func_10b8e: ; 0x10b8e +LoadMonNamesIntoEvolutionSelectionList: ; 0x10b8e +; Loads 6 pokemon names into the list that allows the player to select which pokemon to evolve. +; Input: hl = pointer to a list of pokemon ids. (an offset of wPartyMons) ld a, [wNumPartyMons] ld c, $0 ld b, a -.asm_10b94 +.loop ld a, [hli] - call Func_10ba2 + call LoadMonNameIntoEvolutionSelectionList inc c ld a, c cp $6 - jr z, .asm_10ba1 + jr z, .done dec b - jr nz, .asm_10b94 -.asm_10ba1 + jr nz, .loop +.done ret -Func_10ba2: ; 0x10ba2 +LoadMonNameIntoEvolutionSelectionList: ; 0x10ba2 +; Loads a single pokemon name into the list of pokemon to evolve. +; Input: c = index of the list +; a = pokemon id push bc push hl - swap c + swap c ;c* 32, does wird things if c starts >15 sla c ld b, $0 ld hl, wBottomMessageText - add hl, bc + add hl, bc ;goes down text as many times as new c ld d, h ld e, l - ld c, a + ld c, a ;c now equals paerty mon, HL stored in de ld b, $0 sla c rl b @@ -379,8 +385,8 @@ Func_10ba2: ; 0x10ba2 sla c rl b sla c - rl b - ld hl, PokemonNames + rl b ;multiplies party mon by 16, then jumps to correct name in the table + ld hl, PokemonNames ;names are 16 chars long add hl, bc ld a, $81 ld [de], a @@ -392,69 +398,72 @@ Func_10ba2: ; 0x10ba2 ld [de], a inc de ld a, $81 - ld [de], a + ld [de], a ; loaded 4 spaces into de inc de - call Func_3125 -.asm_10bda + call LoadMonNameIntoBottomMessageBufferList +.loadBlankCharacterLoop ld a, e and $1f cp $14 - jr nc, .asm_10be7 + jr nc, .done ld a, $81 ld [de], a inc de - jr .asm_10bda + jr .loadBlankCharacterLoop -.asm_10be7 +.done pop hl pop bc ret -Func_10bea: ; 0x10bea +SelectPokemonToEvolveMenu: ; 0x10bea +; Drivers the menu that allows the player to select a pokemon to evolve. xor a ld [wCurSelectedPartyMon], a ld [wCurSelectedPartyMonScrollOffset], a ld [wPartySelectionCursorCounter], a -.asm_10bf4 - call Func_10c0c - call Func_b2e - call Func_10c38 +.loop + call MoveEvolutionSelectionCursor + call ClearPersistentJoypadStates + call UpdateEvolutionSelectionList rst AdvanceFrame - ld a, [wd809] - bit 0, a - jr z, .asm_10bf4 + ld a, [wNewlyPressedButtonsPersistent] + bit BIT_A_BUTTON, a + jr z, .loop lb de, $00, $01 call PlaySoundEffect ret -Func_10c0c: ; 0x10c0c - ld a, [wd80a] +MoveEvolutionSelectionCursor: ; 0x10c0c + ld a, [wPressedButtonsPersistent] ld b, a ld a, [wNumPartyMons] ld c, a ld a, [wCurSelectedPartyMon] - bit 6, b - jr z, .asm_10c28 + bit BIT_D_UP, b + jr z, .didntPressUp and a ret z + ; move the cursor up dec a ld [wCurSelectedPartyMon], a lb de, $00, $03 call PlaySoundEffect ret -.asm_10c28 - bit 7, b +.didntPressUp + bit BIT_D_DOWN, b ret z inc a cp c ret z + ; move the cursor down ld [wCurSelectedPartyMon], a lb de, $00, $03 call PlaySoundEffect ret -Func_10c38: ; 0x10c38 +UpdateEvolutionSelectionList: ; 0x10c38 ld a, [wCurSelectedPartyMon] ld hl, wCurSelectedPartyMonScrollOffset sub [hl] @@ -476,7 +485,7 @@ Func_10c38: ; 0x10c38 ld b, $0 ld hl, wPartyMons add hl, bc - call Func_10b8e + call LoadMonNamesIntoEvolutionSelectionList ld a, [hJoypadState] and a ld a, [wPartySelectionCursorCounter] @@ -519,7 +528,7 @@ Func_10c38: ; 0x10c38 call LoadVRAMData ret -Func_10ca5: ; 0x10ca5 +PlaceEvolutionInParty: ; 0x10ca5 ld a, [wCurSelectedPartyMon] ld c, a ld b, $0 @@ -531,16 +540,16 @@ Func_10ca5: ; 0x10ca5 ld [hl], a ret -Func_10cb7: ; 0x10cb7 +SelectPokemonToEvolve: ; 0x10cb7 call FillBottomMessageBufferWithBlackTile - call Func_10b59 + call InitEvolutionSelectionMenu ld a, $60 ld [hWY], a dec a ld [hLYC], a ld a, $fd ld [hLCDCMask], a - call Func_10bea + call SelectPokemonToEvolveMenu ld a, $86 ld [hWY], a ld a, $83 @@ -550,7 +559,7 @@ Func_10cb7: ; 0x10cb7 ld [hLCDCMask], a ld a, [hGameBoyColorFlag] and a - jr nz, .asm_10cee + jr nz, .gameboyColor ld a, BANK(StageRedFieldTopStatusBarSymbolsGfx_GameBoy) ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoy + $80 ld de, vTilesSH tile $08 @@ -558,7 +567,7 @@ Func_10cb7: ; 0x10cb7 call LoadVRAMData jr .asm_10cfc -.asm_10cee +.gameboyColor ld a, BANK(StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor) ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor + $80 ld de, vTilesSH tile $08 @@ -567,7 +576,7 @@ Func_10cb7: ; 0x10cb7 .asm_10cfc call FillBottomMessageBufferWithBlackTile ld a, SPECIAL_MODE_CATCHEM - ld [wd4aa], a + ld [wDrawBottomMessageBox], a ld [wInSpecialMode], a ld [wSpecialMode], a xor a @@ -581,7 +590,7 @@ Func_10cb7: ; 0x10cb7 ld [wCurrentCatchEmMon], a ret -Func_10d1d: ; 0x10d1d +InitEvolutionModeForMon: ; 0x10d1d ld hl, wd586 ld b, $18 .asm_10d22 @@ -809,12 +818,12 @@ Func_10e8b: ; 0x10e8b call LoadTextHeader ret -Func_10ebb: ; 0x10ebb +StartEvolutionMode_RedField: ; 0x10ebb ld a, [wNumPartyMons] and a ret z - call Func_10cb7 - call Func_10d1d + call SelectPokemonToEvolve + call InitEvolutionModeForMon ld a, [wd555] sub $2 ld c, a @@ -826,12 +835,12 @@ Func_10ebb: ; 0x10ebb ld l, a ld de, wIndicatorStates ld b, $13 -.asm_10eda +.loop ld a, [hli] ld [de], a inc de dec b - jr nz, .asm_10eda + jr nz, .loop xor a ld [wLeftAlleyCount], a call Func_107b0 @@ -897,8 +906,8 @@ IndicatorStates_10fbd: ; 0x10fbd IndicatorStates_10fd0: ; 0x10fd0 db $00, $00, $80, $80, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00 -Func_10fe3: ; 0x10fe3 - call Func_107a5 +ConcludeEvolutionMode_RedField: ; 0x10fe3 + call ResetIndicatorStates call Func_107c2 call Func_107c8 call Func_107e9 @@ -932,23 +941,23 @@ Func_10fe3: ; 0x10fe3 call Func_10aa ret -Func_11054: ; 0x11054 +StartEvolutionMode_UnusedField: ; 0x11054 ld a, [wNumPartyMons] and a ret z - call Func_10cb7 - call Func_10d1d + call SelectPokemonToEvolve + call InitEvolutionModeForMon ret -Func_11060: ; 0x11060 +DoNothing_11060: ; 0x11060 ret -Func_11061: ; 0x11061 +StartEvolutionMode_BlueField: ; 0x11061 ld a, [wNumPartyMons] and a ret z - call Func_10cb7 - call Func_10d1d + call SelectPokemonToEvolve + call InitEvolutionModeForMon ld a, $1 ld [wd643], a ld a, [wd555] @@ -1033,10 +1042,10 @@ IndicatorStates_1116f: ; 0x1116f IndicatorStates_11182: ; 0x11182 db $80, $00, $80, $80, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00 -Func_11195: ; 0x11195 +ConcludeEvolutionMode_BlueField: ; 0x11195 xor a ld [wd643], a - call Func_107a5 + call ResetIndicatorStates call Func_107c2 callba Func_1f2ff ld a, [wCurrentStage] @@ -1127,6 +1136,7 @@ INCLUDE "data/mon_names.asm" INCLUDE "data/mon_initial_indicator_states.asm" Data_1298b: ; 0x1298b +; This has to do with which indicators will need to be hit to evolve the pokemon. db $01 ; BULBASAUR db $02 ; IVYSAUR db $03 ; VENUSAUR @@ -1579,7 +1589,7 @@ Func_311b4: ; 0x311b4 ret Func_31234: ; 0x31234 - callba Func_107a5 + callba ResetIndicatorStates callba Func_107c2 callba Func_107c8 callba Func_107e9 @@ -1756,7 +1766,7 @@ Func_31326: ; 0x31326 ret Func_313c3: ; 0x313c3 - callba Func_107a5 + callba ResetIndicatorStates callba Func_107c2 callba Func_1f2ff ld a, $0 @@ -2218,7 +2228,7 @@ Data_3809a: Data_380a6: db $59, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 @@ -2397,7 +2407,7 @@ INCLUDE "data/mon_gfx/mon_billboard_pics_1.asm" StageRedFieldTopStatusBarSymbolsGfx_GameBoy: ; 0x63000 INCBIN "gfx/stage/red_top/status_bar_symbols_gameboy.2bpp" - + INCBIN "gfx/unused_pocket_monster.2bpp" SECTION "bank18.2", ROMX @@ -2418,7 +2428,7 @@ INCLUDE "data/mon_gfx/mon_billboard_pics_3.asm" StageBlueFieldTopStatusBarSymbolsGfx_GameBoy: ; 0x6b000 INCBIN "gfx/stage/blue_top/status_bar_symbols_gameboy.2bpp" - + INCBIN "gfx/unused_pocket_monster.2bpp" ds $20 ; free space @@ -2636,7 +2646,7 @@ PikachuSaverGfx: ; 0xa8720 BallCaptureSmokeGfx: INCBIN "gfx/stage/ball_capture_smoke.interleave.2bpp" - + SECTION "bank2a.2", ROMX PinballGreatballGfx: ; 0xa8a00 @@ -2679,7 +2689,7 @@ PokedexInitialGfx: StageBlueFieldBottomCollisionMasks: ; 0xaf000 INCBIN "data/collision/masks/blue_stage_bottom.masks" - + SECTION "bank2b.2", ROMX DiglettBonusDugtrio3Gfx: ; 0xaf900 @@ -2847,7 +2857,7 @@ StageRedFieldBottomTilemap2_GameBoyColor: ; 0xbec00 StageBlueFieldTopTilemap_GameBoy: ; 0xbf000 INCBIN "gfx/tilemaps/stage_blue_field_top_gameboy.map" - + SECTION "bank2f.3", ROMX EraseAllDataTilemap: ; 0xbf800 @@ -2859,7 +2869,7 @@ SECTION "bank30", ROMX StageBlueFieldBottomTilemap_GameBoy: ; 0xc0000 INCBIN "gfx/tilemaps/stage_blue_field_bottom_gameboy.map" - + SECTION "bank30.2", ROMX StageBlueFieldTopCollisionMasks: ; 0xc0800 @@ -2884,7 +2894,7 @@ StageBlueFieldTopCollisionAttributes: ; 0xc2800 OptionMenuTilemap2: ; 0xc3000 INCBIN "gfx/tilemaps/option_menu_2.map" - + SECTION "bank30.3", ROMX OptionMenuTilemap4: ; 0xc3400 @@ -3073,22 +3083,22 @@ SeelBonusTilemap2_GameBoyColor: ; 0xd5c00 Alphabet1Gfx: ; 0xd6000 INCBIN "gfx/stage/alphabet_1.2bpp" -GFX_d61a0: INCBIN "gfx/unknown/d61a0.2bpp" -GFX_d61b0: INCBIN "gfx/unknown/d61b0.2bpp" +Exclamation_Point_CharacterGfx: INCBIN "gfx/stage/exclamation_point_mono.2bpp" ;DMG excalamation point +Period_CharacterGfx: INCBIN "gfx/stage/period_mono.2bpp" ;DMG period E_Acute_CharacterGfx: INCBIN "gfx/stage/e_acute_mono.2bpp" -GFX_d61d0: INCBIN "gfx/unknown/d61d0.2bpp" -GFX_d61e0: INCBIN "gfx/unknown/d61e0.2bpp" - +Apostrophe_CharacterGfx: INCBIN "gfx/stage/apostrophe_mono.2bpp" ;DMG apostrophe +Colon_CharacterGfx: INCBIN "gfx/stage/colon_mono.2bpp" ;DMG colon + SECTION "bank35.5", ROMX Alphabet2Gfx: ; 0xd6200 INCBIN "gfx/stage/alphabet_2.2bpp" -GFX_d63a0: INCBIN "gfx/unknown/d63a0.2bpp" -GFX_d63b0: INCBIN "gfx/unknown/d63b0.2bpp" +Exclamation_Point_CharacterGfx_GameboyColor: INCBIN "gfx/stage/exclamation_point_color.2bpp";gbc excalamation point +Period_CharacterGfx_GameboyColor: INCBIN "gfx/stage/period_color.2bpp" ;gbc period E_Acute_CharacterGfx_GameboyColor: INCBIN "gfx/stage/e_acute_color.2bpp" -GFX_d63d0: INCBIN "gfx/unknown/d63d0.2bpp" -GFX_d63e0: INCBIN "gfx/unknown/d63e0.2bpp" +Apostrophe_CharacterGfx_GameboyColor: INCBIN "gfx/stage/apostrophe_color.2bpp" ;GBC apostrophe +Colon_CharacterGfx_GameboyColor: INCBIN "gfx/stage/colon_color.2bpp" ;gbc colon SECTION "bank35.6", ROMX @@ -3159,7 +3169,7 @@ INCLUDE "data/mon_gfx/mon_billboard_palette_maps_4.asm" StageSharedBonusSlotGlowGfx: ; 0xdac00 INCBIN "gfx/stage/shared/bonus_slot_glow.2bpp" - + SECTION "bank36.4", ROMX StageSharedBonusSlotGlow2Gfx: ; 0xdade0 @@ -3191,7 +3201,7 @@ INCLUDE "data/mon_gfx/mon_billboard_palettes_4.asm" StageRedFieldTopGfx6: ; 0xdbb80 INCBIN "gfx/stage/red_top/red_top_6.2bpp" - + SECTION "bank36.8", ROMX StageMewtwoBonusCollisionMasks: ; 0xdbc80 @@ -3210,7 +3220,7 @@ SECTION "bank37", ROMX StageSharedArrowsGfx: ; 0xdc000 INCBIN "gfx/stage/shared/arrows.2bpp" - + SECTION "bank37.2", ROMX INCLUDE "data/mon_gfx/mon_billboard_palettes_5.asm" |