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

View File

@ -43,6 +43,7 @@ wCOOLIsActive:: ds 1
wSubgrade: ds 1 wSubgrade: ds 1
wREGRETChecked:: ds 1 wREGRETChecked:: ds 1
wGradeBoosts: ds 1 wGradeBoosts: ds 1
wCOOLBoosts: ds 1
wTGM1level300RequirementMet: ds 1 wTGM1level300RequirementMet: ds 1
wTGM1level500RequirementMet: ds 1 wTGM1level500RequirementMet: ds 1
wTGM1level999RequirementMet: 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
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: sTGM1GradeScores:
dw $0003 ;00 — 8 dw $0004 ;00 — 8
dw $0006 ;00 — 7 dw $0008 ;00 — 7
dw $0009 ;00 — 6 dw $0014 ;00 — 6
dw $0015 ;00 — 5 dw $0020 ;00 — 5
dw $0021 ;00 — 4 dw $0035 ;00 — 4
dw $0039 ;00 — 3 dw $0055 ;00 — 3
dw $0060 ;00 — 2 dw $0080 ;00 — 2
dw $0090 ;00 — 1 dw $0120 ;00 — 1
dw $0120 ;00 — S1 dw $0160 ;00 — S1
dw $0165 ;00 — S2 dw $0220 ;00 — S2
dw $0225 ;00 — S3 dw $0300 ;00 — S3
dw $0300 ;00 — S4 dw $0400 ;00 — S4
dw $0390 ;00 — S5 dw $0520 ;00 — S5
dw $0495 ;00 — S6 dw $0660 ;00 — S6
dw $0615 ;00 — S7 dw $0820 ;00 — S7
dw $0750 ;00 — S8 dw $1000 ;00 — S8
dw $0900 ;00 — S9 dw $1200 ;00 — S9
sTGM3InternalGradeSystem: sTGM3InternalGradeSystem:
db 125, 10, 20, 40, 50 ;Decay rate, (Internal grade points awarded for:) Single, Double, Triple, Tetris 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 2 ;S8
db 1 ;S9 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: 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 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 db 2, 1, 1, 1, 1
@ -276,15 +263,15 @@ sTGM3LevelMultiplier:
db 4 ; 750-999 db 4 ; 750-999
sTGM3BaselineCOOL: sTGM3BaselineCOOL:
db 52 ;070 (value in seconds) db 00,52 ;070 (minutes, seconds)
db 52 ;170 db 00,52 ;170
db 49 ;270 db 00,49 ;270
db 45 ;370 db 00,45 ;370
db 45 ;470 db 00,45 ;470
db 42 ;570 db 00,42 ;570
db 42 ;670 db 00,42 ;670
db 38 ;770 db 00,38 ;770
db 38 ;870 db 00,38 ;870
sTGM3REGRETConditions: sTGM3REGRETConditions:
db 1, 30 ;minutes, seconds db 1, 30 ;minutes, seconds
@ -357,6 +344,7 @@ GradeInitB:
ld [wGradeGauge], a ld [wGradeGauge], a
ld [wSubgrade], a ld [wSubgrade], a
ld [wGradeBoosts], a ld [wGradeBoosts], a
ld [wCOOLBoosts], a
ld [wCOOLIsActive], a ld [wCOOLIsActive], a
ld [wREGRETChecked], a ld [wREGRETChecked], a
ld [wPrevCOOL], a ld [wPrevCOOL], a
@ -488,6 +476,22 @@ DrawGradeProgressDMGT:
call SetProgress call SetProgress
ret 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: UpdateGradeDMGT:
; Check if the torikan hasn't been calculated. ; Check if the torikan hasn't been calculated.
ld a, [wRankingDisqualified] ld a, [wRankingDisqualified]
@ -819,6 +823,7 @@ UpdateGradeTGM1:
ret nz ret nz
; Skip to GM check if already S9. ; Skip to GM check if already S9.
ld a, [wDisplayedGrade]
cp a, GRADE_S9 cp a, GRADE_S9
jp nc, .check999 jp nc, .check999
@ -1033,10 +1038,16 @@ UpdateGradeDEAT:
cp a, GRADE_M cp a, GRADE_M
jr nz, .notm jr nz, .notm
; We should be GM if we're at or past level 1000. ; We should be GM if we're at or past level 999.
ldh a, [hCLevel+CLEVEL_THOUSANDS] ; Level, thousands digit. ldh a, [hCLevel+CLEVEL_HUNDREDS] ; Level, hundreds digit.
cp a, 1 cp a, 9
ret c ; If less than 1000, return. 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! ; Otherwise give the grade!
ld a, GRADE_GM ld a, GRADE_GM
@ -1253,6 +1264,8 @@ UpdateGradeTGM3:
ld hl, wInternalGradePoints ld hl, wInternalGradePoints
add a, [hl] add a, [hl]
ld [wInternalGradePoints], a ld [wInternalGradePoints], a
; Draw the progress
call DrawGradeProgressTGM3
jp .IncreaseInternalGrade jp .IncreaseInternalGrade
.multipliers .multipliers
@ -1374,11 +1387,15 @@ UpdateGradeTGM3:
.IncreaseInternalGrade .IncreaseInternalGrade
; Are we on level *00-*05? ; Are we on level *00-*05?
ld a, [hCLevel+CLEVEL_TENS]
cp a, 0
jr nz, .nocool
ld a, [hCLevel+CLEVEL_ONES] ld a, [hCLevel+CLEVEL_ONES]
cp a, 6 cp a, 6
; If we are, jump to the update COOL grade funcion just in case we have to apply a section COOL ; 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 ; If not, continue
.nocool
; Do we have 100 Grade Points? ; Do we have 100 Grade Points?
ld a, [wInternalGradePoints] ld a, [wInternalGradePoints]
cp a, 100 cp a, 100
@ -1388,12 +1405,13 @@ UpdateGradeTGM3:
ld a, [wInternalGrade] ld a, [wInternalGrade]
inc a inc a
ld [wInternalGrade], a ld [wInternalGrade], a
call DrawGradeProgressTGM3
; This falls to the next function, this is intentional ; This falls to the next function, this is intentional
TGM3UpdateDisplayedGrade: TGM3UpdateDisplayedGrade:
ld a, [wDisplayedGrade] ; If we are a GM Grade, return ld a, [wGradeBoosts] ; If we are an S9 Grade, return
cp a, GRADE_GM cp a, GRADE_S9
ret z ret z
ld a, GRADE_9 ; Load the lowest grade into a ld a, GRADE_9 ; Load the lowest grade into a
ld b, a ; Then save it into b ld b, a ; Then save it into b
@ -1403,57 +1421,29 @@ TGM3UpdateDisplayedGrade:
ld c, a ld c, a
add hl, bc add hl, bc
ld a, [hl] ; Load the boosts to add into a... ld a, [hl] ; Load the boosts to add into a...
ld b, a ld b, a ; And then into b.
.update .update
ld a, [wGradeBoosts] ; Load the boosts variable into A ld a, [wGradeBoosts] ; Load the boosts variable into A
add a, b ;Add the boosts 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 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] ld a, [wDisplayedGrade]
cp a, b cp a, b
ret z ; If the grade is the same, return. ret z ; If the grade is the same, return.
ld a, b 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 [wDisplayedGrade], a ; Otherwise, set the grade.
ld [wGradeBoosts], a ; And the grade boosts too.
; ...Play the jingle. ; ...Play the jingle.
ld a, SFX_RANKUP ld a, SFX_RANKUP
call SFXEnqueue call SFXEnqueue
@ -1477,18 +1467,18 @@ CheckCOOL:
ret nz ; If not, proceed as normal ret nz ; If not, proceed as normal
.cool .cool
ld hl, sTGM3HowManyInternalGradesToIncrease ; Make HL point to the..., yeah. ld a, [wCOOLBoosts] ; Load our COOL Boosts into A
ld a, [wInternalGrade] ; Get the offset inc a ; Increase A
ld d, a ; save the internal grade because we need it later ld [wCOOLBoosts], a ; And load the result
ld b, 0 ; Now let's display our new grade!
ld c, a ld b, a
add hl, bc ld a, [wDisplayedGrade]
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 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 ld [wDisplayedGrade], a ; Load the boosts into the displayed grade
xor a, a xor a, a
ld [wCOOLIsActive], a ; Make the cool no longer be active ld [wCOOLIsActive], a ; Make the cool no longer be active
@ -1501,10 +1491,10 @@ DecayGradeTGM3:
cp a, 0 cp a, 0
jr z, .points jr z, .points
ld b, a ; Save the timer 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 dec a
and a and a
ret nz call nz, UpdateGradeTGM3.IncreaseInternalGrade
ld a, b ; Load the timer back ld a, b ; Load the timer back
dec a dec a
ld [wDecayRate], 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 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 ; Else, load the points and the corresponding Decay Rate
ld [wInternalGradePoints], a ld [wInternalGradePoints], a
call DrawGradeProgressTGM3
; Get the Decay Rate required ; Get the Decay Rate required
ld hl, sTGM3InternalGradeSystem ld hl, sTGM3InternalGradeSystem
ld a, [wInternalGrade] ; Example: 3 ld a, [wInternalGrade] ; Example: 3
@ -1542,7 +1533,7 @@ DecayGradeTGM3:
.lpoints .lpoints
ld [wInternalGradePoints], a ld [wInternalGradePoints], a
ret jp DrawGradeProgressTGM3
TGM3COOLHandlerB: TGM3COOLHandlerB:
@ -1572,13 +1563,24 @@ TGM3COOLHandlerB:
jp .checkBaselineCOOL jp .checkBaselineCOOL
.checkCOOL .checkCOOL
; Load the minutes.
ld a, [wPrevCOOL] ld a, [wPrevCOOL]
ld b, a ld b, a
; Load the seconds.
ld a, [wPrevCOOL+1] ld a, [wPrevCOOL+1]
; Give the player 2 seconds to spare add a, 2 ; Give the player 2 seconds to spare
sub a, 2 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 ld c, a
; Load the frames.
ld a, [wPrevCOOL+2]
ld d, a
.checkBaselineCOOL .checkBaselineCOOL
call CheckCOOL_REGRET call CheckCOOL_REGRET
cp a, $ff cp a, $ff

View File

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

View File

@ -471,7 +471,7 @@ AdjustSpeedCurve:
and a, $0F and a, $0F
; Compare to ours. ; Compare to ours.
ld hl, hCLevel+CLEVEL_HUNDREDS ld hl, hTrueCLevel+CLEVEL_HUNDREDS
cp a, [hl] cp a, [hl]
jr z, .checktens ; Equal? We need to check deeper. jr z, .checktens ; Equal? We need to check deeper.
jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase.
@ -484,7 +484,7 @@ AdjustSpeedCurve:
and a, $0F and a, $0F
; Compare to ours. ; Compare to ours.
ld hl, hCLevel+CLEVEL_TENS ld hl, hTrueCLevel+CLEVEL_TENS
cp a, [hl] cp a, [hl]
jr z, .checkones ; Equal? We need to check deeper. jr z, .checkones ; Equal? We need to check deeper.
jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase.
@ -496,7 +496,7 @@ AdjustSpeedCurve:
and a, $0F and a, $0F
; Compare to ours. ; Compare to ours.
ld hl, hCLevel+CLEVEL_ONES ld hl, hTrueCLevel+CLEVEL_ONES
cp a, [hl] cp a, [hl]
jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase.
ret nz ; Ours lower? We're done. 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. ; Builds an internal level that is the displayed level skipped an amount of sections ahead.
BuildTrueCLevel: 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. ; 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] ld a, [wSkippedSectionsBCD]
or a, a or a, a
ret z ret z
; Otherwise, to the thing. ; Otherwise, to the thing.
ld de, hCLevel
ld hl, hTrueCLevel
ld bc, 4
call UnsafeMemCopy
; Amount of steps to increment hundreds. ; Amount of steps to increment hundreds.
ld a, [wSkippedSectionsBCD] ld a, [wSkippedSectionsBCD]
and a, $0F and a, $0F

View File

@ -516,7 +516,14 @@ ApplyTime::
ld [wSPRTimeCS2+1], a ld [wSPRTimeCS2+1], a
; Set the palette of the time objects. ; 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 ld a, OAMF_PAL1 | $07
.yescool
ld [wSPRTimeM1+3], a ld [wSPRTimeM1+3], a
ld [wSPRTimeM2+3], a ld [wSPRTimeM2+3], a
ld [wSPRTimeS1+3], a ld [wSPRTimeS1+3], a

View File

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