diff options
40 files changed, 432 insertions, 99 deletions
@@ -77,6 +77,7 @@ $(BUILD)/gfx/sgb/sgb_border_alt.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/sgb/sgb_border.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/title/title.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace +$(BUILD)/gfx/trainer_card/trainer_card.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/minigames/slots.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/minigames/poker.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/intro/purin_pikachu.2bpp: tools/gfx += --trim-whitespace diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index d01de98..05508e6 100644 --- a/constants/misc_constants.asm +++ b/constants/misc_constants.asm @@ -22,3 +22,9 @@ D_DOWN EQU 1 << D_DOWN_F BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN + +; backpack + + const_def 1 + const REGULAR_ITEM_POCKET + const KEY_ITEM_POCKET
\ No newline at end of file diff --git a/engine/gfx.asm b/engine/gfx.asm new file mode 100644 index 0000000..2c19fe6 --- /dev/null +++ b/engine/gfx.asm @@ -0,0 +1,139 @@ +INCLUDE "constants.asm" + +SECTION "Misc GFX Loading Functions", ROMX[$4000], BANK[$3E] + +LoadFontGraphics:: ; f8000 (3e:4000) + ld de, FontGFX + ld hl, $8800 + lb bc, BANK(FontGFX), ((FontGFXEnd - FontGFX) / LEN_1BPP_TILE) + jp CopyVideoDataDoubleOptimized +LoadFontExtraGraphicsWithCursor:: ; f800c (3e:400c) + ld de, FontExtraCDEFGHIVSLM_GFX + ld hl, $9620 + lb bc, BANK(FontExtraCDEFGHIVSLM_GFX), ((FontSmallKanaPunctuationGFXEnd - FontExtraCDEFGHIVSLM_GFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ld de, BlackTileAndCursor1bppGFX + ld hl, $9600 + lb bc, BANK(BlackTileAndCursor1bppGFX), ((BlackTileAndCursor1bppGFXEnd - BlackTileAndCursor1bppGFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + jr LoadActiveFrameGraphics +LoadPokemonMenuGraphics:: ; f8026 (3e:4026) + ld de, BattleHPBarGFX + ld hl, $9600 + lb bc, BANK(BattleHPBarGFX), ((LevelUpGFXEnd - BattleHPBarGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + jr LoadActiveFrameGraphics +LoadHexadecimalFontOrHUDGraphics:: ; f8034 (3e:4034) + call LoadActiveFrameGraphics + ld hl, $d153 + bit 0, [hl] + jr z, LoadHudGraphics + ld hl, $9660 + ld de, FontGFX + (("0" - "ア") * $08) + lb bc, BANK(FontGFX), ("9" - "0" + 1) + call CopyVideoDataDoubleOptimized + ld hl, $9700 + ld de, FontExtraAB_GFX + lb bc, BANK(FontExtraAB_GFX), ("F" - "A" + 1) + call CopyVideoDataOptimized + ret +LoadHudGraphics:: ; f8057 (3e:4057) + ld hl, $9660 + ld de, FontGFX + (("0" - "ア") * $08) + lb bc, BANK(FontGFX), ("9" - "0" + 1) + call CopyVideoDataDoubleOptimized + ld hl, $9700 + ld de, $7381 + ld bc, $0401 + call CopyVideoDataOptimized + ld hl, $9710 + ld de, HUD_GFX + lb bc, BANK(HUD_GFX), ((HUD_GFXEnd - HUD_GFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ret +LoadActiveFrameGraphics:: ; f807c (3e:407c) + ld a, [wActiveFrame] + ld bc, (FrameGFXFirstFrameEnd - FrameGFXFirstFrame) + ld hl, FrameGFX + call AddNTimes + ld d, h + ld e, l + ld hl, $9790 + lb bc, BANK(FrameGFX), ((FrameGFXFirstFrameEnd - FrameGFXFirstFrame) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ld hl, $97f0 + ld de, EmptyTile1bppGFX + lb bc, BANK(EmptyTile1bppGFX), ((EmptyTile1bppGFXEnd - EmptyTile1bppGFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ret +LoadPokeDexGraphics:: ; f80a0 (3e:40a0) + call LoadPokemonMenuGraphics + ld de, PokedexGFX + ld hl, $9600 + lb bc, BANK(PokedexGFX), ((PokedexLocationGFXEnd - PokedexGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ld de, PokeBallsGFX + ld hl, $9720 + lb bc, BANK(PokeBallsGFX), 1 ; 1 of 4 tiles + jp CopyVideoDataOptimized +LoadBattleGraphics:: ; f80bb (3e:40bb) + ld de, BattleHPBarGFX + ld hl, $9600 + lb bc, BANK(BattleHPBarGFX), ((BattleHPBarGFXEnd - BattleHPBarGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ld hl, $9700 + ld de, BattleMarkersGFX + lb bc, BANK(BattleMarkersGFX), ((BattleMarkersGFXEnd - BattleMarkersGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + call LoadActiveFrameGraphics + ld de, HpExpBarParts0GFX + ld hl, $96c0 + lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts0GFXEnd - HpExpBarParts0GFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ld de, HpExpBarParts1GFX + ld hl, $9730 + lb bc, BANK(HpExpBarParts1GFX), ((HpExpBarParts3GFXEnd - HpExpBarParts1GFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ld de, ExpBarGFX + ld hl, $9550 + lb bc, BANK(ExpBarGFX), ((ExpBarGFXEnd - ExpBarGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ret +LoadPokemonStatsGraphics:: ; f80fb (3e:40fb) + call LoadPokemonMenuGraphics + ld de, HpExpBarParts0GFX + ld hl, $96c0 + lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts0GFXEnd - HpExpBarParts0GFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ld de, HpExpBarParts1GFX + ld hl, $9780 + lb bc, BANK(HpExpBarParts1GFX), 1 ; 1 of 6 tiles + call CopyVideoDataDoubleOptimized + ld de, HpExpBarParts2GFX + ld hl, $9760 + lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts2GFXEnd - HpExpBarParts2GFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ld de, ExpBarGFX + ld hl, $9550 + lb bc, BANK(ExpBarGFX), ((ExpBarGFXEnd - ExpBarGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ld de, StatsGFX + ld hl, $9310 + lb bc, BANK(StatsGFX), ((StatsGFXEnd - StatsGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + ret +LoadBackpackGraphics:: ; f813b (3e:413b) + ld de, BlackTileAndCursor1bppGFX + ld hl, $9600 + lb bc, BANK(BlackTileAndCursor1bppGFX), ((BlackTileAndCursor1bppGFXEnd - BlackTileAndCursor1bppGFX) / LEN_1BPP_TILE) + call CopyVideoDataDoubleOptimized + ld de, PackIconGFX + ld hl, $9620 + lb bc, BANK(PackIconGFX), 12 ; 12 of 15 tiles + call CopyVideoDataOptimized + ld de, FontSmallKanaPunctuationGFX + ld hl, $96e0 + lb bc, BANK(FontSmallKanaPunctuationGFX), ((FontSmallKanaPunctuationGFXEnd - FontSmallKanaPunctuationGFX) / LEN_2BPP_TILE) + call CopyVideoDataOptimized + jp LoadActiveFrameGraphics +; 0xf8162
\ No newline at end of file diff --git a/engine/overworld.asm b/engine/overworld.asm new file mode 100644 index 0000000..3f52f6e --- /dev/null +++ b/engine/overworld.asm @@ -0,0 +1,56 @@ +INCLUDE "constants.asm" + +SECTION "Startmenu and Select Button Check", ROM0[$2C05] + +OverworldStartButtonCheck:: ; 2c05 (0:2c05) + ldh a, [hJoyState] + bit START_F, a + ret z + and (START | B_BUTTON) + cp (START | B_BUTTON) + jr nz, .regularMenu + ld a, [wce63] + bit 1, a + ret z ; debug disabled + ld a, BANK(InGameDebugMenu) + ld hl, InGameDebugMenu + call FarCall_hl + jr CheckStartmenuSelectHook +.regularMenu + ld a, BANK(DisplayStartMenu) + ld hl, DisplayStartMenu + call FarCall_hl + jr CheckStartmenuSelectHook +SelectButtonFunction:: ; 2c2a (0:2c2a) + ld hl, CheckRegisteredItem + ld a, BANK(CheckRegisteredItem) + call FarCall_hl +CheckStartmenuSelectHook: + ldh a, [hStartmenuCloseAndSelectHookEnable] + and a + ret z ; hook is disabled + ld hl, StartmenuCloseAndSelectHookPtr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [StartmenuCloseAndSelectHookBank] + call FarCall_hl + ld hl, hStartmenuCloseAndSelectHookEnable + xor a + ld [hli], a ; clear hook enable and ??? + ld [hl], a + dec a + ret + +SECTION "Install StartMenu Hook Function", ROM0[$35EC] + +InstallStartmenuCloseAndSelectHook:: +; Install a function that is called as soon as +; the start menu is closed or directly after +; the select button function ran + ld [StartmenuCloseAndSelectHookBank], a + ld a, l + ld [StartmenuCloseAndSelectHookPtr], a + ld a, h + ld [StartmenuCloseAndSelectHookPtr + 1], a + ret @@ -46,14 +46,15 @@ MailIconGFX:: INCBIN "gfx/icons/mail.2bpp" SECTION "Trainer Card GFX", ROMX[$7171], BANK[$04] -TrainerCardGFX:: -INCBIN "gfx/trainer_card/trainer_card.2bpp" -TrainerCardLeadersGFX:: -INCBIN "gfx/trainer_card/leaders.2bpp" +TrainerCardGFX:: INCBIN "gfx/trainer_card/trainer_card.2bpp" ; 0x013171--0x013381 +TrainerCardColonGFX:: INCBIN "gfx/trainer_card/colon.2bpp" ; 0x013381--0x013391 +TrainerCardIDNoGFX:: INCBIN "gfx/trainer_card/id_no.2bpp" ; 0x013391--0x0133B1 +TrainerCardIDNoGFXEnd:: +TrainerCardLeadersGFX:: INCBIN "gfx/trainer_card/leaders.2bpp" ; 0x0133B1--0x133BA1 -SECTION "Unused Leader", ROMX[$7BA3], BANK[$04] -UnusedLeaderNameGFX:: -INCBIN "gfx/trainer_card/unused_leader_name.2bpp" + db $18, $00 ; leftover of previous graphics + +Unreferenced_UnusedLeaderNameGFX:: INCBIN "gfx/trainer_card/unused_leader_name.2bpp" ; 0x1 SECTION "Bank 6 Tilesets 00", ROMX[$4000], BANK[$06] Tileset_00_GFX: @@ -135,6 +136,10 @@ SECTION "Bank C Tilesets 0c", ROMX[$7100], BANK[$0C] Tileset_0c_GFX: INCBIN "gfx/tilesets/tileset_0c.2bpp" +SECTION "PokeBalls GFX", ROMX[$4494], BANK[$0E] + +PokeBallsGFX:: INCBIN "gfx/misc/poke_balls.2bpp" ; 0x038494--0x0384d4 + SECTION "Pokedex GFX", ROMX[$40D5], BANK[$11] PokedexButtonsGFX:: INCBIN "gfx/pokedex/buttons.2bpp" @@ -403,44 +408,63 @@ INCBIN "gfx/intro/fushigibana.2bpp" SECTION "Misc GFX", ROMX[$4162], BANK[$3E] FontExtraGFX:: -INCBIN "gfx/font/font_extra.2bpp" -FontGFX:: -INCBIN "gfx/font/font.1bpp" +FontExtraAB_GFX:: INCBIN "gfx/font/font_extra.ab.2bpp" ; 0x0f8162--0x0f8182 +FontExtraCDEFGHIVSLM_GFX:: INCBIN "gfx/font/font_extra.cdefghivslm.2bpp" ; 0x0f8182--0x0f8242 +FontSmallKanaPunctuationGFX:: INCBIN "gfx/font/small_kana_punctuation.2bpp" ; 0x0f8242--0x0f82f2 +FontSmallKanaPunctuationGFXEnd:: +Unreferenced_DefaultFrame0GFX:: INCBIN "gfx/frames/1.2bpp" ; 0x0f82f2--0x0f8362 +FontGFX:: INCBIN "gfx/font/font.1bpp" ; 0x0f8362--0x0f8712 kana +FontGFXEnd:: ; 0x0f8712--0x0f8762 numbers FontBattleExtraGFX:: -INCBIN "gfx/font/font_battle_extra.2bpp" +BattleHPBarGFX:: INCBIN "gfx/battle/hp_bar.2bpp" ; 0x0f8762--0x0f8822 +BattleHPBarGFXEnd:: +HpExpBarParts0_2bppGFX:: INCBIN "gfx/battle/hp_exp_bar_parts0.2bpp" ; 0x0f8822--0x0f8862 +BattleMarkersGFX:: INCBIN "gfx/battle/markers.2bpp" ; 0x0f8862--0x0f8892 +BattleMarkersGFXEnd:: +LevelUpGFX:: INCBIN "gfx/battle/levelup.2bpp" ; 0x0f8892--0x0f88f2 +LevelUpGFXEnd:: +Unreferenced_DefaultFrame1:: INCBIN "gfx/frames/1.2bpp" ; 0x0f88f2--0x0f8962 FrameGFX:: -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" -StatsSeparatorGFX:: -INCBIN "gfx/stats/separator.2bpp" -StatsGFX:: -INCBIN "gfx/stats/stats.2bpp" -HPExpBarBorderGFX:: -INCBIN "gfx/battle/hp_exp_bar_border.1bpp" -ExpBarGFX:: -INCBIN "gfx/battle/exp_bar.2bpp" -PokedexUnitsGFX:: -INCBIN "gfx/pokedex/m_kg.2bpp" -PokedexGFX:: -INCBIN "gfx/pokedex/pokedex.2bpp" -TownMapGFX:: -INCBIN "gfx/pokegear/town_map.2bpp" -HUD_GFX:: -INCBIN "gfx/hud/hud.2bpp" -BoldAlphabetGFX:: -INCBIN "gfx/font/alphabet.1bpp" -AnnonAlphabetGFX:: -INCBIN "gfx/font/annon_alphabet.1bpp" -INCBIN "gfx/font/gfx_f9322.1bpp" -PackIconGFX:: -INCBIN "gfx/pack/pack_icons.2bpp" +FrameGFXFirstFrame:: INCBIN "gfx/frames/1.1bpp" ; 0x0f8962--0x0f8992 +FrameGFXFirstFrameEnd:: + INCBIN "gfx/frames/2.1bpp" ; 0x0f8992--0x0f89c2 + INCBIN "gfx/frames/3.1bpp" ; 0x0f89c2--0x0f89f2 + INCBIN "gfx/frames/4.1bpp" ; 0x0f89f2--0x0f8a22 + INCBIN "gfx/frames/5.1bpp" ; 0x0f8a22--0x0f8a52 + INCBIN "gfx/frames/6.1bpp" ; 0x0f8a52--0x0f8a82 + INCBIN "gfx/frames/7.1bpp" ; 0x0f8a82--0x0f8ab2 + INCBIN "gfx/frames/8.1bpp" ; 0x0f8ab2--0x0f8ae2 + INCBIN "gfx/frames/9.1bpp" ; 0x0f8ae2--0x0f8b12 +StatsGFX:: INCBIN "gfx/stats/separator.2bpp" ; 0x0f8b12--0x0f8b22 + INCBIN "gfx/stats/stats.2bpp" ; 0x0f8b22--0x0f8c22 +StatsGFXEnd:: + +HpExpBarParts0GFX:: INCBIN "gfx/battle/hp_exp_bar_parts0.1bpp" ; 0x0f8c42--0x0f8c5a +HpExpBarParts0GFXEnd:: +HpExpBarParts1GFX:: INCBIN "gfx/battle/hp_exp_bar_parts1.1bpp" ; 0x0f8c42--0x0f8c5a +HpExpBarParts1GFXEnd:: +HpExpBarParts2GFX:: INCBIN "gfx/battle/hp_exp_bar_parts2.1bpp" ; 0x0f8c5a--0x0f8c6a +HpExpBarParts2GFXEnd:: +HpExpBarParts3GFX:: INCBIN "gfx/battle/hp_exp_bar_parts3.1bpp" ; 0x0f8c6a--0x0f8c72 +HpExpBarParts3GFXEnd:: +ExpBarGFX:: INCBIN "gfx/battle/exp_bar.2bpp" ; 0x0f8c72--0x0f8cf2 +ExpBarGFXEnd:: +PokedexGFX:: INCBIN "gfx/pokedex/pokedex.2bpp" ; 0x0f8cf2--0x0f8dc2 +PokedexGFXEnd:: +PokedexLocationGFX:: INCBIN "gfx/pokedex/locations.2bpp" ; 0x0f8dc2--0x0f8e12 +PokedexLocationGFXEnd:: +TownMapGFX:: INCBIN "gfx/pokegear/town_map.2bpp" ; 0x0f8e12--0x0f8fc2 +TownMapGFXEnd:: +HUD_GFX:: INCBIN "gfx/hud/hud.2bpp" ; 0x0f8fc2--0x0f9052 +HUD_GFXEnd:: +BoldAlphabetGFX:: INCBIN "gfx/font/alphabet.1bpp" +AnnonAlphabetGFX:: INCBIN "gfx/font/annon_alphabet.1bpp" +EmptyTile1bppGFX:: INCBIN "gfx/misc/empty_tile.1bpp" ; 0x0f9322--0x0f932a +EmptyTile1bppGFXEnd:: +BlackTileAndCursor1bppGFX:: INCBIN "gfx/misc/black_tile_cursor.1bpp" ; 0x0f932a--0x0f933a +BlackTileAndCursor1bppGFXEnd:: +PackIconGFX:: INCBIN "gfx/pack/pack_icons.2bpp" ; 0x0f933a--0x0f941a +PackIconGFXEnd:: SECTION "Town Map Cursor", ROMX[$506F], BANK[$3F] TownMapCursorGFX:: diff --git a/gfx/battle/hp_bar.png b/gfx/battle/hp_bar.png Binary files differnew file mode 100644 index 0000000..0492de5 --- /dev/null +++ b/gfx/battle/hp_bar.png diff --git a/gfx/battle/hp_exp_bar_border.1bpp.png b/gfx/battle/hp_exp_bar_border.1bpp.png Binary files differdeleted file mode 100644 index b2017a5..0000000 --- a/gfx/battle/hp_exp_bar_border.1bpp.png +++ /dev/null diff --git a/gfx/battle/hp_exp_bar_parts0.1bpp.png b/gfx/battle/hp_exp_bar_parts0.1bpp.png Binary files differnew file mode 100644 index 0000000..c598e00 --- /dev/null +++ b/gfx/battle/hp_exp_bar_parts0.1bpp.png diff --git a/gfx/battle/hp_exp_bar_parts0.png b/gfx/battle/hp_exp_bar_parts0.png Binary files differnew file mode 100644 index 0000000..1adb633 --- /dev/null +++ b/gfx/battle/hp_exp_bar_parts0.png diff --git a/gfx/battle/hp_exp_bar_parts1.1bpp.png b/gfx/battle/hp_exp_bar_parts1.1bpp.png Binary files differnew file mode 100644 index 0000000..e61d42d --- /dev/null +++ b/gfx/battle/hp_exp_bar_parts1.1bpp.png diff --git a/gfx/battle/hp_exp_bar_parts2.1bpp.png b/gfx/battle/hp_exp_bar_parts2.1bpp.png Binary files differnew file mode 100644 index 0000000..d47530d --- /dev/null +++ b/gfx/battle/hp_exp_bar_parts2.1bpp.png diff --git a/gfx/battle/hp_exp_bar_parts3.1bpp.png b/gfx/battle/hp_exp_bar_parts3.1bpp.png Binary files differnew file mode 100644 index 0000000..ccec114 --- /dev/null +++ b/gfx/battle/hp_exp_bar_parts3.1bpp.png diff --git a/gfx/battle/levelup.png b/gfx/battle/levelup.png Binary files differnew file mode 100644 index 0000000..65e0df2 --- /dev/null +++ b/gfx/battle/levelup.png diff --git a/gfx/battle/markers.png b/gfx/battle/markers.png Binary files differnew file mode 100644 index 0000000..23894da --- /dev/null +++ b/gfx/battle/markers.png diff --git a/gfx/font/font_extra.ab.png b/gfx/font/font_extra.ab.png Binary files differnew file mode 100644 index 0000000..94f4ec6 --- /dev/null +++ b/gfx/font/font_extra.ab.png diff --git a/gfx/font/font_extra.cdefghivslm.png b/gfx/font/font_extra.cdefghivslm.png Binary files differnew file mode 100644 index 0000000..ebfe02c --- /dev/null +++ b/gfx/font/font_extra.cdefghivslm.png diff --git a/gfx/font/font_extra.png b/gfx/font/font_extra.png Binary files differdeleted file mode 100644 index d0eb38f..0000000 --- a/gfx/font/font_extra.png +++ /dev/null diff --git a/gfx/font/gfx_f9322.1bpp.png b/gfx/font/gfx_f9322.1bpp.png Binary files differdeleted file mode 100644 index e386063..0000000 --- a/gfx/font/gfx_f9322.1bpp.png +++ /dev/null diff --git a/gfx/font/small_kana_punctuation.png b/gfx/font/small_kana_punctuation.png Binary files differnew file mode 100644 index 0000000..b02480d --- /dev/null +++ b/gfx/font/small_kana_punctuation.png diff --git a/gfx/frames/1.png b/gfx/frames/1.png Binary files differnew file mode 100644 index 0000000..dca07fe --- /dev/null +++ b/gfx/frames/1.png diff --git a/gfx/misc/black_tile_cursor.1bpp.png b/gfx/misc/black_tile_cursor.1bpp.png Binary files differnew file mode 100644 index 0000000..7fdc4f1 --- /dev/null +++ b/gfx/misc/black_tile_cursor.1bpp.png diff --git a/gfx/misc/empty_tile.1bpp.png b/gfx/misc/empty_tile.1bpp.png Binary files differnew file mode 100644 index 0000000..3233c13 --- /dev/null +++ b/gfx/misc/empty_tile.1bpp.png diff --git a/gfx/misc/poke_balls.png b/gfx/misc/poke_balls.png Binary files differnew file mode 100644 index 0000000..830f72b --- /dev/null +++ b/gfx/misc/poke_balls.png diff --git a/gfx/pokedex/locations.png b/gfx/pokedex/locations.png Binary files differnew file mode 100644 index 0000000..c7e37a2 --- /dev/null +++ b/gfx/pokedex/locations.png diff --git a/gfx/pokedex/m_kg.png b/gfx/pokedex/m_kg.png Binary files differdeleted file mode 100644 index e26dada..0000000 --- a/gfx/pokedex/m_kg.png +++ /dev/null diff --git a/gfx/pokedex/pokedex.png b/gfx/pokedex/pokedex.png Binary files differindex 143835e..d4637ce 100644 --- a/gfx/pokedex/pokedex.png +++ b/gfx/pokedex/pokedex.png diff --git a/gfx/pokegear/town_map.png b/gfx/pokegear/town_map.png Binary files differindex 7889b09..69c06b4 100644 --- a/gfx/pokegear/town_map.png +++ b/gfx/pokegear/town_map.png diff --git a/gfx/trainer_card/colon.png b/gfx/trainer_card/colon.png Binary files differnew file mode 100644 index 0000000..56039e7 --- /dev/null +++ b/gfx/trainer_card/colon.png diff --git a/gfx/trainer_card/id_no.png b/gfx/trainer_card/id_no.png Binary files differnew file mode 100644 index 0000000..ad0f7d6 --- /dev/null +++ b/gfx/trainer_card/id_no.png diff --git a/gfx/trainer_card/leaders.png b/gfx/trainer_card/leaders.png Binary files differindex dceb21f..66c0919 100644 --- a/gfx/trainer_card/leaders.png +++ b/gfx/trainer_card/leaders.png diff --git a/gfx/trainer_card/trainer_card.png b/gfx/trainer_card/trainer_card.png Binary files differindex 8fa51d1..ecce895 100644 --- a/gfx/trainer_card/trainer_card.png +++ b/gfx/trainer_card/trainer_card.png diff --git a/home/jumptable.asm b/home/jumptable.asm new file mode 100644 index 0000000..8b345e2 --- /dev/null +++ b/home/jumptable.asm @@ -0,0 +1,43 @@ +INCLUDE "constants.asm" + +SECTION "Jumptable functions", ROM0[$35cd] + +CallJumptable:: ; 35cd (0:35cd) +; CallJumptable +; Call function whose pointer is +; at index a in 2-byte pointer table +; pointed to by hl. +; Clobbers: a, hl +; +; This ultimately wound up at rst $28 in +; GSC + push de + ld d, $00 + ld e, a + add hl, de + add hl, de + pop de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +CallFar_atHL:: +; CallFar_atHL +; Call the function pointed to by +; the 3-byte pointer at hl +; Clobbers: a, hl + ldh a, [hROMBank] + push af + ld a, [hli] + call Bankswitch + ld a, [hli] + ld h, [hl] + ld l, a + call .jump + pop hl + ld a, h + call Bankswitch + ret +.jump: ; 35eb (0:35eb) + jp hl diff --git a/home/menu.asm b/home/menu.asm new file mode 100644 index 0000000..e673b2d --- /dev/null +++ b/home/menu.asm @@ -0,0 +1,47 @@ + + +SECTION "Print Letter Delay", ROM0[$33a3] + +PrintLetterDelay:: ; 33a3 (0:33a3) + ld a, [wce5f] + bit 4, a + ret nz + ld a, [wTextBoxFlags] + bit 1, a + ret z + push hl + push de + push bc + ld a, [wTextBoxFlags] + bit 0, a + jr z, .waitOneFrame + ld a, [wce5f] + and $07 + jr .initFrameCnt +.waitOneFrame + ld a, $01 +.initFrameCnt + ld [wVBlankJoyFrameCounter], a +.checkButtons + call GetJoypad + ldh a, [hJoyState] +.checkAButton + bit 0, a ; is the A button pressed? + jr z, .checkBButton + jr .endWait +.checkBButton + bit 1, a ; is the B button pressed? + jr z, .buttonsNotPressed +.endWait + call DelayFrame + jr .done +.buttonsNotPressed ; if neither A nor B is pressed + ld a, [wVBlankJoyFrameCounter] + and a + jr nz, .checkButtons +.done + pop bc + pop de + pop hl + ret +; 0x33e3
\ No newline at end of file diff --git a/home/print_bcd.asm b/home/print_bcd.asm index fa8d825..eefb9f0 100644 --- a/home/print_bcd.asm +++ b/home/print_bcd.asm @@ -1,51 +1,5 @@ INCLUDE "constants.asm" -SECTION "BCD Finalize", ROM0[$33a3] - -PrintLetterDelay:: ; 33a3 (0:33a3) - ld a, [wce5f] - bit 4, a - ret nz - ld a, [wTextBoxFlags] - bit 1, a - ret z - push hl - push de - push bc - ld a, [wTextBoxFlags] - bit 0, a - jr z, .waitOneFrame - ld a, [wce5f] - and $07 - jr .initFrameCnt -.waitOneFrame - ld a, $01 -.initFrameCnt - ld [wVBlankJoyFrameCounter], a -.checkButtons - call GetJoypad - ldh a, [hJoyState] -.checkAButton - bit 0, a ; is the A button pressed? - jr z, .checkBButton - jr .endWait -.checkBButton - bit 1, a ; is the B button pressed? - jr z, .buttonsNotPressed -.endWait - call DelayFrame - jr .done -.buttonsNotPressed ; if neither A nor B is pressed - ld a, [wVBlankJoyFrameCounter] - and a - jr nz, .checkButtons -.done - pop bc - pop de - pop hl - ret -; 0x33e3 - SECTION "BCD Functions", ROM0[$3ab2] ; function to print a BCD (Binary-coded decimal) number diff --git a/home/print_hex.asm b/home/print_hex.asm index 3f50467..0232211 100644 --- a/home/print_hex.asm +++ b/home/print_hex.asm @@ -3,6 +3,7 @@ INCLUDE "constants.asm" SECTION "Print Hexadecimal functions", ROM0[$3597] PrintHexBytes: ; 3597 (0:3597) +; Print c hex bytes located at de to hl .loop push bc call PrintHexByte @@ -12,19 +13,22 @@ PrintHexBytes: ; 3597 (0:3597) ret PrintHexByte:: ; 35a0 (0:35a0) +; Print one hex byte located at de to hl ld a, [de] swap a and $0f - call PrintHexDigit + call GetHexDigit ld [hli], a ld a, [de] and $0f - call PrintHexDigit + call GetHexDigit ld [hli], a inc de ret -PrintHexDigit: ; 35b2 (0:35b2) +GetHexDigit: ; 35b2 (0:35b2) +; Get a hex digit tile number +; in a. ld bc, .hexDigitTable add c ld c, a diff --git a/home/util.asm b/home/util.asm new file mode 100644 index 0000000..bfc4ce4 --- /dev/null +++ b/home/util.asm @@ -0,0 +1,13 @@ +INCLUDE "constants.asm" + +SECTION "Misc Utility Functions", ROM0[$3429] + +AddNTimes:: ; 3429 (0:3429) + and a + ret z +.asm_342b + add hl, bc + dec a + jr nz, .asm_342b + ret +; 0x3430
\ No newline at end of file @@ -19,7 +19,11 @@ hROMBank:: ; ff98 hVBlank:: ; ff99 db - ds 3 ; TODO + db ; TODO + +hStartmenuCloseAndSelectHookEnable:: db ; ff9b + +hStartmenuCloseAndSelectHookTemp:: db ; ff9c hJoypadUp:: db ; ff9d ; Raw Joypad Up Event @@ -30,6 +30,7 @@ 00:3655 SetHPPal.done 00:36C8 NamesPointers 00:36E0 GetName +00:38E3 CheckRandomEncounter 00:39BA PlayCry 00:3D86 WaitSFX 00:3D87 WaitSFX.wait @@ -65,6 +66,8 @@ 03:4AA1 AddItemToInventory_ 04:5677 DoPlayerMovement +04:5dbe DisplayStartMenu +04:6c58 CheckRegisteredItem 0e:4b78 LoadTrainerClassName 0e:4ba0 LoadTrainerClassName.got_name @@ -103,7 +106,6 @@ 00:cdbe wTargetMapUnk 00:cdbf wTargetMapGroup 00:cdc0 wTargetMapId -00:ce62 wTextBoxFlags 00:ce67 wPlayerName 01:d165 wTMCounts diff --git a/tools/dump_text.py b/tools/dump_text.py index 057de04..808f674 100644 --- a/tools/dump_text.py +++ b/tools/dump_text.py @@ -163,7 +163,7 @@ control_codes = { } def print_location(data): - return '.loc_{0:04X}:\n'.format(data['offset']) + return '.loc_{0:04X}:\n'.format(data['offset'] + (bank_size if data['source'] > bank_size else 0)) if __name__ == '__main__': # argument parser @@ -212,7 +212,12 @@ if __name__ == '__main__': f.seek(bank_addr) bank_data = f.read(bank_size) - data = {'offset': offset, 'bytes': bank_data, 'len': min(end_offset, len(bank_data)), 'textmode': args.textmode} + data = {'offset': offset, + 'bytes': bank_data, + 'len': min(end_offset, len(bank_data)), + 'textmode': args.textmode, + 'source': bank_addr, + } with open(outfile, 'wb') if outfile != sys.stdout else outfile.buffer as f: string = print_location(data) @@ -119,6 +119,18 @@ wVBCopyFarSrc:: ds 2 ; cb72 wVBCopyFarDst:: ds 2 ; cb74 wVBCopyFarSrcBank:: ds 1 ; cb76 +SECTION "CBF7", WRAM0[$CBF7] + +wActiveBackpackPocket:: db ; cbf7 + +SECTION "CC09", WRAM0[$CC09] + +wMenuCursorBuffer:: db ; cc09 + +SECTION "CC2A", WRAM0[$CC2A] + +wMenuCursorY:: db ; cc2a + SECTION "CC32", WRAM0[$CC32] ; Please merge when more is disassembled wVBlankJoyFrameCounter: db ; cc32 @@ -180,11 +192,21 @@ SECTION "CD31", WRAM0[$CD31] wcd31:: ; cd31 db -SECTION "CD4A", WRAM0[$CD4A] +SECTION "CD3E", WRAM0[$CD3D] + +wRegularItemsCursor:: db ; cd3d +wBackpackAndKeyItemsCursor:: db ;cd3e +wStartmenuCursor:: db ; cd3f + ds 4 ; TODO +wRegularItemsScrollPosition:: db ; cd44 +wBackpackAndKeyItemsScrollPosition:: db ; cd45 + ds 3 ; TODO +wMenuScrollPosition:: db ; cd49 wTextDest:: ds 2; cd4a - ds 3 ; TODO +StartmenuCloseAndSelectHookBank:: db ; cd4c +StartmenuCloseAndSelectHookPtr:: dw ; cd4d wPredefID:: ; cd4f db @@ -317,7 +339,11 @@ SECTION "CE5F", WRAM0[$CE5F] wce5f:: ; ce5f ; TODO db -SECTION "CE63", WRAM0[$CE63] +SECTION "CE61", WRAM0[$CE61] + +wActiveFrame:: db ; ce61 + +wTextBoxFlags:: db ; ce62 wce63:: db ; ce63 ; 76543210 @@ -352,6 +378,15 @@ SECTION "D19E", WRAM0[$D19E] wNumBagItems:: ; d19e db +SECTION "D1C8", WRAM0[$D1C8] + +wNumKeyItems:: db ; d1c8 + +SECTION "D1DE", WRAM0[$D1DE] + +wNumBallItems:: db ; d1de + + SECTION "D4AB", WRAM0[$D4AB] wJoypadFlags:: db ; d4ab |