diff options
| author | anmart <andrewrmartinek@gmail.com> | 2016-02-15 00:36:57 -0500 | 
|---|---|---|
| committer | anmart <andrewrmartinek@gmail.com> | 2016-02-15 00:36:57 -0500 | 
| commit | dc06e764c0d0a4f56d01474c5397a8e47aa0aa13 (patch) | |
| tree | 37b5cae89ef34f4da5653e9e541dae92ef28398c | |
| parent | 6df8da7bb2e5c0a3953c8e61446ee826680c1fdf (diff) | |
Disassembled Battle Submenu functions
Disassembled a pointer table to each battle submenu and some code
mentioned in their functions, documented two wram bytes
| -rwxr-xr-x | src/engine/bank1.asm | 338 | ||||
| -rwxr-xr-x | src/engine/bank2.asm | 2 | ||||
| -rwxr-xr-x | src/engine/bank3.asm | 4 | ||||
| -rwxr-xr-x | src/engine/bank7.asm | 2 | ||||
| -rwxr-xr-x | src/engine/home.asm | 16 | ||||
| -rw-r--r-- | src/hram.asm | 8 | ||||
| -rwxr-xr-x | src/wram.asm | 12 | 
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 | 
