labelled collision handlers

This commit is contained in:
chaos-lord 2017-07-12 18:59:28 +01:00
parent 3a675d926f
commit da4e2bbd49
11 changed files with 112 additions and 96 deletions

View File

@ -1,5 +1,5 @@
Func_202bc: ; 0x202bc
ld a, [wd54c]
HandleBlueCatchEmCollision: ; 0x202bc
ld a, [wSpecialModeCollisionID]
cp $4
jp z, Func_204f1
cp $c

View File

@ -1,5 +1,5 @@
Func_20000: ; 0x20000
ld a, [wd54c]
HandleRedCatchEmCollision: ; 0x20000
ld a, [wSpecialModeCollisionID]
cp $4
jp z, Func_20230 ;if collided with voltorb
cp $c

View File

@ -1,13 +1,13 @@
Func_10a95: ; 0x19a95
HandleEvoModeCollision: ; 0x19a95
ld a, [wCurrentStage]
call CallInFollowingTable
PointerTable_10a9b: ; 0x10a9b
padded_dab Func_20581 ; STAGE_RED_FIELD_TOP
padded_dab Func_20581 ; STAGE_RED_FIELD_BOTTOM
padded_dab Func_20581
padded_dab Func_20581
padded_dab Func_20bae ; STAGE_BLUE_FIELD_TOP
padded_dab Func_20bae ; STAGE_BLUE_FIELD_BOTTOM
HandleEvoModeCollisionPointerTable: ; 0x10a9b
padded_dab HandleRedEvoModeCollision ; STAGE_RED_FIELD_TOP
padded_dab HandleRedEvoModeCollision ; STAGE_RED_FIELD_BOTTOM
padded_dab HandleRedEvoModeCollision
padded_dab HandleRedEvoModeCollision
padded_dab HandleBlueEvoModeCollision ; STAGE_BLUE_FIELD_TOP
padded_dab HandleBlueEvoModeCollision ; STAGE_BLUE_FIELD_BOTTOM
StartEvolutionMode: ; 0x10ab3
ld a, [wInSpecialMode]

View File

@ -1,5 +1,5 @@
Func_20bae: ; 0x20bae
ld a, [wd54c]
HandleBlueEvoModeCollision: ; 0x20bae
ld a, [wSpecialModeCollisionID]
cp $4
jp z, Func_20e34
cp $1

View File

@ -1,21 +1,21 @@
Func_20581: ; 0x20581
ld a, [wd54c]
HandleRedEvoModeCollision: ; 0x20581
ld a, [wSpecialModeCollisionID]
cp $4
jp z, Func_2080f
jp z, Func_2080f ;voltorb
cp $3
jp z, Func_20839
cp $5
jp z, Func_2085a
jp z, Func_2085a ;bellsprout
cp $6
jp z, Func_20887
jp z, Func_20887 ;staryu
cp $7
jp z, Func_208a8
jp z, Func_208a8 ;diglett
cp $8
jp z, Func_208c9
jp z, Func_208c9 ;diglett
cp $9
jp z, Func_208ea
jp z, Func_208ea ;right rail?
cp $a
jp z, Func_2090b
jp z, Func_2090b ;right rail?
cp $b
jp z, Func_2092c
cp $c
@ -355,16 +355,16 @@ Func_20887: ; 0x20887
Func_208a8: ; 0x208a8
ld a, [wd551]
and a
jr nz, .asm_208c7
jr nz, .asm_208c7 ;if ??? is NZ, skip
ld a, [wIndicatorStates + 13]
and a
jr z, .asm_208c7
jr z, .asm_208c7 ;if indicator is off, skip
xor a
ld [wIndicatorStates + 13], a
ld [wIndicatorStates + 13], a ;flick off indicator
ld a, [wd55d]
and a
ld a, $0
ld [wd55d], a
ld [wd55d], a ;make ??? 0
jp nz, Func_20977
jp Func_209eb

View File

@ -1,13 +1,13 @@
Func_301ce: ; 0x301ce
HandleMapModeCollision: ; 0x301ce
ld a, [wCurrentStage]
call CallInFollowingTable
PointerTable_301d4: ; 0x301d4
padded_dab Func_314ae ; STAGE_RED_FIELD_TOP
padded_dab Func_314ae ; STAGE_RED_FIELD_BOTTOM
padded_dab Func_314ae
padded_dab Func_314ae
padded_dab Func_3161b ; STAGE_BLUE_FIELD_TOP
padded_dab Func_3161b ; STAGE_BLUE_FIELD_BOTTOM
HandleMapModeCollisionPointerTable: ; 0x301d4
padded_dab HandleRedMapModeCollision ; STAGE_RED_FIELD_TOP
padded_dab HandleRedMapModeCollision ; STAGE_RED_FIELD_BOTTOM
padded_dab HandleRedMapModeCollision
padded_dab HandleRedMapModeCollision
padded_dab HandleBlueMapModeCollision ; STAGE_BLUE_FIELD_TOP
padded_dab HandleBlueMapModeCollision ; STAGE_BLUE_FIELD_BOTTOM
StartMapMoveMode: ; 0x301ec
ld a, [wInSpecialMode]
@ -424,10 +424,10 @@ SecondMapMoveSet_BlueField:
db SAFFRON_CITY
db CINNABAR_ISLAND
Func_314ae: ; 0x314ae
HandleRedMapModeCollision: ; 0x314ae
ld a, [wTimerActive]
and a
ld a, [wd54c]
ld a, [wSpecialModeCollisionID]
jr z, .asm_314d0
cp $1
jp z, OpenRedMapMoveSlotFromLeft
@ -574,10 +574,10 @@ ResolveSucsessfulRedMapMove: ; 0x315d5
scf
ret
Func_3161b: ; 0x3161b
HandleBlueMapModeCollision: ; 0x3161b
ld a, [wTimerActive]
and a
ld a, [wd54c]
ld a, [wSpecialModeCollisionID]
jr z, .asm_3163d
cp $1
jp z, Func_31708

View File

@ -19,7 +19,7 @@ ResolveBlueFieldTopGameObjectCollisions: ; 0x1c715
call UpdateMapMoveCounters_BlueFieldTop
callba ShowExtraBallMessage
ld a, $0
callba Func_10000
callba CheckSpecialModeColision
ret
ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769
@ -44,7 +44,7 @@ ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769
call UpdateMapMoveCounters_BlueFieldBottom
callba ShowExtraBallMessage
ld a, $0
callba Func_10000
callba CheckSpecialModeColision
ret
InitBlueFieldCollisionAttributes: ; 0x1c7c7
@ -339,7 +339,7 @@ ResolveShellderCollision: ; 0x1c9c1
sub $3
ld [wWhichAnimatedShellder], a
ld a, $4
callba Func_10000
callba CheckSpecialModeColision
ld bc, FiveHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
ret
@ -398,7 +398,7 @@ ResolveBlueStageSpinnerCollision: ; 0x1ca5f
ld a, b
ld [wd50c], a
ld a, $c
callba Func_10000
callba CheckSpecialModeColision
; fall through
UpdateBlueStageSpinner: ; 0x1ca85
@ -659,7 +659,7 @@ HandleSecondaryLeftAlleyTrigger_BlueField: ; 0x1d010
xor a
ld [wLeftAlleyTrigger], a
ld a, $1
callba Func_10000
callba CheckSpecialModeColision
ret c
ld a, [wLeftAlleyCount]
cp $3
@ -688,7 +688,7 @@ HandleSecondaryRightAlleyTrigger_BlueField: ; 0x1d047
xor a
ld [wRightAlleyTrigger], a
ld a, $2
callba Func_10000
callba CheckSpecialModeColision
ret c
ld a, [wRightAlleyCount]
cp $3
@ -1003,7 +1003,7 @@ ResolveSlowpokeCollision: ; 0x1d216
cp $0
jr nz, .asm_1d2f8
ld a, $f
callba Func_10000
callba CheckSpecialModeColision
.asm_1d2f8
xor a
ld [wd642], a
@ -1122,7 +1122,7 @@ ResolveCloysterCollision: ; 0x1d32d
lb de, $00, $06
call PlaySoundEffect
ld a, $e
callba Func_10000
callba CheckSpecialModeColision
xor a
ld [wBlueFieldForceFieldFrameCounter], a
ld [wBlueFieldForceFieldSecondsCounter], a
@ -1176,7 +1176,7 @@ ResolveBonusMultiplierCollision_BlueField: ; 0x1d438
ld a, $3c
ld [wBonusMultiplierRailingEndLightDuration], a
ld a, $9
callba Func_10000
callba CheckSpecialModeColision
ld a, [wd610]
cp $3
jp nz, asm_1d4fa
@ -1203,7 +1203,7 @@ ResolveBonusMultiplierCollision_BlueField: ; 0x1d438
ld a, $1e
ld [wBonusMultiplierRailingEndLightDuration], a
ld a, $a
callba Func_10000
callba CheckSpecialModeColision
ld a, [wd611]
cp $3
jr nz, asm_1d4fa
@ -1539,7 +1539,7 @@ ResolvePsyduckPoliwagCollision: ; 0x1dbd2
ld a, [wLeftMapMoveCounter]
cp $3
ld a, $7
callba Func_10000
callba CheckSpecialModeColision
ld a, $2
ld [wPoliwagState], a
ld a, $78
@ -1576,7 +1576,7 @@ ResolvePsyduckPoliwagCollision: ; 0x1dbd2
ld a, [wRightMapMoveCounter]
cp $3
ld a, $8
callba Func_10000
callba CheckSpecialModeColision
ld a, [wRightMapMoveCounter]
cp $3
ccf
@ -2043,7 +2043,7 @@ ResolveBallUpgradeTriggersCollision_BlueField: ; 0x1e356
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $b
callba Func_10000
callba CheckSpecialModeColision
ld a, [wWhichPinballUpgradeTriggerId]
sub $13
ld c, a
@ -2594,7 +2594,7 @@ DoSlotLogic_BlueField: ; 0x1e830
xor a
ld [wIndicatorStates + 4], a
ld a, $d
callba Func_10000
callba CheckSpecialModeColision
jr nc, .asm_1e84b
ld a, $1
ld [wPinballIsVisible], a

View File

@ -18,7 +18,7 @@ ResolveRedFieldTopGameObjectCollisions: ; 0x1460e
call UpdateMapMoveCounters_RedFieldTop
callba ShowExtraBallMessage
ld a, $0
callba Func_10000
callba CheckSpecialModeColision
ret
ResolveRedFieldBottomGameObjectCollisions: ; 0x14652
@ -43,7 +43,7 @@ ResolveRedFieldBottomGameObjectCollisions: ; 0x14652
call UpdatePokeballs_RedField
callba ShowExtraBallMessage
ld a, $0
callba Func_10000
callba CheckSpecialModeColision
ret
UpdateBallSaver: ; 0x146a2
@ -259,7 +259,7 @@ ResolveDiglettCollision: ; 0x147aa
add $4
call LoadDiglettNumberGraphics
ld a, $8
callba Func_10000
callba CheckSpecialModeColision
ld a, [wRightMapMoveCounter]
cp $3
call z, HitRightDiglett3Times
@ -275,7 +275,7 @@ ResolveDiglettCollision: ; 0x147aa
ld a, [wLeftMapMoveCounter]
call LoadDiglettNumberGraphics
ld a, $7
callba Func_10000
callba CheckSpecialModeColision
ld a, [wLeftMapMoveCounter]
cp $3
call z, HitLeftDiglett3Times
@ -566,7 +566,7 @@ ResolveVoltorbCollision: ; 0x14d85
sub $3
ld [wWhichAnimatedVoltorb], a
ld a, $4
callba Func_10000
callba CheckSpecialModeColision
ld bc, FiveHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
ret
@ -613,7 +613,7 @@ ResolveRedStageSpinnerCollision: ; 0x14dea
ld a, b
ld [wd50c], a
ld a, $c
callba Func_10000
callba CheckSpecialModeColision
; fall through
UpdateRedStageSpinner: ; 0x14e10
@ -937,7 +937,7 @@ ResolveBallUpgradeTriggersCollision_RedField: ; 0x1535d
ld [wSecondaryLeftAlleyTrigger], a
call UpdateFieldStructures_RedField
ld a, $b
callba Func_10000
callba CheckSpecialModeColision
ld a, [wWhichPinballUpgradeTriggerId]
sub $e
ld c, a
@ -1301,7 +1301,7 @@ HandleSecondaryLeftAlleyTrigger_RedField: ; 0x1587c
xor a
ld [wLeftAlleyTrigger], a
ld a, $1
callba Func_10000
callba CheckSpecialModeColision
ret c
ld a, [wLeftAlleyCount]
cp $3
@ -1331,7 +1331,7 @@ HandleThirdLeftAlleyTrigger_RedField: ; 0x158c0
xor a
ld [wLeftAlleyTrigger], a
ld a, $1
callba Func_10000
callba CheckSpecialModeColision
ret c
ld a, [wLeftAlleyCount]
cp $3
@ -1360,7 +1360,7 @@ HandleSecondaryStaryuAlleyTrigger_RedField: ; 0x15904
xor a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $3
callba Func_10000
callba CheckSpecialModeColision
ret
HandleLeftAlleyTrigger_RedField: ; 0x1591e
@ -1395,7 +1395,7 @@ HandleSecondaryRightAlleyTrigger_RedField: ; 0x15944
xor a
ld [wRightAlleyTrigger], a
ld a, $2
callba Func_10000
callba CheckSpecialModeColision
ret c
ld a, [wRightAlleyCount]
cp $3
@ -1434,7 +1434,7 @@ HandleThirdRightAlleyTrigger_RedField: ; 0x15990
xor a
ld [wRightAlleyTrigger], a
ld a, $2
callba Func_10000
callba CheckSpecialModeColision
ret c
ld a, [wRightAlleyCount]
cp $3
@ -1606,7 +1606,7 @@ ResolveBellsproutCollision: ; 0x15e93
lb de, $00, $06
call PlaySoundEffect
ld a, $5
callba Func_10000
callba CheckSpecialModeColision
ret
BellsproutAnimationData: ; 0x15f69
@ -2040,7 +2040,7 @@ DoSlotLogic_RedField: ; 0x16352
xor a
ld [wIndicatorStates + 4], a
ld a, $d
callba Func_10000
callba CheckSpecialModeColision
jr nc, .asm_1636d
ld a, $1
ld [wPinballIsVisible], a
@ -2513,7 +2513,7 @@ ResolveStaryuCollision_Top: ; 0x16781
ld [wd503], a
call LoadStaryuGraphics_Top
ld a, $6
callba Func_10000
callba CheckSpecialModeColision
ret
.asm_167bd
@ -2562,7 +2562,7 @@ ResolveStaryuCollision_Bottom: ; 0x167ff
ld [wd503], a
call LoadStaryuGraphics_Bottom
ld a, $6
callba Func_10000
callba CheckSpecialModeColision
ret
.noCollision
@ -2695,7 +2695,7 @@ ResolveRedStageBonusMultiplierCollision: ; 016d9d
sub $21
jr nz, .hitRightRailing
ld a, $9
callba Func_10000
callba CheckSpecialModeColision
ld a, [wd610]
cp $3
jr nz, .asm_16e35
@ -2710,7 +2710,7 @@ ResolveRedStageBonusMultiplierCollision: ; 016d9d
.hitRightRailing
ld a, $a
callba Func_10000
callba CheckSpecialModeColision
ld a, [wd611]
cp $3
jr nz, .asm_16e35

View File

@ -4,16 +4,16 @@ GenRandom: ; 0x959
push hl
ld a, [wd811]
ld c, a
ld b, $0
ld b, $0 ;load ??? into c
inc a
cp 54 + 1
cp 54 + 1 ;inc ???, if ??? is 55 do alot of subtraction and make ??? 0
jr nz, .asm_96e
call Func_9fa
xor a
ld bc, $0000
.asm_96e
ld [wd811], a
ld hl, wd812
ld [wd811], a ;place wd811 + 1 back in
ld hl, wd812 ;choose number generated based on wd811 and all the subtraction
add hl, bc
ld a, [hl]
pop hl
@ -79,11 +79,11 @@ Func_9fa: ; 0x9fa
ld a, [wd810]
ld d, a
ld bc, wd812
ld hl, wd812 + $1f
ld hl, wd812 + $1f ;d831
ld e, $18
.asm_a06
ld a, [bc]
sub [hl]
sub [hl] ;sub d831 from wd812, add wd810 if it does not carry, put result in wd812. repeat 24 times
jr nc, .asm_a0b
add d
.asm_a0b
@ -109,11 +109,11 @@ Func_a21: ; 0xa21
push hl
ld c, a
ld b, $0
ld hl, Data_a38
ld hl, Data_a38 ;jump to c in table, load (twice c?) into l
add hl, bc
ld l, [hl]
call GenRandom
call Func_dd4
call GenRandom ;a = a psuedo random number
call Func_dd4 ;a * l
inc h
srl h
ld a, h
@ -121,7 +121,7 @@ Func_a21: ; 0xa21
pop bc
ret
Data_a38:
Data_a38: ;starting from 0, go up 2 each byte
x = 0
REPT 128
db x | ((x >> 7) & 1)

View File

@ -102,31 +102,31 @@ INCLUDE "engine/pinball_game/end_of_ball_bonus.asm"
SECTION "bank4", ROMX
Func_10000: ; 0x10000
CheckSpecialModeColision: ; 0x10000
ld c, a
ld a, [wInSpecialMode] ;special mode in c
and a
ret z ;if mot in special mode, ret
ld a, c
ld [wd54c], a
ld [wSpecialModeCollisionID], a
ld a, [wSpecialMode]
cp SPECIAL_MODE_CATCHEM ;branch based on mode
jp z, Func_10a95
jp z, HandleEvoModeCollision ;call evo mode logic
cp SPECIAL_MODE_EVOLUTION
jr nz, .next
callba Func_301ce
jr nz, .CatchMode ;call catch mode logic
callba HandleMapModeCollision ;call map move logic
ret
.next
.CatchMode
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_10027: ; 0x10027
padded_dab Func_20000 ; STAGE_RED_FIELD_TOP
padded_dab Func_20000 ; STAGE_RED_FIELD_BOTTOM
padded_dab Func_20000
padded_dab Func_20000
padded_dab Func_202bc ; STAGE_BLUE_FIELD_TOP
padded_dab Func_202bc ; STAGE_BLUE_FIELD_BOTTOM
HandleCatchEmCollisionCallTable: ; 0x10027
padded_dab HandleRedCatchEmCollision ; STAGE_RED_FIELD_TOP
padded_dab HandleRedCatchEmCollision ; STAGE_RED_FIELD_BOTTOM
padded_dab HandleRedCatchEmCollision
padded_dab HandleRedCatchEmCollision
padded_dab HandleBlueCatchEmCollision ; STAGE_BLUE_FIELD_TOP
padded_dab HandleBlueCatchEmCollision ; STAGE_BLUE_FIELD_BOTTOM
INCLUDE "engine/pinball_game/catchem_mode.asm"
INCLUDE "engine/pinball_game/evolution_mode.asm"

View File

@ -566,7 +566,23 @@ wInSpecialMode:: ; 0xd54b
; Set to 1 if currently in special game mode. See wSpecialMode.
ds $1
wd54c:: ; 0xd54c 10000 sets it to a input, records what the ball has collided with. 7 and 8 from the digletts, 4 from voltorb, b = upper cave lights?, 1 is upper left red trigger, 2 is a right trigger, 5 is bellsprout, d = slot, 6 = staryu, 9/a = right railing multiplier?,
wSpecialModeCollisionID:: ; 0xd54c 10000 sets it to a input, records what the ball has collided with
;0 nothing hit?
;1 upper left red trigger (under ditto) | secondary left trigger on blue
;2 second right trigger
;3 second staryu ally trigger
;4 any voltob | any shellder
;5 bellsprout | N/A
;6 staryu | N/A
;7 left diglett | poliwag
;8 right diglett | psyduck
;9 hit right railing (33 multiplier)
;a hit right railing (otherwise)
;b upper cave lights (ball upgrade)
;c Spinner
;d slot hole
;e N/A | cloyster
;f N/A | slowpoke
ds $1
wd54d:: ; 0xd54d catch mode progress?
@ -1908,7 +1924,7 @@ wOBP1:: ; 0xd80e
wd80f:: ; 0xd80f
ds $1
wd810:: ; 0xd810
wd810:: ; 0xd810 loaded by Func_9fa, RNG related
ds $1
wd811:: ; 0xd811