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 <Tauwasser@tauwasser.eu>
This commit is contained in:
Tauwasser 2018-06-03 04:09:36 +02:00
parent 2de7726551
commit b0cb7a159d
31 changed files with 225 additions and 44 deletions

View File

@ -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

139
engine/gfx.asm Normal file
View File

@ -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 + (("" - "ア") * $08)
lb bc, BANK(FontGFX), ("" - "" + 1)
call CopyVideoDataDoubleOptimized
ld hl, $9700
ld de, FontExtraAB_GFX
lb bc, BANK(FontExtraAB_GFX), ("" - "" + 1)
call CopyVideoDataOptimized
ret
LoadHudGraphics:: ; f8057 (3e:4057)
ld hl, $9660
ld de, FontGFX + (("" - "ア") * $08)
lb bc, BANK(FontGFX), ("" - "" + 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

110
gfx.asm
View File

@ -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::

BIN
gfx/battle/hp_bar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

BIN
gfx/battle/levelup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

BIN
gfx/battle/markers.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

BIN
gfx/font/font_extra.ab.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

BIN
gfx/frames/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 B

BIN
gfx/misc/poke_balls.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 B

BIN
gfx/pokedex/locations.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 B

After

Width:  |  Height:  |  Size: 337 B

BIN
gfx/trainer_card/colon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

BIN
gfx/trainer_card/id_no.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 317 B

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 619 B

After

Width:  |  Height:  |  Size: 369 B

13
home/util.asm Normal file
View File

@ -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

View File

@ -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