Add level locking.

This commit is contained in:
Randy Thiemann 2023-11-09 00:10:25 +01:00
parent c9e5eafde6
commit 41f78c511f
6 changed files with 583 additions and 534 deletions

Binary file not shown.

View File

@ -174,7 +174,7 @@ ROM0 bank #0:
$1c84 = GradeRendering.mo
$1c8a = GradeRendering.mm
$1c90 = GradeRendering.gmgrade
SECTION: $1c9b-$2018 ($037e bytes) ["Grading Functions"]
SECTION: $1c9b-$205a ($03c0 bytes) ["Grading Functions"]
$1c9b = GradeInit
$1cc6 = GradeInit.grade9start
$1ccb = GradeInit.end
@ -188,281 +188,283 @@ ROM0 bank #0:
$1d49 = DrawGradeProgressDMGT
$1d55 = !0
$1d64 = UpdateGradeDMGT
$1d82 = UpdateGradeDMGT.checklineclears
$1d9c = UpdateGradeDMGT.clearrate
$1dad = UpdateGradeDMGT.combomult
$1dba = UpdateGradeDMGT.combo10
$1dcb = UpdateGradeDMGT.combo5
$1ddc = UpdateGradeDMGT.combo1
$1deb = UpdateGradeDMGT.prelevel
$1dfa = UpdateGradeDMGT.single
$1e0a = UpdateGradeDMGT.double
$1e1b = UpdateGradeDMGT.adddonce
$1e1f = UpdateGradeDMGT.triple
$1e30 = UpdateGradeDMGT.addtonce
$1e34 = UpdateGradeDMGT.tetris
$1e38 = UpdateGradeDMGT.levelmult
$1e50 = UpdateGradeDMGT.mult5
$1e57 = UpdateGradeDMGT.mult4
$1e5d = UpdateGradeDMGT.mult3
$1e62 = UpdateGradeDMGT.mult2
$1e66 = UpdateGradeDMGT.mult1
$1e67 = UpdateGradeDMGT.processgrade
$1e90 = UpdateGradeDMGT.increasegrademaybe
$1eb4 = UpdateGradeDMGT.gotgm
$1ec2 = DecayGradeDMGT
$1ee6 = DecayGradeDMGT.nodecay
$1eed = DecayGradeDMGT.decay
$1efb = UpdateGradeTGM1
$1f05 = UpdateGradeTGM1.trygradeup
$1f1f = UpdateGradeTGM1.increasegrade
$1f34 = UpdateGradeTGM1.skipjingle
$1f41 = UpdateGradeTGM1.maybegm
$1f5a = UpdateGradeDEAT
$1f66 = UpdateGradeDEAT.notgm
$1f82 = UpdateGradeDEAT.notm
$1fa5 = UpdateGradeDEAT.disqualify
$1fae = UpdateGradeSHIR
$1ff1 = UpdateGradeSHIR.s5torikan
$2001 = UpdateGradeSHIR.s10torikan
$2010 = UpdateGradeSHIR.disqualify
SECTION: $2019-$22ce ($02b6 bytes) ["Grading Data"]
$2019 = sTGM1GradeScores
$203b = sTGM3InternalGradeSystem
$20db = sTGM3GradeBoosts
$20fa = sTGM3LevelMultiplier
$20fe = sTGM3BaselineCOOL
$2107 = sTGM3REGRETConditions
$211b = sDMGTGrading
$21cf = sDMGTGaugeLUT
SECTION: $22cf-$2568 ($029a bytes) ["Level Functions"]
$22cf = LevelInit
$232b = SpecialLevelInit
$2339 = SpecialLevelInit.jumps
$234e = SpecialLevelInit.dmgt
$2353 = SpecialLevelInit.tgm1
$2358 = SpecialLevelInit.tgm3
$235d = SpecialLevelInit.deat
$2362 = SpecialLevelInit.shir
$2367 = SpecialLevelInit.chil
$236c = SpecialLevelInit.myco
$2371 = SpecialLevelInit.loaddata
$238a = LevelUp
$23ae = LevelUp.doit
$23f8 = LevelUp.checknlevel
$2426 = !0
$243e = !1
$2447 = LevelUp.bellmaybe
$2459 = LevelUp.leveljinglemaybe
$2466 = LevelUp.checkspeedup
$247a = !2
$2487 = !3
$2498 = !4
$24a5 = DoSpeedUp
$24e6 = CheckSpecialLevelConditions
$24ec = CheckSpecialLevelConditions.bones
$2501 = CheckSpecialLevelConditions.enterthebonezone
$2506 = CheckSpecialLevelConditions.invis
$251b = CheckSpecialLevelConditions.vanishoxyaction
$2520 = CheckSpecialLevelConditions.killscreen
$2531 = CheckSpecialLevelConditions.rip
$254a = TriggerKillScreen
SECTION: $2569-$2802 ($029a bytes) ["SFX Functions"]
$2569 = SFXInit
$258b = SFXPopQueue
$25a0 = SFXPushQueue
$25b1 = SFXProcessQueue
$25c2 = !0
$25dd = !1
$25df = SFXTriggerNoise
$25ec = !2
$25f9 = !3
$2605 = SFXEnqueue
$261a = SFXEnqueue.findsfx
$262f = !4
$263f = !5
$264f = !6
$265f = !7
$266f = !8
$267f = !9
$268f = !10
$269f = !11
$26af = !12
$26bf = !13
$26cf = !14
$26df = !15
$26ef = !16
$26ff = !17
$270f = !18
$271e = !19
$272d = !20
$273c = !21
$274b = !22
$2759 = !23
$2767 = !24
$2774 = SFXKill
$27a1 = SFXPlayNoise
$27ac = SFXPlayNoise.noisereg
$27b9 = !25
$27c3 = SFXPlayNoise.savenoiseplayhead
$27cc = SFXPlay
$27d7 = !26
$27da = SFXPlay.play
$27e6 = SFXPlay.getRegister
$27f0 = !27
$27fa = SFXPlay.savePlayhead
SECTION: $2803-$2a33 ($0231 bytes) ["RNG Functions"]
$2803 = HarvestEntropy
$2809 = HarvestEntropy.loop
$282a = RNGInit
$2860 = !0
$2890 = RNGInit.complexinit
$28a7 = !1
$28c2 = ShiftHistory
$28df = GetNextHellPiece
$28e4 = GetNextTGM1Piece
$28e7 = !2
$28ff = !3
$2901 = GetNextTGM2Piece
$2904 = !4
$291c = !5
$291e = GetNextNesPiece
$292c = GetNextTGM3Piece
$292f = !6
$2952 = !7
$2955 = !8
$2965 = !9
$296f = !10
$297d = !11
$298c = !12
$2998 = !13
$29a4 = !14
$29b0 = !15
$29bc = !16
$29c8 = !17
$29d4 = !18
$29e3 = GetNextPiece
$29f1 = GetNextPiece.nextpiecejumps
$2a00 = Next35Piece
$2a00 = !19
$2a0a = Next7Piece
$2a0a = !20
$2a14 = NextByte
SECTION: $2a34-$2b7d ($014a bytes) ["Progress Data"]
$2a34 = sProgressData
SECTION: $2b7e-$2c5d ($00e0 bytes) ["Score Functions"]
$2b7e = ScoreInit
$2ba6 = IncreaseScore
$2bde = IncreaseScore.doConvert
$2be0 = !0
$2bf6 = IncreaseScore.carry
$2bf8 = IncreaseScore.postConvert
$2c05 = !1
$2c0c = IncreaseScore.preAddDigit
$2c34 = IncreaseScore.addDigit
$2c4a = IncreaseScore.nextDigit
SECTION: $2c5e-$2d2a ($00cd bytes) ["Input Functions"]
$2c5e = InputInit
$2c70 = GetInput
$2c70 = GetInput.btns
$2c7d = GetInput.readA
$2c81 = GetInput.setA
$2c8c = GetInput.clearA
$2c8f = GetInput.readB
$2c93 = GetInput.setB
$2c9e = GetInput.clearB
$2ca1 = GetInput.readSelect
$2ca5 = GetInput.setSelect
$2cb0 = GetInput.clearSelect
$2cb3 = GetInput.readStart
$2cb7 = GetInput.setStart
$2cc2 = GetInput.clearStart
$2cc5 = GetInput.dpad
$2cd2 = GetInput.readUp
$2cd6 = GetInput.setUp
$2ce1 = GetInput.clearUp
$2ce4 = GetInput.readDown
$2ce8 = GetInput.setDown
$2cf3 = GetInput.clearDown
$2cf6 = GetInput.readLeft
$2cfa = GetInput.setLeft
$2d05 = GetInput.clearLeft
$2d08 = GetInput.readRight
$2d0c = GetInput.setRight
$2d17 = GetInput.clearRight
$2d1a = GetInput.priorities
$2d25 = GetInput.zero
SECTION: $2d2b-$2de1 ($00b7 bytes) ["SRAM Functions"]
$2d2b = RestoreSRAM
$2d84 = InitializeSRAM
SECTION: $2de2-$2e93 ($00b2 bytes) ["Progress Functions"]
$2de2 = SetProgress
$2ded = SetProgress.loop
$2df1 = SetProgress.correct
$2e18 = SetProgress.wvr_u1
$2e24 = SetProgress.wvr_u2
$2e32 = SetProgress.wvr_u3
$2e3e = SetProgress.wvr_u4
$2e4c = SetProgress.wvr_u5
$2e58 = SetProgress.wvr_u6
$2e66 = SetProgress.wvr_u7
$2e72 = SetProgress.wvr_u8
$2e80 = SetProgress.wvr_u9
$2e8c = SetProgress.wvr_u10
SECTION: $2e94-$2f2b ($0098 bytes) ["Code Entry Point"]
$2e94 = Main
$2ebd = Main.notgbc
$2ec3 = Main.wvr_u1
$2ef0 = EventLoop
$2f06 = EventLoop.eventloopjumps
$2f0f = EventLoopPostHandler
$2f11 = EventLoopPostHandler.wvb_u2
$2f23 = EventLoopPostHandler.vblankjumps
SECTION: $2f2c-$2fb3 ($0088 bytes) ["Time Functions"]
$2f2c = TimeInit
$2f41 = ResetGameTime
$2f4c = CheckTorikan
$2f63 = CheckTorikan.failure
$2f65 = CheckTorikan.success
$2f68 = HandleTimers
$2f90 = HandleTimers.go
SECTION: $2fb4-$3020 ($006d bytes) ["Title Function Trampolines"]
$2fb4 = SwitchToTitle
$2fbd = TitleEventLoopHandler
$2fc7 = TitleVBlankHandler
$2fd1 = DrawOption6
SECTION: $3021-$3072 ($0052 bytes) ["Tile Functions"]
$3021 = LoadTitleTiles
$303f = LoadGameplayTiles
$3055 = LoadGameplayTiles.gbc
$3064 = LoadGameplayTiles.dmg
SECTION: $3073-$30ae ($003c bytes) ["Time Data"]
$3073 = sFramesToCS
SECTION: $30af-$30dc ($002e bytes) ["Memory Functions"]
$30af = UnsafeMemCopy
$30b8 = SafeMemCopy.wvr_u1
$30b8 = SafeMemCopy
$30c7 = UnsafeMemSet
$30cf = SafeMemSet
$30cf = SafeMemSet.wvr_u2
SECTION: $30dd-$3102 ($0026 bytes) ["Gameplay Function Trampolines"]
$30dd = SwitchToGameplay
$30e6 = SwitchToGameplayBig
$30ef = GamePlayEventLoopHandler
$30f9 = GamePlayBigEventLoopHandler
SECTION: $3103-$3124 ($0022 bytes) ["OAM Functions"]
$3103 = CopyOAMHandler
$310f = ClearOAM
SECTION: $3125-$313d ($0019 bytes) ["Interrupt Initialization Functions"]
$3125 = IntrInit
$3129 = InitializeLCDCInterrupt
SECTION: $313e-$314c ($000f bytes) ["Banking Functions"]
$313e = BankingInit
SECTION: $314d-$3156 ($000a bytes) ["OAM DMA Code"]
$314d = OAMDMA
$3157 = OAMDMAEnd
EMPTY: $3157-$3fff ($0ea9 bytes)
TOTAL EMPTY: $0eb4 bytes
$1d95 = UpdateGradeDMGT.checklineclears
$1daf = UpdateGradeDMGT.clearrate
$1dc0 = UpdateGradeDMGT.combomult
$1dcd = UpdateGradeDMGT.combo10
$1dde = UpdateGradeDMGT.combo5
$1def = UpdateGradeDMGT.combo1
$1dfe = UpdateGradeDMGT.prelevel
$1e0d = UpdateGradeDMGT.single
$1e1d = UpdateGradeDMGT.double
$1e2e = UpdateGradeDMGT.adddonce
$1e32 = UpdateGradeDMGT.triple
$1e43 = UpdateGradeDMGT.addtonce
$1e47 = UpdateGradeDMGT.tetris
$1e4b = UpdateGradeDMGT.levelmult
$1e63 = UpdateGradeDMGT.mult5
$1e6a = UpdateGradeDMGT.mult4
$1e70 = UpdateGradeDMGT.mult3
$1e75 = UpdateGradeDMGT.mult2
$1e79 = UpdateGradeDMGT.mult1
$1e7a = UpdateGradeDMGT.processgrade
$1ea3 = UpdateGradeDMGT.increasegrademaybe
$1ec7 = UpdateGradeDMGT.gotgm
$1ed5 = DecayGradeDMGT
$1ef9 = DecayGradeDMGT.nodecay
$1f00 = DecayGradeDMGT.decay
$1f0e = UpdateGradeTGM1
$1f18 = UpdateGradeTGM1.trygradeup
$1f32 = UpdateGradeTGM1.increasegrade
$1f47 = UpdateGradeTGM1.skipjingle
$1f54 = UpdateGradeTGM1.maybegm
$1f6d = UpdateGradeDEAT
$1f79 = UpdateGradeDEAT.notgm
$1f95 = UpdateGradeDEAT.notm
$1fb8 = UpdateGradeDEAT.disqualify
$1fce = UpdateGradeSHIR
$2011 = UpdateGradeSHIR.s5torikan
$2021 = UpdateGradeSHIR.s10torikan
$2030 = UpdateGradeSHIR.disqualify
$203f = UpdateGradeSHIR.l1000
$204d = UpdateGradeSHIR.l500
SECTION: $205b-$2310 ($02b6 bytes) ["Grading Data"]
$205b = sTGM1GradeScores
$207d = sTGM3InternalGradeSystem
$211d = sTGM3GradeBoosts
$213c = sTGM3LevelMultiplier
$2140 = sTGM3BaselineCOOL
$2149 = sTGM3REGRETConditions
$215d = sDMGTGrading
$2211 = sDMGTGaugeLUT
SECTION: $2311-$25b3 ($02a3 bytes) ["Level Functions"]
$2311 = LevelInit
$2370 = SpecialLevelInit
$237e = SpecialLevelInit.jumps
$2393 = SpecialLevelInit.dmgt
$2398 = SpecialLevelInit.tgm1
$239d = SpecialLevelInit.tgm3
$23a2 = SpecialLevelInit.deat
$23a7 = SpecialLevelInit.shir
$23ac = SpecialLevelInit.chil
$23b1 = SpecialLevelInit.myco
$23b6 = SpecialLevelInit.loaddata
$23cf = LevelUp
$23f9 = LevelUp.doit
$2443 = LevelUp.checknlevel
$2471 = !0
$2489 = !1
$2492 = LevelUp.bellmaybe
$24a4 = LevelUp.leveljinglemaybe
$24b1 = LevelUp.checkspeedup
$24c5 = !2
$24d2 = !3
$24e3 = !4
$24f0 = DoSpeedUp
$2531 = CheckSpecialLevelConditions
$2537 = CheckSpecialLevelConditions.bones
$254c = CheckSpecialLevelConditions.enterthebonezone
$2551 = CheckSpecialLevelConditions.invis
$2566 = CheckSpecialLevelConditions.vanishoxyaction
$256b = CheckSpecialLevelConditions.killscreen
$257c = CheckSpecialLevelConditions.rip
$2595 = TriggerKillScreen
SECTION: $25b4-$284d ($029a bytes) ["SFX Functions"]
$25b4 = SFXInit
$25d6 = SFXPopQueue
$25eb = SFXPushQueue
$25fc = SFXProcessQueue
$260d = !0
$2628 = !1
$262a = SFXTriggerNoise
$2637 = !2
$2644 = !3
$2650 = SFXEnqueue
$2665 = SFXEnqueue.findsfx
$267a = !4
$268a = !5
$269a = !6
$26aa = !7
$26ba = !8
$26ca = !9
$26da = !10
$26ea = !11
$26fa = !12
$270a = !13
$271a = !14
$272a = !15
$273a = !16
$274a = !17
$275a = !18
$2769 = !19
$2778 = !20
$2787 = !21
$2796 = !22
$27a4 = !23
$27b2 = !24
$27bf = SFXKill
$27ec = SFXPlayNoise
$27f7 = SFXPlayNoise.noisereg
$2804 = !25
$280e = SFXPlayNoise.savenoiseplayhead
$2817 = SFXPlay
$2822 = !26
$2825 = SFXPlay.play
$2831 = SFXPlay.getRegister
$283b = !27
$2845 = SFXPlay.savePlayhead
SECTION: $284e-$2a7e ($0231 bytes) ["RNG Functions"]
$284e = HarvestEntropy
$2854 = HarvestEntropy.loop
$2875 = RNGInit
$28ab = !0
$28db = RNGInit.complexinit
$28f2 = !1
$290d = ShiftHistory
$292a = GetNextHellPiece
$292f = GetNextTGM1Piece
$2932 = !2
$294a = !3
$294c = GetNextTGM2Piece
$294f = !4
$2967 = !5
$2969 = GetNextNesPiece
$2977 = GetNextTGM3Piece
$297a = !6
$299d = !7
$29a0 = !8
$29b0 = !9
$29ba = !10
$29c8 = !11
$29d7 = !12
$29e3 = !13
$29ef = !14
$29fb = !15
$2a07 = !16
$2a13 = !17
$2a1f = !18
$2a2e = GetNextPiece
$2a3c = GetNextPiece.nextpiecejumps
$2a4b = Next35Piece
$2a4b = !19
$2a55 = Next7Piece
$2a55 = !20
$2a5f = NextByte
SECTION: $2a7f-$2bc8 ($014a bytes) ["Progress Data"]
$2a7f = sProgressData
SECTION: $2bc9-$2ca8 ($00e0 bytes) ["Score Functions"]
$2bc9 = ScoreInit
$2bf1 = IncreaseScore
$2c29 = IncreaseScore.doConvert
$2c2b = !0
$2c41 = IncreaseScore.carry
$2c43 = IncreaseScore.postConvert
$2c50 = !1
$2c57 = IncreaseScore.preAddDigit
$2c7f = IncreaseScore.addDigit
$2c95 = IncreaseScore.nextDigit
SECTION: $2ca9-$2d75 ($00cd bytes) ["Input Functions"]
$2ca9 = InputInit
$2cbb = GetInput
$2cbb = GetInput.btns
$2cc8 = GetInput.readA
$2ccc = GetInput.setA
$2cd7 = GetInput.clearA
$2cda = GetInput.readB
$2cde = GetInput.setB
$2ce9 = GetInput.clearB
$2cec = GetInput.readSelect
$2cf0 = GetInput.setSelect
$2cfb = GetInput.clearSelect
$2cfe = GetInput.readStart
$2d02 = GetInput.setStart
$2d0d = GetInput.clearStart
$2d10 = GetInput.dpad
$2d1d = GetInput.readUp
$2d21 = GetInput.setUp
$2d2c = GetInput.clearUp
$2d2f = GetInput.readDown
$2d33 = GetInput.setDown
$2d3e = GetInput.clearDown
$2d41 = GetInput.readLeft
$2d45 = GetInput.setLeft
$2d50 = GetInput.clearLeft
$2d53 = GetInput.readRight
$2d57 = GetInput.setRight
$2d62 = GetInput.clearRight
$2d65 = GetInput.priorities
$2d70 = GetInput.zero
SECTION: $2d76-$2e2c ($00b7 bytes) ["SRAM Functions"]
$2d76 = RestoreSRAM
$2dcf = InitializeSRAM
SECTION: $2e2d-$2ede ($00b2 bytes) ["Progress Functions"]
$2e2d = SetProgress
$2e38 = SetProgress.loop
$2e3c = SetProgress.correct
$2e63 = SetProgress.wvr_u1
$2e6f = SetProgress.wvr_u2
$2e7d = SetProgress.wvr_u3
$2e89 = SetProgress.wvr_u4
$2e97 = SetProgress.wvr_u5
$2ea3 = SetProgress.wvr_u6
$2eb1 = SetProgress.wvr_u7
$2ebd = SetProgress.wvr_u8
$2ecb = SetProgress.wvr_u9
$2ed7 = SetProgress.wvr_u10
SECTION: $2edf-$2f76 ($0098 bytes) ["Code Entry Point"]
$2edf = Main
$2f08 = Main.notgbc
$2f0e = Main.wvr_u1
$2f3b = EventLoop
$2f51 = EventLoop.eventloopjumps
$2f5a = EventLoopPostHandler
$2f5c = EventLoopPostHandler.wvb_u2
$2f6e = EventLoopPostHandler.vblankjumps
SECTION: $2f77-$2ffe ($0088 bytes) ["Time Functions"]
$2f77 = TimeInit
$2f8c = ResetGameTime
$2f97 = CheckTorikan
$2fae = CheckTorikan.failure
$2fb0 = CheckTorikan.success
$2fb3 = HandleTimers
$2fdb = HandleTimers.go
SECTION: $2fff-$306b ($006d bytes) ["Title Function Trampolines"]
$2fff = SwitchToTitle
$3008 = TitleEventLoopHandler
$3012 = TitleVBlankHandler
$301c = DrawOption6
SECTION: $306c-$30bd ($0052 bytes) ["Tile Functions"]
$306c = LoadTitleTiles
$308a = LoadGameplayTiles
$30a0 = LoadGameplayTiles.gbc
$30af = LoadGameplayTiles.dmg
SECTION: $30be-$30f9 ($003c bytes) ["Time Data"]
$30be = sFramesToCS
SECTION: $30fa-$3127 ($002e bytes) ["Memory Functions"]
$30fa = UnsafeMemCopy
$3103 = SafeMemCopy.wvr_u1
$3103 = SafeMemCopy
$3112 = UnsafeMemSet
$311a = SafeMemSet
$311a = SafeMemSet.wvr_u2
SECTION: $3128-$314d ($0026 bytes) ["Gameplay Function Trampolines"]
$3128 = SwitchToGameplay
$3131 = SwitchToGameplayBig
$313a = GamePlayEventLoopHandler
$3144 = GamePlayBigEventLoopHandler
SECTION: $314e-$316f ($0022 bytes) ["OAM Functions"]
$314e = CopyOAMHandler
$315a = ClearOAM
SECTION: $3170-$3188 ($0019 bytes) ["Interrupt Initialization Functions"]
$3170 = IntrInit
$3174 = InitializeLCDCInterrupt
SECTION: $3189-$3197 ($000f bytes) ["Banking Functions"]
$3189 = BankingInit
SECTION: $3198-$31a1 ($000a bytes) ["OAM DMA Code"]
$3198 = OAMDMA
$31a2 = OAMDMAEnd
EMPTY: $31a2-$3fff ($0e5e bytes)
TOTAL EMPTY: $0e69 bytes
ROMX bank #1:
SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"]
@ -2396,37 +2398,38 @@ WRAM0 bank #0:
$cda4 = wProgress3B2
$cda5 = wProgress4B1
$cda6 = wProgress4B2
SECTION: $cda7-$cdaf ($0009 bytes) ["Globals"]
$cda7 = wSwapABState
$cda8 = wRNGModeState
$cda9 = wRotModeState
$cdaa = wDropModeState
$cdab = wSpeedCurveState
$cdac = wAlways20GState
$cdad = wInitialA
$cdae = wInitialB
$cdaf = wInitialC
SECTION: $cdb0-$cdb8 ($0009 bytes) ["Level Variables"]
$cdb0 = wBoneActivationLevel
$cdb2 = wInvisActivationLevel
$cdb4 = wKillScreenActivationLevel
$cdb6 = wBonesActive
$cdb7 = wInvisActive
$cdb8 = wKillScreenActive
SECTION: $cdb9-$cdbc ($0004 bytes) ["Banking Variables"]
$cdb9 = wBankBackup
SECTION: $cdbd-$cdbf ($0003 bytes) ["GBC Variables"]
$cdbd = wOuterReps
$cdbe = wInnerReps
$cdbf = wTitlePal
SECTION: $cdc0-$cdc2 ($0003 bytes) ["Time Variables"]
$cdc0 = wMinutes
$cdc1 = wSeconds
$cdc2 = wFrames
SECTION: $cdc3-$cdc3 ($0001 byte) ["Title Variables"]
$cdc3 = wSelected
EMPTY: $cdc4-$cfff ($023c bytes)
TOTAL EMPTY: $023c bytes
SECTION: $cda7-$cdb0 ($000a bytes) ["Level Variables"]
$cda7 = wBoneActivationLevel
$cda9 = wInvisActivationLevel
$cdab = wKillScreenActivationLevel
$cdad = wBonesActive
$cdae = wInvisActive
$cdaf = wKillScreenActive
$cdb0 = wLockLevel
SECTION: $cdb1-$cdb9 ($0009 bytes) ["Globals"]
$cdb1 = wSwapABState
$cdb2 = wRNGModeState
$cdb3 = wRotModeState
$cdb4 = wDropModeState
$cdb5 = wSpeedCurveState
$cdb6 = wAlways20GState
$cdb7 = wInitialA
$cdb8 = wInitialB
$cdb9 = wInitialC
SECTION: $cdba-$cdbd ($0004 bytes) ["Banking Variables"]
$cdba = wBankBackup
SECTION: $cdbe-$cdc0 ($0003 bytes) ["GBC Variables"]
$cdbe = wOuterReps
$cdbf = wInnerReps
$cdc0 = wTitlePal
SECTION: $cdc1-$cdc3 ($0003 bytes) ["Time Variables"]
$cdc1 = wMinutes
$cdc2 = wSeconds
$cdc3 = wFrames
SECTION: $cdc4-$cdc4 ($0001 byte) ["Title Variables"]
$cdc4 = wSelected
EMPTY: $cdc5-$cfff ($023b bytes)
TOTAL EMPTY: $023b bytes
HRAM bank #0:
SECTION: $ff80-$ff9a ($001b bytes) ["High Field Variables"]
@ -2517,8 +2520,8 @@ HRAM bank #0:
TOTAL EMPTY: $0003 bytes
SUMMARY:
ROM0: 12620 bytes used / 3764 free
ROM0: 12695 bytes used / 3689 free
ROMX: 57736 bytes used / 40568 free in 6 banks
SRAM: 14 bytes used / 8178 free in 1 bank
WRAM0: 3524 bytes used / 572 free
WRAM0: 3525 bytes used / 571 free
HRAM: 124 bytes used / 3 free

Binary file not shown.

View File

@ -151,203 +151,205 @@
00:1d36 PrepareScore
00:1d49 DrawGradeProgressDMGT
00:1d64 UpdateGradeDMGT
00:1d82 UpdateGradeDMGT.checklineclears
00:1d9c UpdateGradeDMGT.clearrate
00:1dad UpdateGradeDMGT.combomult
00:1dba UpdateGradeDMGT.combo10
00:1dcb UpdateGradeDMGT.combo5
00:1ddc UpdateGradeDMGT.combo1
00:1deb UpdateGradeDMGT.prelevel
00:1dfa UpdateGradeDMGT.single
00:1e0a UpdateGradeDMGT.double
00:1e1b UpdateGradeDMGT.adddonce
00:1e1f UpdateGradeDMGT.triple
00:1e30 UpdateGradeDMGT.addtonce
00:1e34 UpdateGradeDMGT.tetris
00:1e38 UpdateGradeDMGT.levelmult
00:1e50 UpdateGradeDMGT.mult5
00:1e57 UpdateGradeDMGT.mult4
00:1e5d UpdateGradeDMGT.mult3
00:1e62 UpdateGradeDMGT.mult2
00:1e66 UpdateGradeDMGT.mult1
00:1e67 UpdateGradeDMGT.processgrade
00:1e90 UpdateGradeDMGT.increasegrademaybe
00:1eb4 UpdateGradeDMGT.gotgm
00:1ec2 DecayGradeDMGT
00:1ee6 DecayGradeDMGT.nodecay
00:1eed DecayGradeDMGT.decay
00:1efb UpdateGradeTGM1
00:1f05 UpdateGradeTGM1.trygradeup
00:1f1f UpdateGradeTGM1.increasegrade
00:1f34 UpdateGradeTGM1.skipjingle
00:1f41 UpdateGradeTGM1.maybegm
00:1f5a UpdateGradeDEAT
00:1f66 UpdateGradeDEAT.notgm
00:1f82 UpdateGradeDEAT.notm
00:1fa5 UpdateGradeDEAT.disqualify
00:1fae UpdateGradeSHIR
00:1ff1 UpdateGradeSHIR.s5torikan
00:2001 UpdateGradeSHIR.s10torikan
00:2010 UpdateGradeSHIR.disqualify
00:2019 sTGM1GradeScores
00:203b sTGM3InternalGradeSystem
00:20db sTGM3GradeBoosts
00:20fa sTGM3LevelMultiplier
00:20fe sTGM3BaselineCOOL
00:2107 sTGM3REGRETConditions
00:211b sDMGTGrading
00:21cf sDMGTGaugeLUT
00:22cf LevelInit
00:232b SpecialLevelInit
00:2339 SpecialLevelInit.jumps
00:234e SpecialLevelInit.dmgt
00:2353 SpecialLevelInit.tgm1
00:2358 SpecialLevelInit.tgm3
00:235d SpecialLevelInit.deat
00:2362 SpecialLevelInit.shir
00:2367 SpecialLevelInit.chil
00:236c SpecialLevelInit.myco
00:2371 SpecialLevelInit.loaddata
00:238a LevelUp
00:23ae LevelUp.doit
00:23f8 LevelUp.checknlevel
00:2447 LevelUp.bellmaybe
00:2459 LevelUp.leveljinglemaybe
00:2466 LevelUp.checkspeedup
00:24a5 DoSpeedUp
00:24e6 CheckSpecialLevelConditions
00:24ec CheckSpecialLevelConditions.bones
00:2501 CheckSpecialLevelConditions.enterthebonezone
00:2506 CheckSpecialLevelConditions.invis
00:251b CheckSpecialLevelConditions.vanishoxyaction
00:2520 CheckSpecialLevelConditions.killscreen
00:2531 CheckSpecialLevelConditions.rip
00:254a TriggerKillScreen
00:2569 SFXInit
00:258b SFXPopQueue
00:25a0 SFXPushQueue
00:25b1 SFXProcessQueue
00:25df SFXTriggerNoise
00:2605 SFXEnqueue
00:261a SFXEnqueue.findsfx
00:2774 SFXKill
00:27a1 SFXPlayNoise
00:27ac SFXPlayNoise.noisereg
00:27c3 SFXPlayNoise.savenoiseplayhead
00:27cc SFXPlay
00:27da SFXPlay.play
00:27e6 SFXPlay.getRegister
00:27fa SFXPlay.savePlayhead
00:2803 HarvestEntropy
00:2809 HarvestEntropy.loop
00:282a RNGInit
00:2890 RNGInit.complexinit
00:28c2 ShiftHistory
00:28df GetNextHellPiece
00:28e4 GetNextTGM1Piece
00:2901 GetNextTGM2Piece
00:291e GetNextNesPiece
00:292c GetNextTGM3Piece
00:29e3 GetNextPiece
00:29f1 GetNextPiece.nextpiecejumps
00:2a00 Next35Piece
00:2a0a Next7Piece
00:2a14 NextByte
00:2a34 sProgressData
00:2b7e ScoreInit
00:2ba6 IncreaseScore
00:2bde IncreaseScore.doConvert
00:2bf6 IncreaseScore.carry
00:2bf8 IncreaseScore.postConvert
00:2c0c IncreaseScore.preAddDigit
00:2c34 IncreaseScore.addDigit
00:2c4a IncreaseScore.nextDigit
00:2c5e InputInit
00:2c70 GetInput
00:2c70 GetInput.btns
00:2c7d GetInput.readA
00:2c81 GetInput.setA
00:2c8c GetInput.clearA
00:2c8f GetInput.readB
00:2c93 GetInput.setB
00:2c9e GetInput.clearB
00:2ca1 GetInput.readSelect
00:2ca5 GetInput.setSelect
00:2cb0 GetInput.clearSelect
00:2cb3 GetInput.readStart
00:2cb7 GetInput.setStart
00:2cc2 GetInput.clearStart
00:2cc5 GetInput.dpad
00:2cd2 GetInput.readUp
00:2cd6 GetInput.setUp
00:2ce1 GetInput.clearUp
00:2ce4 GetInput.readDown
00:2ce8 GetInput.setDown
00:2cf3 GetInput.clearDown
00:2cf6 GetInput.readLeft
00:2cfa GetInput.setLeft
00:2d05 GetInput.clearLeft
00:2d08 GetInput.readRight
00:2d0c GetInput.setRight
00:2d17 GetInput.clearRight
00:2d1a GetInput.priorities
00:2d25 GetInput.zero
00:2d2b RestoreSRAM
00:2d84 InitializeSRAM
00:2de2 SetProgress
00:2ded SetProgress.loop
00:2df1 SetProgress.correct
00:2e18 SetProgress.wvr_u1
00:2e24 SetProgress.wvr_u2
00:2e32 SetProgress.wvr_u3
00:2e3e SetProgress.wvr_u4
00:2e4c SetProgress.wvr_u5
00:2e58 SetProgress.wvr_u6
00:2e66 SetProgress.wvr_u7
00:2e72 SetProgress.wvr_u8
00:2e80 SetProgress.wvr_u9
00:2e8c SetProgress.wvr_u10
00:2e94 Main
00:2ebd Main.notgbc
00:2ec3 Main.wvr_u1
00:2ef0 EventLoop
00:2f06 EventLoop.eventloopjumps
00:2f0f EventLoopPostHandler
00:2f11 EventLoopPostHandler.wvb_u2
00:2f23 EventLoopPostHandler.vblankjumps
00:2f2c TimeInit
00:2f41 ResetGameTime
00:2f4c CheckTorikan
00:2f63 CheckTorikan.failure
00:2f65 CheckTorikan.success
00:2f68 HandleTimers
00:2f90 HandleTimers.go
00:2fb4 SwitchToTitle
00:2fbd TitleEventLoopHandler
00:2fc7 TitleVBlankHandler
00:2fd1 DrawOption6
00:3021 LoadTitleTiles
00:303f LoadGameplayTiles
00:3055 LoadGameplayTiles.gbc
00:3064 LoadGameplayTiles.dmg
00:3073 sFramesToCS
00:30af UnsafeMemCopy
00:30b8 SafeMemCopy.wvr_u1
00:30b8 SafeMemCopy
00:30c7 UnsafeMemSet
00:30cf SafeMemSet
00:30cf SafeMemSet.wvr_u2
00:30dd SwitchToGameplay
00:30e6 SwitchToGameplayBig
00:30ef GamePlayEventLoopHandler
00:30f9 GamePlayBigEventLoopHandler
00:3103 CopyOAMHandler
00:310f ClearOAM
00:3125 IntrInit
00:3129 InitializeLCDCInterrupt
00:313e BankingInit
00:314d OAMDMA
00:3157 OAMDMAEnd
00:1d95 UpdateGradeDMGT.checklineclears
00:1daf UpdateGradeDMGT.clearrate
00:1dc0 UpdateGradeDMGT.combomult
00:1dcd UpdateGradeDMGT.combo10
00:1dde UpdateGradeDMGT.combo5
00:1def UpdateGradeDMGT.combo1
00:1dfe UpdateGradeDMGT.prelevel
00:1e0d UpdateGradeDMGT.single
00:1e1d UpdateGradeDMGT.double
00:1e2e UpdateGradeDMGT.adddonce
00:1e32 UpdateGradeDMGT.triple
00:1e43 UpdateGradeDMGT.addtonce
00:1e47 UpdateGradeDMGT.tetris
00:1e4b UpdateGradeDMGT.levelmult
00:1e63 UpdateGradeDMGT.mult5
00:1e6a UpdateGradeDMGT.mult4
00:1e70 UpdateGradeDMGT.mult3
00:1e75 UpdateGradeDMGT.mult2
00:1e79 UpdateGradeDMGT.mult1
00:1e7a UpdateGradeDMGT.processgrade
00:1ea3 UpdateGradeDMGT.increasegrademaybe
00:1ec7 UpdateGradeDMGT.gotgm
00:1ed5 DecayGradeDMGT
00:1ef9 DecayGradeDMGT.nodecay
00:1f00 DecayGradeDMGT.decay
00:1f0e UpdateGradeTGM1
00:1f18 UpdateGradeTGM1.trygradeup
00:1f32 UpdateGradeTGM1.increasegrade
00:1f47 UpdateGradeTGM1.skipjingle
00:1f54 UpdateGradeTGM1.maybegm
00:1f6d UpdateGradeDEAT
00:1f79 UpdateGradeDEAT.notgm
00:1f95 UpdateGradeDEAT.notm
00:1fb8 UpdateGradeDEAT.disqualify
00:1fce UpdateGradeSHIR
00:2011 UpdateGradeSHIR.s5torikan
00:2021 UpdateGradeSHIR.s10torikan
00:2030 UpdateGradeSHIR.disqualify
00:203f UpdateGradeSHIR.l1000
00:204d UpdateGradeSHIR.l500
00:205b sTGM1GradeScores
00:207d sTGM3InternalGradeSystem
00:211d sTGM3GradeBoosts
00:213c sTGM3LevelMultiplier
00:2140 sTGM3BaselineCOOL
00:2149 sTGM3REGRETConditions
00:215d sDMGTGrading
00:2211 sDMGTGaugeLUT
00:2311 LevelInit
00:2370 SpecialLevelInit
00:237e SpecialLevelInit.jumps
00:2393 SpecialLevelInit.dmgt
00:2398 SpecialLevelInit.tgm1
00:239d SpecialLevelInit.tgm3
00:23a2 SpecialLevelInit.deat
00:23a7 SpecialLevelInit.shir
00:23ac SpecialLevelInit.chil
00:23b1 SpecialLevelInit.myco
00:23b6 SpecialLevelInit.loaddata
00:23cf LevelUp
00:23f9 LevelUp.doit
00:2443 LevelUp.checknlevel
00:2492 LevelUp.bellmaybe
00:24a4 LevelUp.leveljinglemaybe
00:24b1 LevelUp.checkspeedup
00:24f0 DoSpeedUp
00:2531 CheckSpecialLevelConditions
00:2537 CheckSpecialLevelConditions.bones
00:254c CheckSpecialLevelConditions.enterthebonezone
00:2551 CheckSpecialLevelConditions.invis
00:2566 CheckSpecialLevelConditions.vanishoxyaction
00:256b CheckSpecialLevelConditions.killscreen
00:257c CheckSpecialLevelConditions.rip
00:2595 TriggerKillScreen
00:25b4 SFXInit
00:25d6 SFXPopQueue
00:25eb SFXPushQueue
00:25fc SFXProcessQueue
00:262a SFXTriggerNoise
00:2650 SFXEnqueue
00:2665 SFXEnqueue.findsfx
00:27bf SFXKill
00:27ec SFXPlayNoise
00:27f7 SFXPlayNoise.noisereg
00:280e SFXPlayNoise.savenoiseplayhead
00:2817 SFXPlay
00:2825 SFXPlay.play
00:2831 SFXPlay.getRegister
00:2845 SFXPlay.savePlayhead
00:284e HarvestEntropy
00:2854 HarvestEntropy.loop
00:2875 RNGInit
00:28db RNGInit.complexinit
00:290d ShiftHistory
00:292a GetNextHellPiece
00:292f GetNextTGM1Piece
00:294c GetNextTGM2Piece
00:2969 GetNextNesPiece
00:2977 GetNextTGM3Piece
00:2a2e GetNextPiece
00:2a3c GetNextPiece.nextpiecejumps
00:2a4b Next35Piece
00:2a55 Next7Piece
00:2a5f NextByte
00:2a7f sProgressData
00:2bc9 ScoreInit
00:2bf1 IncreaseScore
00:2c29 IncreaseScore.doConvert
00:2c41 IncreaseScore.carry
00:2c43 IncreaseScore.postConvert
00:2c57 IncreaseScore.preAddDigit
00:2c7f IncreaseScore.addDigit
00:2c95 IncreaseScore.nextDigit
00:2ca9 InputInit
00:2cbb GetInput
00:2cbb GetInput.btns
00:2cc8 GetInput.readA
00:2ccc GetInput.setA
00:2cd7 GetInput.clearA
00:2cda GetInput.readB
00:2cde GetInput.setB
00:2ce9 GetInput.clearB
00:2cec GetInput.readSelect
00:2cf0 GetInput.setSelect
00:2cfb GetInput.clearSelect
00:2cfe GetInput.readStart
00:2d02 GetInput.setStart
00:2d0d GetInput.clearStart
00:2d10 GetInput.dpad
00:2d1d GetInput.readUp
00:2d21 GetInput.setUp
00:2d2c GetInput.clearUp
00:2d2f GetInput.readDown
00:2d33 GetInput.setDown
00:2d3e GetInput.clearDown
00:2d41 GetInput.readLeft
00:2d45 GetInput.setLeft
00:2d50 GetInput.clearLeft
00:2d53 GetInput.readRight
00:2d57 GetInput.setRight
00:2d62 GetInput.clearRight
00:2d65 GetInput.priorities
00:2d70 GetInput.zero
00:2d76 RestoreSRAM
00:2dcf InitializeSRAM
00:2e2d SetProgress
00:2e38 SetProgress.loop
00:2e3c SetProgress.correct
00:2e63 SetProgress.wvr_u1
00:2e6f SetProgress.wvr_u2
00:2e7d SetProgress.wvr_u3
00:2e89 SetProgress.wvr_u4
00:2e97 SetProgress.wvr_u5
00:2ea3 SetProgress.wvr_u6
00:2eb1 SetProgress.wvr_u7
00:2ebd SetProgress.wvr_u8
00:2ecb SetProgress.wvr_u9
00:2ed7 SetProgress.wvr_u10
00:2edf Main
00:2f08 Main.notgbc
00:2f0e Main.wvr_u1
00:2f3b EventLoop
00:2f51 EventLoop.eventloopjumps
00:2f5a EventLoopPostHandler
00:2f5c EventLoopPostHandler.wvb_u2
00:2f6e EventLoopPostHandler.vblankjumps
00:2f77 TimeInit
00:2f8c ResetGameTime
00:2f97 CheckTorikan
00:2fae CheckTorikan.failure
00:2fb0 CheckTorikan.success
00:2fb3 HandleTimers
00:2fdb HandleTimers.go
00:2fff SwitchToTitle
00:3008 TitleEventLoopHandler
00:3012 TitleVBlankHandler
00:301c DrawOption6
00:306c LoadTitleTiles
00:308a LoadGameplayTiles
00:30a0 LoadGameplayTiles.gbc
00:30af LoadGameplayTiles.dmg
00:30be sFramesToCS
00:30fa UnsafeMemCopy
00:3103 SafeMemCopy.wvr_u1
00:3103 SafeMemCopy
00:3112 UnsafeMemSet
00:311a SafeMemSet
00:311a SafeMemSet.wvr_u2
00:3128 SwitchToGameplay
00:3131 SwitchToGameplayBig
00:313a GamePlayEventLoopHandler
00:3144 GamePlayBigEventLoopHandler
00:314e CopyOAMHandler
00:315a ClearOAM
00:3170 IntrInit
00:3174 InitializeLCDCInterrupt
00:3189 BankingInit
00:3198 OAMDMA
00:31a2 OAMDMAEnd
01:4008 sDMGTSpeedCurve
01:4203 sDMGTSpeedCurveEnd
01:4205 sDMGTSpeedCurveSpecialData
@ -2074,29 +2076,30 @@
00:cda4 wProgress3B2
00:cda5 wProgress4B1
00:cda6 wProgress4B2
00:cda7 wSwapABState
00:cda8 wRNGModeState
00:cda9 wRotModeState
00:cdaa wDropModeState
00:cdab wSpeedCurveState
00:cdac wAlways20GState
00:cdad wInitialA
00:cdae wInitialB
00:cdaf wInitialC
00:cdb0 wBoneActivationLevel
00:cdb2 wInvisActivationLevel
00:cdb4 wKillScreenActivationLevel
00:cdb6 wBonesActive
00:cdb7 wInvisActive
00:cdb8 wKillScreenActive
00:cdb9 wBankBackup
00:cdbd wOuterReps
00:cdbe wInnerReps
00:cdbf wTitlePal
00:cdc0 wMinutes
00:cdc1 wSeconds
00:cdc2 wFrames
00:cdc3 wSelected
00:cda7 wBoneActivationLevel
00:cda9 wInvisActivationLevel
00:cdab wKillScreenActivationLevel
00:cdad wBonesActive
00:cdae wInvisActive
00:cdaf wKillScreenActive
00:cdb0 wLockLevel
00:cdb1 wSwapABState
00:cdb2 wRNGModeState
00:cdb3 wRotModeState
00:cdb4 wDropModeState
00:cdb5 wSpeedCurveState
00:cdb6 wAlways20GState
00:cdb7 wInitialA
00:cdb8 wInitialB
00:cdb9 wInitialC
00:cdba wBankBackup
00:cdbe wOuterReps
00:cdbf wInnerReps
00:cdc0 wTitlePal
00:cdc1 wMinutes
00:cdc2 wSeconds
00:cdc3 wFrames
00:cdc4 wSelected
00:ff80 hPieceDataBase
00:ff82 hPieceDataBaseFast
00:ff84 hPieceDataOffset

View File

@ -380,7 +380,16 @@ UpdateGradeDMGT::
; If we failed it: DIE.
cp a, $FF
jp nz, TriggerKillScreen
jp z, .checklineclears
ld a, $FF
ld [wLockLevel], a
ld a, 5
ldh [hCLevel+1], a
xor a, a
ldh [hCLevel], a
ldh [hCLevel+2], a
ldh [hCLevel+3], a
jp TriggerKillScreen
; Did we have line clears?
@ -836,9 +845,15 @@ UpdateGradeDEAT:
.disqualify
; Disqualify from ranking.
ld a, $FF
ld [wLockLevel], a
ld [wRankingDisqualified], a
call TriggerKillScreen
ret
ld a, 5
ldh [hCLevel+1], a
xor a, a
ldh [hCLevel], a
ldh [hCLevel+2], a
ldh [hCLevel+3], a
jp TriggerKillScreen
UpdateGradeSHIR:
@ -925,9 +940,30 @@ UpdateGradeSHIR:
ret
.disqualify
; Disqualify from ranking.
ld a, $FF
ld [wLockLevel], a
ld [wRankingDisqualified], a
call TriggerKillScreen
ret
ld a, [wDisplayedGrade]
cp a, GRADE_S5
jr z, .l500
.l1000
ld a, 1
ldh [hCLevel], a
xor a, a
ldh [hCLevel+1], a
ldh [hCLevel+2], a
ldh [hCLevel+3], a
jp TriggerKillScreen
.l500
ld a, 5
ldh [hCLevel+1], a
xor a, a
ldh [hCLevel], a
ldh [hCLevel+2], a
ldh [hCLevel+3], a
jp TriggerKillScreen
ENDC

View File

@ -46,6 +46,7 @@ wKillScreenActivationLevel: ds 2
wBonesActive:: ds 1
wInvisActive:: ds 1
wKillScreenActive:: ds 1
wLockLevel:: ds 1
SECTION "Level Functions", ROM0
@ -60,6 +61,7 @@ LevelInit::
ld [wBonesActive], a
ld [wInvisActive], a
ld [wKillScreenActive], a
ld [wLockLevel], a
ldh a, [hStartSpeed]
ld l, a
@ -189,6 +191,11 @@ SpecialLevelInit:
; Increment level and speed up if necessary. Level increment in E.
; Levels may only increment by single digits.
LevelUp::
; Return if our level is hard locked.
ld a, [wLockLevel]
cp a, $FF
ret z
; Return if we're maxed out.
ld hl, hCLevel
ld a, $09