diff --git a/bin/PandorasBlocks.gbc b/bin/PandorasBlocks.gbc index 2e33753..1687cbb 100644 Binary files a/bin/PandorasBlocks.gbc and b/bin/PandorasBlocks.gbc differ diff --git a/bin/PandorasBlocks.map b/bin/PandorasBlocks.map index 927557e..3c9cf2e 100644 --- a/bin/PandorasBlocks.map +++ b/bin/PandorasBlocks.map @@ -115,7 +115,7 @@ ROM0 bank #0: $1893 = !11 $18e1 = !12 $192f = !13 - SECTION: $1980-$1fae ($062f bytes) ["Domain Specific Functions"] + SECTION: $1980-$1fb9 ($063a bytes) ["Domain Specific Functions"] $1980 = SetPal $198d = SetPal.darker $1993 = SetPal.lighter @@ -144,399 +144,401 @@ ROM0 bank #0: $1b9c = ApplyHold.getoffh $1ba7 = ApplyHold.skipoffh $1be1 = ApplyTime - $1c32 = ApplyTime.loop0 - $1c61 = ApplyTime.loop1 - $1cb6 = ApplyNumbers8 - $1d18 = ApplyNumbers8.one - $1d22 = ApplyNumbers8.two - $1d2c = ApplyNumbers8.three - $1d36 = ApplyNumbers8.four - $1d40 = ApplyNumbers8.five - $1d4a = ApplyNumbers8.six - $1d54 = ApplyNumbers8.seven - $1d5e = ApplyNumbers8.eight - $1d67 = ApplyNumbers4 - $1d95 = ApplyNumbers4.one - $1d9f = ApplyNumbers4.two - $1da9 = ApplyNumbers4.three - $1db3 = ApplyNumbers4.four - $1dbc = SetNumberSpritePositions - $1ed3 = GradeRendering - $1f06 = GradeRendering.effect - $1f16 = GradeRendering.noeffect - $1f1e = GradeRendering.drawgrade - $1f25 = GradeRendering.regulargrade - $1f2d = GradeRendering.sgrade - $1f43 = GradeRendering.hisgrade - $1f59 = GradeRendering.mgrade - $1f6f = GradeRendering.lettergrade - $1f8c = GradeRendering.mk - $1f92 = GradeRendering.mv - $1f98 = GradeRendering.mo - $1f9e = GradeRendering.mm - $1fa4 = GradeRendering.gmgrade - SECTION: $1faf-$24cd ($051f bytes) ["SRAM Functions"] - $1faf = RestoreSRAM - $1fde = TrustedLoad - $1fef = !0 - $2000 = !1 - $2011 = !2 - $2022 = !3 - $2033 = !4 - $2044 = !5 - $2053 = !6 - $2064 = !7 - $2092 = TrustedLoad.jumps - $20aa = TrustedLoad.dmgt - $20b0 = TrustedLoad.tgm1 - $20b6 = TrustedLoad.tgm3 - $20bc = TrustedLoad.deat - $20c2 = TrustedLoad.shir - $20c8 = TrustedLoad.chil - $20ce = TrustedLoad.myco - $20d4 = TrustedLoad.search - $20e6 = TrustedLoad.notfound - $20ed = TrustedLoad.fallback - $2108 = InitializeSRAM - $2269 = ResetScores - $2277 = ResetScores.jumps - $228c = ResetScores.dmgt - $2298 = ResetScores.tgm1 - $22a4 = ResetScores.tgm3 - $22b0 = ResetScores.deat - $22bc = ResetScores.shir - $22c8 = ResetScores.chil - $22d4 = ResetScores.myco - $22e0 = NextProfile - $22e9 = NextProfile.update - $22ec = ChangeProfile - $22ec = ChangeProfile.backup - $231a = ChangeProfile.first - $2328 = ChangeProfile.second - $2336 = ChangeProfile.third - $2344 = ChangeProfile.fourth - $2352 = ChangeProfile.fifth - $2360 = ChangeProfile.sixth - $236e = ChangeProfile.seventh - $237c = ChangeProfile.eighth - $238a = ChangeProfile.ninth - $2398 = ChangeProfile.tenth - $23a6 = ChangeProfile.restore - $23d5 = ChangeProfile.lfirst - $23e4 = ChangeProfile.lsecond - $23f3 = ChangeProfile.lthird - $2402 = ChangeProfile.lfourth - $2411 = ChangeProfile.lfifth - $2420 = ChangeProfile.lsixth - $242f = ChangeProfile.lseventh - $243e = ChangeProfile.leighth - $244d = ChangeProfile.lninth - $245c = ChangeProfile.ltenth - $246b = ResetProfile - SECTION: $24ce-$2929 ($045c bytes) ["Level Functions"] - $24ce = LevelInit - $253e = SpecialLevelInit - $254c = SpecialLevelInit.jumps - $2561 = SpecialLevelInit.dmgt - $2566 = SpecialLevelInit.tgm1 - $256b = SpecialLevelInit.tgm3 - $2570 = SpecialLevelInit.deat - $2575 = SpecialLevelInit.shir - $257a = SpecialLevelInit.chil - $257f = SpecialLevelInit.myco - $2584 = SpecialLevelInit.loaddata - $25b9 = LevelUp - $25e3 = LevelUp.doit - $2622 = LevelUp.checknlevel - $2656 = !0 - $266e = !1 - $2677 = LevelUp.checkcool - $2698 = LevelUp.checkregret - $26b5 = LevelUp.resetsectiontimer - $26d8 = LevelUp.regretavailable - $26dc = LevelUp.bellmaybe - $26f8 = LevelUp.leveljinglemaybe - $2708 = AdjustSpeedCurve - $270e = AdjustSpeedCurve.docheck - $270e = AdjustSpeedCurve.checkthousands - $271d = AdjustSpeedCurve.checkhundreds - $272a = AdjustSpeedCurve.checktens - $2739 = AdjustSpeedCurve.checkones - $2744 = AdjustSpeedCurveForced - $277f = AdjustSpeedCurveForced.continue - $2784 = BuildTrueCLevel - $27ac = BuildTrueCLevel.thousands - $27c1 = CheckSpecialLevelConditions - $27f2 = CheckSpecialLevelConditions.override - $280d = CheckSpecialLevelConditions.nooverride - $2813 = CheckSpecialLevelConditions.speciallock - $2837 = CheckSpecialLevelConditions.bones - $284c = CheckSpecialLevelConditions.enterthebonezone - $2851 = CheckSpecialLevelConditions.invis - $2866 = CheckSpecialLevelConditions.vanishoxyaction - $286b = CheckSpecialLevelConditions.killscreen - $287c = CheckSpecialLevelConditions.rip - $28ac = CheckSpecialLevelConditions.staffroll - $28ba = CheckSpecialLevelConditions.justkill - $28ce = TriggerKillScreen - $28f0 = GetSection - $28fe = GetSectionBCD - $2907 = GetAdjustedSection - $2915 = GetAdjustedSectionBCD - $291e = SkipSection - SECTION: $292a-$2c97 ($036e bytes) ["SFX Functions"] - $292a = SFXInit - $2958 = SFXPopQueue - $296d = SFXPushQueue - $297e = SFXProcessQueue - $298f = !0 - $29aa = !1 - $29ac = SFXTriggerNoise - $29b9 = !2 - $29cd = !3 - $29d9 = SFXEnqueue - $29f2 = SFXEnqueue.findsfx - $2a11 = !4 - $2a21 = !5 - $2a31 = !6 - $2a41 = !7 - $2a51 = !8 - $2a61 = !9 - $2a71 = !10 - $2a81 = !11 - $2a91 = !12 - $2aa1 = !13 - $2ab1 = !14 - $2ac1 = !15 - $2ad1 = !16 - $2ae1 = !17 - $2af1 = !18 - $2b00 = !19 - $2b0f = !20 - $2b1e = !21 - $2b2d = !22 - $2b3c = !23 - $2b4b = !24 - $2b58 = SFXKill - $2b8e = SFXPlayNoise - $2b99 = SFXPlayNoise.noisereg - $2ba6 = !25 - $2bb0 = SFXPlayNoise.savenoiseplayhead - $2bb9 = SFXPlay - $2bbe = SFXPlay.play - $2bc8 = SFXPlay.getRegister - $2bc9 = SFXPlay.checkEndOfSong - $2bdb = SFXPlay.checkEndOfSample - $2bdf = SFXPlay.checkChangeBank - $2be9 = SFXPlay.checkChangePlayHead - $2bfc = SFXPlay.applyRegister - $2c01 = SFXPlay.savePlayhead - $2c0a = SFXGoRoll - $2c47 = SFXEndOfGame - SECTION: $2c98-$2ebe ($0227 bytes) ["RNG Functions"] - $2c98 = HarvestEntropy - $2c9e = HarvestEntropy.loop - $2cbf = RNGInit - $2d00 = RNGInit.hellinit - $2d1c = RNGInit.complexinit - $2d33 = RNGInit.getfirstpiece - $2d48 = RNGInit.getqueue - $2d4e = ShiftHistory - $2d6b = GetNextHellPiece - $2d70 = GetNextTGM1Piece - $2d73 = !0 - $2d8b = !1 - $2d8d = GetNextTGM2Piece - $2d90 = !2 - $2da8 = !3 - $2daa = GetNextNesPiece - $2db8 = GetNextTGM3Piece - $2dbb = !4 - $2dde = !5 - $2de1 = !6 - $2df1 = !7 - $2dfb = !8 - $2e09 = !9 - $2e17 = !10 - $2e23 = !11 - $2e2f = !12 - $2e3b = !13 - $2e47 = !14 - $2e53 = !15 - $2e5f = !16 - $2e6e = GetNextPiece - $2e7c = GetNextPiece.nextpiecejumps - $2e8b = Next35Piece - $2e8b = !17 - $2e95 = Next7Piece - $2e95 = !18 - $2e9f = NextByte - SECTION: $2ebf-$3083 ($01c5 bytes) ["Hi Score Functions"] - $2ebf = CheckAndAddHiscore - $2ec9 = CheckAndAddHiscore.checkloop - $2ece = CheckAndAddHiscore.checkgrade - $2ed7 = CheckAndAddHiscore.oldgraded - $2ee6 = CheckAndAddHiscore.oldungraded - $2eed = CheckAndAddHiscore.checklevel - $2f12 = CheckAndAddHiscore.checkscore - $2f55 = CheckAndAddHiscore.notbetter - $2f62 = CheckAndAddHiscore.better - $2f64 = InsertHiScore - $2f64 = InsertHiScore.copylower - $2f75 = InsertHiScore.copyupper - $2f81 = !0 - $2f95 = InsertHiScore.findrow - $2fa1 = !1 - $2fa5 = InsertHiScore.insert - $2ffe = InsertHiScore.persist - $300f = GetHiScoreEntry - $3023 = !2 - $3027 = GetHiScoreEntry.store - $3030 = InitTargetHSTable - $303b = InitTargetHSTable.jumps - $3050 = InitTargetHSTable.dmgt - $3055 = InitTargetHSTable.tgm1 - $305a = InitTargetHSTable.tgm3 - $305f = InitTargetHSTable.deat - $3064 = InitTargetHSTable.shir - $3069 = InitTargetHSTable.chil - $306e = InitTargetHSTable.myco - $3071 = InitTargetHSTable.store - SECTION: $3084-$31cd ($014a bytes) ["Progress Data"] - $3084 = sProgressData - SECTION: $31ce-$3314 ($0147 bytes) ["Time Functions"] - $31ce = TimeInit - $31f7 = StartCountdown - $3205 = ResetGameTime - $3219 = CheckTorikan - $322f = CheckTorikan.failure - $3231 = CheckTorikan.success - $3234 = HandleTimers - $325a = HandleTimers.reduce - $3267 = HandleTimers.clock - $3281 = HandleTimers.go - $32a5 = CheckCOOL_REGRET - $32bc = CheckCOOL_REGRET.failure - $32be = CheckCOOL_REGRET.success - $32c1 = HandleSectionTimers - $32dd = HandleSectionTimers.continue - $32f1 = HandleSectionTimers.sectiongo - SECTION: $3315-$3454 ($0140 bytes) ["Hi Score Data"] - $3315 = sHiscoreDefaultData - SECTION: $3455-$357e ($012a bytes) ["Input Functions"] - $3455 = InputInit - $3467 = GetInput - $3467 = GetInput.btns - $3474 = GetInput.readA - $3478 = GetInput.setA - $3483 = GetInput.clearA - $3486 = GetInput.readB - $348a = GetInput.setB - $3495 = GetInput.clearB - $3498 = GetInput.readSelect - $349c = GetInput.setSelect - $34a7 = GetInput.clearSelect - $34aa = GetInput.readStart - $34ae = GetInput.setStart - $34b9 = GetInput.clearStart - $34bc = GetInput.dpad - $34c9 = GetInput.readUp - $34cd = GetInput.setUp - $34d8 = GetInput.clearUp - $34db = GetInput.readDown - $34df = GetInput.setDown - $34ea = GetInput.clearDown - $34ed = GetInput.readLeft - $34f1 = GetInput.setLeft - $34fc = GetInput.clearLeft - $34ff = GetInput.readRight - $3503 = GetInput.setRight - $350e = GetInput.clearRight - $3511 = GetInput.priorities - $351e = GetInput.jumps - $352d = GetInput.dlru - $353d = GetInput.ulrd - $354d = GetInput.lrud - $3558 = GetInput.udlr - $3563 = GetInput.zeroud - $3569 = GetInput.zerolr - $356f = GetInput.zerolrd - $3577 = GetInput.zerolru - SECTION: $357f-$365e ($00e0 bytes) ["Score Functions"] - $357f = ScoreInit - $35a7 = IncreaseScore - $35df = IncreaseScore.doConvert - $35e1 = !0 - $35f7 = IncreaseScore.carry - $35f9 = IncreaseScore.postConvert - $3606 = !1 - $360d = IncreaseScore.preAddDigit - $3635 = IncreaseScore.addDigit - $364b = IncreaseScore.nextDigit - SECTION: $365f-$3729 ($00cb bytes) ["Title Function Trampolines"] - $365f = SwitchToTitle - $3668 = TitleEventLoopHandler - $3672 = TitleVBlankHandler - $367c = PersistLevel - $368a = DrawSpeedMain - $36da = DrawSpeedSettings - SECTION: $372a-$37da ($00b1 bytes) ["Progress Functions"] - $372a = SetProgress - $3734 = SetProgress.loop - $3738 = SetProgress.correct - $375f = SetProgress.wvr_u1 - $376b = SetProgress.wvr_u2 - $3779 = SetProgress.wvr_u3 - $3785 = SetProgress.wvr_u4 - $3793 = SetProgress.wvr_u5 - $379f = SetProgress.wvr_u6 - $37ad = SetProgress.wvr_u7 - $37b9 = SetProgress.wvr_u8 - $37c7 = SetProgress.wvr_u9 - $37d3 = SetProgress.wvr_u10 - SECTION: $37db-$387b ($00a1 bytes) ["Code Entry Point"] - $37db = Main - $3804 = Main.notgbc - $3810 = Main.wvr_u1 - $383d = EventLoop - $3856 = EventLoop.eventloopjumps - $385f = EventLoopPostHandler - $3861 = EventLoopPostHandler.wvb_u2 - $3873 = EventLoopPostHandler.vblankjumps - SECTION: $387c-$38b1 ($0036 bytes) ["Grading Functions Unbanked"] - $387c = GradeInit - $3885 = UpdateGrade - $388e = DecayGradeProcess - $3897 = DecayGradeDelay - $38a0 = TGM3REGRETHandler - $38a9 = TGM3COOLHandler - SECTION: $38b2-$38df ($002e bytes) ["Memory Functions"] - $38b2 = UnsafeMemCopy - $38bb = SafeMemCopy.wvr_u1 - $38bb = SafeMemCopy - $38ca = UnsafeMemSet - $38d2 = SafeMemSet - $38d2 = SafeMemSet.wvr_u2 - SECTION: $38e0-$3905 ($0026 bytes) ["Gameplay Function Trampolines"] - $38e0 = SwitchToGameplay - $38e9 = SwitchToGameplayBig - $38f2 = GamePlayEventLoopHandler - $38fc = GamePlayBigEventLoopHandler - SECTION: $3906-$392a ($0025 bytes) ["Interrupt Initialization Functions"] - $3906 = EnableScreenSquish - $3920 = DisableScreenSquish - SECTION: $392b-$394c ($0022 bytes) ["OAM Functions"] - $392b = CopyOAMHandler - $3937 = ClearOAM - SECTION: $394d-$395d ($0011 bytes) ["Intro Effect Trampoline"] - $394d = DoIntroEffect - SECTION: $395e-$396c ($000f bytes) ["Banking Functions"] - $395e = BankingInit - SECTION: $396d-$3976 ($000a bytes) ["OAM DMA Code"] - $396d = OAMDMA - $3977 = OAMDMAEnd - EMPTY: $3977-$3fff ($0689 bytes) - TOTAL EMPTY: $0691 bytes + $1c22 = ApplyTime.nocool + $1c24 = ApplyTime.yescool + $1c3d = ApplyTime.loop0 + $1c6c = ApplyTime.loop1 + $1cc1 = ApplyNumbers8 + $1d23 = ApplyNumbers8.one + $1d2d = ApplyNumbers8.two + $1d37 = ApplyNumbers8.three + $1d41 = ApplyNumbers8.four + $1d4b = ApplyNumbers8.five + $1d55 = ApplyNumbers8.six + $1d5f = ApplyNumbers8.seven + $1d69 = ApplyNumbers8.eight + $1d72 = ApplyNumbers4 + $1da0 = ApplyNumbers4.one + $1daa = ApplyNumbers4.two + $1db4 = ApplyNumbers4.three + $1dbe = ApplyNumbers4.four + $1dc7 = SetNumberSpritePositions + $1ede = GradeRendering + $1f11 = GradeRendering.effect + $1f21 = GradeRendering.noeffect + $1f29 = GradeRendering.drawgrade + $1f30 = GradeRendering.regulargrade + $1f38 = GradeRendering.sgrade + $1f4e = GradeRendering.hisgrade + $1f64 = GradeRendering.mgrade + $1f7a = GradeRendering.lettergrade + $1f97 = GradeRendering.mk + $1f9d = GradeRendering.mv + $1fa3 = GradeRendering.mo + $1fa9 = GradeRendering.mm + $1faf = GradeRendering.gmgrade + SECTION: $1fba-$24d8 ($051f bytes) ["SRAM Functions"] + $1fba = RestoreSRAM + $1fe9 = TrustedLoad + $1ffa = !0 + $200b = !1 + $201c = !2 + $202d = !3 + $203e = !4 + $204f = !5 + $205e = !6 + $206f = !7 + $209d = TrustedLoad.jumps + $20b5 = TrustedLoad.dmgt + $20bb = TrustedLoad.tgm1 + $20c1 = TrustedLoad.tgm3 + $20c7 = TrustedLoad.deat + $20cd = TrustedLoad.shir + $20d3 = TrustedLoad.chil + $20d9 = TrustedLoad.myco + $20df = TrustedLoad.search + $20f1 = TrustedLoad.notfound + $20f8 = TrustedLoad.fallback + $2113 = InitializeSRAM + $2274 = ResetScores + $2282 = ResetScores.jumps + $2297 = ResetScores.dmgt + $22a3 = ResetScores.tgm1 + $22af = ResetScores.tgm3 + $22bb = ResetScores.deat + $22c7 = ResetScores.shir + $22d3 = ResetScores.chil + $22df = ResetScores.myco + $22eb = NextProfile + $22f4 = NextProfile.update + $22f7 = ChangeProfile + $22f7 = ChangeProfile.backup + $2325 = ChangeProfile.first + $2333 = ChangeProfile.second + $2341 = ChangeProfile.third + $234f = ChangeProfile.fourth + $235d = ChangeProfile.fifth + $236b = ChangeProfile.sixth + $2379 = ChangeProfile.seventh + $2387 = ChangeProfile.eighth + $2395 = ChangeProfile.ninth + $23a3 = ChangeProfile.tenth + $23b1 = ChangeProfile.restore + $23e0 = ChangeProfile.lfirst + $23ef = ChangeProfile.lsecond + $23fe = ChangeProfile.lthird + $240d = ChangeProfile.lfourth + $241c = ChangeProfile.lfifth + $242b = ChangeProfile.lsixth + $243a = ChangeProfile.lseventh + $2449 = ChangeProfile.leighth + $2458 = ChangeProfile.lninth + $2467 = ChangeProfile.ltenth + $2476 = ResetProfile + SECTION: $24d9-$2937 ($045f bytes) ["Level Functions"] + $24d9 = LevelInit + $2549 = SpecialLevelInit + $2557 = SpecialLevelInit.jumps + $256c = SpecialLevelInit.dmgt + $2571 = SpecialLevelInit.tgm1 + $2576 = SpecialLevelInit.tgm3 + $257b = SpecialLevelInit.deat + $2580 = SpecialLevelInit.shir + $2585 = SpecialLevelInit.chil + $258a = SpecialLevelInit.myco + $258f = SpecialLevelInit.loaddata + $25c4 = LevelUp + $25ee = LevelUp.doit + $262d = LevelUp.checknlevel + $2661 = !0 + $2679 = !1 + $2682 = LevelUp.checkcool + $26a3 = LevelUp.checkregret + $26c0 = LevelUp.resetsectiontimer + $26e3 = LevelUp.regretavailable + $26e7 = LevelUp.bellmaybe + $2703 = LevelUp.leveljinglemaybe + $2713 = AdjustSpeedCurve + $2719 = AdjustSpeedCurve.docheck + $2719 = AdjustSpeedCurve.checkthousands + $2728 = AdjustSpeedCurve.checkhundreds + $2735 = AdjustSpeedCurve.checktens + $2744 = AdjustSpeedCurve.checkones + $274f = AdjustSpeedCurveForced + $278a = AdjustSpeedCurveForced.continue + $278f = BuildTrueCLevel + $27ba = BuildTrueCLevel.thousands + $27cf = CheckSpecialLevelConditions + $2800 = CheckSpecialLevelConditions.override + $281b = CheckSpecialLevelConditions.nooverride + $2821 = CheckSpecialLevelConditions.speciallock + $2845 = CheckSpecialLevelConditions.bones + $285a = CheckSpecialLevelConditions.enterthebonezone + $285f = CheckSpecialLevelConditions.invis + $2874 = CheckSpecialLevelConditions.vanishoxyaction + $2879 = CheckSpecialLevelConditions.killscreen + $288a = CheckSpecialLevelConditions.rip + $28ba = CheckSpecialLevelConditions.staffroll + $28c8 = CheckSpecialLevelConditions.justkill + $28dc = TriggerKillScreen + $28fe = GetSection + $290c = GetSectionBCD + $2915 = GetAdjustedSection + $2923 = GetAdjustedSectionBCD + $292c = SkipSection + SECTION: $2938-$2ca5 ($036e bytes) ["SFX Functions"] + $2938 = SFXInit + $2966 = SFXPopQueue + $297b = SFXPushQueue + $298c = SFXProcessQueue + $299d = !0 + $29b8 = !1 + $29ba = SFXTriggerNoise + $29c7 = !2 + $29db = !3 + $29e7 = SFXEnqueue + $2a00 = SFXEnqueue.findsfx + $2a1f = !4 + $2a2f = !5 + $2a3f = !6 + $2a4f = !7 + $2a5f = !8 + $2a6f = !9 + $2a7f = !10 + $2a8f = !11 + $2a9f = !12 + $2aaf = !13 + $2abf = !14 + $2acf = !15 + $2adf = !16 + $2aef = !17 + $2aff = !18 + $2b0e = !19 + $2b1d = !20 + $2b2c = !21 + $2b3b = !22 + $2b4a = !23 + $2b59 = !24 + $2b66 = SFXKill + $2b9c = SFXPlayNoise + $2ba7 = SFXPlayNoise.noisereg + $2bb4 = !25 + $2bbe = SFXPlayNoise.savenoiseplayhead + $2bc7 = SFXPlay + $2bcc = SFXPlay.play + $2bd6 = SFXPlay.getRegister + $2bd7 = SFXPlay.checkEndOfSong + $2be9 = SFXPlay.checkEndOfSample + $2bed = SFXPlay.checkChangeBank + $2bf7 = SFXPlay.checkChangePlayHead + $2c0a = SFXPlay.applyRegister + $2c0f = SFXPlay.savePlayhead + $2c18 = SFXGoRoll + $2c55 = SFXEndOfGame + SECTION: $2ca6-$2ecc ($0227 bytes) ["RNG Functions"] + $2ca6 = HarvestEntropy + $2cac = HarvestEntropy.loop + $2ccd = RNGInit + $2d0e = RNGInit.hellinit + $2d2a = RNGInit.complexinit + $2d41 = RNGInit.getfirstpiece + $2d56 = RNGInit.getqueue + $2d5c = ShiftHistory + $2d79 = GetNextHellPiece + $2d7e = GetNextTGM1Piece + $2d81 = !0 + $2d99 = !1 + $2d9b = GetNextTGM2Piece + $2d9e = !2 + $2db6 = !3 + $2db8 = GetNextNesPiece + $2dc6 = GetNextTGM3Piece + $2dc9 = !4 + $2dec = !5 + $2def = !6 + $2dff = !7 + $2e09 = !8 + $2e17 = !9 + $2e25 = !10 + $2e31 = !11 + $2e3d = !12 + $2e49 = !13 + $2e55 = !14 + $2e61 = !15 + $2e6d = !16 + $2e7c = GetNextPiece + $2e8a = GetNextPiece.nextpiecejumps + $2e99 = Next35Piece + $2e99 = !17 + $2ea3 = Next7Piece + $2ea3 = !18 + $2ead = NextByte + SECTION: $2ecd-$3091 ($01c5 bytes) ["Hi Score Functions"] + $2ecd = CheckAndAddHiscore + $2ed7 = CheckAndAddHiscore.checkloop + $2edc = CheckAndAddHiscore.checkgrade + $2ee5 = CheckAndAddHiscore.oldgraded + $2ef4 = CheckAndAddHiscore.oldungraded + $2efb = CheckAndAddHiscore.checklevel + $2f20 = CheckAndAddHiscore.checkscore + $2f63 = CheckAndAddHiscore.notbetter + $2f70 = CheckAndAddHiscore.better + $2f72 = InsertHiScore + $2f72 = InsertHiScore.copylower + $2f83 = InsertHiScore.copyupper + $2f8f = !0 + $2fa3 = InsertHiScore.findrow + $2faf = !1 + $2fb3 = InsertHiScore.insert + $300c = InsertHiScore.persist + $301d = GetHiScoreEntry + $3031 = !2 + $3035 = GetHiScoreEntry.store + $303e = InitTargetHSTable + $3049 = InitTargetHSTable.jumps + $305e = InitTargetHSTable.dmgt + $3063 = InitTargetHSTable.tgm1 + $3068 = InitTargetHSTable.tgm3 + $306d = InitTargetHSTable.deat + $3072 = InitTargetHSTable.shir + $3077 = InitTargetHSTable.chil + $307c = InitTargetHSTable.myco + $307f = InitTargetHSTable.store + SECTION: $3092-$31db ($014a bytes) ["Progress Data"] + $3092 = sProgressData + SECTION: $31dc-$3323 ($0148 bytes) ["Time Functions"] + $31dc = TimeInit + $3205 = StartCountdown + $3213 = ResetGameTime + $3227 = CheckTorikan + $323d = CheckTorikan.failure + $323f = CheckTorikan.success + $3242 = HandleTimers + $3268 = HandleTimers.reduce + $3275 = HandleTimers.clock + $328f = HandleTimers.go + $32b3 = CheckCOOL_REGRET + $32cb = CheckCOOL_REGRET.failure + $32cd = CheckCOOL_REGRET.success + $32d0 = HandleSectionTimers + $32ec = HandleSectionTimers.continue + $3300 = HandleSectionTimers.sectiongo + SECTION: $3324-$3463 ($0140 bytes) ["Hi Score Data"] + $3324 = sHiscoreDefaultData + SECTION: $3464-$358d ($012a bytes) ["Input Functions"] + $3464 = InputInit + $3476 = GetInput + $3476 = GetInput.btns + $3483 = GetInput.readA + $3487 = GetInput.setA + $3492 = GetInput.clearA + $3495 = GetInput.readB + $3499 = GetInput.setB + $34a4 = GetInput.clearB + $34a7 = GetInput.readSelect + $34ab = GetInput.setSelect + $34b6 = GetInput.clearSelect + $34b9 = GetInput.readStart + $34bd = GetInput.setStart + $34c8 = GetInput.clearStart + $34cb = GetInput.dpad + $34d8 = GetInput.readUp + $34dc = GetInput.setUp + $34e7 = GetInput.clearUp + $34ea = GetInput.readDown + $34ee = GetInput.setDown + $34f9 = GetInput.clearDown + $34fc = GetInput.readLeft + $3500 = GetInput.setLeft + $350b = GetInput.clearLeft + $350e = GetInput.readRight + $3512 = GetInput.setRight + $351d = GetInput.clearRight + $3520 = GetInput.priorities + $352d = GetInput.jumps + $353c = GetInput.dlru + $354c = GetInput.ulrd + $355c = GetInput.lrud + $3567 = GetInput.udlr + $3572 = GetInput.zeroud + $3578 = GetInput.zerolr + $357e = GetInput.zerolrd + $3586 = GetInput.zerolru + SECTION: $358e-$366d ($00e0 bytes) ["Score Functions"] + $358e = ScoreInit + $35b6 = IncreaseScore + $35ee = IncreaseScore.doConvert + $35f0 = !0 + $3606 = IncreaseScore.carry + $3608 = IncreaseScore.postConvert + $3615 = !1 + $361c = IncreaseScore.preAddDigit + $3644 = IncreaseScore.addDigit + $365a = IncreaseScore.nextDigit + SECTION: $366e-$3738 ($00cb bytes) ["Title Function Trampolines"] + $366e = SwitchToTitle + $3677 = TitleEventLoopHandler + $3681 = TitleVBlankHandler + $368b = PersistLevel + $3699 = DrawSpeedMain + $36e9 = DrawSpeedSettings + SECTION: $3739-$37e9 ($00b1 bytes) ["Progress Functions"] + $3739 = SetProgress + $3743 = SetProgress.loop + $3747 = SetProgress.correct + $376e = SetProgress.wvr_u1 + $377a = SetProgress.wvr_u2 + $3788 = SetProgress.wvr_u3 + $3794 = SetProgress.wvr_u4 + $37a2 = SetProgress.wvr_u5 + $37ae = SetProgress.wvr_u6 + $37bc = SetProgress.wvr_u7 + $37c8 = SetProgress.wvr_u8 + $37d6 = SetProgress.wvr_u9 + $37e2 = SetProgress.wvr_u10 + SECTION: $37ea-$388a ($00a1 bytes) ["Code Entry Point"] + $37ea = Main + $3813 = Main.notgbc + $381f = Main.wvr_u1 + $384c = EventLoop + $3865 = EventLoop.eventloopjumps + $386e = EventLoopPostHandler + $3870 = EventLoopPostHandler.wvb_u2 + $3882 = EventLoopPostHandler.vblankjumps + SECTION: $388b-$38c0 ($0036 bytes) ["Grading Functions Unbanked"] + $388b = GradeInit + $3894 = UpdateGrade + $389d = DecayGradeProcess + $38a6 = DecayGradeDelay + $38af = TGM3REGRETHandler + $38b8 = TGM3COOLHandler + SECTION: $38c1-$38ee ($002e bytes) ["Memory Functions"] + $38c1 = UnsafeMemCopy + $38ca = SafeMemCopy.wvr_u1 + $38ca = SafeMemCopy + $38d9 = UnsafeMemSet + $38e1 = SafeMemSet + $38e1 = SafeMemSet.wvr_u2 + SECTION: $38ef-$3914 ($0026 bytes) ["Gameplay Function Trampolines"] + $38ef = SwitchToGameplay + $38f8 = SwitchToGameplayBig + $3901 = GamePlayEventLoopHandler + $390b = GamePlayBigEventLoopHandler + SECTION: $3915-$3939 ($0025 bytes) ["Interrupt Initialization Functions"] + $3915 = EnableScreenSquish + $392f = DisableScreenSquish + SECTION: $393a-$395b ($0022 bytes) ["OAM Functions"] + $393a = CopyOAMHandler + $3946 = ClearOAM + SECTION: $395c-$396c ($0011 bytes) ["Intro Effect Trampoline"] + $395c = DoIntroEffect + SECTION: $396d-$397b ($000f bytes) ["Banking Functions"] + $396d = BankingInit + SECTION: $397c-$3985 ($000a bytes) ["OAM DMA Code"] + $397c = OAMDMA + $3986 = OAMDMAEnd + EMPTY: $3986-$3fff ($067a bytes) + TOTAL EMPTY: $0682 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -2190,120 +2192,123 @@ ROMX bank #4: $68c0 = sGameplayUngradedTileMap $68c0 = sGameplayTileMapEnd $6b60 = sGameplayUngradedTileMapEnd - SECTION: $6b60-$7271 ($0712 bytes) ["Grading Functions Banked"] + SECTION: $6b60-$7284 ($0725 bytes) ["Grading Functions Banked"] $6b60 = GradeInitB - $6baa = GradeInitB.grade9start - $6baf = UpdateGradeB - $6baf = GradeInitB.end - $6bbd = UpdateGradeB.gradejumptable - $6bd2 = DecayGradeProcessB - $6be0 = DecayGradeProcessB.gradejumptable - $6bf5 = DecayGradeDelayB - $6c03 = DecayGradeDelayB.gradejumptable - $6c18 = PrepareScore - $6c2b = DrawGradeProgressDMGT - $6c37 = !0 - $6c46 = UpdateGradeDMGT - $6c7f = UpdateGradeDMGT.checklineclears - $6c98 = UpdateGradeDMGT.clearrate - $6ca9 = UpdateGradeDMGT.combomult - $6cb6 = UpdateGradeDMGT.combo13 - $6cc7 = UpdateGradeDMGT.combo8 - $6cd8 = UpdateGradeDMGT.combo1 - $6ce7 = UpdateGradeDMGT.prelevel - $6cf6 = UpdateGradeDMGT.single - $6d06 = UpdateGradeDMGT.double - $6d17 = UpdateGradeDMGT.adddonce - $6d1b = UpdateGradeDMGT.triple - $6d2c = UpdateGradeDMGT.addtonce - $6d30 = UpdateGradeDMGT.tetris - $6d34 = UpdateGradeDMGT.levelmult - $6d4c = UpdateGradeDMGT.mult4 - $6d52 = UpdateGradeDMGT.mult3 - $6d57 = UpdateGradeDMGT.mult2 - $6d5b = UpdateGradeDMGT.mult1 - $6d5c = UpdateGradeDMGT.processgrade - $6d85 = UpdateGradeDMGT.increasegrademaybe - $6da9 = UpdateGradeDMGT.gotgm - $6db7 = DecayGradeDMGT - $6dda = DecayGradeDMGT.nodecay - $6de1 = DecayGradeDMGT.decay - $6def = UpdateGradeTGM1 - $6dff = UpdateGradeTGM1.trygradeup - $6e1a = UpdateGradeTGM1.increasegrade - $6e2f = UpdateGradeTGM1.skipjingle - $6e3b = UpdateGradeTGM1.check300 - $6e59 = UpdateGradeTGM1.success300 - $6e60 = UpdateGradeTGM1.fail300 - $6e67 = UpdateGradeTGM1.check500 - $6e85 = UpdateGradeTGM1.success500 - $6e8c = UpdateGradeTGM1.fail500 - $6e93 = UpdateGradeTGM1.check999 - $6eca = UpdateGradeTGM1.success999 - $6ee2 = UpdateGradeTGM1.fail999 - $6ee8 = UpdateGradeDEAT - $6ef4 = UpdateGradeDEAT.notgm - $6f10 = UpdateGradeDEAT.notm - $6f33 = UpdateGradeDEAT.disqualify - $6f51 = UpdateGradeSHIR - $6f93 = UpdateGradeSHIR.s5torikan - $6fa3 = UpdateGradeSHIR.s10torikan - $6fb2 = UpdateGradeSHIR.disqualify - $6fc1 = UpdateGradeSHIR.l1000 - $6fd7 = UpdateGradeSHIR.l500 - $6fed = UpdateGradeTGM3 - $6fed = UpdateGradeTGM3.GradePoints - $6ffc = !1 - $7001 = UpdateGradeTGM3.GetOffset - $7013 = UpdateGradeTGM3.loadpoints - $701d = UpdateGradeTGM3.multipliers - $702a = !2 - $7044 = !3 - $7049 = UpdateGradeTGM3.levelmultiplier - $7062 = UpdateGradeTGM3.Level750 - $7076 = UpdateGradeTGM3.under750 - $707c = UpdateGradeTGM3.Level500 - $708a = UpdateGradeTGM3.Level250 - $7099 = UpdateGradeTGM3.under250 - $709d = UpdateGradeTGM3.Multiply - $70a0 = !4 - $70a7 = UpdateGradeTGM3.IncreaseInternalGrade - $70bf = TGM3UpdateDisplayedGrade - $70d4 = TGM3UpdateDisplayedGrade.update - $70f1 = TGM3UpdateDisplayedGrade.cool - $7110 = TGM3UpdateDisplayedGrade.nocool - $711c = TGM3UpdateDisplayedGrade.continue - $712d = CheckCOOL - $7141 = CheckCOOL.cool - $7162 = DecayGradeTGM3 - $7176 = DecayGradeTGM3.points - $7193 = !5 - $7197 = DecayGradeTGM3.GetOffset - $71a0 = DecayGradeTGM3.lpoints - $71a4 = TGM3COOLHandlerB - $71cb = TGM3COOLHandlerB.checkCOOL - $71d5 = TGM3COOLHandlerB.checkBaselineCOOL - $71dd = TGM3COOLHandlerB.cool - $71f7 = TGM3COOLHandlerB.nocool - $7203 = TGM3REGRETHandlerB - $721f = TGM3REGRETHandlerB.regret - $724c = TGM3StaffRollGradeUpdate - $7262 = TGM3StaffRollGradeUpdate.UpdateGrade - SECTION: $7272-$759b ($032a bytes) ["Grading Data"] - $7272 = sDMGTGrading - $7326 = sDMGTGaugeLUT - $7426 = sTGM1GradeScores - $7448 = sTGM3InternalGradeSystem - $74e8 = sTGM3GradeBoosts - $7507 = sTGM3HowManyInternalGradesToDecrease - $7526 = sTGM3HowManyInternalGradesToIncrease - $7545 = sTGM3ComboMultipliers - $7577 = sTGM3LevelMultiplier - $757a = sTGM3BaselineCOOL - $7583 = sTGM3REGRETConditions - $7597 = sTGM3StaffrollGrading - EMPTY: $759c-$7fff ($0a64 bytes) - TOTAL EMPTY: $0a64 bytes + $6bad = GradeInitB.grade9start + $6bb2 = UpdateGradeB + $6bb2 = GradeInitB.end + $6bc0 = UpdateGradeB.gradejumptable + $6bd5 = DecayGradeProcessB + $6be3 = DecayGradeProcessB.gradejumptable + $6bf8 = DecayGradeDelayB + $6c06 = DecayGradeDelayB.gradejumptable + $6c1b = PrepareScore + $6c2e = DrawGradeProgressDMGT + $6c3a = !0 + $6c49 = DrawGradeProgressTGM3 + $6c55 = !1 + $6c64 = UpdateGradeDMGT + $6c9d = UpdateGradeDMGT.checklineclears + $6cb6 = UpdateGradeDMGT.clearrate + $6cc7 = UpdateGradeDMGT.combomult + $6cd4 = UpdateGradeDMGT.combo13 + $6ce5 = UpdateGradeDMGT.combo8 + $6cf6 = UpdateGradeDMGT.combo1 + $6d05 = UpdateGradeDMGT.prelevel + $6d14 = UpdateGradeDMGT.single + $6d24 = UpdateGradeDMGT.double + $6d35 = UpdateGradeDMGT.adddonce + $6d39 = UpdateGradeDMGT.triple + $6d4a = UpdateGradeDMGT.addtonce + $6d4e = UpdateGradeDMGT.tetris + $6d52 = UpdateGradeDMGT.levelmult + $6d6a = UpdateGradeDMGT.mult4 + $6d70 = UpdateGradeDMGT.mult3 + $6d75 = UpdateGradeDMGT.mult2 + $6d79 = UpdateGradeDMGT.mult1 + $6d7a = UpdateGradeDMGT.processgrade + $6da3 = UpdateGradeDMGT.increasegrademaybe + $6dc7 = UpdateGradeDMGT.gotgm + $6dd5 = DecayGradeDMGT + $6df8 = DecayGradeDMGT.nodecay + $6dff = DecayGradeDMGT.decay + $6e0d = UpdateGradeTGM1 + $6e20 = UpdateGradeTGM1.trygradeup + $6e3b = UpdateGradeTGM1.increasegrade + $6e50 = UpdateGradeTGM1.skipjingle + $6e5c = UpdateGradeTGM1.check300 + $6e7a = UpdateGradeTGM1.success300 + $6e81 = UpdateGradeTGM1.fail300 + $6e88 = UpdateGradeTGM1.check500 + $6ea6 = UpdateGradeTGM1.success500 + $6ead = UpdateGradeTGM1.fail500 + $6eb4 = UpdateGradeTGM1.check999 + $6eeb = UpdateGradeTGM1.success999 + $6f03 = UpdateGradeTGM1.fail999 + $6f09 = UpdateGradeDEAT + $6f15 = UpdateGradeDEAT.notgm + $6f3b = UpdateGradeDEAT.notm + $6f5e = UpdateGradeDEAT.disqualify + $6f7c = UpdateGradeSHIR + $6fbe = UpdateGradeSHIR.s5torikan + $6fce = UpdateGradeSHIR.s10torikan + $6fdd = UpdateGradeSHIR.disqualify + $6fec = UpdateGradeSHIR.l1000 + $7002 = UpdateGradeSHIR.l500 + $7018 = UpdateGradeTGM3 + $7018 = UpdateGradeTGM3.GradePoints + $7027 = !2 + $702c = UpdateGradeTGM3.GetOffset + $703e = UpdateGradeTGM3.loadpoints + $704b = UpdateGradeTGM3.multipliers + $7058 = !3 + $7072 = !4 + $7077 = UpdateGradeTGM3.levelmultiplier + $7090 = UpdateGradeTGM3.Level750 + $70a4 = UpdateGradeTGM3.under750 + $70aa = UpdateGradeTGM3.Level500 + $70b8 = UpdateGradeTGM3.Level250 + $70c7 = UpdateGradeTGM3.under250 + $70cb = UpdateGradeTGM3.Multiply + $70ce = !5 + $70d5 = UpdateGradeTGM3.IncreaseInternalGrade + $70e4 = UpdateGradeTGM3.nocool + $70f8 = TGM3UpdateDisplayedGrade + $710d = TGM3UpdateDisplayedGrade.update + $7126 = TGM3UpdateDisplayedGrade.notaboves10 + $7134 = CheckCOOL + $7148 = CheckCOOL.cool + $715a = CheckCOOL.nots10 + $7164 = DecayGradeTGM3 + $7179 = DecayGradeTGM3.points + $7199 = !6 + $719d = DecayGradeTGM3.GetOffset + $71a6 = DecayGradeTGM3.lpoints + $71ac = TGM3COOLHandlerB + $71d3 = TGM3COOLHandlerB.checkCOOL + $71e3 = TGM3COOLHandlerB.nocarry + $71e8 = TGM3COOLHandlerB.checkBaselineCOOL + $71f0 = TGM3COOLHandlerB.cool + $720a = TGM3COOLHandlerB.nocool + $7216 = TGM3REGRETHandlerB + $7232 = TGM3REGRETHandlerB.regret + $725f = TGM3StaffRollGradeUpdate + $7275 = TGM3StaffRollGradeUpdate.UpdateGrade + SECTION: $7285-$76a8 ($0424 bytes) ["Grading Data"] + $7285 = sDMGTGrading + $7339 = sDMGTGaugeLUT + $7439 = sTGM3GaugeLUT + $7549 = sTGM1GradeScores + $756b = sTGM3InternalGradeSystem + $760b = sTGM3GradeBoosts + $762a = sTGM3HowManyInternalGradesToDecrease + $7649 = sTGM3ComboMultipliers + $767b = sTGM3LevelMultiplier + $767e = sTGM3BaselineCOOL + $7690 = sTGM3REGRETConditions + $76a4 = sTGM3StaffrollGrading + EMPTY: $76a9-$7fff ($0957 bytes) + TOTAL EMPTY: $0957 bytes ROMX bank #5: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_GAMEPLAY_BIG"] @@ -3383,7 +3388,7 @@ WRAM0 bank #0: $ceec = wTGM3Droughts $cef3 = wTGM3GeneratedIdx $cef4 = wTGM3WorstDroughtIdx - SECTION: $cef5-$cf0d ($0019 bytes) ["Grade Variables"] + SECTION: $cef5-$cf0e ($001a bytes) ["Grade Variables"] $cef5 = wDecayRate $cef6 = wInternalGradePoints $cef7 = wInternalGrade @@ -3404,80 +3409,81 @@ WRAM0 bank #0: $cf08 = wSubgrade $cf09 = wREGRETChecked $cf0a = wGradeBoosts - $cf0b = wTGM1level300RequirementMet - $cf0c = wTGM1level500RequirementMet - $cf0d = wTGM1level999RequirementMet - SECTION: $cf0e-$cf21 ($0014 bytes) ["Level Variables"] - $cf0e = wBoneActivationLevel - $cf10 = wInvisActivationLevel - $cf12 = wKillScreenActivationLevel - $cf14 = wKillScreenActivationLevelBCD - $cf16 = wLastLockLevel - $cf18 = wStaffRollDuration - $cf1a = wBigStaffRoll - $cf1b = wBonesActive - $cf1c = wInvisActive - $cf1d = wKillScreenActive - $cf1e = wLockLevel - $cf1f = wShouldGoStaffRoll - $cf20 = wNoMoreLocks - $cf21 = wSkippedSectionsBCD - SECTION: $cf22-$cf2b ($000a bytes) ["Progress Variables"] - $cf22 = wProgress0B1 - $cf23 = wProgress0B2 - $cf24 = wProgress1B1 - $cf25 = wProgress1B2 - $cf26 = wProgress2B1 - $cf27 = wProgress2B2 - $cf28 = wProgress3B1 - $cf29 = wProgress3B2 - $cf2a = wProgress4B1 - $cf2b = wProgress4B2 - SECTION: $cf2c-$cf35 ($000a bytes) ["Globals"] - $cf2c = wSwapABState - $cf2d = wRNGModeState - $cf2e = wRotModeState - $cf2f = wDropModeState - $cf30 = wSpeedCurveState - $cf31 = wAlways20GState - $cf32 = wBGMode - $cf33 = wInitialA - $cf34 = wInitialB - $cf35 = wInitialC - SECTION: $cf36-$cf3f ($000a bytes) ["Time Variables"] - $cf36 = wMinutes - $cf37 = wSeconds - $cf38 = wFrames - $cf39 = wSectionMinutes - $cf3a = wSectionSeconds - $cf3b = wSectionFrames - $cf3c = wCountDown - $cf3e = wCountDownZero - $cf3f = wSectionTimerReset - SECTION: $cf40-$cf46 ($0007 bytes) ["Title Variables"] - $cf40 = wSelected - $cf41 = wTitleMode - $cf42 = wProfileName - $cf45 = wDisplayingScoreMode - $cf46 = wScoreFlipTimer - SECTION: $cf47-$cf4a ($0004 bytes) ["SFX Variables"] - $cf47 = wCurrentBank - $cf48 = wBankSwitchTarget - $cf49 = wPlayHeadTarget - SECTION: $cf4b-$cf4e ($0004 bytes) ["Banking Variables"] - $cf4b = wBankBackup - SECTION: $cf4f-$cf52 ($0004 bytes) ["Gameplay Variables"] - $cf4f = wRollLine - $cf50 = wInStaffRoll - $cf51 = wBigModeTransfered - $cf52 = wGameOverIgnoreInput - SECTION: $cf53-$cf54 ($0002 bytes) ["GBC Variables"] - $cf53 = wOuterReps - $cf54 = wInnerReps - SECTION: $cf55-$cf55 ($0001 byte) ["SRAM Variables"] - $cf55 = wTarget - EMPTY: $cf56-$cfff ($00aa bytes) - TOTAL EMPTY: $00aa bytes + $cf0b = wCOOLBoosts + $cf0c = wTGM1level300RequirementMet + $cf0d = wTGM1level500RequirementMet + $cf0e = wTGM1level999RequirementMet + SECTION: $cf0f-$cf22 ($0014 bytes) ["Level Variables"] + $cf0f = wBoneActivationLevel + $cf11 = wInvisActivationLevel + $cf13 = wKillScreenActivationLevel + $cf15 = wKillScreenActivationLevelBCD + $cf17 = wLastLockLevel + $cf19 = wStaffRollDuration + $cf1b = wBigStaffRoll + $cf1c = wBonesActive + $cf1d = wInvisActive + $cf1e = wKillScreenActive + $cf1f = wLockLevel + $cf20 = wShouldGoStaffRoll + $cf21 = wNoMoreLocks + $cf22 = wSkippedSectionsBCD + SECTION: $cf23-$cf2c ($000a bytes) ["Progress Variables"] + $cf23 = wProgress0B1 + $cf24 = wProgress0B2 + $cf25 = wProgress1B1 + $cf26 = wProgress1B2 + $cf27 = wProgress2B1 + $cf28 = wProgress2B2 + $cf29 = wProgress3B1 + $cf2a = wProgress3B2 + $cf2b = wProgress4B1 + $cf2c = wProgress4B2 + SECTION: $cf2d-$cf36 ($000a bytes) ["Globals"] + $cf2d = wSwapABState + $cf2e = wRNGModeState + $cf2f = wRotModeState + $cf30 = wDropModeState + $cf31 = wSpeedCurveState + $cf32 = wAlways20GState + $cf33 = wBGMode + $cf34 = wInitialA + $cf35 = wInitialB + $cf36 = wInitialC + SECTION: $cf37-$cf40 ($000a bytes) ["Time Variables"] + $cf37 = wMinutes + $cf38 = wSeconds + $cf39 = wFrames + $cf3a = wSectionMinutes + $cf3b = wSectionSeconds + $cf3c = wSectionFrames + $cf3d = wCountDown + $cf3f = wCountDownZero + $cf40 = wSectionTimerReset + SECTION: $cf41-$cf47 ($0007 bytes) ["Title Variables"] + $cf41 = wSelected + $cf42 = wTitleMode + $cf43 = wProfileName + $cf46 = wDisplayingScoreMode + $cf47 = wScoreFlipTimer + SECTION: $cf48-$cf4b ($0004 bytes) ["SFX Variables"] + $cf48 = wCurrentBank + $cf49 = wBankSwitchTarget + $cf4a = wPlayHeadTarget + SECTION: $cf4c-$cf4f ($0004 bytes) ["Banking Variables"] + $cf4c = wBankBackup + SECTION: $cf50-$cf53 ($0004 bytes) ["Gameplay Variables"] + $cf50 = wRollLine + $cf51 = wInStaffRoll + $cf52 = wBigModeTransfered + $cf53 = wGameOverIgnoreInput + SECTION: $cf54-$cf55 ($0002 bytes) ["GBC Variables"] + $cf54 = wOuterReps + $cf55 = wInnerReps + SECTION: $cf56-$cf56 ($0001 byte) ["SRAM Variables"] + $cf56 = wTarget + EMPTY: $cf57-$cfff ($00a9 bytes) + TOTAL EMPTY: $00a9 bytes HRAM bank #0: SECTION: $ff80-$ff9c ($001d bytes) ["High Level Variables"] @@ -3569,8 +3575,8 @@ HRAM bank #0: TOTAL EMPTY: $0000 bytes SUMMARY: - ROM0: 14703 bytes used / 1681 free - ROMX: 110576 bytes used / 36880 free in 9 banks + ROM0: 14718 bytes used / 1666 free + ROMX: 110845 bytes used / 36611 free in 9 banks SRAM: 2951 bytes used / 5241 free in 1 bank - WRAM0: 3926 bytes used / 170 free + WRAM0: 3927 bytes used / 169 free HRAM: 127 bytes used / 0 free diff --git a/bin/PandorasBlocks.pocket b/bin/PandorasBlocks.pocket index 8d29f45..b525c86 100644 Binary files a/bin/PandorasBlocks.pocket and b/bin/PandorasBlocks.pocket differ diff --git a/bin/PandorasBlocks.sym b/bin/PandorasBlocks.sym index bcf172f..8e90a9a 100644 --- a/bin/PandorasBlocks.sym +++ b/bin/PandorasBlocks.sym @@ -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 diff --git a/src/grading.asm b/src/grading.asm index a0cdb8e..3ba3bcf 100644 --- a/src/grading.asm +++ b/src/grading.asm @@ -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 diff --git a/src/include/globals.asm b/src/include/globals.asm index a95dd9a..da6e1b6 100644 --- a/src/include/globals.asm +++ b/src/include/globals.asm @@ -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 diff --git a/src/level.asm b/src/level.asm index 480993a..c604bf1 100644 --- a/src/level.asm +++ b/src/level.asm @@ -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 diff --git a/src/sprites.asm b/src/sprites.asm index a4e0128..5cbed7c 100644 --- a/src/sprites.asm +++ b/src/sprites.asm @@ -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 diff --git a/src/time.asm b/src/time.asm index b9d9d90..5491f25 100644 --- a/src/time.asm +++ b/src/time.asm @@ -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