summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorElectroDeoxys <ElectroDeoxys@gmail.com>2019-07-25 12:48:08 +0100
committerElectroDeoxys <ElectroDeoxys@gmail.com>2019-08-07 23:24:59 +0100
commite1702ca1b0d7b5ef4b9721170fdc3072c9725d19 (patch)
tree0637e6774a52516ca0cf078d778c2c4c3294061d /src
parent536fb0b1987a1d7b3b290e6fa1e511686333e8bb (diff)
Disassemble Func_158b2
Diffstat (limited to 'src')
-rw-r--r--src/engine/bank05.asm395
1 files changed, 389 insertions, 6 deletions
diff --git a/src/engine/bank05.asm b/src/engine/bank05.asm
index 579feac..f3eef74 100644
--- a/src/engine/bank05.asm
+++ b/src/engine/bank05.asm
@@ -113,7 +113,10 @@ Func_140fe: ; 140fe (5:40fe)
INCROM $140fe, $1410a
Func_1410a: ; 1410a (5:410a)
- INCROM $1410a, $14226
+ INCROM $1410a, $1411d
+
+Func_1411d: ; 1411d (5:411d)
+ INCROM $1411d, $14226
Func_14226: ; 14226 (5:4226)
call CreateHandCardList
@@ -812,8 +815,373 @@ ZeroData: ; 1575e (5:575e)
INCROM $1576b, $158b2
-Func_158b2 ; 158b2 (5:58b2)
- INCROM $158b2, $15b72
+Func_158b2: ; 158b2 (5:58b2)
+ ld a, [wGotHeadsFromConfusionCheckDuringRetreat]
+ or a
+ jp nz, .asm_15b2f
+ xor a
+ ld [$cdd7], a
+ call Func_1411d
+ ld a, $80
+ ld [wcdbe], a
+ ld a, [$cdb4]
+ or a
+ jr z, .asm_158d4
+ srl a
+ srl a
+ sla a
+ call Func_140fe
+.asm_158d4
+ ld a, $f0
+ call GetTurnDuelistVariable
+ or a
+ jr z, .asm_158f1
+ and $c0
+ jr z, .asm_158e5
+ ld a, $02
+ call Func_140fe
+.asm_158e5
+ ld a, [hl]
+ and $0f
+ cp $01
+ jr nz, .asm_158f1
+ ld a, $01
+ call Func_140fe
+.asm_158f1
+ xor a
+ ldh [hTempPlayAreaLocation_ff9d], a
+ call CheckIfAnyMoveKnocksOutDefendingCard
+ jr nc, .asm_15915
+ call CheckIfCardCanUseSelectedMove
+ jp nc, .asm_15904
+ call Func_16311
+ jr nc, .asm_15915
+.asm_15904
+ ld a, $05
+ call Func_1410a
+ ld a, [$cdd3]
+ cp $02
+ jr nc, .asm_15915
+ ld a, $23
+ call Func_1410a
+.asm_15915
+ call Func_173b1
+ jr nc, .asm_15930
+ ld a, $02
+ call Func_140fe
+ call Func_17426
+ jr c, .asm_1594d
+ ld a, [$cdd2]
+ cp $02
+ jr nc, .asm_15941
+ ld a, $01
+ ld [$cdd7], a
+.asm_15930
+ call Func_17426
+ jr c, .asm_1594d
+ ld a, [$cdd2]
+ cp $02
+ jr nc, .asm_15941
+ ld a, $02
+ call Func_140fe
+.asm_15941
+ ld a, [$cdd3]
+ cp $02
+ jr nc, .asm_1594d
+ ld a, $02
+ call Func_1410a
+.asm_1594d
+ call GetArenaCardColor
+ call TranslateColorToWR
+ ld b, a
+ ld a, [$cdd1]
+ and b
+ jr z, .asm_15980
+ ld a, $01
+ call Func_140fe
+ ld a, [$cdd1]
+ ld b, a
+ ld a, $bc
+ call GetTurnDuelistVariable
+.asm_15968
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_1597b
+ call LoadCardDataToBuffer1_FromDeckIndex
+ ld a, [wLoadedCard1Type]
+ call TranslateColorToWR
+ and b
+ jr nz, .asm_15968
+ jr .asm_15980
+.asm_1597b
+ ld a, $02
+ call Func_1410a
+.asm_15980
+ ld a, [$cdcf]
+ ld b, a
+ call GetArenaCardWeakness
+ and b
+ jr z, .asm_159ad
+ ld a, $02
+ call Func_140fe
+ ld a, [$cdcf]
+ ld b, a
+ ld a, $bc
+ call GetTurnDuelistVariable
+.asm_15998
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_159a8
+ call LoadCardDataToBuffer1_FromDeckIndex
+ ld a, [wLoadedCard1Weakness]
+ and b
+ jr nz, .asm_15998
+ jr .asm_159ad
+.asm_159a8
+ ld a, $03
+ call Func_1410a
+.asm_159ad
+ ld a, [$cdcf]
+ ld b, a
+ call GetArenaCardResistance
+ and b
+ jr z, .asm_159bc
+ ld a, $03
+ call Func_1410a
+.asm_159bc
+ ld a, [$cdd0]
+ ld b, a
+ ld a, $bc
+ call GetTurnDuelistVariable
+ ld e, $00
+.asm_159c7
+ inc e
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_15a0e
+ push de
+ call LoadCardDataToBuffer1_FromDeckIndex
+ ld a, [wLoadedCard1Type]
+ call TranslateColorToWR
+ pop de
+ and b
+ jr z, .asm_159c7
+ ld a, $02
+ call Func_140fe
+ push de
+ ld a, $bb
+ call GetTurnDuelistVariable
+ call GetCardIDFromDeckIndex
+ ld a, e
+ pop de
+ cp $bd
+ jr nz, .asm_159fc
+ ld a, e
+ call Func_17383
+ jr nc, .asm_159fc
+ ld a, $0a
+ call Func_140fe
+ jr .asm_15a0e
+.asm_159fc
+ call GetArenaCardColor
+ call TranslateColorToWR
+ ld b, a
+ ld a, [$cdd0]
+ and b
+ jr z, .asm_15a0e
+ ld a, $03
+ call Func_1410a
+.asm_15a0e
+ ld a, [$cdcf]
+ ld b, a
+ ld a, $bc
+ call GetTurnDuelistVariable
+.asm_15a17
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_15a2a
+ call LoadCardDataToBuffer1_FromDeckIndex
+ ld a, [wLoadedCard1Resistance]
+ and b
+ jr z, .asm_15a17
+ ld a, $01
+ call Func_140fe
+.asm_15a2a
+ ld a, $bc
+ call GetTurnDuelistVariable
+ ld c, $00
+.asm_15a31
+ inc c
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_15a7a
+ ld a, c
+ ldh [hTempPlayAreaLocation_ff9d], a
+ push hl
+ push bc
+ call CheckIfAnyMoveKnocksOutDefendingCard
+ jr nc, .asm_15a4b
+ call CheckIfCardCanUseSelectedMove
+ jr nc, .asm_15a4f
+ call Func_16311
+ jr c, .asm_15a4f
+.asm_15a4b
+ pop bc
+ pop hl
+ jr .asm_15a31
+.asm_15a4f
+ pop bc
+ pop hl
+ ld a, $02
+ call Func_140fe
+ ld a, [$cdd3]
+ cp $02
+ jr nc, .asm_15a7a
+ call Func_17426
+ jr c, .asm_15a7a
+ xor a
+ ldh [hTempPlayAreaLocation_ff9d], a
+ call CheckIfAnyMoveKnocksOutDefendingCard
+ jr nc, .asm_15a70
+ call CheckIfCardCanUseSelectedMove
+ jp nc, .asm_15a7a
+.asm_15a70
+ ld a, $28
+ call Func_140fe
+ ld a, $01
+ ld [$cdd7], a
+.asm_15a7a
+ ld a, $bb
+ call GetNonTurnDuelistVariable
+ call SwapTurn
+ call GetCardIDFromDeckIndex
+ call SwapTurn
+ ld a, e
+ cp $9b
+ jr z, .asm_15a91
+ cp $87
+ jr nz, .asm_15abc
+.asm_15a91
+ xor a
+ call Func_17383
+ jr c, .asm_15abc
+ ld a, $bc
+ call GetTurnDuelistVariable
+ ld c, $00
+.asm_15a9e
+ inc c
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_15abc
+ ld a, c
+ push hl
+ push bc
+ call Func_17383
+ jr c, .asm_15ab0
+ pop bc
+ pop hl
+ jr .asm_15a9e
+.asm_15ab0
+ pop bc
+ pop hl
+ ld a, $05
+ call Func_140fe
+ ld a, $01
+ ld [$cdd7], a
+.asm_15abc
+ xor a
+ ldh [hTempPlayAreaLocation_ff9d], a
+ call GetPlayAreaCardRetreatCost
+ cp $02
+ jr c, .asm_15ad6
+ cp $03
+ jr nc, .asm_15ad1
+ ld a, $01
+ call Func_1410a
+ jr .asm_15ad6
+.asm_15ad1
+ ld a, $02
+ call Func_1410a
+.asm_15ad6
+ call Func_170c9
+ jr c, .asm_15ae5
+ call Func_17101
+ cp $02
+ jr c, .asm_15ae5
+ call Func_140fe
+.asm_15ae5
+ ld a, $bc
+ call GetTurnDuelistVariable
+ ld e, $00
+.asm_15aec
+ inc e
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_15b12
+ push de
+ push hl
+ call LoadCardDataToBuffer2_FromDeckIndex
+ ld a, [wLoadedCard2ID]
+ pop hl
+ pop de
+ cp $cc
+ jr z, .asm_15aec
+ cp $cb
+ jr z, .asm_15aec
+ ld a, e
+ ldh [hTempPlayAreaLocation_ff9d], a
+ push de
+ push hl
+ call Func_173b1
+ pop hl
+ pop de
+ jr c, .asm_15aec
+ jr .asm_15b17
+.asm_15b12
+ ld a, $14
+ call Func_1410a
+.asm_15b17
+ ld a, $bb
+ call GetTurnDuelistVariable
+ call GetCardIDFromDeckIndex
+ ld a, e
+ cp $cc
+ jr z, .asm_15b33
+ cp $cb
+ jr z, .asm_15b33
+ ld a, [wcdbe]
+ cp $83
+ jr nc, .asm_15b31
+.asm_15b2f
+ or a
+ ret
+.asm_15b31
+ scf
+ ret
+.asm_15b33
+ ld e, $00
+.asm_15b35
+ inc e
+ ld a, e
+ add $bb
+ call GetTurnDuelistVariable
+ cp $ff
+ jr z, .asm_15b2f
+ ld a, e
+ ldh [hTempPlayAreaLocation_ff9d], a
+ push de
+ call Func_173b1
+ pop de
+ jr c, .asm_15b35
+ ld a, e
+ push de
+ call Func_17383
+ pop de
+ jr nc, .asm_15b35
+ jr .asm_15b31
+; 0x15b54
+
+ INCROM $15b54, $15b72
Func_15b72 ; 15b72 (5:5b72)
INCROM $15b72, $15d4f
@@ -1071,7 +1439,10 @@ CheckIfActivePokemonCanUseAnyNonResidualMove: ; 162a1 (5:62a1)
ret
; 0x162c8
- INCROM $162c8, $1633f
+ INCROM $162c8, $16311
+
+Func_16311 ; 16311 (5:6311)
+ INCROM $16311, $1633f
; goes through $00 terminated list pointed
; by wcdae and compares it to each card in hand.
@@ -1150,7 +1521,19 @@ Func_164e8 ; 164e8 (5:64e8)
INCROM $164e8, $169f8
Func_169f8 ; 169f8 (5:69f8)
- INCROM $169f8, $173b1
+ INCROM $169f8, $170c9
+
+Func_170c9 ; 170c9 (5:70c9)
+ INCROM $170c9, $17101
+
+Func_17101 ; 17101 (5:7101)
+ INCROM $17101, $17383
+
+Func_17383 ; 17383 (5:7383)
+ INCROM $17383, $173b1
Func_173b1 ; 173b1 (5:73b1)
- INCROM $173b1, $18000 \ No newline at end of file
+ INCROM $173b1, $17426
+
+Func_17426 ; 17426 (5:7426)
+ INCROM $17426, $18000 \ No newline at end of file