summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-06-08 13:45:50 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-06-08 13:45:50 -0400
commitb54195200748c54238ac88a06a85e8cd5517438e (patch)
tree2e1e5c1c4ca64a1c5060a7fb3d7df2b148768a1d
parentaa72af53ebccb0ad4ae920171fb72fef2b25797a (diff)
Disassemble another significant chunk of ROM0
-rw-r--r--data/predef_pointers.inc2
-rw-r--r--home/math.asm25
-rw-r--r--home/mon_stats.asm82
-rw-r--r--home/scrolling_menu.asm93
-rw-r--r--home/unknown_388f.asm101
-rw-r--r--hram.asm4
-rw-r--r--shim.sym22
-rw-r--r--wram.asm14
8 files changed, 336 insertions, 7 deletions
diff --git a/data/predef_pointers.inc b/data/predef_pointers.inc
index 2bf7e95..58b2de9 100644
--- a/data/predef_pointers.inc
+++ b/data/predef_pointers.inc
@@ -43,7 +43,7 @@ GiveItemPredef::
add_predef Function28c98
add_predef Function2d663
add_predef Function3d5ce
- add_predef Function3f019
+ add_predef PlaceGraphic
add_predef Function3f068 ; 20
add_predef Function3f04a
add_predef Function3d08c
diff --git a/home/math.asm b/home/math.asm
new file mode 100644
index 0000000..8b3db6f
--- /dev/null
+++ b/home/math.asm
@@ -0,0 +1,25 @@
+include "constants.asm"
+
+if DEBUG
+SECTION "Math utility functions", ROM0 [$3380]
+else
+SECTION "Math utility functions", ROM0 [$3344]
+endc
+
+Multiply::
+ push hl
+ push bc
+ callab _Multiply
+ pop bc
+ pop hl
+ ret
+
+Divide::
+ push hl
+ push de
+ push bc
+ homecall _Divide
+ pop bc
+ pop de
+ pop hl
+ ret
diff --git a/home/mon_stats.asm b/home/mon_stats.asm
new file mode 100644
index 0000000..8d702e8
--- /dev/null
+++ b/home/mon_stats.asm
@@ -0,0 +1,82 @@
+include "constants.asm"
+
+if DEBUG
+SECTION "Mon Stats", ROM0 [$394b]
+else
+SECTION "Mon Stats", ROM0 [$390f]
+endc
+
+DrawBattleHPBar::
+ push hl
+ push de
+ push bc
+ ld a, $60
+ ld [hli], a
+ ld a, $61
+ ld [hli], a
+ push hl
+ ld a, $62
+.asm_3957: ; 00:3957
+ ld [hli], a
+ dec d
+ jr nz, .asm_3957
+ ld a, $6b
+ add b
+ ld [hl], a
+ pop hl
+ ld a, e
+ and a
+ jr nz, .asm_396a
+ ld a, c
+ and a
+ jr z, .asm_397d
+ ld e, $1
+.asm_396a: ; 00:396a
+ ld a, e
+ sub $8
+ jr c, .asm_3979
+ ld e, a
+ ld a, $6a
+ ld [hli], a
+ ld a, e
+ and a
+ jr z, .asm_397d
+ jr .asm_396a
+
+.asm_3979: ; 00:3979
+ ld a, $62
+ add e
+ ld [hl], a
+.asm_397d: ; 00:397d
+ pop bc
+ pop de
+ pop hl
+ ret
+
+PrepMonFrontpic::
+ ld a, $1
+ ld [wSpriteFlipped], a
+_PrepMonFrontpic::
+ ld a, [wMonDexIndex]
+ and a
+ jr z, .asm_39a8
+ cp 252
+ jr nc, .asm_39a8
+ push hl
+ ld de, $9000
+ call LoadMonFrontSprite
+ pop hl
+ xor a
+ ldh [hGraphicStartTile], a
+ lb bc, 7, 7
+ predef PlaceGraphic
+ xor a
+ ld [wSpriteFlipped], a
+ ret
+
+.asm_39a8: ; 00:39a8
+ xor a
+ ld [wSpriteFlipped], a
+ inc a
+ ld [wMonDexIndex], a
+ ret
diff --git a/home/scrolling_menu.asm b/home/scrolling_menu.asm
new file mode 100644
index 0000000..28d3d3e
--- /dev/null
+++ b/home/scrolling_menu.asm
@@ -0,0 +1,93 @@
+include "constants.asm"
+
+if DEBUG
+SECTION "Scrolling Menu", ROM0 [$3810]
+else
+SECTION "Scrolling Menu", ROM0 [$37D4]
+endc
+
+Function3810::
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ push hl
+ ld h, d
+ ld l, e
+ call CopyMenuHeader
+ pop hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld a, [de]
+ ld [wMenuCursorBuffer], a
+ push de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld a, [de]
+ ld [wMenuScrollPosition], a
+ push de
+ call ScrollingMenu
+ pop de
+ ld a, [wMenuScrollPosition]
+ ld [de], a
+ pop de
+ ld a, [wMenuCursorY]
+ ld [de], a
+ ld a, [wMenuJoypad]
+ ret
+
+ScrollingMenu:: ; 00:383e
+ call CopyMenuData
+ ldh a, [hROMBank]
+ push af
+
+ ld a, BANK(_InitScrollingMenu) ; and BANK(_ScrollingMenu)
+ call Bankswitch
+
+ call _InitScrollingMenu
+ call SetPalettes
+ call _ScrollingMenu
+
+ pop af
+ call Bankswitch
+
+ ld a, [wMenuJoypad]
+ ret
+
+Function385a::
+ push hl
+ jr asm_3865
+
+Function385d::
+ callab Function_8f1cb
+asm_3865: ; 00:3865
+ pop hl
+ call MenuTextBox
+ ld c, $0
+ call Function3872
+ call CloseWindow
+ ret
+
+Function3872:: ; 00:3872
+ push bc
+ jr asm_387d
+
+Function3875::
+ callab Function8cd0c
+asm_387d: ; 00:387d
+ pop bc
+ call GetJoypad
+ ldh a, [hJoyDown]
+ and A_BUTTON | B_BUTTON
+ jr nz, .asm_388e
+ ld a, c
+ and a
+ jr z, Function3872
+ dec c
+ jr z, Function3872
+.asm_388e: ; 00:388e
+ ret
diff --git a/home/unknown_388f.asm b/home/unknown_388f.asm
new file mode 100644
index 0000000..54aea4d
--- /dev/null
+++ b/home/unknown_388f.asm
@@ -0,0 +1,101 @@
+include "constants.asm"
+
+if DEBUG
+SECTION "Unknown 388F", ROM0 [$388F]
+else
+SECTION "Unknown 388F", ROM0 [$3853]
+endc
+
+
+Function388f::
+ ret
+
+Function3890::
+ callba Function14cac
+ ret
+
+Function3899::
+ callba Function14dac
+ ret
+
+Function38a2::
+ callba Function14dc4
+ ret
+
+Function38ab::
+ callba Function14ddd
+ ret
+
+Function38b4::
+ callba Function14e00
+ ret
+
+Function38bd::
+ callba Function14e5f
+ ret
+
+Function38c6::
+ callba Function14e27
+ ret
+
+Function38cf::
+ callba Function14e4a
+ ret
+
+Function38d8::
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, $8
+ ld [wd637], a
+ ret
+
+Function38e3::
+ ldh a, [hJoyState]
+ and $f0
+ ret z
+ call Function3233
+ jp nz, Function323e
+ callab Function3ee3e
+ ld a, [wBattleMode]
+ and a
+ ret z
+ ld a, $3
+ call Function2117
+ call Function3240
+ ret
+
+Function3904::
+ predef Function3ef19
+ ld a, $f3
+ ldh [hMapEntryMethod], a
+ ld hl, wd4a9
+ set 5, [hl]
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ set 6, [hl]
+ ld a, $b
+ call Function2117
+ ret
+
+Function391f::
+ ret
+
+Function3910::
+ ld a, [wcd5d]
+ cp $1
+ jr z, .asm_392d
+ ld a, $4
+ call Function2117
+ ret
+
+.asm_392d: ; 00:392d
+ ld hl, wJoypadFlags
+ res 4, [hl]
+ ld hl, .text
+ call Function3111
+ call RotateFourPalettesLeft
+ jp Init
+
+.text:
+ text "つぎは がんばるぞ!!"
+ done
diff --git a/hram.asm b/hram.asm
index 8e49ad5..c49ace3 100644
--- a/hram.asm
+++ b/hram.asm
@@ -57,7 +57,9 @@ hJoyDebounceSrc:: db ; ffa5
hJoypadState2:: db ; ffa6
- ds 8 ; TODO
+ ds 6 ; TODO
+hGraphicStartTile:: db ; ffad
+hMoveMon:: db
UNION
diff --git a/shim.sym b/shim.sym
index f17d027..540508d 100644
--- a/shim.sym
+++ b/shim.sym
@@ -17,11 +17,15 @@
00:1CEB MenuBox
00:1D2D MenuBoxCoord2Tile
00:202C Function202c
-
+00:2117 Function2117
00:23DC LoadWildMons
00:23E5 FadeIn ; This is not OverworldFadeIn, but I don't know what it is
00:2C05 StartMenuCheck
+00:3111 Function3111
00:3171 Function3171
+00:3233 Function3233
+00:323E Function323e
+00:3240 Function3240
00:39BA PlayCry
00:3D86 WaitSFX
00:3D87 WaitSFX.wait
@@ -116,6 +120,17 @@
; ptr Copied to c5eb
; word Unknown (2 bytes)
05:470E UnknownMapBufferPointers
+05:4CAC Function14cac
+05:4DAC Function14dac
+05:4DC4 Function14dc4
+05:4DDD Function14ddd
+05:4E00 Function14e00
+05:4E5F Function14e5f
+05:4E27 Function14e27
+05:4E4A Function14e4a
+
+09:426A _InitScrollingMenu
+09:4287 _ScrollingMenu
0A:4C98 Function28c98
0A:4D6E Function28d6e
@@ -135,8 +150,9 @@
0F:691E Function3e91e
0F:6963 Function3e963
0F:69A9 _LoadWildMons
+0F:6E3E Function3ee3e
0F:6F19 Function3ef19
-0F:7019 Function3f019
+0F:7019 PlaceGraphic
0F:704A Function3f04a
0F:7068 Function3f068
@@ -175,7 +191,9 @@
23:44BE Function8c4be
23:4940 Function8c940
23:49C6 Function8c9c6
+23:4D0C Function8cd0c
23:60CC MenuMonIconGfx
+23:71CB Function_8f1cb
24:4000 SetClockDialog
24:4239 SlotMachineGame
diff --git a/wram.asm b/wram.asm
index 180b83d..d0d5f06 100644
--- a/wram.asm
+++ b/wram.asm
@@ -100,7 +100,8 @@ wMapBuffer::
wMapScriptNumber:: db ; c5e8
wMapScriptNumberLocation:: dw ; c5e9
wUnknownMapPointer:: dw ; c5eb ; TODO
- ds 19 ; TODO
+wc5ed:: db ; c5ed
+ ds 18 ; TODO
wMapBufferEnd:: ; c600
@@ -384,7 +385,10 @@ wFarCallBCBuffer:: ; cd54
dw
ds 3 ; TODO
-wVramState:: db
+wVramState:: db ; cd59
+
+ ds 3 ; TODO
+wcd5d:: db ; cd5d
SECTION "CD72", WRAM0[$CD72]
wcd72:: dw ; cd72
@@ -618,8 +622,10 @@ wBallQuantities:: db ; d1df
SECTION "Rival's Name", WRAM0[$D258]
wRivalsName:: ds 6 ; d258
-SECTION "D4AB", WRAM0[$D4AB]
+SECTION "D4AB", WRAM0[$D4A9]
+wd4a9:: db ; d4a9
+ ds 1 ; TODO
wJoypadFlags:: db ; d4ab
; 76543210
; ||||\__/
@@ -652,6 +658,8 @@ ENDR
wCurrMapObjectCount:: ; d5f6
db
+SECTION "D637", WRAM0[$D637]
+wd637:: db ; d637
SECTION "Used sprites", WRAM0[$D643]