summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/gfx.asm139
-rw-r--r--engine/overworld.asm56
2 files changed, 195 insertions, 0 deletions
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