From 9d27e1d54214bedd047e6a68add6663d7b03d365 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Fri, 10 Nov 2023 12:07:57 +0100 Subject: [PATCH] Add high score framework. --- bin/DMGTRIS.GBC | Bin 131072 -> 131072 bytes bin/DMGTRIS.map | 1005 ++++++++++++++++++++-------------------- bin/DMGTRIS.pocket | Bin 131072 -> 131072 bytes bin/DMGTRIS.sym | 782 ++++++++++++++++--------------- src/hiscore.asm | 51 ++ src/sram.asm | 43 +- src/state_gameplay.asm | 4 + 7 files changed, 1002 insertions(+), 883 deletions(-) create mode 100644 src/hiscore.asm diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index bb5611c4a90394699a09e96d0eb3b8c993d47b57..777013029f00898cce0520b7f6369a0eafad1b84 100644 GIT binary patch delta 9629 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 F{|Dh2GCu$S delta 9397 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 diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index b439793..c9d03f2 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -2,7 +2,10 @@ ROM0 bank #0: SECTION: $0000-$0007 ($0008 bytes) ["Bank ID BANK_MAIN"] SECTION: $0008-$0024 ($001d bytes) ["Switch Bank"] $0008 = RSTSwitchBank - EMPTY: $0025-$0027 ($0003 bytes) + SECTION: $0025-$0026 ($0002 bytes) ["Hi Score Functions"] + $0025 = CheckAndAddHiscore + $0026 = GetTargetHSTable + EMPTY: $0027-$0027 ($0001 byte) SECTION: $0028-$0042 ($001b bytes) ["Restore Bank"] $0028 = RSTRestoreBank EMPTY: $0043-$0047 ($0005 bytes) @@ -188,7 +191,7 @@ ROM0 bank #0: $1d28 = GradeRendering.mo $1d2e = GradeRendering.mm $1d34 = GradeRendering.gmgrade - SECTION: $1d3f-$213f ($0401 bytes) ["SRAM Functions"] + SECTION: $1d3f-$2192 ($0454 bytes) ["SRAM Functions"] $1d3f = RestoreSRAM $1d6f = TrustedLoad $1dc1 = TrustedLoad.jumps @@ -203,330 +206,332 @@ ROM0 bank #0: $1e15 = TrustedLoad.notfound $1e1c = TrustedLoad.fallback $1e37 = InitializeSRAM - $1f57 = NextProfile - $1f60 = NextProfile.update - $1f63 = ChangeProfile - $1f63 = ChangeProfile.backup - $1f92 = ChangeProfile.first - $1fa0 = ChangeProfile.second - $1fae = ChangeProfile.third - $1fbc = ChangeProfile.fourth - $1fca = ChangeProfile.fifth - $1fd8 = ChangeProfile.sixth - $1fe6 = ChangeProfile.seventh - $1ff4 = ChangeProfile.eighth - $2002 = ChangeProfile.ninth - $2010 = ChangeProfile.tenth - $201e = ChangeProfile.restore - $204e = ChangeProfile.lfirst - $205d = ChangeProfile.lsecond - $206c = ChangeProfile.lthird - $207b = ChangeProfile.lfourth - $208a = ChangeProfile.lfifth - $2099 = ChangeProfile.lsixth - $20a8 = ChangeProfile.lseventh - $20b7 = ChangeProfile.leighth - $20c6 = ChangeProfile.lninth - $20d5 = ChangeProfile.ltenth - $20e4 = ResetProfile - SECTION: $2140-$251f ($03e0 bytes) ["Grading Functions"] - $2140 = GradeInit - $216b = GradeInit.grade9start - $2170 = GradeInit.end - $2172 = UpdateGrade - $2180 = UpdateGrade.gradejumptable - $2195 = DecayGradeProcess - $21a3 = DecayGradeProcess.gradejumptable - $21b8 = DecayGradeDelay - $21c6 = DecayGradeDelay.gradejumptable - $21db = PrepareScore - $21ee = DrawGradeProgressDMGT - $21fa = !0 - $2209 = UpdateGradeDMGT - $2242 = UpdateGradeDMGT.checklineclears - $225c = UpdateGradeDMGT.clearrate - $226d = UpdateGradeDMGT.combomult - $227a = UpdateGradeDMGT.combo10 - $228b = UpdateGradeDMGT.combo5 - $229c = UpdateGradeDMGT.combo1 - $22ab = UpdateGradeDMGT.prelevel - $22ba = UpdateGradeDMGT.single - $22ca = UpdateGradeDMGT.double - $22db = UpdateGradeDMGT.adddonce - $22df = UpdateGradeDMGT.triple - $22f0 = UpdateGradeDMGT.addtonce - $22f4 = UpdateGradeDMGT.tetris - $22f8 = UpdateGradeDMGT.levelmult - $2310 = UpdateGradeDMGT.mult5 - $2317 = UpdateGradeDMGT.mult4 - $231d = UpdateGradeDMGT.mult3 - $2322 = UpdateGradeDMGT.mult2 - $2326 = UpdateGradeDMGT.mult1 - $2327 = UpdateGradeDMGT.processgrade - $2350 = UpdateGradeDMGT.increasegrademaybe - $2374 = UpdateGradeDMGT.gotgm - $2382 = DecayGradeDMGT - $23a6 = DecayGradeDMGT.nodecay - $23ad = DecayGradeDMGT.decay - $23bb = UpdateGradeTGM1 - $23c5 = UpdateGradeTGM1.trygradeup - $23df = UpdateGradeTGM1.increasegrade - $23f4 = UpdateGradeTGM1.skipjingle - $2401 = UpdateGradeTGM1.maybegm - $241a = UpdateGradeDEAT - $2426 = UpdateGradeDEAT.notgm - $2442 = UpdateGradeDEAT.notm - $2465 = UpdateGradeDEAT.disqualify - $2483 = UpdateGradeSHIR - $24c6 = UpdateGradeSHIR.s5torikan - $24d6 = UpdateGradeSHIR.s10torikan - $24e5 = UpdateGradeSHIR.disqualify - $24f4 = UpdateGradeSHIR.l1000 - $250a = UpdateGradeSHIR.l500 - SECTION: $2520-$2894 ($0375 bytes) ["Level Functions"] - $2520 = LevelInit - $2585 = SpecialLevelInit - $2593 = SpecialLevelInit.jumps - $25a8 = SpecialLevelInit.dmgt - $25ad = SpecialLevelInit.tgm1 - $25b2 = SpecialLevelInit.tgm3 - $25b7 = SpecialLevelInit.deat - $25bc = SpecialLevelInit.shir - $25c1 = SpecialLevelInit.chil - $25c6 = SpecialLevelInit.myco - $25cb = SpecialLevelInit.loaddata - $2600 = LevelUp - $262a = LevelUp.doit - $2674 = LevelUp.checknlevel - $26a2 = !0 - $26ba = !1 - $26c3 = LevelUp.bellmaybe - $26dc = LevelUp.leveljinglemaybe - $26e9 = LevelUp.checkspeedup - $26fd = !2 - $270a = !3 - $271b = !4 - $2728 = DoSpeedUp - $2769 = CheckSpecialLevelConditions - $279a = CheckSpecialLevelConditions.override - $27b5 = CheckSpecialLevelConditions.nooverride - $27bb = CheckSpecialLevelConditions.speciallock - $27dc = CheckSpecialLevelConditions.bones - $27f1 = CheckSpecialLevelConditions.enterthebonezone - $27f6 = CheckSpecialLevelConditions.invis - $280b = CheckSpecialLevelConditions.vanishoxyaction - $2810 = CheckSpecialLevelConditions.killscreen - $2821 = CheckSpecialLevelConditions.rip - $2851 = CheckSpecialLevelConditions.staffroll - $285f = CheckSpecialLevelConditions.justkill - $2873 = TriggerKillScreen - SECTION: $2895-$2b4a ($02b6 bytes) ["Grading Data"] - $2895 = sTGM1GradeScores - $28b7 = sTGM3InternalGradeSystem - $2957 = sTGM3GradeBoosts - $2976 = sTGM3LevelMultiplier - $297a = sTGM3BaselineCOOL - $2983 = sTGM3REGRETConditions - $2997 = sDMGTGrading - $2a4b = sDMGTGaugeLUT - SECTION: $2b4b-$2de4 ($029a bytes) ["SFX Functions"] - $2b4b = SFXInit - $2b6d = SFXPopQueue - $2b82 = SFXPushQueue - $2b93 = SFXProcessQueue - $2ba4 = !0 - $2bbf = !1 - $2bc1 = SFXTriggerNoise - $2bce = !2 - $2bdb = !3 - $2be7 = SFXEnqueue - $2bfc = SFXEnqueue.findsfx - $2c11 = !4 - $2c21 = !5 - $2c31 = !6 - $2c41 = !7 - $2c51 = !8 - $2c61 = !9 - $2c71 = !10 - $2c81 = !11 - $2c91 = !12 - $2ca1 = !13 - $2cb1 = !14 - $2cc1 = !15 - $2cd1 = !16 - $2ce1 = !17 - $2cf1 = !18 - $2d00 = !19 - $2d0f = !20 - $2d1e = !21 - $2d2d = !22 - $2d3b = !23 - $2d49 = !24 - $2d56 = SFXKill - $2d83 = SFXPlayNoise - $2d8e = SFXPlayNoise.noisereg - $2d9b = !25 - $2da5 = SFXPlayNoise.savenoiseplayhead - $2dae = SFXPlay - $2db9 = !26 - $2dbc = SFXPlay.play - $2dc8 = SFXPlay.getRegister - $2dd2 = !27 - $2ddc = SFXPlay.savePlayhead - SECTION: $2de5-$3015 ($0231 bytes) ["RNG Functions"] - $2de5 = HarvestEntropy - $2deb = HarvestEntropy.loop - $2e0c = RNGInit - $2e42 = !0 - $2e72 = RNGInit.complexinit - $2e89 = !1 - $2ea4 = ShiftHistory - $2ec1 = GetNextHellPiece - $2ec6 = GetNextTGM1Piece - $2ec9 = !2 - $2ee1 = !3 - $2ee3 = GetNextTGM2Piece - $2ee6 = !4 - $2efe = !5 - $2f00 = GetNextNesPiece - $2f0e = GetNextTGM3Piece - $2f11 = !6 - $2f34 = !7 - $2f37 = !8 - $2f47 = !9 - $2f51 = !10 - $2f5f = !11 - $2f6e = !12 - $2f7a = !13 - $2f86 = !14 - $2f92 = !15 - $2f9e = !16 - $2faa = !17 - $2fb6 = !18 - $2fc5 = GetNextPiece - $2fd3 = GetNextPiece.nextpiecejumps - $2fe2 = Next35Piece - $2fe2 = !19 - $2fec = Next7Piece - $2fec = !20 - $2ff6 = NextByte - SECTION: $3016-$315f ($014a bytes) ["Progress Data"] - $3016 = sProgressData - SECTION: $3160-$323f ($00e0 bytes) ["Score Functions"] - $3160 = ScoreInit - $3188 = IncreaseScore - $31c0 = IncreaseScore.doConvert - $31c2 = !0 - $31d8 = IncreaseScore.carry - $31da = IncreaseScore.postConvert - $31e7 = !1 - $31ee = IncreaseScore.preAddDigit - $3216 = IncreaseScore.addDigit - $322c = IncreaseScore.nextDigit - SECTION: $3240-$330c ($00cd bytes) ["Input Functions"] - $3240 = InputInit - $3252 = GetInput - $3252 = GetInput.btns - $325f = GetInput.readA - $3263 = GetInput.setA - $326e = GetInput.clearA - $3271 = GetInput.readB - $3275 = GetInput.setB - $3280 = GetInput.clearB - $3283 = GetInput.readSelect - $3287 = GetInput.setSelect - $3292 = GetInput.clearSelect - $3295 = GetInput.readStart - $3299 = GetInput.setStart - $32a4 = GetInput.clearStart - $32a7 = GetInput.dpad - $32b4 = GetInput.readUp - $32b8 = GetInput.setUp - $32c3 = GetInput.clearUp - $32c6 = GetInput.readDown - $32ca = GetInput.setDown - $32d5 = GetInput.clearDown - $32d8 = GetInput.readLeft - $32dc = GetInput.setLeft - $32e7 = GetInput.clearLeft - $32ea = GetInput.readRight - $32ee = GetInput.setRight - $32f9 = GetInput.clearRight - $32fc = GetInput.priorities - $3307 = GetInput.zero - SECTION: $330d-$33d7 ($00cb bytes) ["Title Function Trampolines"] - $330d = SwitchToTitle - $3316 = TitleEventLoopHandler - $3320 = TitleVBlankHandler - $332a = PersistLevel - $3338 = DrawSpeedMain - $3388 = DrawSpeedSettings - SECTION: $33d8-$349d ($00c6 bytes) ["Time Functions"] - $33d8 = TimeInit - $33f8 = StartCountdown - $3406 = ResetGameTime - $3411 = CheckTorikan - $3428 = CheckTorikan.failure - $342a = CheckTorikan.success - $342d = HandleTimers - $3453 = HandleTimers.reduce - $3460 = HandleTimers.clock - $347a = HandleTimers.go - SECTION: $349e-$354f ($00b2 bytes) ["Progress Functions"] - $349e = SetProgress - $34a9 = SetProgress.loop - $34ad = SetProgress.correct - $34d4 = SetProgress.wvr_u1 - $34e0 = SetProgress.wvr_u2 - $34ee = SetProgress.wvr_u3 - $34fa = SetProgress.wvr_u4 - $3508 = SetProgress.wvr_u5 - $3514 = SetProgress.wvr_u6 - $3522 = SetProgress.wvr_u7 - $352e = SetProgress.wvr_u8 - $353c = SetProgress.wvr_u9 - $3548 = SetProgress.wvr_u10 - SECTION: $3550-$35e1 ($0092 bytes) ["Code Entry Point"] - $3550 = Main - $3579 = Main.notgbc - $357f = Main.wvr_u1 - $35a6 = EventLoop - $35bc = EventLoop.eventloopjumps - $35c5 = EventLoopPostHandler - $35c7 = EventLoopPostHandler.wvb_u2 - $35d9 = EventLoopPostHandler.vblankjumps - SECTION: $35e2-$3633 ($0052 bytes) ["Tile Functions"] - $35e2 = LoadTitleTiles - $3600 = LoadGameplayTiles - $3616 = LoadGameplayTiles.gbc - $3625 = LoadGameplayTiles.dmg - SECTION: $3634-$366f ($003c bytes) ["Time Data"] - $3634 = sFramesToCS - SECTION: $3670-$369d ($002e bytes) ["Memory Functions"] - $3670 = UnsafeMemCopy - $3679 = SafeMemCopy.wvr_u1 - $3679 = SafeMemCopy - $3688 = UnsafeMemSet - $3690 = SafeMemSet - $3690 = SafeMemSet.wvr_u2 - SECTION: $369e-$36c3 ($0026 bytes) ["Gameplay Function Trampolines"] - $369e = SwitchToGameplay - $36a7 = SwitchToGameplayBig - $36b0 = GamePlayEventLoopHandler - $36ba = GamePlayBigEventLoopHandler - SECTION: $36c4-$36e8 ($0025 bytes) ["Interrupt Initialization Functions"] - $36c4 = EnableScreenSquish - $36de = DisableScreenSquish - SECTION: $36e9-$370a ($0022 bytes) ["OAM Functions"] - $36e9 = CopyOAMHandler - $36f5 = ClearOAM - SECTION: $370b-$3719 ($000f bytes) ["Banking Functions"] - $370b = BankingInit - SECTION: $371a-$3723 ($000a bytes) ["OAM DMA Code"] - $371a = OAMDMA - $3724 = OAMDMAEnd - EMPTY: $3724-$3fff ($08dc bytes) - TOTAL EMPTY: $08e7 bytes + $1faa = NextProfile + $1fb3 = NextProfile.update + $1fb6 = ChangeProfile + $1fb6 = ChangeProfile.backup + $1fe5 = ChangeProfile.first + $1ff3 = ChangeProfile.second + $2001 = ChangeProfile.third + $200f = ChangeProfile.fourth + $201d = ChangeProfile.fifth + $202b = ChangeProfile.sixth + $2039 = ChangeProfile.seventh + $2047 = ChangeProfile.eighth + $2055 = ChangeProfile.ninth + $2063 = ChangeProfile.tenth + $2071 = ChangeProfile.restore + $20a1 = ChangeProfile.lfirst + $20b0 = ChangeProfile.lsecond + $20bf = ChangeProfile.lthird + $20ce = ChangeProfile.lfourth + $20dd = ChangeProfile.lfifth + $20ec = ChangeProfile.lsixth + $20fb = ChangeProfile.lseventh + $210a = ChangeProfile.leighth + $2119 = ChangeProfile.lninth + $2128 = ChangeProfile.ltenth + $2137 = ResetProfile + SECTION: $2193-$2572 ($03e0 bytes) ["Grading Functions"] + $2193 = GradeInit + $21be = GradeInit.grade9start + $21c3 = GradeInit.end + $21c5 = UpdateGrade + $21d3 = UpdateGrade.gradejumptable + $21e8 = DecayGradeProcess + $21f6 = DecayGradeProcess.gradejumptable + $220b = DecayGradeDelay + $2219 = DecayGradeDelay.gradejumptable + $222e = PrepareScore + $2241 = DrawGradeProgressDMGT + $224d = !0 + $225c = UpdateGradeDMGT + $2295 = UpdateGradeDMGT.checklineclears + $22af = UpdateGradeDMGT.clearrate + $22c0 = UpdateGradeDMGT.combomult + $22cd = UpdateGradeDMGT.combo10 + $22de = UpdateGradeDMGT.combo5 + $22ef = UpdateGradeDMGT.combo1 + $22fe = UpdateGradeDMGT.prelevel + $230d = UpdateGradeDMGT.single + $231d = UpdateGradeDMGT.double + $232e = UpdateGradeDMGT.adddonce + $2332 = UpdateGradeDMGT.triple + $2343 = UpdateGradeDMGT.addtonce + $2347 = UpdateGradeDMGT.tetris + $234b = UpdateGradeDMGT.levelmult + $2363 = UpdateGradeDMGT.mult5 + $236a = UpdateGradeDMGT.mult4 + $2370 = UpdateGradeDMGT.mult3 + $2375 = UpdateGradeDMGT.mult2 + $2379 = UpdateGradeDMGT.mult1 + $237a = UpdateGradeDMGT.processgrade + $23a3 = UpdateGradeDMGT.increasegrademaybe + $23c7 = UpdateGradeDMGT.gotgm + $23d5 = DecayGradeDMGT + $23f9 = DecayGradeDMGT.nodecay + $2400 = DecayGradeDMGT.decay + $240e = UpdateGradeTGM1 + $2418 = UpdateGradeTGM1.trygradeup + $2432 = UpdateGradeTGM1.increasegrade + $2447 = UpdateGradeTGM1.skipjingle + $2454 = UpdateGradeTGM1.maybegm + $246d = UpdateGradeDEAT + $2479 = UpdateGradeDEAT.notgm + $2495 = UpdateGradeDEAT.notm + $24b8 = UpdateGradeDEAT.disqualify + $24d6 = UpdateGradeSHIR + $2519 = UpdateGradeSHIR.s5torikan + $2529 = UpdateGradeSHIR.s10torikan + $2538 = UpdateGradeSHIR.disqualify + $2547 = UpdateGradeSHIR.l1000 + $255d = UpdateGradeSHIR.l500 + SECTION: $2573-$28e7 ($0375 bytes) ["Level Functions"] + $2573 = LevelInit + $25d8 = SpecialLevelInit + $25e6 = SpecialLevelInit.jumps + $25fb = SpecialLevelInit.dmgt + $2600 = SpecialLevelInit.tgm1 + $2605 = SpecialLevelInit.tgm3 + $260a = SpecialLevelInit.deat + $260f = SpecialLevelInit.shir + $2614 = SpecialLevelInit.chil + $2619 = SpecialLevelInit.myco + $261e = SpecialLevelInit.loaddata + $2653 = LevelUp + $267d = LevelUp.doit + $26c7 = LevelUp.checknlevel + $26f5 = !0 + $270d = !1 + $2716 = LevelUp.bellmaybe + $272f = LevelUp.leveljinglemaybe + $273c = LevelUp.checkspeedup + $2750 = !2 + $275d = !3 + $276e = !4 + $277b = DoSpeedUp + $27bc = CheckSpecialLevelConditions + $27ed = CheckSpecialLevelConditions.override + $2808 = CheckSpecialLevelConditions.nooverride + $280e = CheckSpecialLevelConditions.speciallock + $282f = CheckSpecialLevelConditions.bones + $2844 = CheckSpecialLevelConditions.enterthebonezone + $2849 = CheckSpecialLevelConditions.invis + $285e = CheckSpecialLevelConditions.vanishoxyaction + $2863 = CheckSpecialLevelConditions.killscreen + $2874 = CheckSpecialLevelConditions.rip + $28a4 = CheckSpecialLevelConditions.staffroll + $28b2 = CheckSpecialLevelConditions.justkill + $28c6 = TriggerKillScreen + SECTION: $28e8-$2b9d ($02b6 bytes) ["Grading Data"] + $28e8 = sTGM1GradeScores + $290a = sTGM3InternalGradeSystem + $29aa = sTGM3GradeBoosts + $29c9 = sTGM3LevelMultiplier + $29cd = sTGM3BaselineCOOL + $29d6 = sTGM3REGRETConditions + $29ea = sDMGTGrading + $2a9e = sDMGTGaugeLUT + SECTION: $2b9e-$2e37 ($029a bytes) ["SFX Functions"] + $2b9e = SFXInit + $2bc0 = SFXPopQueue + $2bd5 = SFXPushQueue + $2be6 = SFXProcessQueue + $2bf7 = !0 + $2c12 = !1 + $2c14 = SFXTriggerNoise + $2c21 = !2 + $2c2e = !3 + $2c3a = SFXEnqueue + $2c4f = SFXEnqueue.findsfx + $2c64 = !4 + $2c74 = !5 + $2c84 = !6 + $2c94 = !7 + $2ca4 = !8 + $2cb4 = !9 + $2cc4 = !10 + $2cd4 = !11 + $2ce4 = !12 + $2cf4 = !13 + $2d04 = !14 + $2d14 = !15 + $2d24 = !16 + $2d34 = !17 + $2d44 = !18 + $2d53 = !19 + $2d62 = !20 + $2d71 = !21 + $2d80 = !22 + $2d8e = !23 + $2d9c = !24 + $2da9 = SFXKill + $2dd6 = SFXPlayNoise + $2de1 = SFXPlayNoise.noisereg + $2dee = !25 + $2df8 = SFXPlayNoise.savenoiseplayhead + $2e01 = SFXPlay + $2e0c = !26 + $2e0f = SFXPlay.play + $2e1b = SFXPlay.getRegister + $2e25 = !27 + $2e2f = SFXPlay.savePlayhead + SECTION: $2e38-$3068 ($0231 bytes) ["RNG Functions"] + $2e38 = HarvestEntropy + $2e3e = HarvestEntropy.loop + $2e5f = RNGInit + $2e95 = !0 + $2ec5 = RNGInit.complexinit + $2edc = !1 + $2ef7 = ShiftHistory + $2f14 = GetNextHellPiece + $2f19 = GetNextTGM1Piece + $2f1c = !2 + $2f34 = !3 + $2f36 = GetNextTGM2Piece + $2f39 = !4 + $2f51 = !5 + $2f53 = GetNextNesPiece + $2f61 = GetNextTGM3Piece + $2f64 = !6 + $2f87 = !7 + $2f8a = !8 + $2f9a = !9 + $2fa4 = !10 + $2fb2 = !11 + $2fc1 = !12 + $2fcd = !13 + $2fd9 = !14 + $2fe5 = !15 + $2ff1 = !16 + $2ffd = !17 + $3009 = !18 + $3018 = GetNextPiece + $3026 = GetNextPiece.nextpiecejumps + $3035 = Next35Piece + $3035 = !19 + $303f = Next7Piece + $303f = !20 + $3049 = NextByte + SECTION: $3069-$31b2 ($014a bytes) ["Progress Data"] + $3069 = sProgressData + SECTION: $31b3-$3292 ($00e0 bytes) ["Score Functions"] + $31b3 = ScoreInit + $31db = IncreaseScore + $3213 = IncreaseScore.doConvert + $3215 = !0 + $322b = IncreaseScore.carry + $322d = IncreaseScore.postConvert + $323a = !1 + $3241 = IncreaseScore.preAddDigit + $3269 = IncreaseScore.addDigit + $327f = IncreaseScore.nextDigit + SECTION: $3293-$335f ($00cd bytes) ["Input Functions"] + $3293 = InputInit + $32a5 = GetInput + $32a5 = GetInput.btns + $32b2 = GetInput.readA + $32b6 = GetInput.setA + $32c1 = GetInput.clearA + $32c4 = GetInput.readB + $32c8 = GetInput.setB + $32d3 = GetInput.clearB + $32d6 = GetInput.readSelect + $32da = GetInput.setSelect + $32e5 = GetInput.clearSelect + $32e8 = GetInput.readStart + $32ec = GetInput.setStart + $32f7 = GetInput.clearStart + $32fa = GetInput.dpad + $3307 = GetInput.readUp + $330b = GetInput.setUp + $3316 = GetInput.clearUp + $3319 = GetInput.readDown + $331d = GetInput.setDown + $3328 = GetInput.clearDown + $332b = GetInput.readLeft + $332f = GetInput.setLeft + $333a = GetInput.clearLeft + $333d = GetInput.readRight + $3341 = GetInput.setRight + $334c = GetInput.clearRight + $334f = GetInput.priorities + $335a = GetInput.zero + SECTION: $3360-$342a ($00cb bytes) ["Title Function Trampolines"] + $3360 = SwitchToTitle + $3369 = TitleEventLoopHandler + $3373 = TitleVBlankHandler + $337d = PersistLevel + $338b = DrawSpeedMain + $33db = DrawSpeedSettings + SECTION: $342b-$34f0 ($00c6 bytes) ["Time Functions"] + $342b = TimeInit + $344b = StartCountdown + $3459 = ResetGameTime + $3464 = CheckTorikan + $347b = CheckTorikan.failure + $347d = CheckTorikan.success + $3480 = HandleTimers + $34a6 = HandleTimers.reduce + $34b3 = HandleTimers.clock + $34cd = HandleTimers.go + SECTION: $34f1-$35a2 ($00b2 bytes) ["Progress Functions"] + $34f1 = SetProgress + $34fc = SetProgress.loop + $3500 = SetProgress.correct + $3527 = SetProgress.wvr_u1 + $3533 = SetProgress.wvr_u2 + $3541 = SetProgress.wvr_u3 + $354d = SetProgress.wvr_u4 + $355b = SetProgress.wvr_u5 + $3567 = SetProgress.wvr_u6 + $3575 = SetProgress.wvr_u7 + $3581 = SetProgress.wvr_u8 + $358f = SetProgress.wvr_u9 + $359b = SetProgress.wvr_u10 + SECTION: $35a3-$3634 ($0092 bytes) ["Code Entry Point"] + $35a3 = Main + $35cc = Main.notgbc + $35d2 = Main.wvr_u1 + $35f9 = EventLoop + $360f = EventLoop.eventloopjumps + $3618 = EventLoopPostHandler + $361a = EventLoopPostHandler.wvb_u2 + $362c = EventLoopPostHandler.vblankjumps + SECTION: $3635-$36ac ($0078 bytes) ["Hi Score Data"] + $3635 = sHiscoreDefaultData + SECTION: $36ad-$36fe ($0052 bytes) ["Tile Functions"] + $36ad = LoadTitleTiles + $36cb = LoadGameplayTiles + $36e1 = LoadGameplayTiles.gbc + $36f0 = LoadGameplayTiles.dmg + SECTION: $36ff-$373a ($003c bytes) ["Time Data"] + $36ff = sFramesToCS + SECTION: $373b-$3768 ($002e bytes) ["Memory Functions"] + $373b = UnsafeMemCopy + $3744 = SafeMemCopy.wvr_u1 + $3744 = SafeMemCopy + $3753 = UnsafeMemSet + $375b = SafeMemSet + $375b = SafeMemSet.wvr_u2 + SECTION: $3769-$378e ($0026 bytes) ["Gameplay Function Trampolines"] + $3769 = SwitchToGameplay + $3772 = SwitchToGameplayBig + $377b = GamePlayEventLoopHandler + $3785 = GamePlayBigEventLoopHandler + SECTION: $378f-$37b3 ($0025 bytes) ["Interrupt Initialization Functions"] + $378f = EnableScreenSquish + $37a9 = DisableScreenSquish + SECTION: $37b4-$37d5 ($0022 bytes) ["OAM Functions"] + $37b4 = CopyOAMHandler + $37c0 = ClearOAM + SECTION: $37d6-$37e4 ($000f bytes) ["Banking Functions"] + $37d6 = BankingInit + SECTION: $37e5-$37ee ($000a bytes) ["OAM DMA Code"] + $37e5 = OAMDMA + $37ef = OAMDMAEnd + EMPTY: $37ef-$3fff ($0811 bytes) + TOTAL EMPTY: $081a bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -1192,7 +1197,7 @@ ROMX bank #5: $540a = ClearLines.r_u48 $540a = ClearLines.fixgarbo $540d = ClearLines.fixgarboloop - SECTION: $5417-$6309 ($0ef3 bytes) ["Gameplay Function Banked"] + SECTION: $5417-$630f ($0ef9 bytes) ["Gameplay Function Banked"] $5417 = SwitchToGameplayB $541d = SwitchToGameplayB.wvr_u1 $5426 = SwitchToGameplayB.loadtilemap @@ -1656,46 +1661,46 @@ ROMX bank #5: $6163 = GamePlayEventLoopHandlerB.notempty7_u213 $6166 = GamePlayEventLoopHandlerB.skip7_u213 $616a = GamePlayEventLoopHandlerB.gameOverMode - $6190 = GamePlayEventLoopHandlerB.noretry - $619a = GamePlayEventLoopHandlerB.pauseMode - $61af = GamePlayEventLoopHandlerB.noqr - $61c4 = GamePlayEventLoopHandlerB.nounpause - $620e = GamePlayEventLoopHandlerB.preRollMode - $623d = GamePlayEventLoopHandlerB.predone - $6253 = GamePlayEventLoopHandlerB.staysmall - $6269 = GamePlayEventLoopHandlerB.drawStaticInfo - $629a = DoHold - $629e = DoHold.checkIRSA - $62a5 = DoHold.ldb3 - $62b1 = DoHold.lda3 - $62bb = DoHold.cp3 - $62c9 = DoHold.checkIRSB - $62d0 = DoHold.lda4 - $62dc = DoHold.ldb4 - $62e6 = DoHold.cp4 - $62f4 = DoHold.noRotation - $62ff = DoHold.doHoldOperation - SECTION: $630a-$6b9f ($0896 bytes) ["Gameplay Static Data"] - $630a = sLeftDasSlam - $6310 = sRightDasSlam - $6316 = sLeady - $6320 = sGo - $632a = sPause - $6352 = sKill - $63f2 = sYouAreGM - $6456 = sFinalChallenge - $651e = sPieceXOffsets - $653a = sPieceYOffsets - $6556 = sPieceFastRotationStates - $65c6 = sPieceRotationStates - $6636 = sTGM3Bag - $6659 = sTGM3Droughts - $6660 = sGameplayTileMap - $6900 = sGameplayUngradedTileMap - $6900 = sGameplayTileMapEnd - $6ba0 = sGameplayUngradedTileMapEnd - EMPTY: $6ba0-$7fff ($1460 bytes) - TOTAL EMPTY: $1460 bytes + $6193 = GamePlayEventLoopHandlerB.noretry + $61a0 = GamePlayEventLoopHandlerB.pauseMode + $61b5 = GamePlayEventLoopHandlerB.noqr + $61ca = GamePlayEventLoopHandlerB.nounpause + $6214 = GamePlayEventLoopHandlerB.preRollMode + $6243 = GamePlayEventLoopHandlerB.predone + $6259 = GamePlayEventLoopHandlerB.staysmall + $626f = GamePlayEventLoopHandlerB.drawStaticInfo + $62a0 = DoHold + $62a4 = DoHold.checkIRSA + $62ab = DoHold.ldb3 + $62b7 = DoHold.lda3 + $62c1 = DoHold.cp3 + $62cf = DoHold.checkIRSB + $62d6 = DoHold.lda4 + $62e2 = DoHold.ldb4 + $62ec = DoHold.cp4 + $62fa = DoHold.noRotation + $6305 = DoHold.doHoldOperation + SECTION: $6310-$6ba5 ($0896 bytes) ["Gameplay Static Data"] + $6310 = sLeftDasSlam + $6316 = sRightDasSlam + $631c = sLeady + $6326 = sGo + $6330 = sPause + $6358 = sKill + $63f8 = sYouAreGM + $645c = sFinalChallenge + $6524 = sPieceXOffsets + $6540 = sPieceYOffsets + $655c = sPieceFastRotationStates + $65cc = sPieceRotationStates + $663c = sTGM3Bag + $665f = sTGM3Droughts + $6666 = sGameplayTileMap + $6906 = sGameplayUngradedTileMap + $6906 = sGameplayTileMapEnd + $6ba6 = sGameplayUngradedTileMapEnd + EMPTY: $6ba6-$7fff ($145a bytes) + TOTAL EMPTY: $145a bytes ROMX bank #6: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_GAMEPLAY_BIG"] @@ -1997,7 +2002,7 @@ ROMX bank #6: $52a6 = BigClearLines.fixgarbo $52a9 = BigClearLines.fixgarboloop $52c7 = BigWidenField - SECTION: $5617-$6582 ($0f6c bytes) ["Gameplay Function Big Banked"] + SECTION: $5617-$6588 ($0f72 bytes) ["Gameplay Function Big Banked"] $5617 = SwitchToGameplayBigB $561d = SwitchToGameplayBigB.wvr_u214 $5626 = SwitchToGameplayBigB.loadtilemap @@ -2481,46 +2486,46 @@ ROMX bank #6: $63e5 = GamePlayBigEventLoopHandlerB.notempty7_u436 $63e8 = GamePlayBigEventLoopHandlerB.skip7_u436 $63ec = GamePlayBigEventLoopHandlerB.gameOverMode - $6412 = GamePlayBigEventLoopHandlerB.noretry - $641c = GamePlayBigEventLoopHandlerB.pauseMode - $6431 = GamePlayBigEventLoopHandlerB.noqr - $6446 = GamePlayBigEventLoopHandlerB.nounpause - $6491 = GamePlayBigEventLoopHandlerB.preRollMode - $64c0 = GamePlayBigEventLoopHandlerB.predone - $64e2 = GamePlayBigEventLoopHandlerB.drawStaticInfo - $6513 = BigDoHold - $6517 = BigDoHold.checkIRSA - $651e = BigDoHold.ldb3 - $652a = BigDoHold.lda3 - $6534 = BigDoHold.cp3 - $6542 = BigDoHold.checkIRSB - $6549 = BigDoHold.lda4 - $6555 = BigDoHold.ldb4 - $655f = BigDoHold.cp4 - $656d = BigDoHold.noRotation - $6578 = BigDoHold.doHoldOperation - SECTION: $6583-$6dee ($086c bytes) ["Gameplay Big Static Data"] - $6583 = sBigLeftDasSlam - $6589 = sBigRightDasSlam - $658f = sBigLeady - $6599 = sBigGo - $65a3 = sBigPause - $65cb = sBigKill - $666b = sBigYouAreGM - $66cf = sBigFinalChallenge - $6797 = sBigPieceXOffsets - $67b3 = sBigPieceYOffsets - $67cf = sBigPieceFastRotationStates - $683f = sBigPieceRotationStates - $68af = sBigGameplayTileMap - $6b4f = sBigGameplayUngradedTileMap - $6b4f = sBigGameplayTileMapEnd - $6def = sBigGameplayUngradedTileMapEnd - EMPTY: $6def-$7fff ($1211 bytes) - TOTAL EMPTY: $1211 bytes + $6415 = GamePlayBigEventLoopHandlerB.noretry + $6422 = GamePlayBigEventLoopHandlerB.pauseMode + $6437 = GamePlayBigEventLoopHandlerB.noqr + $644c = GamePlayBigEventLoopHandlerB.nounpause + $6497 = GamePlayBigEventLoopHandlerB.preRollMode + $64c6 = GamePlayBigEventLoopHandlerB.predone + $64e8 = GamePlayBigEventLoopHandlerB.drawStaticInfo + $6519 = BigDoHold + $651d = BigDoHold.checkIRSA + $6524 = BigDoHold.ldb3 + $6530 = BigDoHold.lda3 + $653a = BigDoHold.cp3 + $6548 = BigDoHold.checkIRSB + $654f = BigDoHold.lda4 + $655b = BigDoHold.ldb4 + $6565 = BigDoHold.cp4 + $6573 = BigDoHold.noRotation + $657e = BigDoHold.doHoldOperation + SECTION: $6589-$6df4 ($086c bytes) ["Gameplay Big Static Data"] + $6589 = sBigLeftDasSlam + $658f = sBigRightDasSlam + $6595 = sBigLeady + $659f = sBigGo + $65a9 = sBigPause + $65d1 = sBigKill + $6671 = sBigYouAreGM + $66d5 = sBigFinalChallenge + $679d = sBigPieceXOffsets + $67b9 = sBigPieceYOffsets + $67d5 = sBigPieceFastRotationStates + $6845 = sBigPieceRotationStates + $68b5 = sBigGameplayTileMap + $6b55 = sBigGameplayUngradedTileMap + $6b55 = sBigGameplayTileMapEnd + $6df5 = sBigGameplayUngradedTileMapEnd + EMPTY: $6df5-$7fff ($120b bytes) + TOTAL EMPTY: $120b bytes SRAM bank #0: - SECTION: $a000-$a2c6 ($02c7 bytes) ["Persistent Globals"] + SECTION: $a000-$a60e ($060f bytes) ["Persistent Globals"] $a000 = rCheck $a006 = rLastProfile $a007 = rProfileName @@ -2633,8 +2638,15 @@ SRAM bank #0: $a28f = rAlways20GState9 $a290 = rSelectedStartLevel9 $a292 = rUnused9 - EMPTY: $a2c7-$bfff ($1d39 bytes) - TOTAL EMPTY: $1d39 bytes + $a2c7 = rScoreTableDMGT + $a33f = rScoreTableTGM1 + $a3b7 = rScoreTableTGM3 + $a42f = rScoreTableDEAT + $a4a7 = rScoreTableSHIR + $a51f = rScoreTableCHIL + $a597 = rScoreTableMYCO + EMPTY: $a60f-$bfff ($19f1 bytes) + TOTAL EMPTY: $19f1 bytes WRAM0 bank #0: SECTION: $c000-$c3ff ($0400 bytes) ["GBC Shadow Tilemap"] @@ -2695,89 +2707,92 @@ WRAM0 bank #0: $cd1e = wLeftSlamTimer $cd1f = wRightSlamTimer $cd20 = wMovementLastFrame - SECTION: $cd21-$cd61 ($0041 bytes) ["Stack"] - $cd21 = wStack - $cd62 = wStackEnd - SECTION: $cd62-$cd8d ($002c bytes) ["TGM3 RNG Variables"] - $cd62 = wTGM3Bag - $cd85 = wTGM3Droughts - $cd8c = wTGM3GeneratedIdx - $cd8d = wTGM3WorstDroughtIdx - SECTION: $cd8e-$cda0 ($0013 bytes) ["Level Variables"] - $cd8e = wBoneActivationLevel - $cd90 = wInvisActivationLevel - $cd92 = wKillScreenActivationLevel - $cd94 = wKillScreenActivationLevelBCD - $cd96 = wLastLockLevel - $cd98 = wStaffRollDuration - $cd9a = wBigStaffRoll - $cd9b = wBonesActive - $cd9c = wInvisActive - $cd9d = wKillScreenActive - $cd9e = wLockLevel - $cd9f = wShouldGoStaffRoll - $cda0 = wNoMoreLocks - SECTION: $cda1-$cdaf ($000f bytes) ["Grade Variables"] - $cda1 = wDecayRate - $cda2 = wGradePoints - $cda3 = wInternalGrade - $cda4 = wDisplayedGrade - $cda5 = wEffectTimer - $cda6 = wRankingDisqualified - $cda7 = wDecayCounter - $cda8 = wGradeGauge - $cda9 = wSMult - $cdaa = wDMult - $cdab = wTMult - $cdac = wSRate - $cdad = wDRate - $cdae = wTRate - $cdaf = wQRate - SECTION: $cdb0-$cdb9 ($000a bytes) ["Progress Variables"] - $cdb0 = wProgress0B1 - $cdb1 = wProgress0B2 - $cdb2 = wProgress1B1 - $cdb3 = wProgress1B2 - $cdb4 = wProgress2B1 - $cdb5 = wProgress2B2 - $cdb6 = wProgress3B1 - $cdb7 = wProgress3B2 - $cdb8 = wProgress4B1 - $cdb9 = wProgress4B2 - SECTION: $cdba-$cdc2 ($0009 bytes) ["Globals"] - $cdba = wSwapABState - $cdbb = wRNGModeState - $cdbc = wRotModeState - $cdbd = wDropModeState - $cdbe = wSpeedCurveState - $cdbf = wAlways20GState - $cdc0 = wInitialA - $cdc1 = wInitialB - $cdc2 = wInitialC - SECTION: $cdc3-$cdc8 ($0006 bytes) ["Time Variables"] - $cdc3 = wMinutes - $cdc4 = wSeconds - $cdc5 = wFrames - $cdc6 = wCountDown - $cdc8 = wCountDownZero - SECTION: $cdc9-$cdcd ($0005 bytes) ["Title Variables"] - $cdc9 = wSelected - $cdca = wTitleMode - $cdcb = wProfileName - SECTION: $cdce-$cdd1 ($0004 bytes) ["Banking Variables"] - $cdce = wBankBackup - SECTION: $cdd2-$cdd4 ($0003 bytes) ["GBC Variables"] - $cdd2 = wOuterReps - $cdd3 = wInnerReps - $cdd4 = wTitlePal - SECTION: $cdd5-$cdd7 ($0003 bytes) ["Gameplay Variables"] - $cdd5 = wRollLine - $cdd6 = wInStaffRoll - $cdd7 = wBigModeTransfered - SECTION: $cdd8-$cdd8 ($0001 byte) ["SRAM Variables"] - $cdd8 = wTarget - EMPTY: $cdd9-$cfff ($0227 bytes) - TOTAL EMPTY: $0227 bytes + SECTION: $cd21-$cda6 ($0086 bytes) ["Hi Score Variables"] + $cd21 = wTargetHSTable + $cd23 = wWorkingCopy + SECTION: $cda7-$cde7 ($0041 bytes) ["Stack"] + $cda7 = wStack + $cde8 = wStackEnd + SECTION: $cde8-$ce13 ($002c bytes) ["TGM3 RNG Variables"] + $cde8 = wTGM3Bag + $ce0b = wTGM3Droughts + $ce12 = wTGM3GeneratedIdx + $ce13 = wTGM3WorstDroughtIdx + SECTION: $ce14-$ce26 ($0013 bytes) ["Level Variables"] + $ce14 = wBoneActivationLevel + $ce16 = wInvisActivationLevel + $ce18 = wKillScreenActivationLevel + $ce1a = wKillScreenActivationLevelBCD + $ce1c = wLastLockLevel + $ce1e = wStaffRollDuration + $ce20 = wBigStaffRoll + $ce21 = wBonesActive + $ce22 = wInvisActive + $ce23 = wKillScreenActive + $ce24 = wLockLevel + $ce25 = wShouldGoStaffRoll + $ce26 = wNoMoreLocks + SECTION: $ce27-$ce35 ($000f bytes) ["Grade Variables"] + $ce27 = wDecayRate + $ce28 = wGradePoints + $ce29 = wInternalGrade + $ce2a = wDisplayedGrade + $ce2b = wEffectTimer + $ce2c = wRankingDisqualified + $ce2d = wDecayCounter + $ce2e = wGradeGauge + $ce2f = wSMult + $ce30 = wDMult + $ce31 = wTMult + $ce32 = wSRate + $ce33 = wDRate + $ce34 = wTRate + $ce35 = wQRate + SECTION: $ce36-$ce3f ($000a bytes) ["Progress Variables"] + $ce36 = wProgress0B1 + $ce37 = wProgress0B2 + $ce38 = wProgress1B1 + $ce39 = wProgress1B2 + $ce3a = wProgress2B1 + $ce3b = wProgress2B2 + $ce3c = wProgress3B1 + $ce3d = wProgress3B2 + $ce3e = wProgress4B1 + $ce3f = wProgress4B2 + SECTION: $ce40-$ce48 ($0009 bytes) ["Globals"] + $ce40 = wSwapABState + $ce41 = wRNGModeState + $ce42 = wRotModeState + $ce43 = wDropModeState + $ce44 = wSpeedCurveState + $ce45 = wAlways20GState + $ce46 = wInitialA + $ce47 = wInitialB + $ce48 = wInitialC + SECTION: $ce49-$ce4e ($0006 bytes) ["Time Variables"] + $ce49 = wMinutes + $ce4a = wSeconds + $ce4b = wFrames + $ce4c = wCountDown + $ce4e = wCountDownZero + SECTION: $ce4f-$ce53 ($0005 bytes) ["Title Variables"] + $ce4f = wSelected + $ce50 = wTitleMode + $ce51 = wProfileName + SECTION: $ce54-$ce57 ($0004 bytes) ["Banking Variables"] + $ce54 = wBankBackup + SECTION: $ce58-$ce5a ($0003 bytes) ["GBC Variables"] + $ce58 = wOuterReps + $ce59 = wInnerReps + $ce5a = wTitlePal + SECTION: $ce5b-$ce5d ($0003 bytes) ["Gameplay Variables"] + $ce5b = wRollLine + $ce5c = wInStaffRoll + $ce5d = wBigModeTransfered + SECTION: $ce5e-$ce5e ($0001 byte) ["SRAM Variables"] + $ce5e = wTarget + EMPTY: $ce5f-$cfff ($01a1 bytes) + TOTAL EMPTY: $01a1 bytes HRAM bank #0: SECTION: $ff80-$ff9a ($001b bytes) ["High Field Variables"] @@ -2868,8 +2883,8 @@ HRAM bank #0: TOTAL EMPTY: $0003 bytes SUMMARY: - ROM0: 14105 bytes used / 2279 free - ROMX: 63945 bytes used / 34359 free in 6 banks - SRAM: 711 bytes used / 7481 free in 1 bank - WRAM0: 3545 bytes used / 551 free + ROM0: 14310 bytes used / 2074 free + ROMX: 63957 bytes used / 34347 free in 6 banks + SRAM: 1551 bytes used / 6641 free in 1 bank + WRAM0: 3679 bytes used / 417 free HRAM: 124 bytes used / 3 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index b77053148f017a88822e3f915a74613c0ec4821b..4799b2de5ace6889df5ea2691f6d85e97f704391 100644 GIT binary patch delta 9629 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 diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index 2dd1142..eeadd0a 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -1,5 +1,7 @@ ; File generated by rgblink 00:0008 RSTSwitchBank +00:0025 CheckAndAddHiscore +00:0026 GetTargetHSTable 00:0028 RSTRestoreBank 00:0048 LCDCInterrupt 00:004d LCDCInterrupt_WaitUntilNotBusy @@ -165,251 +167,252 @@ 00:1e15 TrustedLoad.notfound 00:1e1c TrustedLoad.fallback 00:1e37 InitializeSRAM -00:1f57 NextProfile -00:1f60 NextProfile.update -00:1f63 ChangeProfile -00:1f63 ChangeProfile.backup -00:1f92 ChangeProfile.first -00:1fa0 ChangeProfile.second -00:1fae ChangeProfile.third -00:1fbc ChangeProfile.fourth -00:1fca ChangeProfile.fifth -00:1fd8 ChangeProfile.sixth -00:1fe6 ChangeProfile.seventh -00:1ff4 ChangeProfile.eighth -00:2002 ChangeProfile.ninth -00:2010 ChangeProfile.tenth -00:201e ChangeProfile.restore -00:204e ChangeProfile.lfirst -00:205d ChangeProfile.lsecond -00:206c ChangeProfile.lthird -00:207b ChangeProfile.lfourth -00:208a ChangeProfile.lfifth -00:2099 ChangeProfile.lsixth -00:20a8 ChangeProfile.lseventh -00:20b7 ChangeProfile.leighth -00:20c6 ChangeProfile.lninth -00:20d5 ChangeProfile.ltenth -00:20e4 ResetProfile -00:2140 GradeInit -00:216b GradeInit.grade9start -00:2170 GradeInit.end -00:2172 UpdateGrade -00:2180 UpdateGrade.gradejumptable -00:2195 DecayGradeProcess -00:21a3 DecayGradeProcess.gradejumptable -00:21b8 DecayGradeDelay -00:21c6 DecayGradeDelay.gradejumptable -00:21db PrepareScore -00:21ee DrawGradeProgressDMGT -00:2209 UpdateGradeDMGT -00:2242 UpdateGradeDMGT.checklineclears -00:225c UpdateGradeDMGT.clearrate -00:226d UpdateGradeDMGT.combomult -00:227a UpdateGradeDMGT.combo10 -00:228b UpdateGradeDMGT.combo5 -00:229c UpdateGradeDMGT.combo1 -00:22ab UpdateGradeDMGT.prelevel -00:22ba UpdateGradeDMGT.single -00:22ca UpdateGradeDMGT.double -00:22db UpdateGradeDMGT.adddonce -00:22df UpdateGradeDMGT.triple -00:22f0 UpdateGradeDMGT.addtonce -00:22f4 UpdateGradeDMGT.tetris -00:22f8 UpdateGradeDMGT.levelmult -00:2310 UpdateGradeDMGT.mult5 -00:2317 UpdateGradeDMGT.mult4 -00:231d UpdateGradeDMGT.mult3 -00:2322 UpdateGradeDMGT.mult2 -00:2326 UpdateGradeDMGT.mult1 -00:2327 UpdateGradeDMGT.processgrade -00:2350 UpdateGradeDMGT.increasegrademaybe -00:2374 UpdateGradeDMGT.gotgm -00:2382 DecayGradeDMGT -00:23a6 DecayGradeDMGT.nodecay -00:23ad DecayGradeDMGT.decay -00:23bb UpdateGradeTGM1 -00:23c5 UpdateGradeTGM1.trygradeup -00:23df UpdateGradeTGM1.increasegrade -00:23f4 UpdateGradeTGM1.skipjingle -00:2401 UpdateGradeTGM1.maybegm -00:241a UpdateGradeDEAT -00:2426 UpdateGradeDEAT.notgm -00:2442 UpdateGradeDEAT.notm -00:2465 UpdateGradeDEAT.disqualify -00:2483 UpdateGradeSHIR -00:24c6 UpdateGradeSHIR.s5torikan -00:24d6 UpdateGradeSHIR.s10torikan -00:24e5 UpdateGradeSHIR.disqualify -00:24f4 UpdateGradeSHIR.l1000 -00:250a UpdateGradeSHIR.l500 -00:2520 LevelInit -00:2585 SpecialLevelInit -00:2593 SpecialLevelInit.jumps -00:25a8 SpecialLevelInit.dmgt -00:25ad SpecialLevelInit.tgm1 -00:25b2 SpecialLevelInit.tgm3 -00:25b7 SpecialLevelInit.deat -00:25bc SpecialLevelInit.shir -00:25c1 SpecialLevelInit.chil -00:25c6 SpecialLevelInit.myco -00:25cb SpecialLevelInit.loaddata -00:2600 LevelUp -00:262a LevelUp.doit -00:2674 LevelUp.checknlevel -00:26c3 LevelUp.bellmaybe -00:26dc LevelUp.leveljinglemaybe -00:26e9 LevelUp.checkspeedup -00:2728 DoSpeedUp -00:2769 CheckSpecialLevelConditions -00:279a CheckSpecialLevelConditions.override -00:27b5 CheckSpecialLevelConditions.nooverride -00:27bb CheckSpecialLevelConditions.speciallock -00:27dc CheckSpecialLevelConditions.bones -00:27f1 CheckSpecialLevelConditions.enterthebonezone -00:27f6 CheckSpecialLevelConditions.invis -00:280b CheckSpecialLevelConditions.vanishoxyaction -00:2810 CheckSpecialLevelConditions.killscreen -00:2821 CheckSpecialLevelConditions.rip -00:2851 CheckSpecialLevelConditions.staffroll -00:285f CheckSpecialLevelConditions.justkill -00:2873 TriggerKillScreen -00:2895 sTGM1GradeScores -00:28b7 sTGM3InternalGradeSystem -00:2957 sTGM3GradeBoosts -00:2976 sTGM3LevelMultiplier -00:297a sTGM3BaselineCOOL -00:2983 sTGM3REGRETConditions -00:2997 sDMGTGrading -00:2a4b sDMGTGaugeLUT -00:2b4b SFXInit -00:2b6d SFXPopQueue -00:2b82 SFXPushQueue -00:2b93 SFXProcessQueue -00:2bc1 SFXTriggerNoise -00:2be7 SFXEnqueue -00:2bfc SFXEnqueue.findsfx -00:2d56 SFXKill -00:2d83 SFXPlayNoise -00:2d8e SFXPlayNoise.noisereg -00:2da5 SFXPlayNoise.savenoiseplayhead -00:2dae SFXPlay -00:2dbc SFXPlay.play -00:2dc8 SFXPlay.getRegister -00:2ddc SFXPlay.savePlayhead -00:2de5 HarvestEntropy -00:2deb HarvestEntropy.loop -00:2e0c RNGInit -00:2e72 RNGInit.complexinit -00:2ea4 ShiftHistory -00:2ec1 GetNextHellPiece -00:2ec6 GetNextTGM1Piece -00:2ee3 GetNextTGM2Piece -00:2f00 GetNextNesPiece -00:2f0e GetNextTGM3Piece -00:2fc5 GetNextPiece -00:2fd3 GetNextPiece.nextpiecejumps -00:2fe2 Next35Piece -00:2fec Next7Piece -00:2ff6 NextByte -00:3016 sProgressData -00:3160 ScoreInit -00:3188 IncreaseScore -00:31c0 IncreaseScore.doConvert -00:31d8 IncreaseScore.carry -00:31da IncreaseScore.postConvert -00:31ee IncreaseScore.preAddDigit -00:3216 IncreaseScore.addDigit -00:322c IncreaseScore.nextDigit -00:3240 InputInit -00:3252 GetInput -00:3252 GetInput.btns -00:325f GetInput.readA -00:3263 GetInput.setA -00:326e GetInput.clearA -00:3271 GetInput.readB -00:3275 GetInput.setB -00:3280 GetInput.clearB -00:3283 GetInput.readSelect -00:3287 GetInput.setSelect -00:3292 GetInput.clearSelect -00:3295 GetInput.readStart -00:3299 GetInput.setStart -00:32a4 GetInput.clearStart -00:32a7 GetInput.dpad -00:32b4 GetInput.readUp -00:32b8 GetInput.setUp -00:32c3 GetInput.clearUp -00:32c6 GetInput.readDown -00:32ca GetInput.setDown -00:32d5 GetInput.clearDown -00:32d8 GetInput.readLeft -00:32dc GetInput.setLeft -00:32e7 GetInput.clearLeft -00:32ea GetInput.readRight -00:32ee GetInput.setRight -00:32f9 GetInput.clearRight -00:32fc GetInput.priorities -00:3307 GetInput.zero -00:330d SwitchToTitle -00:3316 TitleEventLoopHandler -00:3320 TitleVBlankHandler -00:332a PersistLevel -00:3338 DrawSpeedMain -00:3388 DrawSpeedSettings -00:33d8 TimeInit -00:33f8 StartCountdown -00:3406 ResetGameTime -00:3411 CheckTorikan -00:3428 CheckTorikan.failure -00:342a CheckTorikan.success -00:342d HandleTimers -00:3453 HandleTimers.reduce -00:3460 HandleTimers.clock -00:347a HandleTimers.go -00:349e SetProgress -00:34a9 SetProgress.loop -00:34ad SetProgress.correct -00:34d4 SetProgress.wvr_u1 -00:34e0 SetProgress.wvr_u2 -00:34ee SetProgress.wvr_u3 -00:34fa SetProgress.wvr_u4 -00:3508 SetProgress.wvr_u5 -00:3514 SetProgress.wvr_u6 -00:3522 SetProgress.wvr_u7 -00:352e SetProgress.wvr_u8 -00:353c SetProgress.wvr_u9 -00:3548 SetProgress.wvr_u10 -00:3550 Main -00:3579 Main.notgbc -00:357f Main.wvr_u1 -00:35a6 EventLoop -00:35bc EventLoop.eventloopjumps -00:35c5 EventLoopPostHandler -00:35c7 EventLoopPostHandler.wvb_u2 -00:35d9 EventLoopPostHandler.vblankjumps -00:35e2 LoadTitleTiles -00:3600 LoadGameplayTiles -00:3616 LoadGameplayTiles.gbc -00:3625 LoadGameplayTiles.dmg -00:3634 sFramesToCS -00:3670 UnsafeMemCopy -00:3679 SafeMemCopy.wvr_u1 -00:3679 SafeMemCopy -00:3688 UnsafeMemSet -00:3690 SafeMemSet -00:3690 SafeMemSet.wvr_u2 -00:369e SwitchToGameplay -00:36a7 SwitchToGameplayBig -00:36b0 GamePlayEventLoopHandler -00:36ba GamePlayBigEventLoopHandler -00:36c4 EnableScreenSquish -00:36de DisableScreenSquish -00:36e9 CopyOAMHandler -00:36f5 ClearOAM -00:370b BankingInit -00:371a OAMDMA -00:3724 OAMDMAEnd +00:1faa NextProfile +00:1fb3 NextProfile.update +00:1fb6 ChangeProfile +00:1fb6 ChangeProfile.backup +00:1fe5 ChangeProfile.first +00:1ff3 ChangeProfile.second +00:2001 ChangeProfile.third +00:200f ChangeProfile.fourth +00:201d ChangeProfile.fifth +00:202b ChangeProfile.sixth +00:2039 ChangeProfile.seventh +00:2047 ChangeProfile.eighth +00:2055 ChangeProfile.ninth +00:2063 ChangeProfile.tenth +00:2071 ChangeProfile.restore +00:20a1 ChangeProfile.lfirst +00:20b0 ChangeProfile.lsecond +00:20bf ChangeProfile.lthird +00:20ce ChangeProfile.lfourth +00:20dd ChangeProfile.lfifth +00:20ec ChangeProfile.lsixth +00:20fb ChangeProfile.lseventh +00:210a ChangeProfile.leighth +00:2119 ChangeProfile.lninth +00:2128 ChangeProfile.ltenth +00:2137 ResetProfile +00:2193 GradeInit +00:21be GradeInit.grade9start +00:21c3 GradeInit.end +00:21c5 UpdateGrade +00:21d3 UpdateGrade.gradejumptable +00:21e8 DecayGradeProcess +00:21f6 DecayGradeProcess.gradejumptable +00:220b DecayGradeDelay +00:2219 DecayGradeDelay.gradejumptable +00:222e PrepareScore +00:2241 DrawGradeProgressDMGT +00:225c UpdateGradeDMGT +00:2295 UpdateGradeDMGT.checklineclears +00:22af UpdateGradeDMGT.clearrate +00:22c0 UpdateGradeDMGT.combomult +00:22cd UpdateGradeDMGT.combo10 +00:22de UpdateGradeDMGT.combo5 +00:22ef UpdateGradeDMGT.combo1 +00:22fe UpdateGradeDMGT.prelevel +00:230d UpdateGradeDMGT.single +00:231d UpdateGradeDMGT.double +00:232e UpdateGradeDMGT.adddonce +00:2332 UpdateGradeDMGT.triple +00:2343 UpdateGradeDMGT.addtonce +00:2347 UpdateGradeDMGT.tetris +00:234b UpdateGradeDMGT.levelmult +00:2363 UpdateGradeDMGT.mult5 +00:236a UpdateGradeDMGT.mult4 +00:2370 UpdateGradeDMGT.mult3 +00:2375 UpdateGradeDMGT.mult2 +00:2379 UpdateGradeDMGT.mult1 +00:237a UpdateGradeDMGT.processgrade +00:23a3 UpdateGradeDMGT.increasegrademaybe +00:23c7 UpdateGradeDMGT.gotgm +00:23d5 DecayGradeDMGT +00:23f9 DecayGradeDMGT.nodecay +00:2400 DecayGradeDMGT.decay +00:240e UpdateGradeTGM1 +00:2418 UpdateGradeTGM1.trygradeup +00:2432 UpdateGradeTGM1.increasegrade +00:2447 UpdateGradeTGM1.skipjingle +00:2454 UpdateGradeTGM1.maybegm +00:246d UpdateGradeDEAT +00:2479 UpdateGradeDEAT.notgm +00:2495 UpdateGradeDEAT.notm +00:24b8 UpdateGradeDEAT.disqualify +00:24d6 UpdateGradeSHIR +00:2519 UpdateGradeSHIR.s5torikan +00:2529 UpdateGradeSHIR.s10torikan +00:2538 UpdateGradeSHIR.disqualify +00:2547 UpdateGradeSHIR.l1000 +00:255d UpdateGradeSHIR.l500 +00:2573 LevelInit +00:25d8 SpecialLevelInit +00:25e6 SpecialLevelInit.jumps +00:25fb SpecialLevelInit.dmgt +00:2600 SpecialLevelInit.tgm1 +00:2605 SpecialLevelInit.tgm3 +00:260a SpecialLevelInit.deat +00:260f SpecialLevelInit.shir +00:2614 SpecialLevelInit.chil +00:2619 SpecialLevelInit.myco +00:261e SpecialLevelInit.loaddata +00:2653 LevelUp +00:267d LevelUp.doit +00:26c7 LevelUp.checknlevel +00:2716 LevelUp.bellmaybe +00:272f LevelUp.leveljinglemaybe +00:273c LevelUp.checkspeedup +00:277b DoSpeedUp +00:27bc CheckSpecialLevelConditions +00:27ed CheckSpecialLevelConditions.override +00:2808 CheckSpecialLevelConditions.nooverride +00:280e CheckSpecialLevelConditions.speciallock +00:282f CheckSpecialLevelConditions.bones +00:2844 CheckSpecialLevelConditions.enterthebonezone +00:2849 CheckSpecialLevelConditions.invis +00:285e CheckSpecialLevelConditions.vanishoxyaction +00:2863 CheckSpecialLevelConditions.killscreen +00:2874 CheckSpecialLevelConditions.rip +00:28a4 CheckSpecialLevelConditions.staffroll +00:28b2 CheckSpecialLevelConditions.justkill +00:28c6 TriggerKillScreen +00:28e8 sTGM1GradeScores +00:290a sTGM3InternalGradeSystem +00:29aa sTGM3GradeBoosts +00:29c9 sTGM3LevelMultiplier +00:29cd sTGM3BaselineCOOL +00:29d6 sTGM3REGRETConditions +00:29ea sDMGTGrading +00:2a9e sDMGTGaugeLUT +00:2b9e SFXInit +00:2bc0 SFXPopQueue +00:2bd5 SFXPushQueue +00:2be6 SFXProcessQueue +00:2c14 SFXTriggerNoise +00:2c3a SFXEnqueue +00:2c4f SFXEnqueue.findsfx +00:2da9 SFXKill +00:2dd6 SFXPlayNoise +00:2de1 SFXPlayNoise.noisereg +00:2df8 SFXPlayNoise.savenoiseplayhead +00:2e01 SFXPlay +00:2e0f SFXPlay.play +00:2e1b SFXPlay.getRegister +00:2e2f SFXPlay.savePlayhead +00:2e38 HarvestEntropy +00:2e3e HarvestEntropy.loop +00:2e5f RNGInit +00:2ec5 RNGInit.complexinit +00:2ef7 ShiftHistory +00:2f14 GetNextHellPiece +00:2f19 GetNextTGM1Piece +00:2f36 GetNextTGM2Piece +00:2f53 GetNextNesPiece +00:2f61 GetNextTGM3Piece +00:3018 GetNextPiece +00:3026 GetNextPiece.nextpiecejumps +00:3035 Next35Piece +00:303f Next7Piece +00:3049 NextByte +00:3069 sProgressData +00:31b3 ScoreInit +00:31db IncreaseScore +00:3213 IncreaseScore.doConvert +00:322b IncreaseScore.carry +00:322d IncreaseScore.postConvert +00:3241 IncreaseScore.preAddDigit +00:3269 IncreaseScore.addDigit +00:327f IncreaseScore.nextDigit +00:3293 InputInit +00:32a5 GetInput +00:32a5 GetInput.btns +00:32b2 GetInput.readA +00:32b6 GetInput.setA +00:32c1 GetInput.clearA +00:32c4 GetInput.readB +00:32c8 GetInput.setB +00:32d3 GetInput.clearB +00:32d6 GetInput.readSelect +00:32da GetInput.setSelect +00:32e5 GetInput.clearSelect +00:32e8 GetInput.readStart +00:32ec GetInput.setStart +00:32f7 GetInput.clearStart +00:32fa GetInput.dpad +00:3307 GetInput.readUp +00:330b GetInput.setUp +00:3316 GetInput.clearUp +00:3319 GetInput.readDown +00:331d GetInput.setDown +00:3328 GetInput.clearDown +00:332b GetInput.readLeft +00:332f GetInput.setLeft +00:333a GetInput.clearLeft +00:333d GetInput.readRight +00:3341 GetInput.setRight +00:334c GetInput.clearRight +00:334f GetInput.priorities +00:335a GetInput.zero +00:3360 SwitchToTitle +00:3369 TitleEventLoopHandler +00:3373 TitleVBlankHandler +00:337d PersistLevel +00:338b DrawSpeedMain +00:33db DrawSpeedSettings +00:342b TimeInit +00:344b StartCountdown +00:3459 ResetGameTime +00:3464 CheckTorikan +00:347b CheckTorikan.failure +00:347d CheckTorikan.success +00:3480 HandleTimers +00:34a6 HandleTimers.reduce +00:34b3 HandleTimers.clock +00:34cd HandleTimers.go +00:34f1 SetProgress +00:34fc SetProgress.loop +00:3500 SetProgress.correct +00:3527 SetProgress.wvr_u1 +00:3533 SetProgress.wvr_u2 +00:3541 SetProgress.wvr_u3 +00:354d SetProgress.wvr_u4 +00:355b SetProgress.wvr_u5 +00:3567 SetProgress.wvr_u6 +00:3575 SetProgress.wvr_u7 +00:3581 SetProgress.wvr_u8 +00:358f SetProgress.wvr_u9 +00:359b SetProgress.wvr_u10 +00:35a3 Main +00:35cc Main.notgbc +00:35d2 Main.wvr_u1 +00:35f9 EventLoop +00:360f EventLoop.eventloopjumps +00:3618 EventLoopPostHandler +00:361a EventLoopPostHandler.wvb_u2 +00:362c EventLoopPostHandler.vblankjumps +00:3635 sHiscoreDefaultData +00:36ad LoadTitleTiles +00:36cb LoadGameplayTiles +00:36e1 LoadGameplayTiles.gbc +00:36f0 LoadGameplayTiles.dmg +00:36ff sFramesToCS +00:373b UnsafeMemCopy +00:3744 SafeMemCopy.wvr_u1 +00:3744 SafeMemCopy +00:3753 UnsafeMemSet +00:375b SafeMemSet +00:375b SafeMemSet.wvr_u2 +00:3769 SwitchToGameplay +00:3772 SwitchToGameplayBig +00:377b GamePlayEventLoopHandler +00:3785 GamePlayBigEventLoopHandler +00:378f EnableScreenSquish +00:37a9 DisableScreenSquish +00:37b4 CopyOAMHandler +00:37c0 ClearOAM +00:37d6 BankingInit +00:37e5 OAMDMA +00:37ef OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4203 sDMGTSpeedCurveEnd 01:4205 sDMGTSpeedCurveSpecialData @@ -1404,43 +1407,43 @@ 05:6163 GamePlayEventLoopHandlerB.notempty7_u213 05:6166 GamePlayEventLoopHandlerB.skip7_u213 05:616a GamePlayEventLoopHandlerB.gameOverMode -05:6190 GamePlayEventLoopHandlerB.noretry -05:619a GamePlayEventLoopHandlerB.pauseMode -05:61af GamePlayEventLoopHandlerB.noqr -05:61c4 GamePlayEventLoopHandlerB.nounpause -05:620e GamePlayEventLoopHandlerB.preRollMode -05:623d GamePlayEventLoopHandlerB.predone -05:6253 GamePlayEventLoopHandlerB.staysmall -05:6269 GamePlayEventLoopHandlerB.drawStaticInfo -05:629a DoHold -05:629e DoHold.checkIRSA -05:62a5 DoHold.ldb3 -05:62b1 DoHold.lda3 -05:62bb DoHold.cp3 -05:62c9 DoHold.checkIRSB -05:62d0 DoHold.lda4 -05:62dc DoHold.ldb4 -05:62e6 DoHold.cp4 -05:62f4 DoHold.noRotation -05:62ff DoHold.doHoldOperation -05:630a sLeftDasSlam -05:6310 sRightDasSlam -05:6316 sLeady -05:6320 sGo -05:632a sPause -05:6352 sKill -05:63f2 sYouAreGM -05:6456 sFinalChallenge -05:651e sPieceXOffsets -05:653a sPieceYOffsets -05:6556 sPieceFastRotationStates -05:65c6 sPieceRotationStates -05:6636 sTGM3Bag -05:6659 sTGM3Droughts -05:6660 sGameplayTileMap -05:6900 sGameplayUngradedTileMap -05:6900 sGameplayTileMapEnd -05:6ba0 sGameplayUngradedTileMapEnd +05:6193 GamePlayEventLoopHandlerB.noretry +05:61a0 GamePlayEventLoopHandlerB.pauseMode +05:61b5 GamePlayEventLoopHandlerB.noqr +05:61ca GamePlayEventLoopHandlerB.nounpause +05:6214 GamePlayEventLoopHandlerB.preRollMode +05:6243 GamePlayEventLoopHandlerB.predone +05:6259 GamePlayEventLoopHandlerB.staysmall +05:626f GamePlayEventLoopHandlerB.drawStaticInfo +05:62a0 DoHold +05:62a4 DoHold.checkIRSA +05:62ab DoHold.ldb3 +05:62b7 DoHold.lda3 +05:62c1 DoHold.cp3 +05:62cf DoHold.checkIRSB +05:62d6 DoHold.lda4 +05:62e2 DoHold.ldb4 +05:62ec DoHold.cp4 +05:62fa DoHold.noRotation +05:6305 DoHold.doHoldOperation +05:6310 sLeftDasSlam +05:6316 sRightDasSlam +05:631c sLeady +05:6326 sGo +05:6330 sPause +05:6358 sKill +05:63f8 sYouAreGM +05:645c sFinalChallenge +05:6524 sPieceXOffsets +05:6540 sPieceYOffsets +05:655c sPieceFastRotationStates +05:65cc sPieceRotationStates +05:663c sTGM3Bag +05:665f sTGM3Droughts +05:6666 sGameplayTileMap +05:6906 sGameplayUngradedTileMap +05:6906 sGameplayTileMapEnd +05:6ba6 sGameplayUngradedTileMapEnd 06:4008 BigFieldInit 06:4049 BigFieldClear 06:40ef BigToBackupField @@ -2170,40 +2173,40 @@ 06:63e5 GamePlayBigEventLoopHandlerB.notempty7_u436 06:63e8 GamePlayBigEventLoopHandlerB.skip7_u436 06:63ec GamePlayBigEventLoopHandlerB.gameOverMode -06:6412 GamePlayBigEventLoopHandlerB.noretry -06:641c GamePlayBigEventLoopHandlerB.pauseMode -06:6431 GamePlayBigEventLoopHandlerB.noqr -06:6446 GamePlayBigEventLoopHandlerB.nounpause -06:6491 GamePlayBigEventLoopHandlerB.preRollMode -06:64c0 GamePlayBigEventLoopHandlerB.predone -06:64e2 GamePlayBigEventLoopHandlerB.drawStaticInfo -06:6513 BigDoHold -06:6517 BigDoHold.checkIRSA -06:651e BigDoHold.ldb3 -06:652a BigDoHold.lda3 -06:6534 BigDoHold.cp3 -06:6542 BigDoHold.checkIRSB -06:6549 BigDoHold.lda4 -06:6555 BigDoHold.ldb4 -06:655f BigDoHold.cp4 -06:656d BigDoHold.noRotation -06:6578 BigDoHold.doHoldOperation -06:6583 sBigLeftDasSlam -06:6589 sBigRightDasSlam -06:658f sBigLeady -06:6599 sBigGo -06:65a3 sBigPause -06:65cb sBigKill -06:666b sBigYouAreGM -06:66cf sBigFinalChallenge -06:6797 sBigPieceXOffsets -06:67b3 sBigPieceYOffsets -06:67cf sBigPieceFastRotationStates -06:683f sBigPieceRotationStates -06:68af sBigGameplayTileMap -06:6b4f sBigGameplayUngradedTileMap -06:6b4f sBigGameplayTileMapEnd -06:6def sBigGameplayUngradedTileMapEnd +06:6415 GamePlayBigEventLoopHandlerB.noretry +06:6422 GamePlayBigEventLoopHandlerB.pauseMode +06:6437 GamePlayBigEventLoopHandlerB.noqr +06:644c GamePlayBigEventLoopHandlerB.nounpause +06:6497 GamePlayBigEventLoopHandlerB.preRollMode +06:64c6 GamePlayBigEventLoopHandlerB.predone +06:64e8 GamePlayBigEventLoopHandlerB.drawStaticInfo +06:6519 BigDoHold +06:651d BigDoHold.checkIRSA +06:6524 BigDoHold.ldb3 +06:6530 BigDoHold.lda3 +06:653a BigDoHold.cp3 +06:6548 BigDoHold.checkIRSB +06:654f BigDoHold.lda4 +06:655b BigDoHold.ldb4 +06:6565 BigDoHold.cp4 +06:6573 BigDoHold.noRotation +06:657e BigDoHold.doHoldOperation +06:6589 sBigLeftDasSlam +06:658f sBigRightDasSlam +06:6595 sBigLeady +06:659f sBigGo +06:65a9 sBigPause +06:65d1 sBigKill +06:6671 sBigYouAreGM +06:66d5 sBigFinalChallenge +06:679d sBigPieceXOffsets +06:67b9 sBigPieceYOffsets +06:67d5 sBigPieceFastRotationStates +06:6845 sBigPieceRotationStates +06:68b5 sBigGameplayTileMap +06:6b55 sBigGameplayUngradedTileMap +06:6b55 sBigGameplayTileMapEnd +06:6df5 sBigGameplayUngradedTileMapEnd 00:a000 rCheck 00:a006 rLastProfile 00:a007 rProfileName @@ -2316,6 +2319,13 @@ 00:a28f rAlways20GState9 00:a290 rSelectedStartLevel9 00:a292 rUnused9 +00:a2c7 rScoreTableDMGT +00:a33f rScoreTableTGM1 +00:a3b7 rScoreTableTGM3 +00:a42f rScoreTableDEAT +00:a4a7 rScoreTableSHIR +00:a51f rScoreTableCHIL +00:a597 rScoreTableMYCO 00:c000 wShadowTilemap 00:c400 wShadowTileAttrs 00:c800 wShadowOAM @@ -2370,75 +2380,77 @@ 00:cd1e wLeftSlamTimer 00:cd1f wRightSlamTimer 00:cd20 wMovementLastFrame -00:cd21 wStack -00:cd62 wStackEnd -00:cd62 wTGM3Bag -00:cd85 wTGM3Droughts -00:cd8c wTGM3GeneratedIdx -00:cd8d wTGM3WorstDroughtIdx -00:cd8e wBoneActivationLevel -00:cd90 wInvisActivationLevel -00:cd92 wKillScreenActivationLevel -00:cd94 wKillScreenActivationLevelBCD -00:cd96 wLastLockLevel -00:cd98 wStaffRollDuration -00:cd9a wBigStaffRoll -00:cd9b wBonesActive -00:cd9c wInvisActive -00:cd9d wKillScreenActive -00:cd9e wLockLevel -00:cd9f wShouldGoStaffRoll -00:cda0 wNoMoreLocks -00:cda1 wDecayRate -00:cda2 wGradePoints -00:cda3 wInternalGrade -00:cda4 wDisplayedGrade -00:cda5 wEffectTimer -00:cda6 wRankingDisqualified -00:cda7 wDecayCounter -00:cda8 wGradeGauge -00:cda9 wSMult -00:cdaa wDMult -00:cdab wTMult -00:cdac wSRate -00:cdad wDRate -00:cdae wTRate -00:cdaf wQRate -00:cdb0 wProgress0B1 -00:cdb1 wProgress0B2 -00:cdb2 wProgress1B1 -00:cdb3 wProgress1B2 -00:cdb4 wProgress2B1 -00:cdb5 wProgress2B2 -00:cdb6 wProgress3B1 -00:cdb7 wProgress3B2 -00:cdb8 wProgress4B1 -00:cdb9 wProgress4B2 -00:cdba wSwapABState -00:cdbb wRNGModeState -00:cdbc wRotModeState -00:cdbd wDropModeState -00:cdbe wSpeedCurveState -00:cdbf wAlways20GState -00:cdc0 wInitialA -00:cdc1 wInitialB -00:cdc2 wInitialC -00:cdc3 wMinutes -00:cdc4 wSeconds -00:cdc5 wFrames -00:cdc6 wCountDown -00:cdc8 wCountDownZero -00:cdc9 wSelected -00:cdca wTitleMode -00:cdcb wProfileName -00:cdce wBankBackup -00:cdd2 wOuterReps -00:cdd3 wInnerReps -00:cdd4 wTitlePal -00:cdd5 wRollLine -00:cdd6 wInStaffRoll -00:cdd7 wBigModeTransfered -00:cdd8 wTarget +00:cd21 wTargetHSTable +00:cd23 wWorkingCopy +00:cda7 wStack +00:cde8 wStackEnd +00:cde8 wTGM3Bag +00:ce0b wTGM3Droughts +00:ce12 wTGM3GeneratedIdx +00:ce13 wTGM3WorstDroughtIdx +00:ce14 wBoneActivationLevel +00:ce16 wInvisActivationLevel +00:ce18 wKillScreenActivationLevel +00:ce1a wKillScreenActivationLevelBCD +00:ce1c wLastLockLevel +00:ce1e wStaffRollDuration +00:ce20 wBigStaffRoll +00:ce21 wBonesActive +00:ce22 wInvisActive +00:ce23 wKillScreenActive +00:ce24 wLockLevel +00:ce25 wShouldGoStaffRoll +00:ce26 wNoMoreLocks +00:ce27 wDecayRate +00:ce28 wGradePoints +00:ce29 wInternalGrade +00:ce2a wDisplayedGrade +00:ce2b wEffectTimer +00:ce2c wRankingDisqualified +00:ce2d wDecayCounter +00:ce2e wGradeGauge +00:ce2f wSMult +00:ce30 wDMult +00:ce31 wTMult +00:ce32 wSRate +00:ce33 wDRate +00:ce34 wTRate +00:ce35 wQRate +00:ce36 wProgress0B1 +00:ce37 wProgress0B2 +00:ce38 wProgress1B1 +00:ce39 wProgress1B2 +00:ce3a wProgress2B1 +00:ce3b wProgress2B2 +00:ce3c wProgress3B1 +00:ce3d wProgress3B2 +00:ce3e wProgress4B1 +00:ce3f wProgress4B2 +00:ce40 wSwapABState +00:ce41 wRNGModeState +00:ce42 wRotModeState +00:ce43 wDropModeState +00:ce44 wSpeedCurveState +00:ce45 wAlways20GState +00:ce46 wInitialA +00:ce47 wInitialB +00:ce48 wInitialC +00:ce49 wMinutes +00:ce4a wSeconds +00:ce4b wFrames +00:ce4c wCountDown +00:ce4e wCountDownZero +00:ce4f wSelected +00:ce50 wTitleMode +00:ce51 wProfileName +00:ce54 wBankBackup +00:ce58 wOuterReps +00:ce59 wInnerReps +00:ce5a wTitlePal +00:ce5b wRollLine +00:ce5c wInStaffRoll +00:ce5d wBigModeTransfered +00:ce5e wTarget 00:ff80 hPieceDataBase 00:ff82 hPieceDataBaseFast 00:ff84 hPieceDataOffset diff --git a/src/hiscore.asm b/src/hiscore.asm new file mode 100644 index 0000000..6f1c119 --- /dev/null +++ b/src/hiscore.asm @@ -0,0 +1,51 @@ +; DMGTRIS +; Copyright (C) 2023 - Randy Thiemann + +; This program is free software: you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation, either version 3 of the License, or +; (at your option) any later version. + +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. + +; You should have received a copy of the GNU General Public License +; along with this program. If not, see . + + +IF !DEF(HISCORE_ASM) +DEF HISCORE_ASM EQU 1 + + +INCLUDE "globals.asm" + + +SECTION "Hi Score Data", ROM0 +sHiscoreDefaultData:: + db 0, 0, 0, 0, 0, 0, 0, 0, "DMG", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "TRI", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "SDM", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "GTR", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "ISD", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "MGT", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "RIS", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "DMG", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "TRI", GRADE_NONE + db 0, 0, 0, 0, 0, 0, 0, 0, "SDM", GRADE_NONE + + +SECTION "Hi Score Variables", WRAM0 +wTargetHSTable:: ds 2 +wWorkingCopy:: ds (11*(8+3+1)) + + +SECTION "Hi Score Functions", ROM0 +CheckAndAddHiscore:: + ret + +GetTargetHSTable: + ret + +ENDC diff --git a/src/sram.asm b/src/sram.asm index a150aee..c8162b3 100644 --- a/src/sram.asm +++ b/src/sram.asm @@ -65,6 +65,14 @@ ENDU PROFILE 7 PROFILE 8 PROFILE 9 +rScoreTableDMGT:: ds (10 * (8+3+1)) +rScoreTableTGM1:: ds (10 * (8+3+1)) +rScoreTableTGM3:: ds (10 * (8+3+1)) +rScoreTableDEAT:: ds (10 * (8+3+1)) +rScoreTableSHIR:: ds (10 * (8+3+1)) +rScoreTableCHIL:: ds (10 * (8+3+1)) +rScoreTableMYCO:: ds (10 * (8+3+1)) + SECTION "SRAM Variables", WRAM0 wTarget:: ds 1 @@ -90,7 +98,7 @@ RestoreSRAM:: cp a, 0 jp nz, InitializeSRAM ld a, [rCheck+5] - cp a, 1 + cp a, 2 jp nz, InitializeSRAM ; SRAM is initialized and for this build, so we can load the data. @@ -220,7 +228,7 @@ InitializeSRAM: ld [rCheck+3], a ld a, 0 ld [rCheck+4], a - ld a, 1 + ld a, 2 ld [rCheck+5], a xor a, a @@ -331,7 +339,36 @@ InitializeSRAM: ld [rProfileName8+2], a ld a, "9" ld [rProfileName9+2], a - ret + + ; Set the default scores. + ld hl, rScoreTableDMGT + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + call UnsafeMemCopy + ld hl, rScoreTableTGM1 + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + call UnsafeMemCopy + ld hl, rScoreTableTGM3 + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + call UnsafeMemCopy + ld hl, rScoreTableDEAT + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + call UnsafeMemCopy + ld hl, rScoreTableSHIR + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + call UnsafeMemCopy + ld hl, rScoreTableCHIL + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + call UnsafeMemCopy + ld hl, rScoreTableMYCO + ld de, sHiscoreDefaultData + ld bc, (10 * (8+3+1)) + jp UnsafeMemCopy NextProfile:: ld a, [rLastProfile] diff --git a/src/state_gameplay.asm b/src/state_gameplay.asm index 62ed03f..6372b05 100644 --- a/src/state_gameplay.asm +++ b/src/state_gameplay.asm @@ -619,6 +619,7 @@ GamePlayEventLoopHandlerB:: ldh a, [hAState] cp a, 10 ; 10 frame hold jr nz, .noretry + call CheckAndAddHiscore call RNGInit call ScoreInit call LevelInit @@ -638,6 +639,7 @@ GamePlayEventLoopHandlerB:: ldh a, [hBState] cp a, 10 ; 10 frame hold jp nz, .drawStaticInfo + call CheckAndAddHiscore jp SwitchToTitle @@ -1395,6 +1397,7 @@ GamePlayBigEventLoopHandlerB: ldh a, [hAState] cp a, 10 ; 10 frame hold jr nz, .noretry + call CheckAndAddHiscore call RNGInit call ScoreInit call LevelInit @@ -1414,6 +1417,7 @@ GamePlayBigEventLoopHandlerB: ldh a, [hBState] cp a, 10 ; 10 frame hold jp nz, .drawStaticInfo + call CheckAndAddHiscore jp SwitchToTitle