summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/pinball_game.asm2
-rw-r--r--engine/pinball_game/ball_loss/ball_loss_meowth_bonus.asm2
-rw-r--r--engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm12
-rw-r--r--engine/pinball_game/catchem_mode/catchem_mode_red_field.asm16
-rwxr-xr-xengine/pinball_game/evolution_mode.asm16
-rw-r--r--engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm8
-rw-r--r--engine/pinball_game/evolution_mode/evolution_mode_red_field.asm30
-rwxr-xr-xengine/pinball_game/map_move.asm60
-rw-r--r--engine/pinball_game/object_collision/blue_stage_resolve_collision.asm28
-rw-r--r--engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm4
-rw-r--r--engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm4
-rw-r--r--engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm4
-rw-r--r--engine/pinball_game/object_collision/red_stage_resolve_collision.asm52
-rw-r--r--engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm4
-rw-r--r--engine/pinball_game/timer.asm32
-rw-r--r--home/random.asm20
-rw-r--r--main.asm26
-rw-r--r--wram.asm34
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)
diff --git a/main.asm b/main.asm
index 8bc7f82..8c0807f 100644
--- a/main.asm
+++ b/main.asm
@@ -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"
diff --git a/wram.asm b/wram.asm
index 1f8ef3e..a753245 100644
--- a/wram.asm
+++ b/wram.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