Merge pull request #8

This commit is contained in:
Randy Thiemann 2023-12-05 05:28:05 +01:00
parent 31155adce5
commit 69d6001d16
9 changed files with 1218 additions and 1191 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -106,316 +106,318 @@
00:1b9c ApplyHold.getoffh
00:1ba7 ApplyHold.skipoffh
00:1be1 ApplyTime
00:1c32 ApplyTime.loop0
00:1c61 ApplyTime.loop1
00:1cb6 ApplyNumbers8
00:1d18 ApplyNumbers8.one
00:1d22 ApplyNumbers8.two
00:1d2c ApplyNumbers8.three
00:1d36 ApplyNumbers8.four
00:1d40 ApplyNumbers8.five
00:1d4a ApplyNumbers8.six
00:1d54 ApplyNumbers8.seven
00:1d5e ApplyNumbers8.eight
00:1d67 ApplyNumbers4
00:1d95 ApplyNumbers4.one
00:1d9f ApplyNumbers4.two
00:1da9 ApplyNumbers4.three
00:1db3 ApplyNumbers4.four
00:1dbc SetNumberSpritePositions
00:1ed3 GradeRendering
00:1f06 GradeRendering.effect
00:1f16 GradeRendering.noeffect
00:1f1e GradeRendering.drawgrade
00:1f25 GradeRendering.regulargrade
00:1f2d GradeRendering.sgrade
00:1f43 GradeRendering.hisgrade
00:1f59 GradeRendering.mgrade
00:1f6f GradeRendering.lettergrade
00:1f8c GradeRendering.mk
00:1f92 GradeRendering.mv
00:1f98 GradeRendering.mo
00:1f9e GradeRendering.mm
00:1fa4 GradeRendering.gmgrade
00:1faf RestoreSRAM
00:1fde TrustedLoad
00:2092 TrustedLoad.jumps
00:20aa TrustedLoad.dmgt
00:20b0 TrustedLoad.tgm1
00:20b6 TrustedLoad.tgm3
00:20bc TrustedLoad.deat
00:20c2 TrustedLoad.shir
00:20c8 TrustedLoad.chil
00:20ce TrustedLoad.myco
00:20d4 TrustedLoad.search
00:20e6 TrustedLoad.notfound
00:20ed TrustedLoad.fallback
00:2108 InitializeSRAM
00:2269 ResetScores
00:2277 ResetScores.jumps
00:228c ResetScores.dmgt
00:2298 ResetScores.tgm1
00:22a4 ResetScores.tgm3
00:22b0 ResetScores.deat
00:22bc ResetScores.shir
00:22c8 ResetScores.chil
00:22d4 ResetScores.myco
00:22e0 NextProfile
00:22e9 NextProfile.update
00:22ec ChangeProfile
00:22ec ChangeProfile.backup
00:231a ChangeProfile.first
00:2328 ChangeProfile.second
00:2336 ChangeProfile.third
00:2344 ChangeProfile.fourth
00:2352 ChangeProfile.fifth
00:2360 ChangeProfile.sixth
00:236e ChangeProfile.seventh
00:237c ChangeProfile.eighth
00:238a ChangeProfile.ninth
00:2398 ChangeProfile.tenth
00:23a6 ChangeProfile.restore
00:23d5 ChangeProfile.lfirst
00:23e4 ChangeProfile.lsecond
00:23f3 ChangeProfile.lthird
00:2402 ChangeProfile.lfourth
00:2411 ChangeProfile.lfifth
00:2420 ChangeProfile.lsixth
00:242f ChangeProfile.lseventh
00:243e ChangeProfile.leighth
00:244d ChangeProfile.lninth
00:245c ChangeProfile.ltenth
00:246b ResetProfile
00:24ce LevelInit
00:253e SpecialLevelInit
00:254c SpecialLevelInit.jumps
00:2561 SpecialLevelInit.dmgt
00:2566 SpecialLevelInit.tgm1
00:256b SpecialLevelInit.tgm3
00:2570 SpecialLevelInit.deat
00:2575 SpecialLevelInit.shir
00:257a SpecialLevelInit.chil
00:257f SpecialLevelInit.myco
00:2584 SpecialLevelInit.loaddata
00:25b9 LevelUp
00:25e3 LevelUp.doit
00:2622 LevelUp.checknlevel
00:2677 LevelUp.checkcool
00:2698 LevelUp.checkregret
00:26b5 LevelUp.resetsectiontimer
00:26d8 LevelUp.regretavailable
00:26dc LevelUp.bellmaybe
00:26f8 LevelUp.leveljinglemaybe
00:2708 AdjustSpeedCurve
00:270e AdjustSpeedCurve.docheck
00:270e AdjustSpeedCurve.checkthousands
00:271d AdjustSpeedCurve.checkhundreds
00:272a AdjustSpeedCurve.checktens
00:2739 AdjustSpeedCurve.checkones
00:2744 AdjustSpeedCurveForced
00:277f AdjustSpeedCurveForced.continue
00:2784 BuildTrueCLevel
00:27ac BuildTrueCLevel.thousands
00:27c1 CheckSpecialLevelConditions
00:27f2 CheckSpecialLevelConditions.override
00:280d CheckSpecialLevelConditions.nooverride
00:2813 CheckSpecialLevelConditions.speciallock
00:2837 CheckSpecialLevelConditions.bones
00:284c CheckSpecialLevelConditions.enterthebonezone
00:2851 CheckSpecialLevelConditions.invis
00:2866 CheckSpecialLevelConditions.vanishoxyaction
00:286b CheckSpecialLevelConditions.killscreen
00:287c CheckSpecialLevelConditions.rip
00:28ac CheckSpecialLevelConditions.staffroll
00:28ba CheckSpecialLevelConditions.justkill
00:28ce TriggerKillScreen
00:28f0 GetSection
00:28fe GetSectionBCD
00:2907 GetAdjustedSection
00:2915 GetAdjustedSectionBCD
00:291e SkipSection
00:292a SFXInit
00:2958 SFXPopQueue
00:296d SFXPushQueue
00:297e SFXProcessQueue
00:29ac SFXTriggerNoise
00:29d9 SFXEnqueue
00:29f2 SFXEnqueue.findsfx
00:2b58 SFXKill
00:2b8e SFXPlayNoise
00:2b99 SFXPlayNoise.noisereg
00:2bb0 SFXPlayNoise.savenoiseplayhead
00:2bb9 SFXPlay
00:2bbe SFXPlay.play
00:2bc8 SFXPlay.getRegister
00:2bc9 SFXPlay.checkEndOfSong
00:2bdb SFXPlay.checkEndOfSample
00:2bdf SFXPlay.checkChangeBank
00:2be9 SFXPlay.checkChangePlayHead
00:2bfc SFXPlay.applyRegister
00:2c01 SFXPlay.savePlayhead
00:2c0a SFXGoRoll
00:2c47 SFXEndOfGame
00:2c98 HarvestEntropy
00:2c9e HarvestEntropy.loop
00:2cbf RNGInit
00:2d00 RNGInit.hellinit
00:2d1c RNGInit.complexinit
00:2d33 RNGInit.getfirstpiece
00:2d48 RNGInit.getqueue
00:2d4e ShiftHistory
00:2d6b GetNextHellPiece
00:2d70 GetNextTGM1Piece
00:2d8d GetNextTGM2Piece
00:2daa GetNextNesPiece
00:2db8 GetNextTGM3Piece
00:2e6e GetNextPiece
00:2e7c GetNextPiece.nextpiecejumps
00:2e8b Next35Piece
00:2e95 Next7Piece
00:2e9f NextByte
00:2ebf CheckAndAddHiscore
00:2ec9 CheckAndAddHiscore.checkloop
00:2ece CheckAndAddHiscore.checkgrade
00:2ed7 CheckAndAddHiscore.oldgraded
00:2ee6 CheckAndAddHiscore.oldungraded
00:2eed CheckAndAddHiscore.checklevel
00:2f12 CheckAndAddHiscore.checkscore
00:2f55 CheckAndAddHiscore.notbetter
00:2f62 CheckAndAddHiscore.better
00:2f64 InsertHiScore
00:2f64 InsertHiScore.copylower
00:2f75 InsertHiScore.copyupper
00:2f95 InsertHiScore.findrow
00:2fa5 InsertHiScore.insert
00:2ffe InsertHiScore.persist
00:300f GetHiScoreEntry
00:3027 GetHiScoreEntry.store
00:3030 InitTargetHSTable
00:303b InitTargetHSTable.jumps
00:3050 InitTargetHSTable.dmgt
00:3055 InitTargetHSTable.tgm1
00:305a InitTargetHSTable.tgm3
00:305f InitTargetHSTable.deat
00:3064 InitTargetHSTable.shir
00:3069 InitTargetHSTable.chil
00:306e InitTargetHSTable.myco
00:3071 InitTargetHSTable.store
00:3084 sProgressData
00:31ce TimeInit
00:31f7 StartCountdown
00:3205 ResetGameTime
00:3219 CheckTorikan
00:322f CheckTorikan.failure
00:3231 CheckTorikan.success
00:3234 HandleTimers
00:325a HandleTimers.reduce
00:3267 HandleTimers.clock
00:3281 HandleTimers.go
00:32a5 CheckCOOL_REGRET
00:32bc CheckCOOL_REGRET.failure
00:32be CheckCOOL_REGRET.success
00:32c1 HandleSectionTimers
00:32dd HandleSectionTimers.continue
00:32f1 HandleSectionTimers.sectiongo
00:3315 sHiscoreDefaultData
00:3455 InputInit
00:3467 GetInput
00:3467 GetInput.btns
00:3474 GetInput.readA
00:3478 GetInput.setA
00:3483 GetInput.clearA
00:3486 GetInput.readB
00:348a GetInput.setB
00:3495 GetInput.clearB
00:3498 GetInput.readSelect
00:349c GetInput.setSelect
00:34a7 GetInput.clearSelect
00:34aa GetInput.readStart
00:34ae GetInput.setStart
00:34b9 GetInput.clearStart
00:34bc GetInput.dpad
00:34c9 GetInput.readUp
00:34cd GetInput.setUp
00:34d8 GetInput.clearUp
00:34db GetInput.readDown
00:34df GetInput.setDown
00:34ea GetInput.clearDown
00:34ed GetInput.readLeft
00:34f1 GetInput.setLeft
00:34fc GetInput.clearLeft
00:34ff GetInput.readRight
00:3503 GetInput.setRight
00:350e GetInput.clearRight
00:3511 GetInput.priorities
00:351e GetInput.jumps
00:352d GetInput.dlru
00:353d GetInput.ulrd
00:354d GetInput.lrud
00:3558 GetInput.udlr
00:3563 GetInput.zeroud
00:3569 GetInput.zerolr
00:356f GetInput.zerolrd
00:3577 GetInput.zerolru
00:357f ScoreInit
00:35a7 IncreaseScore
00:35df IncreaseScore.doConvert
00:35f7 IncreaseScore.carry
00:35f9 IncreaseScore.postConvert
00:360d IncreaseScore.preAddDigit
00:3635 IncreaseScore.addDigit
00:364b IncreaseScore.nextDigit
00:365f SwitchToTitle
00:3668 TitleEventLoopHandler
00:3672 TitleVBlankHandler
00:367c PersistLevel
00:368a DrawSpeedMain
00:36da DrawSpeedSettings
00:372a SetProgress
00:3734 SetProgress.loop
00:3738 SetProgress.correct
00:375f SetProgress.wvr_u1
00:376b SetProgress.wvr_u2
00:3779 SetProgress.wvr_u3
00:3785 SetProgress.wvr_u4
00:3793 SetProgress.wvr_u5
00:379f SetProgress.wvr_u6
00:37ad SetProgress.wvr_u7
00:37b9 SetProgress.wvr_u8
00:37c7 SetProgress.wvr_u9
00:37d3 SetProgress.wvr_u10
00:37db Main
00:3804 Main.notgbc
00:3810 Main.wvr_u1
00:383d EventLoop
00:3856 EventLoop.eventloopjumps
00:385f EventLoopPostHandler
00:3861 EventLoopPostHandler.wvb_u2
00:3873 EventLoopPostHandler.vblankjumps
00:387c GradeInit
00:3885 UpdateGrade
00:388e DecayGradeProcess
00:3897 DecayGradeDelay
00:38a0 TGM3REGRETHandler
00:38a9 TGM3COOLHandler
00:38b2 UnsafeMemCopy
00:38bb SafeMemCopy.wvr_u1
00:38bb SafeMemCopy
00:38ca UnsafeMemSet
00:38d2 SafeMemSet
00:38d2 SafeMemSet.wvr_u2
00:38e0 SwitchToGameplay
00:38e9 SwitchToGameplayBig
00:38f2 GamePlayEventLoopHandler
00:38fc GamePlayBigEventLoopHandler
00:3906 EnableScreenSquish
00:3920 DisableScreenSquish
00:392b CopyOAMHandler
00:3937 ClearOAM
00:394d DoIntroEffect
00:395e BankingInit
00:396d OAMDMA
00:3977 OAMDMAEnd
00:1c22 ApplyTime.nocool
00:1c24 ApplyTime.yescool
00:1c3d ApplyTime.loop0
00:1c6c ApplyTime.loop1
00:1cc1 ApplyNumbers8
00:1d23 ApplyNumbers8.one
00:1d2d ApplyNumbers8.two
00:1d37 ApplyNumbers8.three
00:1d41 ApplyNumbers8.four
00:1d4b ApplyNumbers8.five
00:1d55 ApplyNumbers8.six
00:1d5f ApplyNumbers8.seven
00:1d69 ApplyNumbers8.eight
00:1d72 ApplyNumbers4
00:1da0 ApplyNumbers4.one
00:1daa ApplyNumbers4.two
00:1db4 ApplyNumbers4.three
00:1dbe ApplyNumbers4.four
00:1dc7 SetNumberSpritePositions
00:1ede GradeRendering
00:1f11 GradeRendering.effect
00:1f21 GradeRendering.noeffect
00:1f29 GradeRendering.drawgrade
00:1f30 GradeRendering.regulargrade
00:1f38 GradeRendering.sgrade
00:1f4e GradeRendering.hisgrade
00:1f64 GradeRendering.mgrade
00:1f7a GradeRendering.lettergrade
00:1f97 GradeRendering.mk
00:1f9d GradeRendering.mv
00:1fa3 GradeRendering.mo
00:1fa9 GradeRendering.mm
00:1faf GradeRendering.gmgrade
00:1fba RestoreSRAM
00:1fe9 TrustedLoad
00:209d TrustedLoad.jumps
00:20b5 TrustedLoad.dmgt
00:20bb TrustedLoad.tgm1
00:20c1 TrustedLoad.tgm3
00:20c7 TrustedLoad.deat
00:20cd TrustedLoad.shir
00:20d3 TrustedLoad.chil
00:20d9 TrustedLoad.myco
00:20df TrustedLoad.search
00:20f1 TrustedLoad.notfound
00:20f8 TrustedLoad.fallback
00:2113 InitializeSRAM
00:2274 ResetScores
00:2282 ResetScores.jumps
00:2297 ResetScores.dmgt
00:22a3 ResetScores.tgm1
00:22af ResetScores.tgm3
00:22bb ResetScores.deat
00:22c7 ResetScores.shir
00:22d3 ResetScores.chil
00:22df ResetScores.myco
00:22eb NextProfile
00:22f4 NextProfile.update
00:22f7 ChangeProfile
00:22f7 ChangeProfile.backup
00:2325 ChangeProfile.first
00:2333 ChangeProfile.second
00:2341 ChangeProfile.third
00:234f ChangeProfile.fourth
00:235d ChangeProfile.fifth
00:236b ChangeProfile.sixth
00:2379 ChangeProfile.seventh
00:2387 ChangeProfile.eighth
00:2395 ChangeProfile.ninth
00:23a3 ChangeProfile.tenth
00:23b1 ChangeProfile.restore
00:23e0 ChangeProfile.lfirst
00:23ef ChangeProfile.lsecond
00:23fe ChangeProfile.lthird
00:240d ChangeProfile.lfourth
00:241c ChangeProfile.lfifth
00:242b ChangeProfile.lsixth
00:243a ChangeProfile.lseventh
00:2449 ChangeProfile.leighth
00:2458 ChangeProfile.lninth
00:2467 ChangeProfile.ltenth
00:2476 ResetProfile
00:24d9 LevelInit
00:2549 SpecialLevelInit
00:2557 SpecialLevelInit.jumps
00:256c SpecialLevelInit.dmgt
00:2571 SpecialLevelInit.tgm1
00:2576 SpecialLevelInit.tgm3
00:257b SpecialLevelInit.deat
00:2580 SpecialLevelInit.shir
00:2585 SpecialLevelInit.chil
00:258a SpecialLevelInit.myco
00:258f SpecialLevelInit.loaddata
00:25c4 LevelUp
00:25ee LevelUp.doit
00:262d LevelUp.checknlevel
00:2682 LevelUp.checkcool
00:26a3 LevelUp.checkregret
00:26c0 LevelUp.resetsectiontimer
00:26e3 LevelUp.regretavailable
00:26e7 LevelUp.bellmaybe
00:2703 LevelUp.leveljinglemaybe
00:2713 AdjustSpeedCurve
00:2719 AdjustSpeedCurve.docheck
00:2719 AdjustSpeedCurve.checkthousands
00:2728 AdjustSpeedCurve.checkhundreds
00:2735 AdjustSpeedCurve.checktens
00:2744 AdjustSpeedCurve.checkones
00:274f AdjustSpeedCurveForced
00:278a AdjustSpeedCurveForced.continue
00:278f BuildTrueCLevel
00:27ba BuildTrueCLevel.thousands
00:27cf CheckSpecialLevelConditions
00:2800 CheckSpecialLevelConditions.override
00:281b CheckSpecialLevelConditions.nooverride
00:2821 CheckSpecialLevelConditions.speciallock
00:2845 CheckSpecialLevelConditions.bones
00:285a CheckSpecialLevelConditions.enterthebonezone
00:285f CheckSpecialLevelConditions.invis
00:2874 CheckSpecialLevelConditions.vanishoxyaction
00:2879 CheckSpecialLevelConditions.killscreen
00:288a CheckSpecialLevelConditions.rip
00:28ba CheckSpecialLevelConditions.staffroll
00:28c8 CheckSpecialLevelConditions.justkill
00:28dc TriggerKillScreen
00:28fe GetSection
00:290c GetSectionBCD
00:2915 GetAdjustedSection
00:2923 GetAdjustedSectionBCD
00:292c SkipSection
00:2938 SFXInit
00:2966 SFXPopQueue
00:297b SFXPushQueue
00:298c SFXProcessQueue
00:29ba SFXTriggerNoise
00:29e7 SFXEnqueue
00:2a00 SFXEnqueue.findsfx
00:2b66 SFXKill
00:2b9c SFXPlayNoise
00:2ba7 SFXPlayNoise.noisereg
00:2bbe SFXPlayNoise.savenoiseplayhead
00:2bc7 SFXPlay
00:2bcc SFXPlay.play
00:2bd6 SFXPlay.getRegister
00:2bd7 SFXPlay.checkEndOfSong
00:2be9 SFXPlay.checkEndOfSample
00:2bed SFXPlay.checkChangeBank
00:2bf7 SFXPlay.checkChangePlayHead
00:2c0a SFXPlay.applyRegister
00:2c0f SFXPlay.savePlayhead
00:2c18 SFXGoRoll
00:2c55 SFXEndOfGame
00:2ca6 HarvestEntropy
00:2cac HarvestEntropy.loop
00:2ccd RNGInit
00:2d0e RNGInit.hellinit
00:2d2a RNGInit.complexinit
00:2d41 RNGInit.getfirstpiece
00:2d56 RNGInit.getqueue
00:2d5c ShiftHistory
00:2d79 GetNextHellPiece
00:2d7e GetNextTGM1Piece
00:2d9b GetNextTGM2Piece
00:2db8 GetNextNesPiece
00:2dc6 GetNextTGM3Piece
00:2e7c GetNextPiece
00:2e8a GetNextPiece.nextpiecejumps
00:2e99 Next35Piece
00:2ea3 Next7Piece
00:2ead NextByte
00:2ecd CheckAndAddHiscore
00:2ed7 CheckAndAddHiscore.checkloop
00:2edc CheckAndAddHiscore.checkgrade
00:2ee5 CheckAndAddHiscore.oldgraded
00:2ef4 CheckAndAddHiscore.oldungraded
00:2efb CheckAndAddHiscore.checklevel
00:2f20 CheckAndAddHiscore.checkscore
00:2f63 CheckAndAddHiscore.notbetter
00:2f70 CheckAndAddHiscore.better
00:2f72 InsertHiScore
00:2f72 InsertHiScore.copylower
00:2f83 InsertHiScore.copyupper
00:2fa3 InsertHiScore.findrow
00:2fb3 InsertHiScore.insert
00:300c InsertHiScore.persist
00:301d GetHiScoreEntry
00:3035 GetHiScoreEntry.store
00:303e InitTargetHSTable
00:3049 InitTargetHSTable.jumps
00:305e InitTargetHSTable.dmgt
00:3063 InitTargetHSTable.tgm1
00:3068 InitTargetHSTable.tgm3
00:306d InitTargetHSTable.deat
00:3072 InitTargetHSTable.shir
00:3077 InitTargetHSTable.chil
00:307c InitTargetHSTable.myco
00:307f InitTargetHSTable.store
00:3092 sProgressData
00:31dc TimeInit
00:3205 StartCountdown
00:3213 ResetGameTime
00:3227 CheckTorikan
00:323d CheckTorikan.failure
00:323f CheckTorikan.success
00:3242 HandleTimers
00:3268 HandleTimers.reduce
00:3275 HandleTimers.clock
00:328f HandleTimers.go
00:32b3 CheckCOOL_REGRET
00:32cb CheckCOOL_REGRET.failure
00:32cd CheckCOOL_REGRET.success
00:32d0 HandleSectionTimers
00:32ec HandleSectionTimers.continue
00:3300 HandleSectionTimers.sectiongo
00:3324 sHiscoreDefaultData
00:3464 InputInit
00:3476 GetInput
00:3476 GetInput.btns
00:3483 GetInput.readA
00:3487 GetInput.setA
00:3492 GetInput.clearA
00:3495 GetInput.readB
00:3499 GetInput.setB
00:34a4 GetInput.clearB
00:34a7 GetInput.readSelect
00:34ab GetInput.setSelect
00:34b6 GetInput.clearSelect
00:34b9 GetInput.readStart
00:34bd GetInput.setStart
00:34c8 GetInput.clearStart
00:34cb GetInput.dpad
00:34d8 GetInput.readUp
00:34dc GetInput.setUp
00:34e7 GetInput.clearUp
00:34ea GetInput.readDown
00:34ee GetInput.setDown
00:34f9 GetInput.clearDown
00:34fc GetInput.readLeft
00:3500 GetInput.setLeft
00:350b GetInput.clearLeft
00:350e GetInput.readRight
00:3512 GetInput.setRight
00:351d GetInput.clearRight
00:3520 GetInput.priorities
00:352d GetInput.jumps
00:353c GetInput.dlru
00:354c GetInput.ulrd
00:355c GetInput.lrud
00:3567 GetInput.udlr
00:3572 GetInput.zeroud
00:3578 GetInput.zerolr
00:357e GetInput.zerolrd
00:3586 GetInput.zerolru
00:358e ScoreInit
00:35b6 IncreaseScore
00:35ee IncreaseScore.doConvert
00:3606 IncreaseScore.carry
00:3608 IncreaseScore.postConvert
00:361c IncreaseScore.preAddDigit
00:3644 IncreaseScore.addDigit
00:365a IncreaseScore.nextDigit
00:366e SwitchToTitle
00:3677 TitleEventLoopHandler
00:3681 TitleVBlankHandler
00:368b PersistLevel
00:3699 DrawSpeedMain
00:36e9 DrawSpeedSettings
00:3739 SetProgress
00:3743 SetProgress.loop
00:3747 SetProgress.correct
00:376e SetProgress.wvr_u1
00:377a SetProgress.wvr_u2
00:3788 SetProgress.wvr_u3
00:3794 SetProgress.wvr_u4
00:37a2 SetProgress.wvr_u5
00:37ae SetProgress.wvr_u6
00:37bc SetProgress.wvr_u7
00:37c8 SetProgress.wvr_u8
00:37d6 SetProgress.wvr_u9
00:37e2 SetProgress.wvr_u10
00:37ea Main
00:3813 Main.notgbc
00:381f Main.wvr_u1
00:384c EventLoop
00:3865 EventLoop.eventloopjumps
00:386e EventLoopPostHandler
00:3870 EventLoopPostHandler.wvb_u2
00:3882 EventLoopPostHandler.vblankjumps
00:388b GradeInit
00:3894 UpdateGrade
00:389d DecayGradeProcess
00:38a6 DecayGradeDelay
00:38af TGM3REGRETHandler
00:38b8 TGM3COOLHandler
00:38c1 UnsafeMemCopy
00:38ca SafeMemCopy.wvr_u1
00:38ca SafeMemCopy
00:38d9 UnsafeMemSet
00:38e1 SafeMemSet
00:38e1 SafeMemSet.wvr_u2
00:38ef SwitchToGameplay
00:38f8 SwitchToGameplayBig
00:3901 GamePlayEventLoopHandler
00:390b GamePlayBigEventLoopHandler
00:3915 EnableScreenSquish
00:392f DisableScreenSquish
00:393a CopyOAMHandler
00:3946 ClearOAM
00:395c DoIntroEffect
00:396d BankingInit
00:397c OAMDMA
00:3986 OAMDMAEnd
01:4008 sDMGTSpeedCurve
01:4203 sDMGTSpeedCurveEnd
01:4205 sDMGTSpeedCurveSpecialData
@ -1931,109 +1933,111 @@
04:68c0 sGameplayTileMapEnd
04:6b60 sGameplayUngradedTileMapEnd
04:6b60 GradeInitB
04:6baa GradeInitB.grade9start
04:6baf UpdateGradeB
04:6baf GradeInitB.end
04:6bbd UpdateGradeB.gradejumptable
04:6bd2 DecayGradeProcessB
04:6be0 DecayGradeProcessB.gradejumptable
04:6bf5 DecayGradeDelayB
04:6c03 DecayGradeDelayB.gradejumptable
04:6c18 PrepareScore
04:6c2b DrawGradeProgressDMGT
04:6c46 UpdateGradeDMGT
04:6c7f UpdateGradeDMGT.checklineclears
04:6c98 UpdateGradeDMGT.clearrate
04:6ca9 UpdateGradeDMGT.combomult
04:6cb6 UpdateGradeDMGT.combo13
04:6cc7 UpdateGradeDMGT.combo8
04:6cd8 UpdateGradeDMGT.combo1
04:6ce7 UpdateGradeDMGT.prelevel
04:6cf6 UpdateGradeDMGT.single
04:6d06 UpdateGradeDMGT.double
04:6d17 UpdateGradeDMGT.adddonce
04:6d1b UpdateGradeDMGT.triple
04:6d2c UpdateGradeDMGT.addtonce
04:6d30 UpdateGradeDMGT.tetris
04:6d34 UpdateGradeDMGT.levelmult
04:6d4c UpdateGradeDMGT.mult4
04:6d52 UpdateGradeDMGT.mult3
04:6d57 UpdateGradeDMGT.mult2
04:6d5b UpdateGradeDMGT.mult1
04:6d5c UpdateGradeDMGT.processgrade
04:6d85 UpdateGradeDMGT.increasegrademaybe
04:6da9 UpdateGradeDMGT.gotgm
04:6db7 DecayGradeDMGT
04:6dda DecayGradeDMGT.nodecay
04:6de1 DecayGradeDMGT.decay
04:6def UpdateGradeTGM1
04:6dff UpdateGradeTGM1.trygradeup
04:6e1a UpdateGradeTGM1.increasegrade
04:6e2f UpdateGradeTGM1.skipjingle
04:6e3b UpdateGradeTGM1.check300
04:6e59 UpdateGradeTGM1.success300
04:6e60 UpdateGradeTGM1.fail300
04:6e67 UpdateGradeTGM1.check500
04:6e85 UpdateGradeTGM1.success500
04:6e8c UpdateGradeTGM1.fail500
04:6e93 UpdateGradeTGM1.check999
04:6eca UpdateGradeTGM1.success999
04:6ee2 UpdateGradeTGM1.fail999
04:6ee8 UpdateGradeDEAT
04:6ef4 UpdateGradeDEAT.notgm
04:6f10 UpdateGradeDEAT.notm
04:6f33 UpdateGradeDEAT.disqualify
04:6f51 UpdateGradeSHIR
04:6f93 UpdateGradeSHIR.s5torikan
04:6fa3 UpdateGradeSHIR.s10torikan
04:6fb2 UpdateGradeSHIR.disqualify
04:6fc1 UpdateGradeSHIR.l1000
04:6fd7 UpdateGradeSHIR.l500
04:6fed UpdateGradeTGM3
04:6fed UpdateGradeTGM3.GradePoints
04:7001 UpdateGradeTGM3.GetOffset
04:7013 UpdateGradeTGM3.loadpoints
04:701d UpdateGradeTGM3.multipliers
04:7049 UpdateGradeTGM3.levelmultiplier
04:7062 UpdateGradeTGM3.Level750
04:7076 UpdateGradeTGM3.under750
04:707c UpdateGradeTGM3.Level500
04:708a UpdateGradeTGM3.Level250
04:7099 UpdateGradeTGM3.under250
04:709d UpdateGradeTGM3.Multiply
04:70a7 UpdateGradeTGM3.IncreaseInternalGrade
04:70bf TGM3UpdateDisplayedGrade
04:70d4 TGM3UpdateDisplayedGrade.update
04:70f1 TGM3UpdateDisplayedGrade.cool
04:7110 TGM3UpdateDisplayedGrade.nocool
04:711c TGM3UpdateDisplayedGrade.continue
04:712d CheckCOOL
04:7141 CheckCOOL.cool
04:7162 DecayGradeTGM3
04:7176 DecayGradeTGM3.points
04:7197 DecayGradeTGM3.GetOffset
04:71a0 DecayGradeTGM3.lpoints
04:71a4 TGM3COOLHandlerB
04:71cb TGM3COOLHandlerB.checkCOOL
04:71d5 TGM3COOLHandlerB.checkBaselineCOOL
04:71dd TGM3COOLHandlerB.cool
04:71f7 TGM3COOLHandlerB.nocool
04:7203 TGM3REGRETHandlerB
04:721f TGM3REGRETHandlerB.regret
04:724c TGM3StaffRollGradeUpdate
04:7262 TGM3StaffRollGradeUpdate.UpdateGrade
04:7272 sDMGTGrading
04:7326 sDMGTGaugeLUT
04:7426 sTGM1GradeScores
04:7448 sTGM3InternalGradeSystem
04:74e8 sTGM3GradeBoosts
04:7507 sTGM3HowManyInternalGradesToDecrease
04:7526 sTGM3HowManyInternalGradesToIncrease
04:7545 sTGM3ComboMultipliers
04:7577 sTGM3LevelMultiplier
04:757a sTGM3BaselineCOOL
04:7583 sTGM3REGRETConditions
04:7597 sTGM3StaffrollGrading
04:6bad GradeInitB.grade9start
04:6bb2 UpdateGradeB
04:6bb2 GradeInitB.end
04:6bc0 UpdateGradeB.gradejumptable
04:6bd5 DecayGradeProcessB
04:6be3 DecayGradeProcessB.gradejumptable
04:6bf8 DecayGradeDelayB
04:6c06 DecayGradeDelayB.gradejumptable
04:6c1b PrepareScore
04:6c2e DrawGradeProgressDMGT
04:6c49 DrawGradeProgressTGM3
04:6c64 UpdateGradeDMGT
04:6c9d UpdateGradeDMGT.checklineclears
04:6cb6 UpdateGradeDMGT.clearrate
04:6cc7 UpdateGradeDMGT.combomult
04:6cd4 UpdateGradeDMGT.combo13
04:6ce5 UpdateGradeDMGT.combo8
04:6cf6 UpdateGradeDMGT.combo1
04:6d05 UpdateGradeDMGT.prelevel
04:6d14 UpdateGradeDMGT.single
04:6d24 UpdateGradeDMGT.double
04:6d35 UpdateGradeDMGT.adddonce
04:6d39 UpdateGradeDMGT.triple
04:6d4a UpdateGradeDMGT.addtonce
04:6d4e UpdateGradeDMGT.tetris
04:6d52 UpdateGradeDMGT.levelmult
04:6d6a UpdateGradeDMGT.mult4
04:6d70 UpdateGradeDMGT.mult3
04:6d75 UpdateGradeDMGT.mult2
04:6d79 UpdateGradeDMGT.mult1
04:6d7a UpdateGradeDMGT.processgrade
04:6da3 UpdateGradeDMGT.increasegrademaybe
04:6dc7 UpdateGradeDMGT.gotgm
04:6dd5 DecayGradeDMGT
04:6df8 DecayGradeDMGT.nodecay
04:6dff DecayGradeDMGT.decay
04:6e0d UpdateGradeTGM1
04:6e20 UpdateGradeTGM1.trygradeup
04:6e3b UpdateGradeTGM1.increasegrade
04:6e50 UpdateGradeTGM1.skipjingle
04:6e5c UpdateGradeTGM1.check300
04:6e7a UpdateGradeTGM1.success300
04:6e81 UpdateGradeTGM1.fail300
04:6e88 UpdateGradeTGM1.check500
04:6ea6 UpdateGradeTGM1.success500
04:6ead UpdateGradeTGM1.fail500
04:6eb4 UpdateGradeTGM1.check999
04:6eeb UpdateGradeTGM1.success999
04:6f03 UpdateGradeTGM1.fail999
04:6f09 UpdateGradeDEAT
04:6f15 UpdateGradeDEAT.notgm
04:6f3b UpdateGradeDEAT.notm
04:6f5e UpdateGradeDEAT.disqualify
04:6f7c UpdateGradeSHIR
04:6fbe UpdateGradeSHIR.s5torikan
04:6fce UpdateGradeSHIR.s10torikan
04:6fdd UpdateGradeSHIR.disqualify
04:6fec UpdateGradeSHIR.l1000
04:7002 UpdateGradeSHIR.l500
04:7018 UpdateGradeTGM3
04:7018 UpdateGradeTGM3.GradePoints
04:702c UpdateGradeTGM3.GetOffset
04:703e UpdateGradeTGM3.loadpoints
04:704b UpdateGradeTGM3.multipliers
04:7077 UpdateGradeTGM3.levelmultiplier
04:7090 UpdateGradeTGM3.Level750
04:70a4 UpdateGradeTGM3.under750
04:70aa UpdateGradeTGM3.Level500
04:70b8 UpdateGradeTGM3.Level250
04:70c7 UpdateGradeTGM3.under250
04:70cb UpdateGradeTGM3.Multiply
04:70d5 UpdateGradeTGM3.IncreaseInternalGrade
04:70e4 UpdateGradeTGM3.nocool
04:70f8 TGM3UpdateDisplayedGrade
04:710d TGM3UpdateDisplayedGrade.update
04:7126 TGM3UpdateDisplayedGrade.notaboves10
04:7134 CheckCOOL
04:7148 CheckCOOL.cool
04:715a CheckCOOL.nots10
04:7164 DecayGradeTGM3
04:7179 DecayGradeTGM3.points
04:719d DecayGradeTGM3.GetOffset
04:71a6 DecayGradeTGM3.lpoints
04:71ac TGM3COOLHandlerB
04:71d3 TGM3COOLHandlerB.checkCOOL
04:71e3 TGM3COOLHandlerB.nocarry
04:71e8 TGM3COOLHandlerB.checkBaselineCOOL
04:71f0 TGM3COOLHandlerB.cool
04:720a TGM3COOLHandlerB.nocool
04:7216 TGM3REGRETHandlerB
04:7232 TGM3REGRETHandlerB.regret
04:725f TGM3StaffRollGradeUpdate
04:7275 TGM3StaffRollGradeUpdate.UpdateGrade
04:7285 sDMGTGrading
04:7339 sDMGTGaugeLUT
04:7439 sTGM3GaugeLUT
04:7549 sTGM1GradeScores
04:756b sTGM3InternalGradeSystem
04:760b sTGM3GradeBoosts
04:762a sTGM3HowManyInternalGradesToDecrease
04:7649 sTGM3ComboMultipliers
04:767b sTGM3LevelMultiplier
04:767e sTGM3BaselineCOOL
04:7690 sTGM3REGRETConditions
04:76a4 sTGM3StaffrollGrading
05:4008 BigFieldInit
05:4049 BigFieldClear
05:40ef GoSmall
@ -3036,68 +3040,69 @@
00:cf08 wSubgrade
00:cf09 wREGRETChecked
00:cf0a wGradeBoosts
00:cf0b wTGM1level300RequirementMet
00:cf0c wTGM1level500RequirementMet
00:cf0d wTGM1level999RequirementMet
00:cf0e wBoneActivationLevel
00:cf10 wInvisActivationLevel
00:cf12 wKillScreenActivationLevel
00:cf14 wKillScreenActivationLevelBCD
00:cf16 wLastLockLevel
00:cf18 wStaffRollDuration
00:cf1a wBigStaffRoll
00:cf1b wBonesActive
00:cf1c wInvisActive
00:cf1d wKillScreenActive
00:cf1e wLockLevel
00:cf1f wShouldGoStaffRoll
00:cf20 wNoMoreLocks
00:cf21 wSkippedSectionsBCD
00:cf22 wProgress0B1
00:cf23 wProgress0B2
00:cf24 wProgress1B1
00:cf25 wProgress1B2
00:cf26 wProgress2B1
00:cf27 wProgress2B2
00:cf28 wProgress3B1
00:cf29 wProgress3B2
00:cf2a wProgress4B1
00:cf2b wProgress4B2
00:cf2c wSwapABState
00:cf2d wRNGModeState
00:cf2e wRotModeState
00:cf2f wDropModeState
00:cf30 wSpeedCurveState
00:cf31 wAlways20GState
00:cf32 wBGMode
00:cf33 wInitialA
00:cf34 wInitialB
00:cf35 wInitialC
00:cf36 wMinutes
00:cf37 wSeconds
00:cf38 wFrames
00:cf39 wSectionMinutes
00:cf3a wSectionSeconds
00:cf3b wSectionFrames
00:cf3c wCountDown
00:cf3e wCountDownZero
00:cf3f wSectionTimerReset
00:cf40 wSelected
00:cf41 wTitleMode
00:cf42 wProfileName
00:cf45 wDisplayingScoreMode
00:cf46 wScoreFlipTimer
00:cf47 wCurrentBank
00:cf48 wBankSwitchTarget
00:cf49 wPlayHeadTarget
00:cf4b wBankBackup
00:cf4f wRollLine
00:cf50 wInStaffRoll
00:cf51 wBigModeTransfered
00:cf52 wGameOverIgnoreInput
00:cf53 wOuterReps
00:cf54 wInnerReps
00:cf55 wTarget
00:cf0b wCOOLBoosts
00:cf0c wTGM1level300RequirementMet
00:cf0d wTGM1level500RequirementMet
00:cf0e wTGM1level999RequirementMet
00:cf0f wBoneActivationLevel
00:cf11 wInvisActivationLevel
00:cf13 wKillScreenActivationLevel
00:cf15 wKillScreenActivationLevelBCD
00:cf17 wLastLockLevel
00:cf19 wStaffRollDuration
00:cf1b wBigStaffRoll
00:cf1c wBonesActive
00:cf1d wInvisActive
00:cf1e wKillScreenActive
00:cf1f wLockLevel
00:cf20 wShouldGoStaffRoll
00:cf21 wNoMoreLocks
00:cf22 wSkippedSectionsBCD
00:cf23 wProgress0B1
00:cf24 wProgress0B2
00:cf25 wProgress1B1
00:cf26 wProgress1B2
00:cf27 wProgress2B1
00:cf28 wProgress2B2
00:cf29 wProgress3B1
00:cf2a wProgress3B2
00:cf2b wProgress4B1
00:cf2c wProgress4B2
00:cf2d wSwapABState
00:cf2e wRNGModeState
00:cf2f wRotModeState
00:cf30 wDropModeState
00:cf31 wSpeedCurveState
00:cf32 wAlways20GState
00:cf33 wBGMode
00:cf34 wInitialA
00:cf35 wInitialB
00:cf36 wInitialC
00:cf37 wMinutes
00:cf38 wSeconds
00:cf39 wFrames
00:cf3a wSectionMinutes
00:cf3b wSectionSeconds
00:cf3c wSectionFrames
00:cf3d wCountDown
00:cf3f wCountDownZero
00:cf40 wSectionTimerReset
00:cf41 wSelected
00:cf42 wTitleMode
00:cf43 wProfileName
00:cf46 wDisplayingScoreMode
00:cf47 wScoreFlipTimer
00:cf48 wCurrentBank
00:cf49 wBankSwitchTarget
00:cf4a wPlayHeadTarget
00:cf4c wBankBackup
00:cf50 wRollLine
00:cf51 wInStaffRoll
00:cf52 wBigModeTransfered
00:cf53 wGameOverIgnoreInput
00:cf54 wOuterReps
00:cf55 wInnerReps
00:cf56 wTarget
00:ff80 hCurrentDAS
00:ff81 hCurrentARE
00:ff82 hCurrentLineARE

View File

@ -43,6 +43,7 @@ wCOOLIsActive:: ds 1
wSubgrade: ds 1
wREGRETChecked:: ds 1
wGradeBoosts: ds 1
wCOOLBoosts: ds 1
wTGM1level300RequirementMet: ds 1
wTGM1level500RequirementMet: ds 1
wTGM1level999RequirementMet: ds 1
@ -106,24 +107,43 @@ sDMGTGaugeLUT:
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
sTGM3GaugeLUT:
db 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5
db 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10
db 10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15
db 15,15,16,16,16,17,17,17,18,18,18,19,19,19,20,20
db 20,21,21,21,22,22,22,23,23,23,23,24,24,24,25,25
db 25,26,26,26,27,27,27,28,28,28,29,29,29,30,30,30
db 31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
sTGM1GradeScores:
dw $0003 ;00 — 8
dw $0006 ;00 — 7
dw $0009 ;00 — 6
dw $0015 ;00 — 5
dw $0021 ;00 — 4
dw $0039 ;00 — 3
dw $0060 ;00 — 2
dw $0090 ;00 — 1
dw $0120 ;00 — S1
dw $0165 ;00 — S2
dw $0225 ;00 — S3
dw $0300 ;00 — S4
dw $0390 ;00 — S5
dw $0495 ;00 — S6
dw $0615 ;00 — S7
dw $0750 ;00 — S8
dw $0900 ;00 — S9
dw $0004 ;00 — 8
dw $0008 ;00 — 7
dw $0014 ;00 — 6
dw $0020 ;00 — 5
dw $0035 ;00 — 4
dw $0055 ;00 — 3
dw $0080 ;00 — 2
dw $0120 ;00 — 1
dw $0160 ;00 — S1
dw $0220 ;00 — S2
dw $0300 ;00 — S3
dw $0400 ;00 — S4
dw $0520 ;00 — S5
dw $0660 ;00 — S6
dw $0820 ;00 — S7
dw $1000 ;00 — S8
dw $1200 ;00 — S9
sTGM3InternalGradeSystem:
db 125, 10, 20, 40, 50 ;Decay rate, (Internal grade points awarded for:) Single, Double, Triple, Tetris
@ -225,39 +245,6 @@ sTGM3HowManyInternalGradesToDecrease:
db 2 ;S8
db 1 ;S9
sTGM3HowManyInternalGradesToIncrease:
db 1 ;9 (0 = add 0, 1 = add 1, etc.)
db 1 ;8
db 1 ;7
db 1 ;6
db 1 ;5
db 2 ;4
db 1 ;4
db 2 ;3
db 1 ;3
db 3 ;2
db 2 ;2
db 1 ;2
db 3 ;1
db 2 ;1
db 1 ;1
db 2 ;S1
db 1 ;S1
db 1 ;S2
db 1 ;S3
db 3 ;S4
db 2 ;S4
db 1 ;S4
db 2 ;S5
db 1 ;S5
db 2 ;S6
db 1 ;S6
db 2 ;S7
db 1 ;S7
db 2 ;S8
db 1 ;S8
db 1 ;S9
sTGM3ComboMultipliers:
db 1, 1, 1, 1, 1 ; Combo size, (Multiplier for: ) Single, Double, Triple, Tetris (Screw the fractional part, x.5 gets rounded down)
db 2, 1, 1, 1, 1
@ -276,15 +263,15 @@ sTGM3LevelMultiplier:
db 4 ; 750-999
sTGM3BaselineCOOL:
db 52 ;070 (value in seconds)
db 52 ;170
db 49 ;270
db 45 ;370
db 45 ;470
db 42 ;570
db 42 ;670
db 38 ;770
db 38 ;870
db 00,52 ;070 (minutes, seconds)
db 00,52 ;170
db 00,49 ;270
db 00,45 ;370
db 00,45 ;470
db 00,42 ;570
db 00,42 ;670
db 00,38 ;770
db 00,38 ;870
sTGM3REGRETConditions:
db 1, 30 ;minutes, seconds
@ -357,6 +344,7 @@ GradeInitB:
ld [wGradeGauge], a
ld [wSubgrade], a
ld [wGradeBoosts], a
ld [wCOOLBoosts], a
ld [wCOOLIsActive], a
ld [wREGRETChecked], a
ld [wPrevCOOL], a
@ -488,6 +476,22 @@ DrawGradeProgressDMGT:
call SetProgress
ret
DrawGradeProgressTGM3:
ld a, [wDisplayedGrade]
cp a, GRADE_GM
jr nz, :+
ld a, $FF
ld [wInternalGradePoints], a
: ld hl, sTGM3GaugeLUT
ld a, [wInternalGradePoints]
ld b, 0
ld c, a
add hl, bc
ld a, [hl]
call SetProgress
ret
UpdateGradeDMGT:
; Check if the torikan hasn't been calculated.
ld a, [wRankingDisqualified]
@ -819,6 +823,7 @@ UpdateGradeTGM1:
ret nz
; Skip to GM check if already S9.
ld a, [wDisplayedGrade]
cp a, GRADE_S9
jp nc, .check999
@ -1033,10 +1038,16 @@ UpdateGradeDEAT:
cp a, GRADE_M
jr nz, .notm
; We should be GM if we're at or past level 1000.
ldh a, [hCLevel+CLEVEL_THOUSANDS] ; Level, thousands digit.
cp a, 1
ret c ; If less than 1000, return.
; We should be GM if we're at or past level 999.
ldh a, [hCLevel+CLEVEL_HUNDREDS] ; Level, hundreds digit.
cp a, 9
ret c ; If hundreds are less than 9, return.
ldh a, [hCLevel+CLEVEL_TENS] ; Level, tens digit.
cp a, 9
ret c ; If tens are less than 9,
ldh a, [hCLevel+CLEVEL_ONES] ; Level, ones digit.
cp a, 9
ret c ; If ones are less than 9, return
; Otherwise give the grade!
ld a, GRADE_GM
@ -1253,6 +1264,8 @@ UpdateGradeTGM3:
ld hl, wInternalGradePoints
add a, [hl]
ld [wInternalGradePoints], a
; Draw the progress
call DrawGradeProgressTGM3
jp .IncreaseInternalGrade
.multipliers
@ -1374,11 +1387,15 @@ UpdateGradeTGM3:
.IncreaseInternalGrade
; Are we on level *00-*05?
ld a, [hCLevel+CLEVEL_TENS]
cp a, 0
jr nz, .nocool
ld a, [hCLevel+CLEVEL_ONES]
cp a, 6
; If we are, jump to the update COOL grade funcion just in case we have to apply a section COOL
jr c, CheckCOOL
call c, CheckCOOL
; If not, continue
.nocool
; Do we have 100 Grade Points?
ld a, [wInternalGradePoints]
cp a, 100
@ -1388,12 +1405,13 @@ UpdateGradeTGM3:
ld a, [wInternalGrade]
inc a
ld [wInternalGrade], a
call DrawGradeProgressTGM3
; This falls to the next function, this is intentional
TGM3UpdateDisplayedGrade:
ld a, [wDisplayedGrade] ; If we are a GM Grade, return
cp a, GRADE_GM
ld a, [wGradeBoosts] ; If we are an S9 Grade, return
cp a, GRADE_S9
ret z
ld a, GRADE_9 ; Load the lowest grade into a
ld b, a ; Then save it into b
@ -1403,57 +1421,29 @@ TGM3UpdateDisplayedGrade:
ld c, a
add hl, bc
ld a, [hl] ; Load the boosts to add into a...
ld b, a
ld b, a ; And then into b.
.update
ld a, [wGradeBoosts] ; Load the boosts variable into A
add a, b ;Add the boosts
ld [wGradeBoosts], a ; And load them.
ld b, a
ld a, [wCOOLBoosts] ; Add our Section COOL boosts
add a, b
ld b, a
; HOLD IT!
ld a, [wCOOLIsActive] ; Did the player get a cool on this section?
cp a, 1
jp nz, .nocool ; If not, proceed as normal
; If it did, check if we are at level *00-*05
ld a, [hCLevel+CLEVEL_TENS]
cp a, 0
jr nz, .nocool
ld a, [hCLevel+CLEVEL_ONES]
cp a, 5
jr c, .cool
jr nz, .nocool ; If not, proceed as normal
.cool
ld hl, sTGM3HowManyInternalGradesToIncrease ; Make HL point to the..., yeah.
ld a, [wInternalGrade] ; Get the offset
ld d, a ; save the internal grade because we need it later
ld b, 0
ld c, a
add hl, bc
ld a, [hl] ; Load the amount of internal grades to increase into a
add a, d ; Increase the internal grades
ld [wInternalGrade], a ; Load them
ld a, [wGradeBoosts] ; Load the boosts variable into A
inc a
ld [wGradeBoosts], a
ld [wDisplayedGrade], a ; Load the boosts into the displayed grade
xor a, a
ld [wCOOLIsActive], a ; Make the cool no longer be active
ret
.nocool
;ld [wDisplayedGrade], a ; HOLD IT!
ld a, [wDisplayedGrade]
cp a, b
ret z ; If the grade is the same, return.
ld a, b
; If the grade results in an S10, set it to m1
cp a, GRADE_S10
jr nz, .continue
ld a, GRADE_M1
.continue
; Is our Grade S10 or higher?
cp a, GRADE_S10
jr c, .notaboves10 ; No, it isn't
add a, GRADE_S10_PLUS ; Yes, it is
.notaboves10
ld [wDisplayedGrade], a ; Otherwise, set the grade.
ld [wGradeBoosts], a ; And the grade boosts too.
; ...Play the jingle.
ld a, SFX_RANKUP
call SFXEnqueue
@ -1477,18 +1467,18 @@ CheckCOOL:
ret nz ; If not, proceed as normal
.cool
ld hl, sTGM3HowManyInternalGradesToIncrease ; Make HL point to the..., yeah.
ld a, [wInternalGrade] ; Get the offset
ld d, a ; save the internal grade because we need it later
ld b, 0
ld c, a
add hl, bc
ld a, [hl] ; Load the amount of internal grades to increase into a
add a, d ; Increase the internal grades
ld [wInternalGrade], a ; Load them
ld a, [wGradeBoosts] ; Load the boosts variable into A
ld a, [wCOOLBoosts] ; Load our COOL Boosts into A
inc a ; Increase A
ld [wCOOLBoosts], a ; And load the result
; Now let's display our new grade!
ld b, a
ld a, [wDisplayedGrade]
inc a
ld [wGradeBoosts], a
; Does it result in an S10 grade?
cp a, GRADE_S10
jr nz, .nots10 ; No, it doesn't
add a, GRADE_S10_PLUS ; Yes, it does
.nots10
ld [wDisplayedGrade], a ; Load the boosts into the displayed grade
xor a, a
ld [wCOOLIsActive], a ; Make the cool no longer be active
@ -1501,10 +1491,10 @@ DecayGradeTGM3:
cp a, 0
jr z, .points
ld b, a ; Save the timer
ld a, [hComboCt] ; If there is an active combo, do not decrease the counter, return instead
ldh a, [hComboCt] ; If there is an active combo, do not decrease the counter, check if we can increase our internal grade instead
dec a
and a
ret nz
call nz, UpdateGradeTGM3.IncreaseInternalGrade
ld a, b ; Load the timer back
dec a
ld [wDecayRate], a
@ -1519,6 +1509,7 @@ DecayGradeTGM3:
jr z, .lpoints ; If so, load the points, since we don't have any points to decay
; Else, load the points and the corresponding Decay Rate
ld [wInternalGradePoints], a
call DrawGradeProgressTGM3
; Get the Decay Rate required
ld hl, sTGM3InternalGradeSystem
ld a, [wInternalGrade] ; Example: 3
@ -1542,7 +1533,7 @@ DecayGradeTGM3:
.lpoints
ld [wInternalGradePoints], a
ret
jp DrawGradeProgressTGM3
TGM3COOLHandlerB:
@ -1572,13 +1563,24 @@ TGM3COOLHandlerB:
jp .checkBaselineCOOL
.checkCOOL
; Load the minutes.
ld a, [wPrevCOOL]
ld b, a
; Load the seconds.
ld a, [wPrevCOOL+1]
; Give the player 2 seconds to spare
sub a, 2
add a, 2 ; Give the player 2 seconds to spare
cp a, 60 ; Are we above 60 now?
jr c, .nocarry ; If so, add 1 to the minutes and subtract 60 from the seconds
inc b
sub a, 60
.nocarry
ld c, a
; Load the frames.
ld a, [wPrevCOOL+2]
ld d, a
.checkBaselineCOOL
call CheckCOOL_REGRET
cp a, $ff

View File

@ -424,6 +424,7 @@ DEF GRADE_MO EQU 34
DEF GRADE_MM EQU 35
DEF GRADE_GM EQU 36
DEF GRADE_NONE EQU 255
DEF GRADE_S10_PLUS EQU 4
; Game mode
DEF MODE_LEADY EQU 0

View File

@ -471,7 +471,7 @@ AdjustSpeedCurve:
and a, $0F
; Compare to ours.
ld hl, hCLevel+CLEVEL_HUNDREDS
ld hl, hTrueCLevel+CLEVEL_HUNDREDS
cp a, [hl]
jr z, .checktens ; Equal? We need to check deeper.
jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase.
@ -484,7 +484,7 @@ AdjustSpeedCurve:
and a, $0F
; Compare to ours.
ld hl, hCLevel+CLEVEL_TENS
ld hl, hTrueCLevel+CLEVEL_TENS
cp a, [hl]
jr z, .checkones ; Equal? We need to check deeper.
jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase.
@ -496,7 +496,7 @@ AdjustSpeedCurve:
and a, $0F
; Compare to ours.
ld hl, hCLevel+CLEVEL_ONES
ld hl, hTrueCLevel+CLEVEL_ONES
cp a, [hl]
jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase.
ret nz ; Ours lower? We're done.
@ -565,17 +565,22 @@ AdjustSpeedCurveForced:
; Builds an internal level that is the displayed level skipped an amount of sections ahead.
BuildTrueCLevel:
ld hl, hCLevel
ld a, [hl+]
ldh [hTrueCLevel], a
ld a, [hl+]
ldh [hTrueCLevel+1], a
ld a, [hl+]
ldh [hTrueCLevel+2], a
ld a, [hl]
ldh [hTrueCLevel+3], a
; Except in TGM3 mode, this will always just be the same as the real level, so check for the most common case and bail.
ld a, [wSkippedSectionsBCD]
or a, a
ret z
; Otherwise, to the thing.
ld de, hCLevel
ld hl, hTrueCLevel
ld bc, 4
call UnsafeMemCopy
; Amount of steps to increment hundreds.
ld a, [wSkippedSectionsBCD]
and a, $0F

View File

@ -516,7 +516,14 @@ ApplyTime::
ld [wSPRTimeCS2+1], a
; Set the palette of the time objects.
ld a, [wCOOLIsActive]
cp a, 1
jr nz, .nocool
ld a, OAMF_PAL1 | $01
jr .yescool
.nocool
ld a, OAMF_PAL1 | $07
.yescool
ld [wSPRTimeM1+3], a
ld [wSPRTimeM2+3], a
ld [wSPRTimeS1+3], a

View File

@ -225,9 +225,10 @@ CheckCOOL_REGRET::
; Check frames if seconds are equal.
jr nz, .failure
; Okay if frames are exactly 0.
; Okay if frames are less than or equal to max frames.
ld a, [wSectionFrames]
cp a, 0
cp a, d
jr c, .success
jr z, .success
.failure