From 5ee0be8f9701ce5723d64c9323bb4349d79bd089 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sat, 2 Jun 2018 18:30:09 +0200 Subject: home: comment print hex fns Signed-off-by: Tauwasser --- home/print_hex.asm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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 -- cgit v1.2.3 From 2de77265514915f3f20d067088f966dbef9f8af1 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sat, 2 Jun 2018 19:10:32 +0200 Subject: tools/dump_text: fix labeling bug Labely would be relative to start of bank, not absolute wrt memory location (0x4000 for RB > 0) Signed-off-by: Tauwasser --- tools/dump_text.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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) -- cgit v1.2.3 From b0cb7a159d36c486b351df277b3c3b6613f17757 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 3 Jun 2018 04:09:36 +0200 Subject: gfx: re-organize some graphics and disassemble gfx load code All graphics were split so that proper labels could be placed. Font was not split, because that was nicely handled using the charmap constants. If proper lengths should also be handled using automatic calculation using labels, some graphics would need further splitting up in order to place labels.s Signed-off-by: Tauwasser --- Makefile | 1 + engine/gfx.asm | 139 ++++++++++++++++++++++++++++++++++ gfx.asm | 110 ++++++++++++++++----------- gfx/battle/hp_bar.png | Bin 0 -> 199 bytes gfx/battle/hp_exp_bar_border.1bpp.png | Bin 140 -> 0 bytes gfx/battle/hp_exp_bar_parts0.1bpp.png | Bin 0 -> 111 bytes gfx/battle/hp_exp_bar_parts0.png | Bin 0 -> 111 bytes gfx/battle/hp_exp_bar_parts1.1bpp.png | Bin 0 -> 92 bytes gfx/battle/hp_exp_bar_parts2.1bpp.png | Bin 0 -> 84 bytes gfx/battle/hp_exp_bar_parts3.1bpp.png | Bin 0 -> 82 bytes gfx/battle/levelup.png | Bin 0 -> 112 bytes gfx/battle/markers.png | Bin 0 -> 111 bytes gfx/font/font_extra.ab.png | Bin 0 -> 90 bytes gfx/font/font_extra.cdefghivslm.png | Bin 0 -> 153 bytes gfx/font/font_extra.png | Bin 287 -> 0 bytes gfx/font/gfx_f9322.1bpp.png | Bin 90 -> 0 bytes gfx/font/small_kana_punctuation.png | Bin 0 -> 156 bytes gfx/frames/1.png | Bin 0 -> 189 bytes gfx/misc/black_tile_cursor.1bpp.png | Bin 0 -> 87 bytes gfx/misc/empty_tile.1bpp.png | Bin 0 -> 71 bytes gfx/misc/poke_balls.png | Bin 0 -> 124 bytes gfx/pokedex/locations.png | Bin 0 -> 146 bytes gfx/pokedex/m_kg.png | Bin 104 -> 0 bytes gfx/pokedex/pokedex.png | Bin 145 -> 181 bytes gfx/pokegear/town_map.png | Bin 394 -> 337 bytes gfx/trainer_card/colon.png | Bin 0 -> 76 bytes gfx/trainer_card/id_no.png | Bin 0 -> 92 bytes gfx/trainer_card/leaders.png | Bin 317 -> 622 bytes gfx/trainer_card/trainer_card.png | Bin 619 -> 369 bytes home/util.asm | 13 ++++ wram.asm | 6 +- 31 files changed, 225 insertions(+), 44 deletions(-) create mode 100644 engine/gfx.asm create mode 100644 gfx/battle/hp_bar.png delete mode 100644 gfx/battle/hp_exp_bar_border.1bpp.png create mode 100644 gfx/battle/hp_exp_bar_parts0.1bpp.png create mode 100644 gfx/battle/hp_exp_bar_parts0.png create mode 100644 gfx/battle/hp_exp_bar_parts1.1bpp.png create mode 100644 gfx/battle/hp_exp_bar_parts2.1bpp.png create mode 100644 gfx/battle/hp_exp_bar_parts3.1bpp.png create mode 100644 gfx/battle/levelup.png create mode 100644 gfx/battle/markers.png create mode 100644 gfx/font/font_extra.ab.png create mode 100644 gfx/font/font_extra.cdefghivslm.png delete mode 100644 gfx/font/font_extra.png delete mode 100644 gfx/font/gfx_f9322.1bpp.png create mode 100644 gfx/font/small_kana_punctuation.png create mode 100644 gfx/frames/1.png create mode 100644 gfx/misc/black_tile_cursor.1bpp.png create mode 100644 gfx/misc/empty_tile.1bpp.png create mode 100644 gfx/misc/poke_balls.png create mode 100644 gfx/pokedex/locations.png delete mode 100644 gfx/pokedex/m_kg.png create mode 100644 gfx/trainer_card/colon.png create mode 100644 gfx/trainer_card/id_no.png create mode 100644 home/util.asm diff --git a/Makefile b/Makefile index bb53748..c79484e 100644 --- a/Makefile +++ b/Makefile @@ -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/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/gfx.asm b/gfx.asm index 92b7219..7f474ee 100644 --- a/gfx.asm +++ b/gfx.asm @@ -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 new file mode 100644 index 0000000..0492de5 Binary files /dev/null and b/gfx/battle/hp_bar.png differ diff --git a/gfx/battle/hp_exp_bar_border.1bpp.png b/gfx/battle/hp_exp_bar_border.1bpp.png deleted file mode 100644 index b2017a5..0000000 Binary files a/gfx/battle/hp_exp_bar_border.1bpp.png and /dev/null differ diff --git a/gfx/battle/hp_exp_bar_parts0.1bpp.png b/gfx/battle/hp_exp_bar_parts0.1bpp.png new file mode 100644 index 0000000..c598e00 Binary files /dev/null and b/gfx/battle/hp_exp_bar_parts0.1bpp.png differ diff --git a/gfx/battle/hp_exp_bar_parts0.png b/gfx/battle/hp_exp_bar_parts0.png new file mode 100644 index 0000000..1adb633 Binary files /dev/null and b/gfx/battle/hp_exp_bar_parts0.png differ diff --git a/gfx/battle/hp_exp_bar_parts1.1bpp.png b/gfx/battle/hp_exp_bar_parts1.1bpp.png new file mode 100644 index 0000000..e61d42d Binary files /dev/null and b/gfx/battle/hp_exp_bar_parts1.1bpp.png differ diff --git a/gfx/battle/hp_exp_bar_parts2.1bpp.png b/gfx/battle/hp_exp_bar_parts2.1bpp.png new file mode 100644 index 0000000..d47530d Binary files /dev/null and b/gfx/battle/hp_exp_bar_parts2.1bpp.png differ diff --git a/gfx/battle/hp_exp_bar_parts3.1bpp.png b/gfx/battle/hp_exp_bar_parts3.1bpp.png new file mode 100644 index 0000000..ccec114 Binary files /dev/null and b/gfx/battle/hp_exp_bar_parts3.1bpp.png differ diff --git a/gfx/battle/levelup.png b/gfx/battle/levelup.png new file mode 100644 index 0000000..65e0df2 Binary files /dev/null and b/gfx/battle/levelup.png differ diff --git a/gfx/battle/markers.png b/gfx/battle/markers.png new file mode 100644 index 0000000..23894da Binary files /dev/null and b/gfx/battle/markers.png differ diff --git a/gfx/font/font_extra.ab.png b/gfx/font/font_extra.ab.png new file mode 100644 index 0000000..94f4ec6 Binary files /dev/null and b/gfx/font/font_extra.ab.png differ diff --git a/gfx/font/font_extra.cdefghivslm.png b/gfx/font/font_extra.cdefghivslm.png new file mode 100644 index 0000000..ebfe02c Binary files /dev/null and b/gfx/font/font_extra.cdefghivslm.png differ diff --git a/gfx/font/font_extra.png b/gfx/font/font_extra.png deleted file mode 100644 index d0eb38f..0000000 Binary files a/gfx/font/font_extra.png and /dev/null differ diff --git a/gfx/font/gfx_f9322.1bpp.png b/gfx/font/gfx_f9322.1bpp.png deleted file mode 100644 index e386063..0000000 Binary files a/gfx/font/gfx_f9322.1bpp.png and /dev/null differ diff --git a/gfx/font/small_kana_punctuation.png b/gfx/font/small_kana_punctuation.png new file mode 100644 index 0000000..b02480d Binary files /dev/null and b/gfx/font/small_kana_punctuation.png differ diff --git a/gfx/frames/1.png b/gfx/frames/1.png new file mode 100644 index 0000000..dca07fe Binary files /dev/null and b/gfx/frames/1.png differ diff --git a/gfx/misc/black_tile_cursor.1bpp.png b/gfx/misc/black_tile_cursor.1bpp.png new file mode 100644 index 0000000..7fdc4f1 Binary files /dev/null and b/gfx/misc/black_tile_cursor.1bpp.png differ diff --git a/gfx/misc/empty_tile.1bpp.png b/gfx/misc/empty_tile.1bpp.png new file mode 100644 index 0000000..3233c13 Binary files /dev/null and b/gfx/misc/empty_tile.1bpp.png differ diff --git a/gfx/misc/poke_balls.png b/gfx/misc/poke_balls.png new file mode 100644 index 0000000..830f72b Binary files /dev/null and b/gfx/misc/poke_balls.png differ diff --git a/gfx/pokedex/locations.png b/gfx/pokedex/locations.png new file mode 100644 index 0000000..c7e37a2 Binary files /dev/null and b/gfx/pokedex/locations.png differ diff --git a/gfx/pokedex/m_kg.png b/gfx/pokedex/m_kg.png deleted file mode 100644 index e26dada..0000000 Binary files a/gfx/pokedex/m_kg.png and /dev/null differ diff --git a/gfx/pokedex/pokedex.png b/gfx/pokedex/pokedex.png index 143835e..d4637ce 100644 Binary files a/gfx/pokedex/pokedex.png and b/gfx/pokedex/pokedex.png differ diff --git a/gfx/pokegear/town_map.png b/gfx/pokegear/town_map.png index 7889b09..69c06b4 100644 Binary files a/gfx/pokegear/town_map.png and b/gfx/pokegear/town_map.png differ diff --git a/gfx/trainer_card/colon.png b/gfx/trainer_card/colon.png new file mode 100644 index 0000000..56039e7 Binary files /dev/null and b/gfx/trainer_card/colon.png differ diff --git a/gfx/trainer_card/id_no.png b/gfx/trainer_card/id_no.png new file mode 100644 index 0000000..ad0f7d6 Binary files /dev/null and b/gfx/trainer_card/id_no.png differ diff --git a/gfx/trainer_card/leaders.png b/gfx/trainer_card/leaders.png index dceb21f..66c0919 100644 Binary files a/gfx/trainer_card/leaders.png and b/gfx/trainer_card/leaders.png differ diff --git a/gfx/trainer_card/trainer_card.png b/gfx/trainer_card/trainer_card.png index 8fa51d1..ecce895 100644 Binary files a/gfx/trainer_card/trainer_card.png and b/gfx/trainer_card/trainer_card.png differ 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 diff --git a/wram.asm b/wram.asm index cca7b91..08f974a 100644 --- a/wram.asm +++ b/wram.asm @@ -317,7 +317,11 @@ SECTION "CE5F", WRAM0[$CE5F] wce5f:: ; ce5f ; TODO db -SECTION "CE63", WRAM0[$CE63] +SECTION "CE61", WRAM0[$CE61] + +wActiveFrame:: db ; ce61 + + db ; TODO wce63:: db ; ce63 ; 76543210 -- cgit v1.2.3 From 51282e60298fa9566dd320615fdb177fa33780a7 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 3 Jun 2018 04:23:23 +0200 Subject: wram: document some menu and backpack variables Signed-off-by: Tauwasser --- constants/misc_constants.asm | 6 ++++++ shim.sym | 1 - wram.asm | 34 ++++++++++++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 3 deletions(-) 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/shim.sym b/shim.sym index 82d5b02..2e307a0 100644 --- a/shim.sym +++ b/shim.sym @@ -103,7 +103,6 @@ 00:cdbe wTargetMapUnk 00:cdbf wTargetMapGroup 00:cdc0 wTargetMapId -00:ce62 wTextBoxFlags 00:ce67 wPlayerName 01:d165 wTMCounts diff --git a/wram.asm b/wram.asm index 08f974a..0a87feb 100644 --- a/wram.asm +++ b/wram.asm @@ -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,7 +192,16 @@ 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 @@ -321,7 +342,7 @@ SECTION "CE61", WRAM0[$CE61] wActiveFrame:: db ; ce61 - db ; TODO +wTextBoxFlags:: db ; ce62 wce63:: db ; ce63 ; 76543210 @@ -356,6 +377,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 -- cgit v1.2.3 From 069b002346f14d48125f7c913b58064bb1d43ca7 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 3 Jun 2018 04:43:14 +0200 Subject: home: begin disassembling some table call functions --- home/jumptable.asm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 home/jumptable.asm 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 -- cgit v1.2.3 From c9874e1a7b67b539ed448f57147e139397f7b324 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 3 Jun 2018 04:44:18 +0200 Subject: home: move PrintLetterDelay to menu That's where most of the textbox code will live some day, ... probably Signed-off-by: Tauwasser --- home/menu.asm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ home/print_bcd.asm | 46 ---------------------------------------------- 2 files changed, 47 insertions(+), 46 deletions(-) create mode 100644 home/menu.asm 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 -- cgit v1.2.3 From e51ea1412c8be994b713f9748d78ac7efb347c43 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 3 Jun 2018 04:51:38 +0200 Subject: engine: begin disassembling overworld code Right now it's only code that calls the start and debug menus as well as the select button. Signed-off-by: Tauwasser --- engine/overworld.asm | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ hram.asm | 6 +++++- shim.sym | 3 +++ wram.asm | 3 ++- 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 engine/overworld.asm 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 diff --git a/hram.asm b/hram.asm index aa66b0e..3956201 100644 --- a/hram.asm +++ b/hram.asm @@ -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 diff --git a/shim.sym b/shim.sym index 2e307a0..9b675e5 100644 --- a/shim.sym +++ b/shim.sym @@ -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 diff --git a/wram.asm b/wram.asm index 0a87feb..92d2a2b 100644 --- a/wram.asm +++ b/wram.asm @@ -205,7 +205,8 @@ wMenuScrollPosition:: db ; cd49 wTextDest:: ds 2; cd4a - ds 3 ; TODO +StartmenuCloseAndSelectHookBank:: db ; cd4c +StartmenuCloseAndSelectHookPtr:: dw ; cd4d wPredefID:: ; cd4f db -- cgit v1.2.3