From b0cb7a159d36c486b351df277b3c3b6613f17757 Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 3 Jun 2018 04:09:36 +0200 Subject: [PATCH] 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 0000000000000000000000000000000000000000..0492de53c4f08398985d759b7c91a3b8bc1769f4 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^2|&!j0VEidLzZ3!QcOwS?k)`f+xyS#2l6-zJR*x3 z82FBWFymBhK53vJdx@v7EBhlhW(EOC6_yX*fI<ZOofAs$ rp7_>V7ufwo)!}THC%dY^WwX1dey4B>PkxsMw1dIZ)z4*}Q$iB}S7t(0 literal 0 HcmV?d00001 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 b2017a5c1286726fca9181a5a295cdf849f8fbc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0YJ>b1SA+3#qGU-RIsOuV@SoV+%p$B84Nj?FF3Fl zENotLk1#wnUyYzzNbPT?-43+y=S1-?Uihj)N-+NdQ+jzYC-AlOrJj| n3*M{rwC-d3U)@`~=lK=(e=-Su>tuK*f~@g$^>bP0l+XkK*%vR3 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 0000000000000000000000000000000000000000..c598e005075dada4d96d1a7ef15d234fa8204955 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k1SA-~$L+cVq|7{B978H@*`Bz_$zZ_an=JzaJJiJij-{*KC}$h`ZxS+ToUn9hcTm+`zxAT6y_or!V3llRRDh KT-G@yGywo_M>85RZQ9?M-;y9*K7TgdXs-fwyOOij@<7clRRDh KT-G@yGywpD$0IlZ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e61d42d5cab6fcfd3ba84f1da69f5078cfb8956e GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^5|p~8JYk9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d47530dd6adf528a62bd08f9baadf363edd6455b GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c1SA;dueEpuq@+Dv978H@CI9&UpWm3-=wO4w h56OlDawmTMmuFZkCG2E<;8__+xu>h2%Q~loCIDin7|;L! literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ccec114c68cf3f3e2991b87c4043bc1443594c7b GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^93adDBp6m-`S}e!M$N>YfS6&=O*oeR#Qr6b~5#a=2|bP0l+XkKf$|pO literal 0 HcmV?d00001 diff --git a/gfx/font/font_extra.cdefghivslm.png b/gfx/font/font_extra.cdefghivslm.png new file mode 100644 index 0000000000000000000000000000000000000000..ebfe02caa5d80b768f2ebe9ec2301c0784365e88 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^2|&!j1SA+TpX@CHQVE_ejv*DdO8X4C4jAw-^G0!3 zP1>LLp`9z1dDR`ASfPTXnmKbWJajQM642PNKS^7j*~BwYpjuV>)k_h%GM-Iag(R3S zuzh)a+buHp_@Bjg1?s%(I&Ym`xwmGe#oXS@<@Wt~$(69B}; BHZuSK literal 0 HcmV?d00001 diff --git a/gfx/font/font_extra.png b/gfx/font/font_extra.png deleted file mode 100644 index d0eb38f9048ca97d62c997c0357169b17f89f4f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmV+)0pR|LP)t45v&T8#DF;ikEoq9GOYmLK9#o&HHUNOZ|>{`0-1ijBoCTymx|>0elqm?mG! zxpS8}H7axGf~^(>ZD+d=uPm@$W_qG0vbJKrq&xCbupB?E$jZ)78&qol`;+ E0F_fWod5s; literal 0 HcmV?d00001 diff --git a/gfx/frames/1.png b/gfx/frames/1.png new file mode 100644 index 0000000000000000000000000000000000000000..dca07fedc5660eab8d62628d81733e33d6491332 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^7C_9w0VEhYrzhtFDW)WEcNYeRRlUkaKptm-M`SSr z1Gg{;GcwGYBLNg-FY)wsWq-uR%)raCBkzMTP{_~I#W6(U^4tlITn7wz4zHQ?zy7B6 zmnjy_hVf1zOsh8DYx-!G-&eOxrSqKAAr(E(3afK}nT{#GJMnIMo9ojhT8X=A7dB0F h%{e>2;^X!(c`I%yp~kcN>_C$lJYD@<);T3K0RWoEJB9!N literal 0 HcmV?d00001 diff --git a/gfx/misc/black_tile_cursor.1bpp.png b/gfx/misc/black_tile_cursor.1bpp.png new file mode 100644 index 0000000000000000000000000000000000000000..7fdc4f1ebb64ae9b47d4096c8bd135afce187ffd GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^96&6<1SA+-0xLn3oTrOpNX4z>gaeHK{VN$IU|hrV z@4%S?ohJ;;hXVx)vsfqm*dn39HjQ<)we;tF+kiLU^V_87zW;A{=Msxhf>;EP3OB=2 WQC;!H2Tj+3jP-Q&b6Mw<&;$T^>nD!@ literal 0 HcmV?d00001 diff --git a/gfx/pokedex/locations.png b/gfx/pokedex/locations.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e37a2831f244304a43ac4a8bc9c2d3ee0d23b9 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^8bHj!1SA-qbpBEUQjwl6jv*Ddk}dxKynDO+{il0- ztB)7__^@v6?lRZ6x3+dSHa@(2wfy}dhed2QtDVD}FJ!Sv&n{n>|JliL5f9JqWqG|^ w%qwk^|Gay7b%Vu(7tcSh4sUBqW4_A7;CS44Q_YeeTS1n2y85}Sb4q9e091!Q{r~^~ literal 0 HcmV?d00001 diff --git a/gfx/pokedex/m_kg.png b/gfx/pokedex/m_kg.png deleted file mode 100644 index e26dada0944c4159a64fa19dbbf6959a54bfe353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^5b7@R9v@{yali9zVlg4mk(k%2!iBMtHjVxvXaz1SA-$jQ_R)sTxlg$B>F!xo0=>HaqaNCVERg zSUZVVf@xhsYqYlS2i?L+tgchcOlx;7ab~himuC(7aofMD|4Op{S#O`suY_iXdWQOC zwoXiud2!Z8b6Mw<&;$UyZ9$&^ literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<-1SA-^d8#e|sR&OO$B>F!$q}q8BW-U u9oist%0`N5YsJ-7!P*bb_;)`%WB-RiZb=?TtE=G(kX@dxelF{r5}E)7sXIjg diff --git a/gfx/pokegear/town_map.png b/gfx/pokegear/town_map.png index 7889b0986d21934c74a8dc99888804f7fc6fa10f..69c06b4793e1b502b549ae4c5a792e500ba97dac 100644 GIT binary patch literal 337 zcmV-X0j~auP)1p=5Jd;JHS9qG#!U!>fP8~gUj`F=fq)L+)@RTi5(d&4;;n?Y4XARL)}1{F)Glmh zB!whowtM_}`*(>5$oWk~PC%Kn2o=fDHiW|-Smzu9-98!Gh@7uLl?qMWeHvOZ*9>sq zzT8X*B9K!leS4Wti`X6z_Un)eb&Yy#&X8**!;NDJtZJ}M&dj8R#Nf|R2=DiG*-+o zF>1p=5Jd;n8ulOoV+bJ-4Dt?XcmE)29R{ERHH{oa3LzqNKn_|hEL(kPy#@~zLq}2{i(KgXjK0fDkZbKH z^Ue}<%IrOfq*DOk!cnkkK%yGu3R z+fX6YTvX?08jWeFFDKI^3ZFZLX3^*tGf<*?P3GJrN$3QzwbAZlQEHrDCuc*(jMHkI zeP&z*SeWq|AdG0%v_bP=|IhOPll~Y=72MotDTia`ZAOK-4N;O&1($j6GR+ggW%Hx< oN7y70ypOFVdQ&MBb@0J_%}K>z>% literal 0 HcmV?d00001 diff --git a/gfx/trainer_card/id_no.png b/gfx/trainer_card/id_no.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0f7d6d53a5cbaf10d39c3da88dcb7ff5355d74 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c1SA;dueEpuq?A2f978H@CI8@O;Yt7DcqCQe pBjE6vzKTLsBq|l0vE_BP6u)&MT(xrO^TF(6xmuM=c*kCfJbC)P2-6US$osu|r$H~2i ze-ikwckeyjUm#w!Y+1`Jn^5**5y2BI#&o@)r`5OuQL*3?{eNBj`L0ExCG=Y>09XJ} z4X_}iW^sE{9v+v6vTU9O=1(I!&(67s+Z%ntg5$>wc6Uy1?pVM@m<%vUwl$b|6mSvO zW6h60*YHwcTWg#ybW({*w5&u~{wUl)FTY=vGv?R()z$3aXj+(M#7k?^M={&tCE(&vH!Mkr#4b`eRd9&R7`jQtpKW8(raGGMkg2Bgu61frl zWWlsh_RqQfv0!i1dp}T8z52Y|40sE(yD}A6a*=muSEs#Ps=Kqx(}Sa+i>Ee$woN2n z(2m7|QQzFe2wG#0uW{1Iyy*@$00ecgg4FvIC#r<%gn#11S`Z}^C$!|CI9ULp`yE`H zo1}wWr@Z{o!3QKf&Nxv+)R@G{qZS(dI6+*Cv0aSzW$jZ3NeiBNoS;e?-$n^)WHqKZ zxmBV0=tOCY#H54f)gs=w%$w6BoSsfqd@gLq+hwm;cw~6KGuU1Hic8K=oHa3F6MwIo9<_DsH9?=nLoa!K ztOpllH_yB#INI>fS`z%U@xz+Fs&&6QC9fgzTJXF%*cbfAwZCb|CJc)OF~MRXn=mbw zm@r!`F+sOTCddid1UVs_APw0B%^{hfIV2M#hirmukxh^xvk7`aHbK_RCg>}o2{8q4 z5EEh!XG1h0rYLZ|BAO6)xQ0w7=oZlgIpOZw{{iy(dxo;nh|d53002ovPDHLkV1jHD BiWL9= diff --git a/gfx/trainer_card/trainer_card.png b/gfx/trainer_card/trainer_card.png index 8fa51d1509f8fbb91728d937dd81e0948b0c5a0f..ecce8950d03203ad7aba974c972ce80fe01c9c0c 100644 GIT binary patch literal 369 zcmV-%0gnEOP)b>!3`L1*6`+e`D4-4<90)yx(J^~2k=~@UZ(+b|08N?Gxl0HT-6Z^ycI^aR#Nopr zpT9mOf>ue3meltr^jcw7EBXfv2V4eVZd=tyAg}`O_!+)GDKLNSl6M9WDL{lmq(F~4 z+^$6YJbCZa3fRz~V}H~TGeDE4#bG{O?d?ke4RN~yJdQpt4okeU0vh6SP=F_&9vuDv zTMQNVsATkOZN)ULiZ`yXez9N zD2&X>oFxp1ZWJzelmHGgkk9yUaq|PDbJvGTB<<7?0ze1=1^_}P*e-6b0Nkh+La0`{9^u!FolZ`vn210v zfKY93#mXkM9+wnB8+|RJ*)6mL=>x7biPaU!L+_WMtGNlB~|p^ zqUCbCj%`wSG^;J-k!Ordi~=);#utBg zd!`m-8C8>t7tLym*+p2iIT>bf4RwaEKRS2Cjk`a=9%CsyQ`Ax{Q((&~??Nu`U;{D)brj>s6Wx2{I z5m%wPk{DyTcgGh;gHq|c<6lR62Rk}iH%&ijY#Ng7c@JI1w9EOZXBYqg002ovPDHLk FV1j&;Bu@YU 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