diff --git a/README.md b/README.md index 2b3f54b..4f62083 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,7 @@ Thanks for playtesting and debugging go to: - AntonErgo - Lindtobias - \_Zaphod77\_ +- bbbbbr ## License diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index 7301e3f..284e7db 100644 Binary files a/bin/DMGTRIS.GBC and b/bin/DMGTRIS.GBC differ diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index 6f07c82..8cb951e 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -301,291 +301,299 @@ ROM0 bank #0: $2663 = UpdateGradeSHIR.disqualify $2672 = UpdateGradeSHIR.l1000 $2688 = UpdateGradeSHIR.l500 - SECTION: $269e-$2a16 ($0379 bytes) ["Level Functions"] + SECTION: $269e-$2a80 ($03e3 bytes) ["Level Functions"] $269e = LevelInit - $2703 = SpecialLevelInit - $2711 = SpecialLevelInit.jumps - $2726 = SpecialLevelInit.dmgt - $272b = SpecialLevelInit.tgm1 - $2730 = SpecialLevelInit.tgm3 - $2735 = SpecialLevelInit.deat - $273a = SpecialLevelInit.shir - $273f = SpecialLevelInit.chil - $2744 = SpecialLevelInit.myco - $2749 = SpecialLevelInit.loaddata - $277e = LevelUp - $27a8 = LevelUp.doit - $27ea = LevelUp.checknlevel - $281b = !0 - $2833 = !1 - $283c = LevelUp.bellmaybe - $2858 = LevelUp.leveljinglemaybe - $2868 = LevelUp.checkspeedup - $287c = !2 - $2889 = !3 - $289a = !4 - $28a7 = DoSpeedUp - $28e8 = CheckSpecialLevelConditions - $2919 = CheckSpecialLevelConditions.override - $2934 = CheckSpecialLevelConditions.nooverride - $293a = CheckSpecialLevelConditions.speciallock - $295e = CheckSpecialLevelConditions.bones - $2973 = CheckSpecialLevelConditions.enterthebonezone - $2978 = CheckSpecialLevelConditions.invis - $298d = CheckSpecialLevelConditions.vanishoxyaction - $2992 = CheckSpecialLevelConditions.killscreen - $29a3 = CheckSpecialLevelConditions.rip - $29d3 = CheckSpecialLevelConditions.staffroll - $29e1 = CheckSpecialLevelConditions.justkill - $29f5 = TriggerKillScreen - SECTION: $2a17-$2ccc ($02b6 bytes) ["Grading Data"] - $2a17 = sTGM1GradeScores - $2a39 = sTGM3InternalGradeSystem - $2ad9 = sTGM3GradeBoosts - $2af8 = sTGM3LevelMultiplier - $2afc = sTGM3BaselineCOOL - $2b05 = sTGM3REGRETConditions - $2b19 = sDMGTGrading - $2bcd = sDMGTGaugeLUT - SECTION: $2ccd-$2f6c ($02a0 bytes) ["SFX Functions"] - $2ccd = SFXInit - $2cef = SFXPopQueue - $2d04 = SFXPushQueue - $2d15 = SFXProcessQueue - $2d26 = !0 - $2d41 = !1 - $2d43 = SFXTriggerNoise - $2d50 = !2 - $2d5d = !3 - $2d69 = SFXEnqueue - $2d7e = SFXEnqueue.findsfx - $2d93 = !4 - $2da3 = !5 - $2db3 = !6 - $2dc3 = !7 - $2dd3 = !8 - $2de3 = !9 - $2df3 = !10 - $2e03 = !11 - $2e13 = !12 - $2e23 = !13 - $2e33 = !14 - $2e43 = !15 - $2e53 = !16 - $2e63 = !17 - $2e73 = !18 - $2e82 = !19 - $2e91 = !20 - $2ea0 = !21 - $2eaf = !22 - $2ebd = !23 - $2ecb = !24 - $2ed8 = SFXKill - $2f0b = SFXPlayNoise - $2f16 = SFXPlayNoise.noisereg - $2f23 = !25 - $2f2d = SFXPlayNoise.savenoiseplayhead - $2f36 = SFXPlay - $2f41 = !26 - $2f44 = SFXPlay.play - $2f50 = SFXPlay.getRegister - $2f5a = !27 - $2f64 = SFXPlay.savePlayhead - SECTION: $2f6d-$319d ($0231 bytes) ["RNG Functions"] - $2f6d = HarvestEntropy - $2f73 = HarvestEntropy.loop - $2f94 = RNGInit - $2fca = !0 - $2ffa = RNGInit.complexinit - $3011 = !1 - $302c = ShiftHistory - $3049 = GetNextHellPiece - $304e = GetNextTGM1Piece - $3051 = !2 - $3069 = !3 - $306b = GetNextTGM2Piece - $306e = !4 - $3086 = !5 - $3088 = GetNextNesPiece - $3096 = GetNextTGM3Piece - $3099 = !6 - $30bc = !7 - $30bf = !8 - $30cf = !9 - $30d9 = !10 - $30e7 = !11 - $30f6 = !12 - $3102 = !13 - $310e = !14 - $311a = !15 - $3126 = !16 - $3132 = !17 - $313e = !18 - $314d = GetNextPiece - $315b = GetNextPiece.nextpiecejumps - $316a = Next35Piece - $316a = !19 - $3174 = Next7Piece - $3174 = !20 - $317e = NextByte - SECTION: $319e-$3365 ($01c8 bytes) ["Hi Score Functions"] - $319e = CheckAndAddHiscore - $31a8 = CheckAndAddHiscore.checkloop - $31ad = CheckAndAddHiscore.checkgrade - $31b6 = CheckAndAddHiscore.oldgraded - $31c5 = CheckAndAddHiscore.oldungraded - $31cc = CheckAndAddHiscore.checklevel - $31f1 = CheckAndAddHiscore.checkscore - $3234 = CheckAndAddHiscore.notbetter - $3241 = CheckAndAddHiscore.better - $3243 = InsertHiScore - $3243 = InsertHiScore.copylower - $3254 = InsertHiScore.copyupper - $3261 = !0 - $3275 = InsertHiScore.findrow - $3282 = !1 - $3286 = InsertHiScore.insert - $32df = InsertHiScore.persist - $32f0 = GetHiScoreEntry - $3305 = !2 - $3309 = GetHiScoreEntry.store - $3312 = InitTargetHSTable - $331d = InitTargetHSTable.jumps - $3332 = InitTargetHSTable.dmgt - $3337 = InitTargetHSTable.tgm1 - $333c = InitTargetHSTable.tgm3 - $3341 = InitTargetHSTable.deat - $3346 = InitTargetHSTable.shir - $334b = InitTargetHSTable.chil - $3350 = InitTargetHSTable.myco - $3353 = InitTargetHSTable.store - SECTION: $3366-$34af ($014a bytes) ["Progress Data"] - $3366 = sProgressData - SECTION: $34b0-$35ef ($0140 bytes) ["Hi Score Data"] - $34b0 = sHiscoreDefaultData - SECTION: $35f0-$3723 ($0134 bytes) ["Input Functions"] - $35f0 = InputInit - $3602 = GetInput - $3602 = GetInput.btns - $360f = GetInput.readA - $3613 = GetInput.setA - $361e = GetInput.clearA - $3621 = GetInput.readB - $3625 = GetInput.setB - $3630 = GetInput.clearB - $3633 = GetInput.readSelect - $3637 = GetInput.setSelect - $3642 = GetInput.clearSelect - $3645 = GetInput.readStart - $3649 = GetInput.setStart - $3654 = GetInput.clearStart - $3657 = GetInput.dpad - $3664 = GetInput.readUp - $3668 = GetInput.setUp - $3673 = GetInput.clearUp - $3676 = GetInput.readDown - $367a = GetInput.setDown - $3685 = GetInput.clearDown - $3688 = GetInput.readLeft - $368c = GetInput.setLeft - $3697 = GetInput.clearLeft - $369a = GetInput.readRight - $369e = GetInput.setRight - $36a9 = GetInput.clearRight - $36ac = GetInput.priorities - $36b9 = GetInput.jumps - $36c8 = GetInput.dlru - $36db = GetInput.ulrd - $36ee = GetInput.lrud - $36fb = GetInput.udlr - $3708 = GetInput.zeroud - $370e = GetInput.zerolr - $3714 = GetInput.zerolrd - $371c = GetInput.zerolru - SECTION: $3724-$3803 ($00e0 bytes) ["Score Functions"] - $3724 = ScoreInit - $374c = IncreaseScore - $3784 = IncreaseScore.doConvert - $3786 = !0 - $379c = IncreaseScore.carry - $379e = IncreaseScore.postConvert - $37ab = !1 - $37b2 = IncreaseScore.preAddDigit - $37da = IncreaseScore.addDigit - $37f0 = IncreaseScore.nextDigit - SECTION: $3804-$38ce ($00cb bytes) ["Title Function Trampolines"] - $3804 = SwitchToTitle - $380d = TitleEventLoopHandler - $3817 = TitleVBlankHandler - $3821 = PersistLevel - $382f = DrawSpeedMain - $387f = DrawSpeedSettings - SECTION: $38cf-$3994 ($00c6 bytes) ["Time Functions"] - $38cf = TimeInit - $38ef = StartCountdown - $38fd = ResetGameTime - $3908 = CheckTorikan - $391f = CheckTorikan.failure - $3921 = CheckTorikan.success - $3924 = HandleTimers - $394a = HandleTimers.reduce - $3957 = HandleTimers.clock - $3971 = HandleTimers.go - SECTION: $3995-$3a46 ($00b2 bytes) ["Progress Functions"] - $3995 = SetProgress - $39a0 = SetProgress.loop - $39a4 = SetProgress.correct - $39cb = SetProgress.wvr_u1 - $39d7 = SetProgress.wvr_u2 - $39e5 = SetProgress.wvr_u3 - $39f1 = SetProgress.wvr_u4 - $39ff = SetProgress.wvr_u5 - $3a0b = SetProgress.wvr_u6 - $3a19 = SetProgress.wvr_u7 - $3a25 = SetProgress.wvr_u8 - $3a33 = SetProgress.wvr_u9 - $3a3f = SetProgress.wvr_u10 - SECTION: $3a47-$3ad8 ($0092 bytes) ["Code Entry Point"] - $3a47 = Main - $3a70 = Main.notgbc - $3a76 = Main.wvr_u1 - $3a9d = EventLoop - $3ab3 = EventLoop.eventloopjumps - $3abc = EventLoopPostHandler - $3abe = EventLoopPostHandler.wvb_u2 - $3ad0 = EventLoopPostHandler.vblankjumps - SECTION: $3ad9-$3b2a ($0052 bytes) ["Tile Functions"] - $3ad9 = LoadTitleTiles - $3af7 = LoadGameplayTiles - $3b0d = LoadGameplayTiles.gbc - $3b1c = LoadGameplayTiles.dmg - SECTION: $3b2b-$3b66 ($003c bytes) ["Time Data"] - $3b2b = sFramesToCS - SECTION: $3b67-$3b94 ($002e bytes) ["Memory Functions"] - $3b67 = UnsafeMemCopy - $3b70 = SafeMemCopy.wvr_u1 - $3b70 = SafeMemCopy - $3b7f = UnsafeMemSet - $3b87 = SafeMemSet - $3b87 = SafeMemSet.wvr_u2 - SECTION: $3b95-$3bba ($0026 bytes) ["Gameplay Function Trampolines"] - $3b95 = SwitchToGameplay - $3b9e = SwitchToGameplayBig - $3ba7 = GamePlayEventLoopHandler - $3bb1 = GamePlayBigEventLoopHandler - SECTION: $3bbb-$3bdf ($0025 bytes) ["Interrupt Initialization Functions"] - $3bbb = EnableScreenSquish - $3bd5 = DisableScreenSquish - SECTION: $3be0-$3c01 ($0022 bytes) ["OAM Functions"] - $3be0 = CopyOAMHandler - $3bec = ClearOAM - SECTION: $3c02-$3c10 ($000f bytes) ["Banking Functions"] - $3c02 = BankingInit - SECTION: $3c11-$3c1a ($000a bytes) ["OAM DMA Code"] - $3c11 = OAMDMA - $3c1b = OAMDMAEnd - EMPTY: $3c1b-$3fff ($03e5 bytes) - TOTAL EMPTY: $03f0 bytes + $270e = SpecialLevelInit + $271c = SpecialLevelInit.jumps + $2731 = SpecialLevelInit.dmgt + $2736 = SpecialLevelInit.tgm1 + $273b = SpecialLevelInit.tgm3 + $2740 = SpecialLevelInit.deat + $2745 = SpecialLevelInit.shir + $274a = SpecialLevelInit.chil + $274f = SpecialLevelInit.myco + $2754 = SpecialLevelInit.loaddata + $2789 = LevelUp + $27b3 = LevelUp.doit + $27f2 = LevelUp.checknlevel + $2823 = !0 + $283b = !1 + $2844 = LevelUp.bellmaybe + $2860 = LevelUp.leveljinglemaybe + $2870 = AdjustSpeedCurve + $2876 = AdjustSpeedCurve.docheck + $2876 = AdjustSpeedCurve.checkthousands + $2885 = AdjustSpeedCurve.checkhundreds + $2892 = AdjustSpeedCurve.checktens + $28a1 = AdjustSpeedCurve.checkones + $28ac = AdjustSpeedCurveForced + $28e9 = AdjustSpeedCurveForced.continue + $28ee = BuildTrueCLevel + $2917 = BuildTrueCLevel.thousands + $292c = CheckSpecialLevelConditions + $295d = CheckSpecialLevelConditions.override + $2978 = CheckSpecialLevelConditions.nooverride + $297e = CheckSpecialLevelConditions.speciallock + $29a2 = CheckSpecialLevelConditions.bones + $29b7 = CheckSpecialLevelConditions.enterthebonezone + $29bc = CheckSpecialLevelConditions.invis + $29d1 = CheckSpecialLevelConditions.vanishoxyaction + $29d6 = CheckSpecialLevelConditions.killscreen + $29e7 = CheckSpecialLevelConditions.rip + $2a17 = CheckSpecialLevelConditions.staffroll + $2a25 = CheckSpecialLevelConditions.justkill + $2a39 = TriggerKillScreen + $2a5b = GetSection + $2a6c = GetSectionBCD + $2a75 = SkipSection + SECTION: $2a81-$2d36 ($02b6 bytes) ["Grading Data"] + $2a81 = sTGM1GradeScores + $2aa3 = sTGM3InternalGradeSystem + $2b43 = sTGM3GradeBoosts + $2b62 = sTGM3LevelMultiplier + $2b66 = sTGM3BaselineCOOL + $2b6f = sTGM3REGRETConditions + $2b83 = sDMGTGrading + $2c37 = sDMGTGaugeLUT + SECTION: $2d37-$2fd6 ($02a0 bytes) ["SFX Functions"] + $2d37 = SFXInit + $2d59 = SFXPopQueue + $2d6e = SFXPushQueue + $2d7f = SFXProcessQueue + $2d90 = !0 + $2dab = !1 + $2dad = SFXTriggerNoise + $2dba = !2 + $2dc7 = !3 + $2dd3 = SFXEnqueue + $2de8 = SFXEnqueue.findsfx + $2dfd = !4 + $2e0d = !5 + $2e1d = !6 + $2e2d = !7 + $2e3d = !8 + $2e4d = !9 + $2e5d = !10 + $2e6d = !11 + $2e7d = !12 + $2e8d = !13 + $2e9d = !14 + $2ead = !15 + $2ebd = !16 + $2ecd = !17 + $2edd = !18 + $2eec = !19 + $2efb = !20 + $2f0a = !21 + $2f19 = !22 + $2f27 = !23 + $2f35 = !24 + $2f42 = SFXKill + $2f75 = SFXPlayNoise + $2f80 = SFXPlayNoise.noisereg + $2f8d = !25 + $2f97 = SFXPlayNoise.savenoiseplayhead + $2fa0 = SFXPlay + $2fab = !26 + $2fae = SFXPlay.play + $2fba = SFXPlay.getRegister + $2fc4 = !27 + $2fce = SFXPlay.savePlayhead + SECTION: $2fd7-$3207 ($0231 bytes) ["RNG Functions"] + $2fd7 = HarvestEntropy + $2fdd = HarvestEntropy.loop + $2ffe = RNGInit + $3034 = !0 + $3064 = RNGInit.complexinit + $307b = !1 + $3096 = ShiftHistory + $30b3 = GetNextHellPiece + $30b8 = GetNextTGM1Piece + $30bb = !2 + $30d3 = !3 + $30d5 = GetNextTGM2Piece + $30d8 = !4 + $30f0 = !5 + $30f2 = GetNextNesPiece + $3100 = GetNextTGM3Piece + $3103 = !6 + $3126 = !7 + $3129 = !8 + $3139 = !9 + $3143 = !10 + $3151 = !11 + $3160 = !12 + $316c = !13 + $3178 = !14 + $3184 = !15 + $3190 = !16 + $319c = !17 + $31a8 = !18 + $31b7 = GetNextPiece + $31c5 = GetNextPiece.nextpiecejumps + $31d4 = Next35Piece + $31d4 = !19 + $31de = Next7Piece + $31de = !20 + $31e8 = NextByte + SECTION: $3208-$33cf ($01c8 bytes) ["Hi Score Functions"] + $3208 = CheckAndAddHiscore + $3212 = CheckAndAddHiscore.checkloop + $3217 = CheckAndAddHiscore.checkgrade + $3220 = CheckAndAddHiscore.oldgraded + $322f = CheckAndAddHiscore.oldungraded + $3236 = CheckAndAddHiscore.checklevel + $325b = CheckAndAddHiscore.checkscore + $329e = CheckAndAddHiscore.notbetter + $32ab = CheckAndAddHiscore.better + $32ad = InsertHiScore + $32ad = InsertHiScore.copylower + $32be = InsertHiScore.copyupper + $32cb = !0 + $32df = InsertHiScore.findrow + $32ec = !1 + $32f0 = InsertHiScore.insert + $3349 = InsertHiScore.persist + $335a = GetHiScoreEntry + $336f = !2 + $3373 = GetHiScoreEntry.store + $337c = InitTargetHSTable + $3387 = InitTargetHSTable.jumps + $339c = InitTargetHSTable.dmgt + $33a1 = InitTargetHSTable.tgm1 + $33a6 = InitTargetHSTable.tgm3 + $33ab = InitTargetHSTable.deat + $33b0 = InitTargetHSTable.shir + $33b5 = InitTargetHSTable.chil + $33ba = InitTargetHSTable.myco + $33bd = InitTargetHSTable.store + SECTION: $33d0-$3519 ($014a bytes) ["Progress Data"] + $33d0 = sProgressData + SECTION: $351a-$3659 ($0140 bytes) ["Hi Score Data"] + $351a = sHiscoreDefaultData + SECTION: $365a-$378d ($0134 bytes) ["Input Functions"] + $365a = InputInit + $366c = GetInput + $366c = GetInput.btns + $3679 = GetInput.readA + $367d = GetInput.setA + $3688 = GetInput.clearA + $368b = GetInput.readB + $368f = GetInput.setB + $369a = GetInput.clearB + $369d = GetInput.readSelect + $36a1 = GetInput.setSelect + $36ac = GetInput.clearSelect + $36af = GetInput.readStart + $36b3 = GetInput.setStart + $36be = GetInput.clearStart + $36c1 = GetInput.dpad + $36ce = GetInput.readUp + $36d2 = GetInput.setUp + $36dd = GetInput.clearUp + $36e0 = GetInput.readDown + $36e4 = GetInput.setDown + $36ef = GetInput.clearDown + $36f2 = GetInput.readLeft + $36f6 = GetInput.setLeft + $3701 = GetInput.clearLeft + $3704 = GetInput.readRight + $3708 = GetInput.setRight + $3713 = GetInput.clearRight + $3716 = GetInput.priorities + $3723 = GetInput.jumps + $3732 = GetInput.dlru + $3745 = GetInput.ulrd + $3758 = GetInput.lrud + $3765 = GetInput.udlr + $3772 = GetInput.zeroud + $3778 = GetInput.zerolr + $377e = GetInput.zerolrd + $3786 = GetInput.zerolru + SECTION: $378e-$386d ($00e0 bytes) ["Score Functions"] + $378e = ScoreInit + $37b6 = IncreaseScore + $37ee = IncreaseScore.doConvert + $37f0 = !0 + $3806 = IncreaseScore.carry + $3808 = IncreaseScore.postConvert + $3815 = !1 + $381c = IncreaseScore.preAddDigit + $3844 = IncreaseScore.addDigit + $385a = IncreaseScore.nextDigit + SECTION: $386e-$3938 ($00cb bytes) ["Title Function Trampolines"] + $386e = SwitchToTitle + $3877 = TitleEventLoopHandler + $3881 = TitleVBlankHandler + $388b = PersistLevel + $3899 = DrawSpeedMain + $38e9 = DrawSpeedSettings + SECTION: $3939-$39fe ($00c6 bytes) ["Time Functions"] + $3939 = TimeInit + $3959 = StartCountdown + $3967 = ResetGameTime + $3972 = CheckTorikan + $3989 = CheckTorikan.failure + $398b = CheckTorikan.success + $398e = HandleTimers + $39b4 = HandleTimers.reduce + $39c1 = HandleTimers.clock + $39db = HandleTimers.go + SECTION: $39ff-$3ab0 ($00b2 bytes) ["Progress Functions"] + $39ff = SetProgress + $3a0a = SetProgress.loop + $3a0e = SetProgress.correct + $3a35 = SetProgress.wvr_u1 + $3a41 = SetProgress.wvr_u2 + $3a4f = SetProgress.wvr_u3 + $3a5b = SetProgress.wvr_u4 + $3a69 = SetProgress.wvr_u5 + $3a75 = SetProgress.wvr_u6 + $3a83 = SetProgress.wvr_u7 + $3a8f = SetProgress.wvr_u8 + $3a9d = SetProgress.wvr_u9 + $3aa9 = SetProgress.wvr_u10 + SECTION: $3ab1-$3b48 ($0098 bytes) ["Code Entry Point"] + $3ab1 = Main + $3ada = Main.notgbc + $3ae0 = Main.wvr_u1 + $3b0d = EventLoop + $3b23 = EventLoop.eventloopjumps + $3b2c = EventLoopPostHandler + $3b2e = EventLoopPostHandler.wvb_u2 + $3b40 = EventLoopPostHandler.vblankjumps + SECTION: $3b49-$3b9a ($0052 bytes) ["Tile Functions"] + $3b49 = LoadTitleTiles + $3b67 = LoadGameplayTiles + $3b7d = LoadGameplayTiles.gbc + $3b8c = LoadGameplayTiles.dmg + SECTION: $3b9b-$3bd6 ($003c bytes) ["Time Data"] + $3b9b = sFramesToCS + SECTION: $3bd7-$3c04 ($002e bytes) ["Memory Functions"] + $3bd7 = UnsafeMemCopy + $3be0 = SafeMemCopy.wvr_u1 + $3be0 = SafeMemCopy + $3bef = UnsafeMemSet + $3bf7 = SafeMemSet + $3bf7 = SafeMemSet.wvr_u2 + SECTION: $3c05-$3c2a ($0026 bytes) ["Gameplay Function Trampolines"] + $3c05 = SwitchToGameplay + $3c0e = SwitchToGameplayBig + $3c17 = GamePlayEventLoopHandler + $3c21 = GamePlayBigEventLoopHandler + SECTION: $3c2b-$3c4f ($0025 bytes) ["Interrupt Initialization Functions"] + $3c2b = EnableScreenSquish + $3c45 = DisableScreenSquish + SECTION: $3c50-$3c71 ($0022 bytes) ["OAM Functions"] + $3c50 = CopyOAMHandler + $3c5c = ClearOAM + SECTION: $3c72-$3c80 ($000f bytes) ["Banking Functions"] + $3c72 = BankingInit + SECTION: $3c81-$3c8a ($000a bytes) ["OAM DMA Code"] + $3c81 = OAMDMA + $3c8b = OAMDMAEnd + EMPTY: $3c8b-$3fff ($0375 bytes) + TOTAL EMPTY: $0380 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -3118,7 +3126,7 @@ WRAM0 bank #0: $ceeb = wTGM3Droughts $cef2 = wTGM3GeneratedIdx $cef3 = wTGM3WorstDroughtIdx - SECTION: $cef4-$cf06 ($0013 bytes) ["Level Variables"] + SECTION: $cef4-$cf07 ($0014 bytes) ["Level Variables"] $cef4 = wBoneActivationLevel $cef6 = wInvisActivationLevel $cef8 = wKillScreenActivationLevel @@ -3132,166 +3140,167 @@ WRAM0 bank #0: $cf04 = wLockLevel $cf05 = wShouldGoStaffRoll $cf06 = wNoMoreLocks - SECTION: $cf07-$cf18 ($0012 bytes) ["Grade Variables"] - $cf07 = wDecayRate - $cf08 = wGradePoints - $cf09 = wInternalGrade - $cf0a = wDisplayedGrade - $cf0b = wEffectTimer - $cf0c = wRankingDisqualified - $cf0d = wDecayCounter - $cf0e = wGradeGauge - $cf0f = wSMult - $cf10 = wDMult - $cf11 = wTMult - $cf12 = wSRate - $cf13 = wDRate - $cf14 = wTRate - $cf15 = wQRate - $cf16 = wTGM1level300RequirementMet - $cf17 = wTGM1level500RequirementMet - $cf18 = wTGM1level999RequirementMet - SECTION: $cf19-$cf22 ($000a bytes) ["Progress Variables"] - $cf19 = wProgress0B1 - $cf1a = wProgress0B2 - $cf1b = wProgress1B1 - $cf1c = wProgress1B2 - $cf1d = wProgress2B1 - $cf1e = wProgress2B2 - $cf1f = wProgress3B1 - $cf20 = wProgress3B2 - $cf21 = wProgress4B1 - $cf22 = wProgress4B2 - SECTION: $cf23-$cf2b ($0009 bytes) ["Globals"] - $cf23 = wSwapABState - $cf24 = wRNGModeState - $cf25 = wRotModeState - $cf26 = wDropModeState - $cf27 = wSpeedCurveState - $cf28 = wAlways20GState - $cf29 = wInitialA - $cf2a = wInitialB - $cf2b = wInitialC - SECTION: $cf2c-$cf32 ($0007 bytes) ["Title Variables"] - $cf2c = wSelected - $cf2d = wTitleMode - $cf2e = wProfileName - $cf31 = wDisplayingScoreMode - $cf32 = wScoreFlipTimer - SECTION: $cf33-$cf38 ($0006 bytes) ["Time Variables"] - $cf33 = wMinutes - $cf34 = wSeconds - $cf35 = wFrames - $cf36 = wCountDown - $cf38 = wCountDownZero - SECTION: $cf39-$cf3c ($0004 bytes) ["Banking Variables"] - $cf39 = wBankBackup - SECTION: $cf3d-$cf40 ($0004 bytes) ["Gameplay Variables"] - $cf3d = wRollLine - $cf3e = wInStaffRoll - $cf3f = wBigModeTransfered - $cf40 = wGameOverIgnoreInput - SECTION: $cf41-$cf43 ($0003 bytes) ["GBC Variables"] - $cf41 = wOuterReps - $cf42 = wInnerReps - $cf43 = wTitlePal - SECTION: $cf44-$cf44 ($0001 byte) ["SRAM Variables"] - $cf44 = wTarget - EMPTY: $cf45-$cfff ($00bb bytes) - TOTAL EMPTY: $00bb bytes + $cf07 = wSkippedSectionsBCD + SECTION: $cf08-$cf19 ($0012 bytes) ["Grade Variables"] + $cf08 = wDecayRate + $cf09 = wGradePoints + $cf0a = wInternalGrade + $cf0b = wDisplayedGrade + $cf0c = wEffectTimer + $cf0d = wRankingDisqualified + $cf0e = wDecayCounter + $cf0f = wGradeGauge + $cf10 = wSMult + $cf11 = wDMult + $cf12 = wTMult + $cf13 = wSRate + $cf14 = wDRate + $cf15 = wTRate + $cf16 = wQRate + $cf17 = wTGM1level300RequirementMet + $cf18 = wTGM1level500RequirementMet + $cf19 = wTGM1level999RequirementMet + SECTION: $cf1a-$cf23 ($000a bytes) ["Progress Variables"] + $cf1a = wProgress0B1 + $cf1b = wProgress0B2 + $cf1c = wProgress1B1 + $cf1d = wProgress1B2 + $cf1e = wProgress2B1 + $cf1f = wProgress2B2 + $cf20 = wProgress3B1 + $cf21 = wProgress3B2 + $cf22 = wProgress4B1 + $cf23 = wProgress4B2 + SECTION: $cf24-$cf2c ($0009 bytes) ["Globals"] + $cf24 = wSwapABState + $cf25 = wRNGModeState + $cf26 = wRotModeState + $cf27 = wDropModeState + $cf28 = wSpeedCurveState + $cf29 = wAlways20GState + $cf2a = wInitialA + $cf2b = wInitialB + $cf2c = wInitialC + SECTION: $cf2d-$cf33 ($0007 bytes) ["Title Variables"] + $cf2d = wSelected + $cf2e = wTitleMode + $cf2f = wProfileName + $cf32 = wDisplayingScoreMode + $cf33 = wScoreFlipTimer + SECTION: $cf34-$cf39 ($0006 bytes) ["Time Variables"] + $cf34 = wMinutes + $cf35 = wSeconds + $cf36 = wFrames + $cf37 = wCountDown + $cf39 = wCountDownZero + SECTION: $cf3a-$cf3d ($0004 bytes) ["Banking Variables"] + $cf3a = wBankBackup + SECTION: $cf3e-$cf41 ($0004 bytes) ["Gameplay Variables"] + $cf3e = wRollLine + $cf3f = wInStaffRoll + $cf40 = wBigModeTransfered + $cf41 = wGameOverIgnoreInput + SECTION: $cf42-$cf44 ($0003 bytes) ["GBC Variables"] + $cf42 = wOuterReps + $cf43 = wInnerReps + $cf44 = wTitlePal + SECTION: $cf45-$cf45 ($0001 byte) ["SRAM Variables"] + $cf45 = wTarget + EMPTY: $cf46-$cfff ($00ba bytes) + TOTAL EMPTY: $00ba bytes HRAM bank #0: - SECTION: $ff80-$ff9a ($001b bytes) ["High Field Variables"] - $ff80 = hPieceDataBase - $ff82 = hPieceDataBaseFast - $ff84 = hPieceDataOffset - $ff85 = hCurrentLockDelayRemaining - $ff86 = hGrounded - $ff87 = hWantedTile - $ff88 = hWantedG - $ff89 = hActualG - $ff8a = hGravityCtr - $ff8b = hWantX - $ff8c = hYPosAtStartOfFrame - $ff8d = hWantRotation - $ff8e = hRemainingDelay - $ff8f = hClearedLines - $ff93 = hLineClearCt - $ff94 = hComboCt - $ff95 = hLockDelayForce - $ff96 = hDownFrames - $ff97 = hAwardDownBonus - $ff98 = hStalePiece - $ff99 = hBravo - $ff9a = hShouldLockIfGrounded - SECTION: $ff9b-$ffb5 ($001b bytes) ["High Level Variables"] - $ff9b = hCurrentDAS - $ff9c = hCurrentARE - $ff9d = hCurrentLineARE - $ff9e = hCurrentLockDelay - $ff9f = hCurrentLineClearDelay - $ffa0 = hCurrentIntegerGravity - $ffa1 = hCurrentFractionalGravity - $ffa2 = hNextSpeedUp - $ffa4 = hSpeedCurvePtr - $ffa6 = hStartSpeed - $ffa8 = hRequiresLineClear - $ffa9 = hLevel - $ffab = hCLevel - $ffaf = hNLevel - $ffb5 = hPrevHundreds - SECTION: $ffb6-$ffc7 ($0012 bytes) ["Score Variables"] - $ffb6 = hScore - $ffbe = hScoreIncrement - $ffc0 = hScoreIncrementBCD - SECTION: $ffc8-$ffd2 ($000b bytes) ["High RNG Variables"] - $ffc8 = hRNGSeed - $ffcc = hPieceHistory - $ffd0 = hNextPiece - $ffd1 = hUpcomingPiece1 - $ffd2 = hUpcomingPiece2 - SECTION: $ffd3-$ffdc ($000a bytes) ["High Gameplay Variables"] - $ffd3 = hCurrentPiece - $ffd4 = hCurrentPieceX - $ffd5 = hCurrentPieceY - $ffd6 = hCurrentPieceRotationState - $ffd7 = hHeldPiece - $ffd8 = hHoldSpent - $ffd9 = hMode - $ffda = hModeCounter - $ffdb = hPrePause - $ffdc = hRequestedJingle - SECTION: $ffdd-$ffe6 ($000a bytes) ["OAM DMA"] - $ffdd = hOAMDMA - $ffe3 = !0 - SECTION: $ffe7-$ffef ($0009 bytes) ["High Input Variables"] - $ffe7 = hUpState - $ffe8 = hDownState - $ffe9 = hLeftState - $ffea = hRightState - $ffeb = hAState - $ffec = hBState - $ffed = hStartState - $ffee = hSelectState - $ffef = hFilterMode - SECTION: $fff0-$fff8 ($0009 bytes) ["High SFX Variables"] - $fff0 = hPlayhead - $fff2 = hCurrentlyPlaying - $fff3 = hPlayQueue - $fff7 = hNoisePlayhead - SECTION: $fff9-$fffa ($0002 bytes) ["High Time Variables"] - $fff9 = hFrameCtr - $fffa = hEvenFrame - SECTION: $fffb-$fffb ($0001 byte) ["High Globals"] - $fffb = hGameState - SECTION: $fffc-$fffc ($0001 byte) ["High Interrupt Variables"] - $fffc = hLCDCCtr - EMPTY: $fffd-$fffe ($0002 bytes) - TOTAL EMPTY: $0002 bytes + SECTION: $ff80-$ff9c ($001d bytes) ["High Level Variables"] + $ff80 = hCurrentDAS + $ff81 = hCurrentARE + $ff82 = hCurrentLineARE + $ff83 = hCurrentLockDelay + $ff84 = hCurrentLineClearDelay + $ff85 = hCurrentIntegerGravity + $ff86 = hCurrentFractionalGravity + $ff87 = hNextSpeedUp + $ff89 = hSpeedCurvePtr + $ff8b = hStartSpeed + $ff8d = hRequiresLineClear + $ff8e = hLevel + $ff90 = hCLevel + $ff94 = hNLevel + $ff98 = hTrueCLevel + $ff9c = hPrevHundreds + SECTION: $ff9d-$ffb7 ($001b bytes) ["High Field Variables"] + $ff9d = hPieceDataBase + $ff9f = hPieceDataBaseFast + $ffa1 = hPieceDataOffset + $ffa2 = hCurrentLockDelayRemaining + $ffa3 = hGrounded + $ffa4 = hWantedTile + $ffa5 = hWantedG + $ffa6 = hActualG + $ffa7 = hGravityCtr + $ffa8 = hWantX + $ffa9 = hYPosAtStartOfFrame + $ffaa = hWantRotation + $ffab = hRemainingDelay + $ffac = hClearedLines + $ffb0 = hLineClearCt + $ffb1 = hComboCt + $ffb2 = hLockDelayForce + $ffb3 = hDownFrames + $ffb4 = hAwardDownBonus + $ffb5 = hStalePiece + $ffb6 = hBravo + $ffb7 = hShouldLockIfGrounded + SECTION: $ffb8-$ffc9 ($0012 bytes) ["Score Variables"] + $ffb8 = hScore + $ffc0 = hScoreIncrement + $ffc2 = hScoreIncrementBCD + SECTION: $ffca-$ffd4 ($000b bytes) ["High RNG Variables"] + $ffca = hRNGSeed + $ffce = hPieceHistory + $ffd2 = hNextPiece + $ffd3 = hUpcomingPiece1 + $ffd4 = hUpcomingPiece2 + SECTION: $ffd5-$ffde ($000a bytes) ["High Gameplay Variables"] + $ffd5 = hCurrentPiece + $ffd6 = hCurrentPieceX + $ffd7 = hCurrentPieceY + $ffd8 = hCurrentPieceRotationState + $ffd9 = hHeldPiece + $ffda = hHoldSpent + $ffdb = hMode + $ffdc = hModeCounter + $ffdd = hPrePause + $ffde = hRequestedJingle + SECTION: $ffdf-$ffe8 ($000a bytes) ["OAM DMA"] + $ffdf = hOAMDMA + $ffe5 = !0 + SECTION: $ffe9-$fff1 ($0009 bytes) ["High Input Variables"] + $ffe9 = hUpState + $ffea = hDownState + $ffeb = hLeftState + $ffec = hRightState + $ffed = hAState + $ffee = hBState + $ffef = hStartState + $fff0 = hSelectState + $fff1 = hFilterMode + SECTION: $fff2-$fffa ($0009 bytes) ["High SFX Variables"] + $fff2 = hPlayhead + $fff4 = hCurrentlyPlaying + $fff5 = hPlayQueue + $fff9 = hNoisePlayhead + SECTION: $fffb-$fffc ($0002 bytes) ["High Time Variables"] + $fffb = hFrameCtr + $fffc = hEvenFrame + SECTION: $fffd-$fffd ($0001 byte) ["High Globals"] + $fffd = hGameState + SECTION: $fffe-$fffe ($0001 byte) ["High Interrupt Variables"] + $fffe = hLCDCCtr + TOTAL EMPTY: $0000 bytes SUMMARY: - ROM0: 15376 bytes used / 1008 free + ROM0: 15488 bytes used / 896 free ROMX: 68697 bytes used / 29607 free in 6 banks SRAM: 2951 bytes used / 5241 free in 1 bank - WRAM0: 3909 bytes used / 187 free - HRAM: 125 bytes used / 2 free + WRAM0: 3910 bytes used / 186 free + HRAM: 127 bytes used / 0 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index 4bbabf4..022c0bb 100644 Binary files a/bin/DMGTRIS.pocket and b/bin/DMGTRIS.pocket differ diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index 529d0b9..a9b7817 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -262,208 +262,219 @@ 00:2672 UpdateGradeSHIR.l1000 00:2688 UpdateGradeSHIR.l500 00:269e LevelInit -00:2703 SpecialLevelInit -00:2711 SpecialLevelInit.jumps -00:2726 SpecialLevelInit.dmgt -00:272b SpecialLevelInit.tgm1 -00:2730 SpecialLevelInit.tgm3 -00:2735 SpecialLevelInit.deat -00:273a SpecialLevelInit.shir -00:273f SpecialLevelInit.chil -00:2744 SpecialLevelInit.myco -00:2749 SpecialLevelInit.loaddata -00:277e LevelUp -00:27a8 LevelUp.doit -00:27ea LevelUp.checknlevel -00:283c LevelUp.bellmaybe -00:2858 LevelUp.leveljinglemaybe -00:2868 LevelUp.checkspeedup -00:28a7 DoSpeedUp -00:28e8 CheckSpecialLevelConditions -00:2919 CheckSpecialLevelConditions.override -00:2934 CheckSpecialLevelConditions.nooverride -00:293a CheckSpecialLevelConditions.speciallock -00:295e CheckSpecialLevelConditions.bones -00:2973 CheckSpecialLevelConditions.enterthebonezone -00:2978 CheckSpecialLevelConditions.invis -00:298d CheckSpecialLevelConditions.vanishoxyaction -00:2992 CheckSpecialLevelConditions.killscreen -00:29a3 CheckSpecialLevelConditions.rip -00:29d3 CheckSpecialLevelConditions.staffroll -00:29e1 CheckSpecialLevelConditions.justkill -00:29f5 TriggerKillScreen -00:2a17 sTGM1GradeScores -00:2a39 sTGM3InternalGradeSystem -00:2ad9 sTGM3GradeBoosts -00:2af8 sTGM3LevelMultiplier -00:2afc sTGM3BaselineCOOL -00:2b05 sTGM3REGRETConditions -00:2b19 sDMGTGrading -00:2bcd sDMGTGaugeLUT -00:2ccd SFXInit -00:2cef SFXPopQueue -00:2d04 SFXPushQueue -00:2d15 SFXProcessQueue -00:2d43 SFXTriggerNoise -00:2d69 SFXEnqueue -00:2d7e SFXEnqueue.findsfx -00:2ed8 SFXKill -00:2f0b SFXPlayNoise -00:2f16 SFXPlayNoise.noisereg -00:2f2d SFXPlayNoise.savenoiseplayhead -00:2f36 SFXPlay -00:2f44 SFXPlay.play -00:2f50 SFXPlay.getRegister -00:2f64 SFXPlay.savePlayhead -00:2f6d HarvestEntropy -00:2f73 HarvestEntropy.loop -00:2f94 RNGInit -00:2ffa RNGInit.complexinit -00:302c ShiftHistory -00:3049 GetNextHellPiece -00:304e GetNextTGM1Piece -00:306b GetNextTGM2Piece -00:3088 GetNextNesPiece -00:3096 GetNextTGM3Piece -00:314d GetNextPiece -00:315b GetNextPiece.nextpiecejumps -00:316a Next35Piece -00:3174 Next7Piece -00:317e NextByte -00:319e CheckAndAddHiscore -00:31a8 CheckAndAddHiscore.checkloop -00:31ad CheckAndAddHiscore.checkgrade -00:31b6 CheckAndAddHiscore.oldgraded -00:31c5 CheckAndAddHiscore.oldungraded -00:31cc CheckAndAddHiscore.checklevel -00:31f1 CheckAndAddHiscore.checkscore -00:3234 CheckAndAddHiscore.notbetter -00:3241 CheckAndAddHiscore.better -00:3243 InsertHiScore -00:3243 InsertHiScore.copylower -00:3254 InsertHiScore.copyupper -00:3275 InsertHiScore.findrow -00:3286 InsertHiScore.insert -00:32df InsertHiScore.persist -00:32f0 GetHiScoreEntry -00:3309 GetHiScoreEntry.store -00:3312 InitTargetHSTable -00:331d InitTargetHSTable.jumps -00:3332 InitTargetHSTable.dmgt -00:3337 InitTargetHSTable.tgm1 -00:333c InitTargetHSTable.tgm3 -00:3341 InitTargetHSTable.deat -00:3346 InitTargetHSTable.shir -00:334b InitTargetHSTable.chil -00:3350 InitTargetHSTable.myco -00:3353 InitTargetHSTable.store -00:3366 sProgressData -00:34b0 sHiscoreDefaultData -00:35f0 InputInit -00:3602 GetInput -00:3602 GetInput.btns -00:360f GetInput.readA -00:3613 GetInput.setA -00:361e GetInput.clearA -00:3621 GetInput.readB -00:3625 GetInput.setB -00:3630 GetInput.clearB -00:3633 GetInput.readSelect -00:3637 GetInput.setSelect -00:3642 GetInput.clearSelect -00:3645 GetInput.readStart -00:3649 GetInput.setStart -00:3654 GetInput.clearStart -00:3657 GetInput.dpad -00:3664 GetInput.readUp -00:3668 GetInput.setUp -00:3673 GetInput.clearUp -00:3676 GetInput.readDown -00:367a GetInput.setDown -00:3685 GetInput.clearDown -00:3688 GetInput.readLeft -00:368c GetInput.setLeft -00:3697 GetInput.clearLeft -00:369a GetInput.readRight -00:369e GetInput.setRight -00:36a9 GetInput.clearRight -00:36ac GetInput.priorities -00:36b9 GetInput.jumps -00:36c8 GetInput.dlru -00:36db GetInput.ulrd -00:36ee GetInput.lrud -00:36fb GetInput.udlr -00:3708 GetInput.zeroud -00:370e GetInput.zerolr -00:3714 GetInput.zerolrd -00:371c GetInput.zerolru -00:3724 ScoreInit -00:374c IncreaseScore -00:3784 IncreaseScore.doConvert -00:379c IncreaseScore.carry -00:379e IncreaseScore.postConvert -00:37b2 IncreaseScore.preAddDigit -00:37da IncreaseScore.addDigit -00:37f0 IncreaseScore.nextDigit -00:3804 SwitchToTitle -00:380d TitleEventLoopHandler -00:3817 TitleVBlankHandler -00:3821 PersistLevel -00:382f DrawSpeedMain -00:387f DrawSpeedSettings -00:38cf TimeInit -00:38ef StartCountdown -00:38fd ResetGameTime -00:3908 CheckTorikan -00:391f CheckTorikan.failure -00:3921 CheckTorikan.success -00:3924 HandleTimers -00:394a HandleTimers.reduce -00:3957 HandleTimers.clock -00:3971 HandleTimers.go -00:3995 SetProgress -00:39a0 SetProgress.loop -00:39a4 SetProgress.correct -00:39cb SetProgress.wvr_u1 -00:39d7 SetProgress.wvr_u2 -00:39e5 SetProgress.wvr_u3 -00:39f1 SetProgress.wvr_u4 -00:39ff SetProgress.wvr_u5 -00:3a0b SetProgress.wvr_u6 -00:3a19 SetProgress.wvr_u7 -00:3a25 SetProgress.wvr_u8 -00:3a33 SetProgress.wvr_u9 -00:3a3f SetProgress.wvr_u10 -00:3a47 Main -00:3a70 Main.notgbc -00:3a76 Main.wvr_u1 -00:3a9d EventLoop -00:3ab3 EventLoop.eventloopjumps -00:3abc EventLoopPostHandler -00:3abe EventLoopPostHandler.wvb_u2 -00:3ad0 EventLoopPostHandler.vblankjumps -00:3ad9 LoadTitleTiles -00:3af7 LoadGameplayTiles -00:3b0d LoadGameplayTiles.gbc -00:3b1c LoadGameplayTiles.dmg -00:3b2b sFramesToCS -00:3b67 UnsafeMemCopy -00:3b70 SafeMemCopy.wvr_u1 -00:3b70 SafeMemCopy -00:3b7f UnsafeMemSet -00:3b87 SafeMemSet -00:3b87 SafeMemSet.wvr_u2 -00:3b95 SwitchToGameplay -00:3b9e SwitchToGameplayBig -00:3ba7 GamePlayEventLoopHandler -00:3bb1 GamePlayBigEventLoopHandler -00:3bbb EnableScreenSquish -00:3bd5 DisableScreenSquish -00:3be0 CopyOAMHandler -00:3bec ClearOAM -00:3c02 BankingInit -00:3c11 OAMDMA -00:3c1b OAMDMAEnd +00:270e SpecialLevelInit +00:271c SpecialLevelInit.jumps +00:2731 SpecialLevelInit.dmgt +00:2736 SpecialLevelInit.tgm1 +00:273b SpecialLevelInit.tgm3 +00:2740 SpecialLevelInit.deat +00:2745 SpecialLevelInit.shir +00:274a SpecialLevelInit.chil +00:274f SpecialLevelInit.myco +00:2754 SpecialLevelInit.loaddata +00:2789 LevelUp +00:27b3 LevelUp.doit +00:27f2 LevelUp.checknlevel +00:2844 LevelUp.bellmaybe +00:2860 LevelUp.leveljinglemaybe +00:2870 AdjustSpeedCurve +00:2876 AdjustSpeedCurve.docheck +00:2876 AdjustSpeedCurve.checkthousands +00:2885 AdjustSpeedCurve.checkhundreds +00:2892 AdjustSpeedCurve.checktens +00:28a1 AdjustSpeedCurve.checkones +00:28ac AdjustSpeedCurveForced +00:28e9 AdjustSpeedCurveForced.continue +00:28ee BuildTrueCLevel +00:2917 BuildTrueCLevel.thousands +00:292c CheckSpecialLevelConditions +00:295d CheckSpecialLevelConditions.override +00:2978 CheckSpecialLevelConditions.nooverride +00:297e CheckSpecialLevelConditions.speciallock +00:29a2 CheckSpecialLevelConditions.bones +00:29b7 CheckSpecialLevelConditions.enterthebonezone +00:29bc CheckSpecialLevelConditions.invis +00:29d1 CheckSpecialLevelConditions.vanishoxyaction +00:29d6 CheckSpecialLevelConditions.killscreen +00:29e7 CheckSpecialLevelConditions.rip +00:2a17 CheckSpecialLevelConditions.staffroll +00:2a25 CheckSpecialLevelConditions.justkill +00:2a39 TriggerKillScreen +00:2a5b GetSection +00:2a6c GetSectionBCD +00:2a75 SkipSection +00:2a81 sTGM1GradeScores +00:2aa3 sTGM3InternalGradeSystem +00:2b43 sTGM3GradeBoosts +00:2b62 sTGM3LevelMultiplier +00:2b66 sTGM3BaselineCOOL +00:2b6f sTGM3REGRETConditions +00:2b83 sDMGTGrading +00:2c37 sDMGTGaugeLUT +00:2d37 SFXInit +00:2d59 SFXPopQueue +00:2d6e SFXPushQueue +00:2d7f SFXProcessQueue +00:2dad SFXTriggerNoise +00:2dd3 SFXEnqueue +00:2de8 SFXEnqueue.findsfx +00:2f42 SFXKill +00:2f75 SFXPlayNoise +00:2f80 SFXPlayNoise.noisereg +00:2f97 SFXPlayNoise.savenoiseplayhead +00:2fa0 SFXPlay +00:2fae SFXPlay.play +00:2fba SFXPlay.getRegister +00:2fce SFXPlay.savePlayhead +00:2fd7 HarvestEntropy +00:2fdd HarvestEntropy.loop +00:2ffe RNGInit +00:3064 RNGInit.complexinit +00:3096 ShiftHistory +00:30b3 GetNextHellPiece +00:30b8 GetNextTGM1Piece +00:30d5 GetNextTGM2Piece +00:30f2 GetNextNesPiece +00:3100 GetNextTGM3Piece +00:31b7 GetNextPiece +00:31c5 GetNextPiece.nextpiecejumps +00:31d4 Next35Piece +00:31de Next7Piece +00:31e8 NextByte +00:3208 CheckAndAddHiscore +00:3212 CheckAndAddHiscore.checkloop +00:3217 CheckAndAddHiscore.checkgrade +00:3220 CheckAndAddHiscore.oldgraded +00:322f CheckAndAddHiscore.oldungraded +00:3236 CheckAndAddHiscore.checklevel +00:325b CheckAndAddHiscore.checkscore +00:329e CheckAndAddHiscore.notbetter +00:32ab CheckAndAddHiscore.better +00:32ad InsertHiScore +00:32ad InsertHiScore.copylower +00:32be InsertHiScore.copyupper +00:32df InsertHiScore.findrow +00:32f0 InsertHiScore.insert +00:3349 InsertHiScore.persist +00:335a GetHiScoreEntry +00:3373 GetHiScoreEntry.store +00:337c InitTargetHSTable +00:3387 InitTargetHSTable.jumps +00:339c InitTargetHSTable.dmgt +00:33a1 InitTargetHSTable.tgm1 +00:33a6 InitTargetHSTable.tgm3 +00:33ab InitTargetHSTable.deat +00:33b0 InitTargetHSTable.shir +00:33b5 InitTargetHSTable.chil +00:33ba InitTargetHSTable.myco +00:33bd InitTargetHSTable.store +00:33d0 sProgressData +00:351a sHiscoreDefaultData +00:365a InputInit +00:366c GetInput +00:366c GetInput.btns +00:3679 GetInput.readA +00:367d GetInput.setA +00:3688 GetInput.clearA +00:368b GetInput.readB +00:368f GetInput.setB +00:369a GetInput.clearB +00:369d GetInput.readSelect +00:36a1 GetInput.setSelect +00:36ac GetInput.clearSelect +00:36af GetInput.readStart +00:36b3 GetInput.setStart +00:36be GetInput.clearStart +00:36c1 GetInput.dpad +00:36ce GetInput.readUp +00:36d2 GetInput.setUp +00:36dd GetInput.clearUp +00:36e0 GetInput.readDown +00:36e4 GetInput.setDown +00:36ef GetInput.clearDown +00:36f2 GetInput.readLeft +00:36f6 GetInput.setLeft +00:3701 GetInput.clearLeft +00:3704 GetInput.readRight +00:3708 GetInput.setRight +00:3713 GetInput.clearRight +00:3716 GetInput.priorities +00:3723 GetInput.jumps +00:3732 GetInput.dlru +00:3745 GetInput.ulrd +00:3758 GetInput.lrud +00:3765 GetInput.udlr +00:3772 GetInput.zeroud +00:3778 GetInput.zerolr +00:377e GetInput.zerolrd +00:3786 GetInput.zerolru +00:378e ScoreInit +00:37b6 IncreaseScore +00:37ee IncreaseScore.doConvert +00:3806 IncreaseScore.carry +00:3808 IncreaseScore.postConvert +00:381c IncreaseScore.preAddDigit +00:3844 IncreaseScore.addDigit +00:385a IncreaseScore.nextDigit +00:386e SwitchToTitle +00:3877 TitleEventLoopHandler +00:3881 TitleVBlankHandler +00:388b PersistLevel +00:3899 DrawSpeedMain +00:38e9 DrawSpeedSettings +00:3939 TimeInit +00:3959 StartCountdown +00:3967 ResetGameTime +00:3972 CheckTorikan +00:3989 CheckTorikan.failure +00:398b CheckTorikan.success +00:398e HandleTimers +00:39b4 HandleTimers.reduce +00:39c1 HandleTimers.clock +00:39db HandleTimers.go +00:39ff SetProgress +00:3a0a SetProgress.loop +00:3a0e SetProgress.correct +00:3a35 SetProgress.wvr_u1 +00:3a41 SetProgress.wvr_u2 +00:3a4f SetProgress.wvr_u3 +00:3a5b SetProgress.wvr_u4 +00:3a69 SetProgress.wvr_u5 +00:3a75 SetProgress.wvr_u6 +00:3a83 SetProgress.wvr_u7 +00:3a8f SetProgress.wvr_u8 +00:3a9d SetProgress.wvr_u9 +00:3aa9 SetProgress.wvr_u10 +00:3ab1 Main +00:3ada Main.notgbc +00:3ae0 Main.wvr_u1 +00:3b0d EventLoop +00:3b23 EventLoop.eventloopjumps +00:3b2c EventLoopPostHandler +00:3b2e EventLoopPostHandler.wvb_u2 +00:3b40 EventLoopPostHandler.vblankjumps +00:3b49 LoadTitleTiles +00:3b67 LoadGameplayTiles +00:3b7d LoadGameplayTiles.gbc +00:3b8c LoadGameplayTiles.dmg +00:3b9b sFramesToCS +00:3bd7 UnsafeMemCopy +00:3be0 SafeMemCopy.wvr_u1 +00:3be0 SafeMemCopy +00:3bef UnsafeMemSet +00:3bf7 SafeMemSet +00:3bf7 SafeMemSet.wvr_u2 +00:3c05 SwitchToGameplay +00:3c0e SwitchToGameplayBig +00:3c17 GamePlayEventLoopHandler +00:3c21 GamePlayBigEventLoopHandler +00:3c2b EnableScreenSquish +00:3c45 DisableScreenSquish +00:3c50 CopyOAMHandler +00:3c5c ClearOAM +00:3c72 BankingInit +00:3c81 OAMDMA +00:3c8b OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4203 sDMGTSpeedCurveEnd 01:4205 sDMGTSpeedCurveSpecialData @@ -2793,132 +2804,134 @@ 00:cf04 wLockLevel 00:cf05 wShouldGoStaffRoll 00:cf06 wNoMoreLocks -00:cf07 wDecayRate -00:cf08 wGradePoints -00:cf09 wInternalGrade -00:cf0a wDisplayedGrade -00:cf0b wEffectTimer -00:cf0c wRankingDisqualified -00:cf0d wDecayCounter -00:cf0e wGradeGauge -00:cf0f wSMult -00:cf10 wDMult -00:cf11 wTMult -00:cf12 wSRate -00:cf13 wDRate -00:cf14 wTRate -00:cf15 wQRate -00:cf16 wTGM1level300RequirementMet -00:cf17 wTGM1level500RequirementMet -00:cf18 wTGM1level999RequirementMet -00:cf19 wProgress0B1 -00:cf1a wProgress0B2 -00:cf1b wProgress1B1 -00:cf1c wProgress1B2 -00:cf1d wProgress2B1 -00:cf1e wProgress2B2 -00:cf1f wProgress3B1 -00:cf20 wProgress3B2 -00:cf21 wProgress4B1 -00:cf22 wProgress4B2 -00:cf23 wSwapABState -00:cf24 wRNGModeState -00:cf25 wRotModeState -00:cf26 wDropModeState -00:cf27 wSpeedCurveState -00:cf28 wAlways20GState -00:cf29 wInitialA -00:cf2a wInitialB -00:cf2b wInitialC -00:cf2c wSelected -00:cf2d wTitleMode -00:cf2e wProfileName -00:cf31 wDisplayingScoreMode -00:cf32 wScoreFlipTimer -00:cf33 wMinutes -00:cf34 wSeconds -00:cf35 wFrames -00:cf36 wCountDown -00:cf38 wCountDownZero -00:cf39 wBankBackup -00:cf3d wRollLine -00:cf3e wInStaffRoll -00:cf3f wBigModeTransfered -00:cf40 wGameOverIgnoreInput -00:cf41 wOuterReps -00:cf42 wInnerReps -00:cf43 wTitlePal -00:cf44 wTarget -00:ff80 hPieceDataBase -00:ff82 hPieceDataBaseFast -00:ff84 hPieceDataOffset -00:ff85 hCurrentLockDelayRemaining -00:ff86 hGrounded -00:ff87 hWantedTile -00:ff88 hWantedG -00:ff89 hActualG -00:ff8a hGravityCtr -00:ff8b hWantX -00:ff8c hYPosAtStartOfFrame -00:ff8d hWantRotation -00:ff8e hRemainingDelay -00:ff8f hClearedLines -00:ff93 hLineClearCt -00:ff94 hComboCt -00:ff95 hLockDelayForce -00:ff96 hDownFrames -00:ff97 hAwardDownBonus -00:ff98 hStalePiece -00:ff99 hBravo -00:ff9a hShouldLockIfGrounded -00:ff9b hCurrentDAS -00:ff9c hCurrentARE -00:ff9d hCurrentLineARE -00:ff9e hCurrentLockDelay -00:ff9f hCurrentLineClearDelay -00:ffa0 hCurrentIntegerGravity -00:ffa1 hCurrentFractionalGravity -00:ffa2 hNextSpeedUp -00:ffa4 hSpeedCurvePtr -00:ffa6 hStartSpeed -00:ffa8 hRequiresLineClear -00:ffa9 hLevel -00:ffab hCLevel -00:ffaf hNLevel -00:ffb5 hPrevHundreds -00:ffb6 hScore -00:ffbe hScoreIncrement -00:ffc0 hScoreIncrementBCD -00:ffc8 hRNGSeed -00:ffcc hPieceHistory -00:ffd0 hNextPiece -00:ffd1 hUpcomingPiece1 -00:ffd2 hUpcomingPiece2 -00:ffd3 hCurrentPiece -00:ffd4 hCurrentPieceX -00:ffd5 hCurrentPieceY -00:ffd6 hCurrentPieceRotationState -00:ffd7 hHeldPiece -00:ffd8 hHoldSpent -00:ffd9 hMode -00:ffda hModeCounter -00:ffdb hPrePause -00:ffdc hRequestedJingle -00:ffdd hOAMDMA -00:ffe7 hUpState -00:ffe8 hDownState -00:ffe9 hLeftState -00:ffea hRightState -00:ffeb hAState -00:ffec hBState -00:ffed hStartState -00:ffee hSelectState -00:ffef hFilterMode -00:fff0 hPlayhead -00:fff2 hCurrentlyPlaying -00:fff3 hPlayQueue -00:fff7 hNoisePlayhead -00:fff9 hFrameCtr -00:fffa hEvenFrame -00:fffb hGameState -00:fffc hLCDCCtr +00:cf07 wSkippedSectionsBCD +00:cf08 wDecayRate +00:cf09 wGradePoints +00:cf0a wInternalGrade +00:cf0b wDisplayedGrade +00:cf0c wEffectTimer +00:cf0d wRankingDisqualified +00:cf0e wDecayCounter +00:cf0f wGradeGauge +00:cf10 wSMult +00:cf11 wDMult +00:cf12 wTMult +00:cf13 wSRate +00:cf14 wDRate +00:cf15 wTRate +00:cf16 wQRate +00:cf17 wTGM1level300RequirementMet +00:cf18 wTGM1level500RequirementMet +00:cf19 wTGM1level999RequirementMet +00:cf1a wProgress0B1 +00:cf1b wProgress0B2 +00:cf1c wProgress1B1 +00:cf1d wProgress1B2 +00:cf1e wProgress2B1 +00:cf1f wProgress2B2 +00:cf20 wProgress3B1 +00:cf21 wProgress3B2 +00:cf22 wProgress4B1 +00:cf23 wProgress4B2 +00:cf24 wSwapABState +00:cf25 wRNGModeState +00:cf26 wRotModeState +00:cf27 wDropModeState +00:cf28 wSpeedCurveState +00:cf29 wAlways20GState +00:cf2a wInitialA +00:cf2b wInitialB +00:cf2c wInitialC +00:cf2d wSelected +00:cf2e wTitleMode +00:cf2f wProfileName +00:cf32 wDisplayingScoreMode +00:cf33 wScoreFlipTimer +00:cf34 wMinutes +00:cf35 wSeconds +00:cf36 wFrames +00:cf37 wCountDown +00:cf39 wCountDownZero +00:cf3a wBankBackup +00:cf3e wRollLine +00:cf3f wInStaffRoll +00:cf40 wBigModeTransfered +00:cf41 wGameOverIgnoreInput +00:cf42 wOuterReps +00:cf43 wInnerReps +00:cf44 wTitlePal +00:cf45 wTarget +00:ff80 hCurrentDAS +00:ff81 hCurrentARE +00:ff82 hCurrentLineARE +00:ff83 hCurrentLockDelay +00:ff84 hCurrentLineClearDelay +00:ff85 hCurrentIntegerGravity +00:ff86 hCurrentFractionalGravity +00:ff87 hNextSpeedUp +00:ff89 hSpeedCurvePtr +00:ff8b hStartSpeed +00:ff8d hRequiresLineClear +00:ff8e hLevel +00:ff90 hCLevel +00:ff94 hNLevel +00:ff98 hTrueCLevel +00:ff9c hPrevHundreds +00:ff9d hPieceDataBase +00:ff9f hPieceDataBaseFast +00:ffa1 hPieceDataOffset +00:ffa2 hCurrentLockDelayRemaining +00:ffa3 hGrounded +00:ffa4 hWantedTile +00:ffa5 hWantedG +00:ffa6 hActualG +00:ffa7 hGravityCtr +00:ffa8 hWantX +00:ffa9 hYPosAtStartOfFrame +00:ffaa hWantRotation +00:ffab hRemainingDelay +00:ffac hClearedLines +00:ffb0 hLineClearCt +00:ffb1 hComboCt +00:ffb2 hLockDelayForce +00:ffb3 hDownFrames +00:ffb4 hAwardDownBonus +00:ffb5 hStalePiece +00:ffb6 hBravo +00:ffb7 hShouldLockIfGrounded +00:ffb8 hScore +00:ffc0 hScoreIncrement +00:ffc2 hScoreIncrementBCD +00:ffca hRNGSeed +00:ffce hPieceHistory +00:ffd2 hNextPiece +00:ffd3 hUpcomingPiece1 +00:ffd4 hUpcomingPiece2 +00:ffd5 hCurrentPiece +00:ffd6 hCurrentPieceX +00:ffd7 hCurrentPieceY +00:ffd8 hCurrentPieceRotationState +00:ffd9 hHeldPiece +00:ffda hHoldSpent +00:ffdb hMode +00:ffdc hModeCounter +00:ffdd hPrePause +00:ffde hRequestedJingle +00:ffdf hOAMDMA +00:ffe9 hUpState +00:ffea hDownState +00:ffeb hLeftState +00:ffec hRightState +00:ffed hAState +00:ffee hBState +00:ffef hStartState +00:fff0 hSelectState +00:fff1 hFilterMode +00:fff2 hPlayhead +00:fff4 hCurrentlyPlaying +00:fff5 hPlayQueue +00:fff9 hNoisePlayhead +00:fffb hFrameCtr +00:fffc hEvenFrame +00:fffd hGameState +00:fffe hLCDCCtr diff --git a/src/level.asm b/src/level.asm index 305f057..f92b112 100644 --- a/src/level.asm +++ b/src/level.asm @@ -36,7 +36,8 @@ hStartSpeed:: ds 2 hRequiresLineClear:: ds 1 hLevel:: ds 2 hCLevel:: ds 4 -hNLevel:: ds 6 ; The extra 2 bytes will be clobbered by the sprite drawing functions. +hNLevel:: ds 4 +hTrueCLevel:: ds 4 hPrevHundreds:: ds 1 SECTION "Level Variables", WRAM0 @@ -53,6 +54,7 @@ wKillScreenActive:: ds 1 wLockLevel:: ds 1 wShouldGoStaffRoll:: ds 1 wNoMoreLocks:: ds 1 +wSkippedSectionsBCD:: ds 1 SECTION "Level Functions", ROM0 @@ -70,6 +72,7 @@ LevelInit:: ld [wLockLevel], a ld [wShouldGoStaffRoll], a ld [wNoMoreLocks], a + ld [wSkippedSectionsBCD], a ldh a, [hStartSpeed] ld l, a @@ -81,18 +84,22 @@ LevelInit:: ld b, a and a, $0F ldh [hCLevel+3], a + ldh [hTrueCLevel+3], a ld a, b swap a and a, $0F ldh [hCLevel+2], a + ldh [hTrueCLevel+2], a ld a, [hl+] ld b, a and a, $0F ldh [hCLevel+1], a + ldh [hTrueCLevel+1], a ld a, b swap a and a, $0F ldh [hCLevel], a + ldh [hTrueCLevel], a ld a, l ldh [hSpeedCurvePtr], a @@ -126,10 +133,11 @@ LevelInit:: ; Get special data. call SpecialLevelInit - ; Restore the bank before returning. + ; Restore the bank to keep the stack balanced. rst RSTRestoreBank - jp DoSpeedUp + ; Get the speed curve + jp AdjustSpeedCurveForced SpecialLevelInit: @@ -300,8 +308,7 @@ LevelUp:: ldh [hLevel], a ld a, h ldh [hLevel+1], a - call DoSpeedUp - jp CheckSpecialLevelConditions + jp AdjustSpeedCurve .checknlevel ; Make wNLevel make sense. @@ -322,10 +329,10 @@ LevelUp:: ld hl, hCLevel+2 ld a, [hl+] cp a, 9 - jr nz, .checkspeedup + jr nz, AdjustSpeedCurve ld a, [hl] cp a, 8 - jr nz, .checkspeedup + jr nz, AdjustSpeedCurve ld a, $FF ldh [hRequiresLineClear], a call SFXKill @@ -365,7 +372,7 @@ LevelUp:: jr nz, .leveljinglemaybe ld a, [wNoMoreLocks] cp a, $FF - jr z, .checkspeedup + jr z, AdjustSpeedCurve ld a, $FF ldh [hRequiresLineClear], a call SFXKill @@ -377,52 +384,71 @@ LevelUp:: ld b, a ldh a, [hCLevel+1] cp a, b - jr z, .checkspeedup + jr z, AdjustSpeedCurve call SFXKill ld a, SFX_LEVELUP call SFXEnqueue + ; This falls through to AdjustSpeedCurve, this is intended. -.checkspeedup + +AdjustSpeedCurve: + call BuildTrueCLevel call CheckSpecialLevelConditions + +.docheck +.checkthousands + ; Get the thousands level of the next speed up. ldh a, [hNextSpeedUp] - and a, $F0 - jr z, :+ swap a and a, $0F - ld hl, hCLevel - cp a, [hl] - jr z, :+ - ret nc -: ldh a, [hNextSpeedUp] + ; Compare to ours. + ld hl, hTrueCLevel+CLEVEL_THOUSANDS + cp a, [hl] + jr z, .checkhundreds ; Equal? We need to check deeper. + jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. + ret ; Ours lower? We're done. + +.checkhundreds + ; Get the hundreds level of the next speed up. + ldh a, [hNextSpeedUp] and a, $0F - jr z, :+ - ld hl, hCLevel+1 - cp a, [hl] - jr z, :+ - ret nc -: ldh a, [hNextSpeedUp+1] - and a, $F0 - jr z, :+ + ; Compare to ours. + ld hl, hCLevel+CLEVEL_HUNDREDS + cp a, [hl] + jr z, .checktens ; Equal? We need to check deeper. + jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. + ret ; Ours lower? We're done. + +.checktens + ; Get the tens level of the next speed up. + ldh a, [hNextSpeedUp+1] swap a and a, $0F - ld hl, hCLevel+2 - cp a, [hl] - jr z, :+ - ret nc -: ldh a, [hNextSpeedUp+1] + ; Compare to ours. + ld hl, hCLevel+CLEVEL_TENS + cp a, [hl] + jr z, .checkones ; Equal? We need to check deeper. + jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. + ret ; Ours lower? We're done. + +.checkones + ; Get the ones level of the next speed up. + ldh a, [hNextSpeedUp+1] and a, $0F - jr z, DoSpeedUp - ld hl, hCLevel+3 + + ; Compare to ours. + ld hl, hCLevel+CLEVEL_ONES cp a, [hl] - jr z, DoSpeedUp - ret nc ; This can fall through to the next function here. This is intentional. + jr c, AdjustSpeedCurveForced ; Ours higher? We need to increase. + ret nz ; Ours lower? We're done. + ; Equal? We need to increase. - ; Iterates over the speed curve and loads the new constants. -DoSpeedUp: +AdjustSpeedCurveForced: + ; Update all data to the next speed curve data. ; Bank to speed curve data. ld b, BANK_OTHER rst RSTSwitchBank @@ -468,12 +494,72 @@ DoSpeedUp: ; Do we want to force 20G? ld a, [wAlways20GState] cp a, 0 - jp z, RSTRestoreBank + jr z, .continue ld a, 20 ldh [hCurrentIntegerGravity], a ld a, $00 ldh [hCurrentFractionalGravity], a - jp RSTRestoreBank + +.continue + call RSTRestoreBank + + ; Jump back, we may need to increase more than once. + jr AdjustSpeedCurve.docheck + + + ; Builds an internal level that is the displayed level skipped an amount of sections ahead. +BuildTrueCLevel: + ; 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] + cp a, 0 + 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 + ld b, a + + ; Increase hundreds + ldh a, [hTrueCLevel+CLEVEL_HUNDREDS] + add a, b + ldh [hTrueCLevel+CLEVEL_HUNDREDS], a + + ; Is hundreds overflowing? + cp a, $0A + jr c, .thousands + + ; Yes, it was, so decrease by 10, and increment thousands. + sub a, 10 + ldh [hTrueCLevel+CLEVEL_HUNDREDS], a + ld hl, hTrueCLevel+CLEVEL_THOUSANDS + inc [hl] + +.thousands + ; Amount of steps to increment thousands. + ld a, [wSkippedSectionsBCD] + swap a + and a, $0F + ld b, a + + ; Increase thousands + ldh a, [hTrueCLevel+CLEVEL_THOUSANDS] + add a, b + ldh [hTrueCLevel+CLEVEL_THOUSANDS], a + + ; This may cause a nonsense number. Fix it if that happens. + cp a, $0A + ret c + ld a, $09 + ldh [hTrueCLevel+CLEVEL_THOUSANDS], a + ret + + CheckSpecialLevelConditions: @@ -729,4 +815,43 @@ TriggerKillScreen:: ret + ; Gets a 0-indexed section number, returned in A as binary. + ; Levels 0000-0099 would return 0, levels 0100-0199 would return 1, ... levels 9900-9999 would return 99. +GetSection:: + ; Load thousands. + ldh a, [hCLevel+CLEVEL_THOUSANDS] + + ; Multiply by 10, which is equal to multiply by 8 + multiply by 2 + ld b, a + sla b + sla a + sla a + sla a + add a, b + + ; Add hundreds. + ld hl, hCLevel+CLEVEL_HUNDREDS + add a, [hl] + ret + + + ; Gets the current section, but as BCD in A. +GetSectionBCD:: + ldh a, [hCLevel+CLEVEL_THOUSANDS] + swap a + ld hl, hCLevel+CLEVEL_HUNDREDS + or a, [hl] + ret + + + ; Will skip the virtual level forward by 100 levels. + ; This will NOT affect the displayed level, nor will it affect scoring. + ; It will only make it so the internal speed pointer will be ahead by N*100 levels. +SkipSection:: + ld a, [wSkippedSectionsBCD] + add a, $01 + daa ; Yes, this is the rare case where this instruction is useful! + ld [wSkippedSectionsBCD], a + jp AdjustSpeedCurve + ENDC diff --git a/src/main.asm b/src/main.asm index a633d04..c3bee23 100644 --- a/src/main.asm +++ b/src/main.asm @@ -99,6 +99,8 @@ Main:: call BankingInit xor a, a + ld [wKillScreenActive], a + ld [wSkippedSectionsBCD], a ldh [hMode], a ; Switch to title state.