diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-07-12 11:40:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-12 11:40:52 -0700 |
commit | 63a1c0e42a2d12ef86f389542a34285afa9183e3 (patch) | |
tree | fdfc1ad35ca7dd69b1a4a06014ce5be8c110b987 | |
parent | 3cd4aee0155496d3b093c31fb0758c08607ee892 (diff) | |
parent | da4e2bbd49eadfa084341dd11df39a392047e404 (diff) |
Merge pull request #22 from TwitchPlaysPokemon/chaos_requests
Chaos requests
18 files changed, 185 insertions, 169 deletions
diff --git a/engine/pinball_game.asm b/engine/pinball_game.asm index 81fdde7..66ff1de 100644 --- a/engine/pinball_game.asm +++ b/engine/pinball_game.asm @@ -158,7 +158,7 @@ GameScreenFunction_HandleBallPhysics: ; 0xd909 .skipDrawingScoreboard
ld a, [wTimerActive]
and a
- callba nz, Func_86a4
+ callba nz, DecrementTimer
ld a, [wMoveToNextScreenState]
and a
ret z
diff --git a/engine/pinball_game/ball_loss/ball_loss_meowth_bonus.asm b/engine/pinball_game/ball_loss/ball_loss_meowth_bonus.asm index cf84910..1bc7035 100644 --- a/engine/pinball_game/ball_loss/ball_loss_meowth_bonus.asm +++ b/engine/pinball_game/ball_loss/ball_loss_meowth_bonus.asm @@ -35,7 +35,7 @@ HandleBallLossMeowthBonus: ; 0xdfe2 .asm_e025
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld [wTimerActive], a
xor a
ld [wd495], a
diff --git a/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm b/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm index 897bafe..d331b61 100644 --- a/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm +++ b/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm @@ -1,5 +1,5 @@ -Func_202bc: ; 0x202bc
- ld a, [wd54c]
+HandleBlueCatchEmCollision: ; 0x202bc
+ ld a, [wSpecialModeCollisionID]
cp $4
jp z, Func_204f1
cp $c
@@ -142,9 +142,9 @@ Func_20394: ; 0x20394 .asm_20417
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $1
- ld [wd57f], a
+ ld [wPauseTimer], a
ld hl, wd54d
inc [hl]
ld c, $2
@@ -213,11 +213,11 @@ Func_2048f: ; 0x2048f Func_204b3: ; 0x204b3
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $7
ld [wd54d], a
; Automatically set Mew as caught, since you can't possibly catch it
diff --git a/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm b/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm index ee2c5ef..25e9f9f 100644 --- a/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm +++ b/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm @@ -1,11 +1,11 @@ -Func_20000: ; 0x20000
- ld a, [wd54c]
+HandleRedCatchEmCollision: ; 0x20000
+ ld a, [wSpecialModeCollisionID]
cp $4
- jp z, Func_20230
+ jp z, Func_20230 ;if collided with voltorb
cp $c
jp z, Func_202a8
cp $5
- jp z, Func_202b2
+ jp z, Func_202b2 ;bellsprout
cp $0
jr z, .asm_20018
scf
@@ -140,9 +140,9 @@ Func_200d3: ; 0x200d3 .hitMonThreeTimes
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $1
- ld [wd57f], a
+ ld [wPauseTimer], a
ld hl, wd54d
inc [hl]
ld c, $2
@@ -211,11 +211,11 @@ Func_201ce: ; 0x201ce Func_201f2: ; 0x201f2
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $7
ld [wd54d], a
; Automatically set Mew as caught, since you can't possibly catch it
diff --git a/engine/pinball_game/evolution_mode.asm b/engine/pinball_game/evolution_mode.asm index a6c594b..226ba48 100755 --- a/engine/pinball_game/evolution_mode.asm +++ b/engine/pinball_game/evolution_mode.asm @@ -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]
diff --git a/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm b/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm index bb5042f..afcb9ea 100644 --- a/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm +++ b/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm @@ -1,5 +1,5 @@ -Func_20bae: ; 0x20bae
- ld a, [wd54c]
+HandleBlueEvoModeCollision: ; 0x20bae
+ ld a, [wSpecialModeCollisionID]
cp $4
jp z, Func_20e34
cp $1
@@ -223,11 +223,11 @@ Func_20da0: ; 0x20da0 call Func_21079
.asm_20db3
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $2
ld [wd54d], a
xor a
diff --git a/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm b/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm index e21d09f..5bbf336 100644 --- a/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm +++ b/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm @@ -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
@@ -226,11 +226,11 @@ Func_2077b: ; 0x2077b call Func_20a55
.asm_2078e
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $2
ld [wd54d], a
xor a
@@ -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
diff --git a/engine/pinball_game/map_move.asm b/engine/pinball_game/map_move.asm index ebd26e1..888388a 100755 --- a/engine/pinball_game/map_move.asm +++ b/engine/pinball_game/map_move.asm @@ -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,21 +424,21 @@ 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, Func_31591
+ jp z, OpenRedMapMoveSlotFromLeft
cp $3
- jp z, Func_31591
+ jp z, OpenRedMapMoveSlotFromLeft
cp $2
- jp z, Func_315b3
+ jp z, OpenRedMapMoveSlotFromRight
cp $5
- jp z, Func_315b3
+ jp z, OpenRedMapMoveSlotFromRight
cp $d
- jp z, Func_315d5
+ jp z, ResolveSucsessfulRedMapMove
.asm_314d0
cp $0
jr z, .asm_314d6
@@ -486,11 +486,11 @@ UpdateMapMove_RedField: ; 0x3151f handle map move timer and fail when it expires ld [wLeftDiglettAnimationController], a
ld [wRightDiglettAnimationController], a
callba PlayLowTimeSfx
- ld a, [wd57e] ;if ??? is 0, quit, else make it zero (this only truns once per something?) and handle a failed map move
+ ld a, [wTimeRanOut] ;if ??? is 0, quit, else make it zero (this only truns once per something?) and handle a failed map move
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $3
ld [wd54d], a
xor a
@@ -515,13 +515,13 @@ UpdateMapMove_RedField: ; 0x3151f handle map move timer and fail when it expires call LoadScrollingText
ret
-Func_31591: ; 0x31591
+OpenRedMapMoveSlotFromLeft: ; 0x31591
ld a, [wMapMoveDirection]
and a
- jr nz, .asm_315b1
+ jr nz, .NotApplicibleOrCompleted
ld a, [wIndicatorStates]
and a
- jr z, .asm_315b1
+ jr z, .NotApplicibleOrCompleted
xor a
ld [wIndicatorStates], a
ld [wIndicatorStates + 2], a
@@ -530,17 +530,17 @@ Func_31591: ; 0x31591 ld a, $1
ld [wSlotIsOpen], a
ld [wd54d], a
-.asm_315b1
+.NotApplicibleOrCompleted
scf
ret
-Func_315b3: ; 0x315b3
+OpenRedMapMoveSlotFromRight: ; 0x315b3
ld a, [wMapMoveDirection]
and a
- jr z, .asm_315d3
+ jr z, .NotApplicibleOrCompleted
ld a, [wIndicatorStates + 1]
and a
- jr z, .asm_315d3
+ jr z, .NotApplicibleOrCompleted
xor a
ld [wIndicatorStates + 1], a
ld [wIndicatorStates + 3], a
@@ -549,11 +549,11 @@ Func_315b3: ; 0x315b3 ld a, $1
ld [wSlotIsOpen], a
ld [wd54d], a
-.asm_315d3
+.NotApplicibleOrCompleted
scf
ret
-Func_315d5: ; 0x315d5
+ResolveSucsessfulRedMapMove: ; 0x315d5
ld de, $0000
call PlaySong
rst AdvanceFrame
@@ -574,10 +574,10 @@ Func_315d5: ; 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
@@ -640,11 +640,11 @@ UpdateMapMove_BlueField: ; 0x3168c ld a, $1
ld [wPoliwagState], a
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $3
ld [wd54d], a
xor a
diff --git a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm index fd5992c..e2ac723 100644 --- a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm @@ -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
diff --git a/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm index a343bf4..10afcd3 100644 --- a/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm +++ b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm @@ -5,11 +5,11 @@ ResolveGengarBonusGameObjectCollisions: ; 0x18377 call Func_18d34
call Func_183b7
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $1
ld [wd7be], a
call Func_2862
diff --git a/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm index 8f0766d..85b4598 100644 --- a/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm +++ b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm @@ -224,11 +224,11 @@ ResolveMeowthBonusGameObjectCollisions: ; 0x2442a jr z, .asm_244c1
callba PlayLowTimeSfx
.asm_244c1
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $1
ld [wd7be], a
call Func_2862
diff --git a/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm index 0a2192b..17e0b0b 100644 --- a/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm +++ b/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm @@ -3,11 +3,11 @@ ResolveMewtwoBonusGameObjectCollisions: ; 0x19451 call Func_19701
call Func_1948b
callba PlayLowTimeSfx
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $1
ld [wd7be], a
call Func_2862
diff --git a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm index 6679037..7d9774e 100644 --- a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm @@ -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
@@ -224,31 +224,31 @@ ResolveWildMonCollision_RedField: ; 0x14795 ResolveDiglettCollision: ; 0x147aa
ld a, [wWhichDiglett]
and a
- jp z, .asm_14834
+ jp z, .asm_14834 ;if no diglett hit (runs every frame when above a certain line on bottom boards, jump
xor a
ld [wWhichDiglett], a
ld a, [wWhichDiglettId]
sub $1
sla a
- ld c, a
+ ld c, a ;-1 then * 2
ld b, $0
- ld hl, wLeftMapMoveCounter
+ ld hl, wLeftMapMoveCounter ;select approprioate map move counter
add hl, bc
ld a, [hl]
cp $3
- jr z, .asm_14834
+ jr z, .asm_14834 ;if counter is set to 3, jump
inc a
- ld [hld], a
- ld [hl], $50
+ ld [hld], a ;oherwise, add 1 to the counter
+ ld [hl], $50 ;and set the animation of that diglett
ld hl, wLeftMapMoveCounterFramesUntilDecrease
add hl, bc
- ld a, MAP_MOVE_FRAMES_COUNTER & $ff
+ ld a, MAP_MOVE_FRAMES_COUNTER & $ff ;load in time until digletts decay
ld [hli], a
ld a, MAP_MOVE_FRAMES_COUNTER >> 8
ld [hl], a
ld a, c
and a
- jr z, .asm_14807
+ jr z, .asm_14807 ;if left diglett, jump
ld a, $6a
ld [wStageCollisionMap + $f0], a
ld a, $6b
@@ -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
diff --git a/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm index 83d48db..39e8044 100644 --- a/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm +++ b/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm @@ -39,11 +39,11 @@ ResolveSeelBonusGameObjectCollisions: ; 0x25c5a jr z, .asm_25cc1
callba PlayLowTimeSfx
.asm_25cc1
- ld a, [wd57e]
+ ld a, [wTimeRanOut]
and a
ret z
xor a
- ld [wd57e], a
+ ld [wTimeRanOut], a
ld a, $1
ld [wd7be], a
call Func_2862
diff --git a/engine/pinball_game/timer.asm b/engine/pinball_game/timer.asm index cbfe9ad..2e1dc6b 100644 --- a/engine/pinball_game/timer.asm +++ b/engine/pinball_game/timer.asm @@ -9,8 +9,8 @@ StartTimer: ; 0x867d ld [wTimerMinutes], a
xor a
ld [wTimerFrames], a
- ld [wd57e], a
- ld [wd57f], a
+ ld [wTimeRanOut], a
+ ld [wPauseTimer], a
ld a, $1
ld [wTimerActive], a
ld a, $1
@@ -18,36 +18,36 @@ StartTimer: ; 0x867d callba LoadTimerGraphics
ret
-Func_86a4: ; 0x86a4
- ld a, [wd57f]
+DecrementTimer: ; 0x86a4
+ ld a, [wPauseTimer] ;quit unless ??? is 0
and a
ret nz
ld a, [wTimerFrames]
inc a
- cp $3c
- jr c, .asm_86b2
+ cp 60
+ jr c, .IfSecondHasNotPassed ;if frames +1 >= 60, reset it
xor a
-.asm_86b2
- ld [wTimerFrames], a
- ret c
+.IfSecondHasNotPassed
+ ld [wTimerFrames], a ;inc frames
+ ret c ;done if there was no reset
ld hl, wTimerMinutes
ld a, [hld]
or [hl]
- jr nz, .asm_86c3
+ jr nz, .IfTimeLeft ;if minutes or seconds is non-zero, jump, else ret marking that time ran out
ld a, $1
- ld [wd57e], a
+ ld [wTimeRanOut], a
ret
-.asm_86c3
+.IfTimeLeft
ld a, [hl]
sub $1
- daa
- jr nc, .asm_86cb
+ daa ;take 1 from seconds
+ jr nc, .IfMinuteHasNotPassed ; if < 0, set to 59
ld a, $59
-.asm_86cb
+.IfMinuteHasNotPassed
ld [hli], a
ld a, [hl]
- sbc $0
+ sbc $0 ;sub minutes by 1 only if carry is set from the seconds sub
daa
ld [hl], a
ret
diff --git a/home/random.asm b/home/random.asm index 84e4571..e2b8c32 100644 --- a/home/random.asm +++ b/home/random.asm @@ -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) @@ -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" @@ -385,7 +385,7 @@ wPreviousTriggeredGameObject:: ; 0xd4ec ; an object two frames in a row. It has to "un-collide" before it can collide again. ds $1 -wWhichDiglett:: ; 0xd4ed +wWhichDiglett:: ; 0xd4ed 0 = none, left = 1 right = 2 wWhichPsyduckPoliwag:: ds $1 wWhichDiglettId:: ; 0xd4ee @@ -395,7 +395,7 @@ wWhichPsyduckPoliwagId:: wLeftDiglettAnimationController:: ; 0xd4ef $50 = in and pained look. 0 = normal state ds $1 -wLeftMapMoveCounter:: ; 0xd4f0 +wLeftMapMoveCounter:: ; 0xd4f0 WARNING, diglet identifying code relies on this being 2 bytes before right map move counter and 1 byte after that digletts animation controller ds $1 wRightDiglettAnimationController:: ; 0xd4f1 $50 = in and pained look. 0 = normal state @@ -427,7 +427,7 @@ wLeftMapMoveCounterFramesUntilDecrease:: ; 0xd4f7 wRightMapMoveCounterFramesUntilDecrease:: ; 0xd4f9 ; Holds the number of frames remaining until the wRightMapMoveCounter -; counter will decrease by 1. +; counter will decrease by 1. WARNING: red tables diglett function relies on this being immediatly after wLeftMapMoveCounterFramesUntilDecrease ds $2 wBellsproutCollision:: ; 0xd4fb @@ -530,7 +530,7 @@ wCollidedAlleyTriggers:: ; 0xd521 ds $6 ; free space -wIndicatorStates:: ; 0xd52f +wIndicatorStates:: ; 0xd52f 0 = evo arrows, 1 = catch arrows, 2 = left small alley, 3 = bellsprout, 4 = slot. bit 7 controls if enabled and flashing, bit 1 and 2 control is solid (set = solid) ds $13 wLeftAlleyTrigger:: ; 0xd542 @@ -566,10 +566,26 @@ wInSpecialMode:: ; 0xd54b ; Set to 1 if currently in special game mode. See wSpecialMode. ds $1 -wd54c:: ; 0xd54c 10000 sets it to c. red evo mode checks it for it's contents +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 +wd54d:: ; 0xd54d catch mode progress? ds $1 wd54e:: ; 0xd54e @@ -673,10 +689,10 @@ wTimerActive:: ; 0xd57d ; Set to 1 when the Timer is displayed and counting down. ds $1 -wd57e:: ; 0xd57e when map mode fails by time, toggled to off from on +wTimeRanOut:: ; 0xd57e set to 1 when the timer reaches 0 ds $1 -wd57f:: ; 0xd57f +wPauseTimer:: ; 0xd57f If set to nz, timer pauses ds $1 wd580:: ; 0xd580 @@ -1908,7 +1924,7 @@ wOBP1:: ; 0xd80e wd80f:: ; 0xd80f ds $1 -wd810:: ; 0xd810 +wd810:: ; 0xd810 loaded by Func_9fa, RNG related ds $1 wd811:: ; 0xd811 |