summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/overworld.asm56
-rw-r--r--hram.asm6
-rw-r--r--shim.sym3
-rw-r--r--wram.asm3
4 files changed, 66 insertions, 2 deletions
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