summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoranmart <andrewrmartinek@gmail.com>2016-02-15 00:36:57 -0500
committeranmart <andrewrmartinek@gmail.com>2016-02-15 00:36:57 -0500
commitdc06e764c0d0a4f56d01474c5397a8e47aa0aa13 (patch)
tree37b5cae89ef34f4da5653e9e541dae92ef28398c /src
parent6df8da7bb2e5c0a3953c8e61446ee826680c1fdf (diff)
Disassembled Battle Submenu functions
Disassembled a pointer table to each battle submenu and some code mentioned in their functions, documented two wram bytes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/engine/bank1.asm338
-rwxr-xr-xsrc/engine/bank2.asm2
-rwxr-xr-xsrc/engine/bank3.asm4
-rwxr-xr-xsrc/engine/bank7.asm2
-rwxr-xr-xsrc/engine/home.asm16
-rw-r--r--src/hram.asm8
-rwxr-xr-xsrc/wram.asm12
7 files changed, 364 insertions, 18 deletions
diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm
index 110f13e..9ddc787 100755
--- a/src/engine/bank1.asm
+++ b/src/engine/bank1.asm
@@ -90,7 +90,7 @@ StartDuel: ; 409f (1:409f)
ld [wBattleMenuSelection], a
call $35e6
call $54c8
- call $4225
+ call Func_4225
call $0f58
ld a, [wBattleFinished]
or a
@@ -189,7 +189,7 @@ StartDuel: ; 409f (1:409f)
jr nz, .asm_41a7
ld a, [wBattleFinished]
cp $3
- jr z, .asm_41c8
+ jr z, .tiedBattle
call Func_39fc
call WaitForWideTextBoxInput
call $3b31
@@ -198,7 +198,7 @@ StartDuel: ; 409f (1:409f)
ldh [hWhoseTurn], a
ret
-.asm_41c8
+.tiedBattle
call WaitForWideTextBoxInput
call $3b31
ld a, [wDuelTheme]
@@ -232,7 +232,337 @@ StartDuel: ; 409f (1:409f)
ret
; 0x420b
-INCBIN "baserom.gbc",$420b,$5aeb - $420b
+INCBIN "baserom.gbc",$420b,$4225 - $420b
+
+Func_4225: ; 4225 (1:4225)
+ ld a, $f1
+ call GetTurnDuelistVariable
+ ld [$CC0D], a
+ ld a, [$cc06]
+ cp a, $02
+ jr c, .asm_4237
+ call $70f6
+
+.asm_4237
+ call $70e6
+ call $4933
+ call $10cf
+ jr nc, .asm_4248
+ ld a, $02
+ ld [wBattleFinished], a
+ ret
+
+.asm_4248
+ ldh [$ff98], a
+ call $1123
+ ld a, [$cc0d]
+ cp $00
+ jr z, Func_4262
+ call GetOpposingTurnDuelistVariable_SwapTurn
+ call $34E2
+ call GetOpposingTurnDuelistVariable_SwapTurn
+ call c, $4b2c
+ jr Func_426d
+
+Func_4262:
+ call $4b2c
+ call $100b
+
+Func_4268:
+ ld a, $06
+ call $51e7
+
+Func_426d:
+ call $4f9d
+ ld a, [$cc0d]
+ cp a, $00
+ jr z, Func_4295
+ cp a, $01
+ jp z, $6911
+ xor a
+ ld [wVBlankCtr], a
+ ld [$cbf9], a
+ ld hl, $0088
+ call $2a36
+ call $2bbf
+ ld a, $FF
+ ld [$cc11], a
+ ld [$cc10], a
+ ret
+
+Func_4295:
+ call DrawWideTextBox
+ ld hl, $54e9
+ call Func_2c08
+ call $669D
+ ld a, [wBattleFinished]
+ or a
+ ret nz
+ ld a, [wBattleMenuSelection]
+ call $2710
+
+Func_42ac:
+ call DoFrame
+ ldh a, [hButtonsHeld]
+ and a, $02
+ jr z, .asm_42cc
+ ldh a, [hButtonsPressed]
+ bit 6, a
+ jr nz, Func_430b
+ bit 7, a
+ jr nz, Func_4311
+ bit 5, a
+ jr nz, Func_4320
+ bit 4, a
+ jr nz, Func_4317
+ bit 3, a
+ jp nz, $4364
+
+.asm_42cc
+ ldh a, [hButtonsPressed]
+ and a, $08
+ jp nz, $4370
+ ldh a, [hButtonsPressed]
+ bit 2, a
+ jp nz, $458e
+ ld a, [$cbe7]
+ or a
+ jr nz, Func_42ac
+ call $271a
+ ld a, e
+ ld [wBattleMenuSelection], a
+ jr nc, Func_42ac
+ ldh a, [hCurrentMenuItem]
+ ld hl, BattleMenuFunctionTable
+ jp JumpToFunctionInTable
+
+BattleMenuFunctionTable: ; 42f1 (1:42f1)
+ dw OpenHandMenu
+ dw OpenBattleAttackMenu
+ dw OpenBattleCheckMenu
+ dw OpenPokemonPowerMenu
+ dw PlayerRetreat
+ dw PlayerEndTurn
+
+INCBIN "baserom.gbc",$42fd, $430b - $42fd
+
+Func_430b: ; 430b (1:430b)
+ call Func_4329
+ jp $426d
+
+Func_4311: ; 4311 (1:4311)
+ call Func_4333
+ jp $426d
+
+Func_4317: ; 4317 (1:4317)
+ call Func_4339
+ jp c, $4295
+ jp $426d
+
+Func_4320: ; 4320 (1:4320)
+ call Func_4342
+ jp c, $4295
+ jp $426d
+
+Func_4329: ; 4329 (1:4329)
+ call GetOpposingTurnDuelistVariable_SwapTurn
+ call Func_4333
+ call GetOpposingTurnDuelistVariable_SwapTurn
+ ret
+
+Func_4333: ; 4333 (1:4333)
+ call $5fdd
+ jp $6008
+
+Func_4339: ; 4339 (1:4339)
+ call GetOpposingTurnDuelistVariable_SwapTurn
+ call $5550
+ jp GetOpposingTurnDuelistVariable_SwapTurn
+
+Func_4342: ; 4342 (1:4342)
+ jp $5550
+
+
+INCBIN "baserom.gbc",$4345, $438e - $4345
+
+
+
+
+OpenPokemonPowerMenu: ; 438e (1:438e)
+ call $6431
+ jp c, Func_426d
+ call $1730
+ jp Func_426d
+
+PlayerEndTurn: ; 439a (1:439a)
+ ld a, $08
+ call $51e7
+ jp c, Func_4268
+ ld a, $05
+ call $0f7f
+ call $717a
+ ret
+
+PlayerRetreat: ; 43ab (1:43ab)
+ ld a, $f0
+ call GetTurnDuelistVariable
+ and a,$0f
+ cp a, $01
+ ldh [$ffa0], a
+ jr nz, Func_43f1
+ ld a, [$CC0C]
+ or a
+ jr nz, Func_43e8
+ call $45bb
+ jr c, Func_441f
+ call $4611
+ jr c, Func_441c
+ ld hl, $010e
+ call DrawWideTextBox_WaitForInput
+ call $600c
+ jr c, Func_441c
+ ld [wBenchSelectedPokemon], a
+ ld a, [wBenchSelectedPokemon]
+ ldh [$ffa1], a
+ ld a, $04
+ call $0f7f
+ call $657a
+ jr nc, Func_441c
+ call $4f9d
+
+Func_43e8: ; 43e8
+ ld hl, $003d
+ call DrawWideTextBox_WaitForInput
+ jp $4295
+
+Func_43f1: ; 43f1 (1:43f1)
+ call $45bb
+ jr c, Func_441f
+ call $4611
+ jr c, Func_441c
+ call $6558
+ ld hl, $010e
+ call DrawWideTextBox_WaitForInput
+ call $600c
+ ld [wBenchSelectedPokemon], a
+ ldh [$ffa1], a
+ push af
+ call $6564
+ pop af
+ jp c, Func_426d
+ ld a, $04
+ call $0f7f
+ call $657a
+
+Func_441c: ; 441c (1:441c)
+ jp Func_426d
+
+Func_441f: ; 441f (1:441f)
+ call DrawWideTextBox_WaitForInput
+ jp $4295
+
+OpenHandMenu: ; 4425 (1:4425)
+ ld a, $ee
+ call GetTurnDuelistVariable
+ or a
+ jr nz, Func_4436
+ ld hl, $00a4
+ call DrawWideTextBox_WaitForInput
+ jp $4295
+
+Func_4436: ; 4436 (1:4436)
+INCBIN "baserom.gbc",$4436, $4585 - $4436
+
+OpenBattleCheckMenu: ; 4585 (1:4585)
+ call $3b31
+ call $3096
+ jp Func_426d
+
+INCBIN "baserom.gbc",$458e, $46fc - $458e
+
+
+OpenBattleAttackMenu: ; 46fc (1:46fc)
+ call $33c1
+ jr c, .asm_4706
+ call $4918
+ jr nc, .asm_470c
+
+.asm_4706
+ call DrawWideTextBox_WaitForInput
+ jp $4295
+
+.asm_470c
+ xor a
+ ld [wBattleSubMenuSelected], a
+
+Func_4710: ; 4710 (1:4710)
+ call $4823
+ or a
+ jr nz, Func_471f
+ ld hl, $003c
+ call DrawWideTextBox_WaitForInput
+ jp $4295
+
+Func_471f: ; 471f (1:471f)
+ push af
+ ld a, [wBattleSubMenuSelected]
+ ld hl, $47e4
+ call InitializeCursorParameters
+ pop af
+ ld [wNumMenuItems], a
+ ldh a, [hWhoseTurn]
+ ld h, a
+ ld l, $bb
+ ld a, [hl]
+ call $1376
+.asm_4736
+ call DoFrame
+ ldh a, [hButtonsPressed]
+ and a, $08
+ jr nz, Func_4782
+ call Func_264b
+ jr nc, .asm_4736
+ cp a, $ff
+ jp z, $4295
+ ld [wBattleSubMenuSelected], a
+ call $488f
+ jr nc, Func_4759
+ ld hl, $00c0
+ call DrawWideTextBox_WaitForInput
+ jr Func_4710
+
+Func_4759: ; 4759 (1:4759)
+ ldh a, [hCurrentMenuItem]
+ add a
+ ld e, a
+ ld d, $00
+ ld hl, $c510
+ add hl, de
+ ld d, [hl]
+ inc hl
+ ld e, [hl]
+ call $16c0
+ call $33e1
+ jr c, Func_477d
+ ld a, $07
+ call $51e7
+ jp c, Func_4268
+ call $1730
+ jp c, Func_426d
+ ret
+
+Func_477d: ; 477d (1:477d)
+ call DrawWideTextBox_WaitForInput
+ jr Func_4710
+
+Func_4782: ; 4782 (1:4782)
+ call $478b
+ call $4f9d
+ jp Func_4710
+
+
+INCBIN "baserom.gbc",$478b, $5aeb - $478b
+
Func_5aeb: ; 5aeb (1:5aeb)
INCBIN "baserom.gbc",$5aeb,$6785 - $5aeb
diff --git a/src/engine/bank2.asm b/src/engine/bank2.asm
index 04e6218..ad42c57 100755
--- a/src/engine/bank2.asm
+++ b/src/engine/bank2.asm
@@ -90,7 +90,7 @@ Func_8dbc: ; 8dbc (2:4dbc)
jr c, Func_8dbc
call Func_264b
jr nc, .asm_8dc8
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
cp $ff
ret z
ld [$ceb1], a
diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm
index 00903a3..cdceeb1 100755
--- a/src/engine/bank3.asm
+++ b/src/engine/bank3.asm
@@ -962,7 +962,7 @@ MainMenu_c75a: ; c75a (3:475a)
jr nc, .asm_c76a
ld a, e
ld [$d0b8], a
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
cp e
jr nz, .asm_c793
cp $5
@@ -1046,7 +1046,7 @@ PC_c7ea: ; c7ea (3:47ea)
jr nc, .asm_c806
ld a, e
ld [$d0b9], a
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
cp e
jr nz, .asm_c82f
cp $4
diff --git a/src/engine/bank7.asm b/src/engine/bank7.asm
index 94a5e0a..05a5838 100755
--- a/src/engine/bank7.asm
+++ b/src/engine/bank7.asm
@@ -219,7 +219,7 @@ Func_1d11c: ; 1d11c (7:511c)
call $51e9
pop af
jr nc, .asm_1d15a
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
cp e
jr nz, .asm_1d15a
ld [$d627], a
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 41ac92a..bf26b1c 100755
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -3376,7 +3376,7 @@ INCBIN "baserom.gbc",$2589,$2636 - $2589
; initializes cursor parameters from the 8 bytes starting at hl
InitializeCursorParameters: ; 2636 (0:2636)
ld [wCurMenuItem], a
- ldh [$ffb1], a
+ ldh [hCurrentMenuItem], a
ld de, wCursorXPosition
ld b, $8
.asm_2640
@@ -3425,7 +3425,7 @@ Func_264b: ; 264b (0:264b)
ld [wCursorBlinkCounter], a
.asm_2685
ld a, [wCurMenuItem]
- ldh [$ffb1], a
+ ldh [hCurrentMenuItem], a
ld hl, $cd17
ld a, [hli]
or [hl]
@@ -3433,7 +3433,7 @@ Func_264b: ; 264b (0:264b)
ld a, [hld]
ld l, [hl]
ld h, a
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
call CallHL
jr nc, HandleMenuInput
.asm_269b
@@ -3441,7 +3441,7 @@ Func_264b: ; 264b (0:264b)
call Func_26c0
ld a, [wCurMenuItem]
ld e, a
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
scf
ret
.asm_26a9
@@ -3453,14 +3453,14 @@ Func_264b: ; 264b (0:264b)
ld a, [wCurMenuItem]
ld e, a
ld a, $ff
- ldh [$ffb1], a
+ ldh [hCurrentMenuItem], a
call Func_26c0
scf
ret
Func_26c0: ; 26c0 (0:26c0)
push af
- ldh a, [$ffb1]
+ ldh a, [hCurrentMenuItem]
inc a
jr z, .asm_26ca
ld a, $2
@@ -3668,7 +3668,7 @@ Func_2af0: ; 2af0 (0:2af0)
jr .asm_2b1f
.asm_2b50
ld a, [wCurMenuItem]
- ldh [$ffb1], a
+ ldh [hCurrentMenuItem], a
or a
jr nz, .asm_2b5c
ld [$cd9a], a
@@ -3677,7 +3677,7 @@ Func_2af0: ; 2af0 (0:2af0)
xor a
ld [$cd9a], a
ld a, $1
- ldh [$ffb1], a
+ ldh [hCurrentMenuItem], a
scf
ret
diff --git a/src/hram.asm b/src/hram.asm
index be24666..978501c 100644
--- a/src/hram.asm
+++ b/src/hram.asm
@@ -49,8 +49,14 @@ hWhoseTurn:: ; ff97
hffaf:: ; ffaf
ds 1
+
+ ds 1
- ds 5
+hCurrentMenuItem::
+ ds 1
+
+ ds 3
+
hffb5:: ; ffb5
ds 1
diff --git a/src/wram.asm b/src/wram.asm
index cb50d68..17c9878 100755
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -276,7 +276,17 @@ wSerialRecvBuf:: ; $cba5 - $cbc4
wBattleMenuSelection:: ; $cbc6
ds $1
- ds $40
+ ds $4
+
+wBenchSelectedPokemon:: ; $cbcb
+ ds $1
+ ds $3
+
+;When you're in a battle menu like your hand
+;and you press a, this keeps track of where the cursor was
+wBattleSubMenuSelected:: ; $cbcf
+ ds $1
+ ds $37
; 0 = no one has won battle yet
; 1 = player whose turn it is has won the battle