diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index c197f03..2d353af 100644 Binary files a/bin/DMGTRIS.GBC and b/bin/DMGTRIS.GBC differ diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index f5b0703..39313e8 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -174,7 +174,7 @@ ROM0 bank #0: $1c90 = GradeRendering.mo $1c96 = GradeRendering.mm $1c9c = GradeRendering.gmgrade - SECTION: $1ca7-$1fdc ($0336 bytes) ["Grading Functions"] + SECTION: $1ca7-$2000 ($035a bytes) ["Grading Functions"] $1ca7 = GradeInit $1cd2 = GradeInit.grade9start $1cd7 = GradeInit.end @@ -186,290 +186,299 @@ ROM0 bank #0: $1d2d = DecayGradeDelay.gradejumptable $1d42 = PrepareScore $1d55 = DrawGradeProgressDMGT - $1d64 = UpdateGradeDMGT - $1d7e = UpdateGradeDMGT.clearrate - $1d8f = UpdateGradeDMGT.combomult - $1d9c = UpdateGradeDMGT.combo10 - $1dad = UpdateGradeDMGT.combo5 - $1dbe = UpdateGradeDMGT.combo1 - $1dcd = UpdateGradeDMGT.prelevel - $1ddc = UpdateGradeDMGT.single - $1dec = UpdateGradeDMGT.double - $1dfd = UpdateGradeDMGT.adddonce - $1e01 = UpdateGradeDMGT.triple - $1e12 = UpdateGradeDMGT.addtonce - $1e16 = UpdateGradeDMGT.tetris - $1e1a = UpdateGradeDMGT.levelmult - $1e32 = UpdateGradeDMGT.mult5 - $1e39 = UpdateGradeDMGT.mult4 - $1e3f = UpdateGradeDMGT.mult3 - $1e44 = UpdateGradeDMGT.mult2 - $1e48 = UpdateGradeDMGT.mult1 - $1e49 = UpdateGradeDMGT.processgrade - $1e6f = UpdateGradeDMGT.increasegrademaybe - $1e90 = UpdateGradeDMGT.gotgm - $1e9b = DecayGradeDMGT - $1ebf = DecayGradeDMGT.nodecay - $1ec6 = DecayGradeDMGT.decay - $1ed4 = UpdateGradeTGM1 - $1ede = UpdateGradeTGM1.trygradeup - $1ef8 = UpdateGradeTGM1.increasegrade - $1f0a = UpdateGradeTGM1.skipjingle - $1f17 = UpdateGradeTGM1.maybegm - $1f2d = UpdateGradeDEAT - $1f39 = UpdateGradeDEAT.notgm - $1f52 = UpdateGradeDEAT.notm - $1f72 = UpdateGradeDEAT.disqualify - $1f78 = UpdateGradeSHIR - $1fb8 = UpdateGradeSHIR.s5torikan - $1fc8 = UpdateGradeSHIR.s10torikan - $1fd7 = UpdateGradeSHIR.disqualify - SECTION: $1fdd-$2292 ($02b6 bytes) ["Grading Data"] - $1fdd = sTGM1GradeScores - $1fff = sTGM3InternalGradeSystem - $209f = sTGM3GradeBoosts - $20be = sTGM3LevelMultiplier - $20c2 = sTGM3BaselineCOOL - $20cb = sTGM3REGRETConditions - $20df = sDMGTGrading - $2193 = sDMGTGaugeLUT - SECTION: $2293-$2529 ($0297 bytes) ["SFX Functions"] - $2293 = SFXInit - $22b5 = SFXPopQueue - $22ca = SFXPushQueue - $22db = SFXProcessQueue - $22e8 = !0 - $2309 = SFXTriggerNoise - $2316 = !1 - $2323 = !2 - $232f = SFXEnqueue - $2344 = SFXEnqueue.findsfx - $2359 = !3 - $2369 = !4 - $2379 = !5 - $2389 = !6 - $2399 = !7 - $23a9 = !8 - $23b9 = !9 - $23c9 = !10 - $23d9 = !11 - $23e9 = !12 - $23f9 = !13 - $2409 = !14 - $2419 = !15 - $2429 = !16 - $2439 = !17 - $2448 = !18 - $2457 = !19 - $2466 = !20 - $2474 = !21 - $2482 = !22 - $2490 = !23 - $249d = SFXKill - $24c8 = SFXPlayNoise - $24d3 = SFXPlayNoise.noisereg - $24e0 = !24 - $24ea = SFXPlayNoise.savenoiseplayhead - $24f3 = SFXPlay - $24fe = !25 - $2501 = SFXPlay.play - $250d = SFXPlay.getRegister - $2517 = !26 - $2521 = SFXPlay.savePlayhead - SECTION: $252a-$275a ($0231 bytes) ["RNG Functions"] - $252a = HarvestEntropy - $2530 = HarvestEntropy.loop - $2551 = RNGInit - $2587 = !0 - $25b7 = RNGInit.complexinit - $25ce = !1 - $25e9 = ShiftHistory - $2606 = GetNextHellPiece - $260b = GetNextTGM1Piece - $260e = !2 - $2626 = !3 - $2628 = GetNextTGM2Piece - $262b = !4 - $2643 = !5 - $2645 = GetNextNesPiece - $2653 = GetNextTGM3Piece - $2656 = !6 - $2679 = !7 - $267c = !8 - $268c = !9 - $2696 = !10 - $26a4 = !11 - $26b3 = !12 - $26bf = !13 - $26cb = !14 - $26d7 = !15 - $26e3 = !16 - $26ef = !17 - $26fb = !18 - $270a = GetNextPiece - $2718 = GetNextPiece.nextpiecejumps - $2727 = Next35Piece - $2727 = !19 - $2731 = Next7Piece - $2731 = !20 - $273b = NextByte - SECTION: $275b-$28fd ($01a3 bytes) ["Level Functions"] - $275b = LevelInit - $27ab = LevelUp - $27cf = LevelUp.doit - $2813 = LevelUp.checknlevel - $2841 = !0 - $2859 = !1 - $2862 = LevelUp.bellmaybe - $2874 = LevelUp.leveljinglemaybe - $2881 = LevelUp.checkspeedup - $2892 = !2 - $289f = !3 - $28b0 = !4 - $28bd = DoSpeedUp - SECTION: $28fe-$2a47 ($014a bytes) ["Progress Data"] - $28fe = sProgressData - SECTION: $2a48-$2b27 ($00e0 bytes) ["Score Functions"] - $2a48 = ScoreInit - $2a70 = IncreaseScore - $2aa8 = IncreaseScore.doConvert - $2aaa = !0 - $2ac0 = IncreaseScore.carry - $2ac2 = IncreaseScore.postConvert - $2acf = !1 - $2ad6 = IncreaseScore.preAddDigit - $2afe = IncreaseScore.addDigit - $2b14 = IncreaseScore.nextDigit - SECTION: $2b28-$2bf4 ($00cd bytes) ["Input Functions"] - $2b28 = InputInit - $2b3a = GetInput - $2b3a = GetInput.btns - $2b47 = GetInput.readA - $2b4b = GetInput.setA - $2b56 = GetInput.clearA - $2b59 = GetInput.readB - $2b5d = GetInput.setB - $2b68 = GetInput.clearB - $2b6b = GetInput.readSelect - $2b6f = GetInput.setSelect - $2b7a = GetInput.clearSelect - $2b7d = GetInput.readStart - $2b81 = GetInput.setStart - $2b8c = GetInput.clearStart - $2b8f = GetInput.dpad - $2b9c = GetInput.readUp - $2ba0 = GetInput.setUp - $2bab = GetInput.clearUp - $2bae = GetInput.readDown - $2bb2 = GetInput.setDown - $2bbd = GetInput.clearDown - $2bc0 = GetInput.readLeft - $2bc4 = GetInput.setLeft - $2bcf = GetInput.clearLeft - $2bd2 = GetInput.readRight - $2bd6 = GetInput.setRight - $2be1 = GetInput.clearRight - $2be4 = GetInput.priorities - $2bef = GetInput.zero - SECTION: $2bf5-$2cab ($00b7 bytes) ["SRAM Functions"] - $2bf5 = RestoreSRAM - $2c4e = InitializeSRAM - SECTION: $2cac-$2d5d ($00b2 bytes) ["Progress Functions"] - $2cac = SetProgress - $2cb7 = SetProgress.loop - $2cbb = SetProgress.correct - $2ce2 = SetProgress.wvr_u1 - $2cee = SetProgress.wvr_u2 - $2cfc = SetProgress.wvr_u3 - $2d08 = SetProgress.wvr_u4 - $2d16 = SetProgress.wvr_u5 - $2d22 = SetProgress.wvr_u6 - $2d30 = SetProgress.wvr_u7 - $2d3c = SetProgress.wvr_u8 - $2d4a = SetProgress.wvr_u9 - $2d56 = SetProgress.wvr_u10 - SECTION: $2d5e-$2df5 ($0098 bytes) ["Code Entry Point"] - $2d5e = Main - $2d87 = Main.notgbc - $2d8d = Main.wvr_u1 - $2dba = EventLoop - $2dd0 = EventLoop.eventloopjumps - $2dd9 = EventLoopPostHandler - $2ddb = EventLoopPostHandler.wvb_u2 - $2ded = EventLoopPostHandler.vblankjumps - SECTION: $2df6-$2e7d ($0088 bytes) ["Time Functions"] - $2df6 = TimeInit - $2e0b = ResetGameTime - $2e16 = CheckTorikan - $2e2d = CheckTorikan.failure - $2e2f = CheckTorikan.success - $2e32 = HandleTimers - $2e5a = HandleTimers.go - SECTION: $2e7e-$2eea ($006d bytes) ["Title Function Trampolines"] - $2e7e = SwitchToTitle - $2e87 = TitleEventLoopHandler - $2e91 = TitleVBlankHandler - $2e9b = DrawOption6 - SECTION: $2eeb-$2f3c ($0052 bytes) ["Tile Functions"] - $2eeb = LoadTitleTiles - $2f09 = LoadGameplayTiles - $2f1f = LoadGameplayTiles.gbc - $2f2e = LoadGameplayTiles.dmg - SECTION: $2f3d-$2f78 ($003c bytes) ["Time Data"] - $2f3d = sFramesToCS - SECTION: $2f79-$2fa6 ($002e bytes) ["Memory Functions"] - $2f79 = UnsafeMemCopy - $2f82 = SafeMemCopy.wvr_u1 - $2f82 = SafeMemCopy - $2f91 = UnsafeMemSet - $2f99 = SafeMemSet - $2f99 = SafeMemSet.wvr_u2 - SECTION: $2fa7-$2fcc ($0026 bytes) ["Gameplay Function Trampolines"] - $2fa7 = SwitchToGameplay - $2fb0 = SwitchToGameplayBig - $2fb9 = GamePlayEventLoopHandler - $2fc3 = GamePlayBigEventLoopHandler - SECTION: $2fcd-$2fee ($0022 bytes) ["OAM Functions"] - $2fcd = CopyOAMHandler - $2fd9 = ClearOAM - SECTION: $2fef-$3007 ($0019 bytes) ["Interrupt Initialization Functions"] - $2fef = IntrInit - $2ff3 = InitializeLCDCInterrupt - SECTION: $3008-$3016 ($000f bytes) ["Banking Functions"] - $3008 = BankingInit - SECTION: $3017-$3020 ($000a bytes) ["OAM DMA Code"] - $3017 = OAMDMA - $3021 = OAMDMAEnd - EMPTY: $3021-$3fff ($0fdf bytes) - TOTAL EMPTY: $0fea bytes + $1d61 = !0 + $1d70 = UpdateGradeDMGT + $1d8a = UpdateGradeDMGT.clearrate + $1d9b = UpdateGradeDMGT.combomult + $1da8 = UpdateGradeDMGT.combo10 + $1db9 = UpdateGradeDMGT.combo5 + $1dca = UpdateGradeDMGT.combo1 + $1dd9 = UpdateGradeDMGT.prelevel + $1de8 = UpdateGradeDMGT.single + $1df8 = UpdateGradeDMGT.double + $1e09 = UpdateGradeDMGT.adddonce + $1e0d = UpdateGradeDMGT.triple + $1e1e = UpdateGradeDMGT.addtonce + $1e22 = UpdateGradeDMGT.tetris + $1e26 = UpdateGradeDMGT.levelmult + $1e3e = UpdateGradeDMGT.mult5 + $1e45 = UpdateGradeDMGT.mult4 + $1e4b = UpdateGradeDMGT.mult3 + $1e50 = UpdateGradeDMGT.mult2 + $1e54 = UpdateGradeDMGT.mult1 + $1e55 = UpdateGradeDMGT.processgrade + $1e7e = UpdateGradeDMGT.increasegrademaybe + $1ea2 = UpdateGradeDMGT.gotgm + $1eb0 = DecayGradeDMGT + $1ed4 = DecayGradeDMGT.nodecay + $1edb = DecayGradeDMGT.decay + $1ee9 = UpdateGradeTGM1 + $1ef3 = UpdateGradeTGM1.trygradeup + $1f0d = UpdateGradeTGM1.increasegrade + $1f22 = UpdateGradeTGM1.skipjingle + $1f2f = UpdateGradeTGM1.maybegm + $1f48 = UpdateGradeDEAT + $1f54 = UpdateGradeDEAT.notgm + $1f70 = UpdateGradeDEAT.notm + $1f93 = UpdateGradeDEAT.disqualify + $1f99 = UpdateGradeSHIR + $1fdc = UpdateGradeSHIR.s5torikan + $1fec = UpdateGradeSHIR.s10torikan + $1ffb = UpdateGradeSHIR.disqualify + SECTION: $2001-$22b6 ($02b6 bytes) ["Grading Data"] + $2001 = sTGM1GradeScores + $2023 = sTGM3InternalGradeSystem + $20c3 = sTGM3GradeBoosts + $20e2 = sTGM3LevelMultiplier + $20e6 = sTGM3BaselineCOOL + $20ef = sTGM3REGRETConditions + $2103 = sDMGTGrading + $21b7 = sDMGTGaugeLUT + SECTION: $22b7-$2550 ($029a bytes) ["SFX Functions"] + $22b7 = SFXInit + $22d9 = SFXPopQueue + $22ee = SFXPushQueue + $22ff = SFXProcessQueue + $2310 = !0 + $232b = !1 + $232d = SFXTriggerNoise + $233a = !2 + $2347 = !3 + $2353 = SFXEnqueue + $2368 = SFXEnqueue.findsfx + $237d = !4 + $238d = !5 + $239d = !6 + $23ad = !7 + $23bd = !8 + $23cd = !9 + $23dd = !10 + $23ed = !11 + $23fd = !12 + $240d = !13 + $241d = !14 + $242d = !15 + $243d = !16 + $244d = !17 + $245d = !18 + $246c = !19 + $247b = !20 + $248a = !21 + $2499 = !22 + $24a7 = !23 + $24b5 = !24 + $24c2 = SFXKill + $24ef = SFXPlayNoise + $24fa = SFXPlayNoise.noisereg + $2507 = !25 + $2511 = SFXPlayNoise.savenoiseplayhead + $251a = SFXPlay + $2525 = !26 + $2528 = SFXPlay.play + $2534 = SFXPlay.getRegister + $253e = !27 + $2548 = SFXPlay.savePlayhead + SECTION: $2551-$2783 ($0233 bytes) ["RNG Functions"] + $2551 = HarvestEntropy + $2557 = HarvestEntropy.loop + $2578 = RNGInit + $25ae = !0 + $25de = RNGInit.complexinit + $25f5 = !1 + $2610 = ShiftHistory + $262d = GetNextHellPiece + $2632 = GetNextTGM1Piece + $2635 = !2 + $264d = !3 + $264f = GetNextTGM2Piece + $2652 = !4 + $266a = !5 + $266c = GetNextNesPiece + $267a = GetNextTGM3Piece + $267d = !6 + $26a0 = !7 + $26a3 = !8 + $26b3 = !9 + $26bd = !10 + $26cb = !11 + $26da = !12 + $26e6 = !13 + $26f2 = !14 + $26fe = !15 + $270a = !16 + $2716 = !17 + $2722 = !18 + $2731 = GetNextPiece + $273f = GetNextPiece.nextpiecejumps + $274e = Next35Piece + $274e = !19 + $2758 = Next7Piece + $275a = !20 + $2764 = NextByte + SECTION: $2784-$2926 ($01a3 bytes) ["Level Functions"] + $2784 = LevelInit + $27d4 = LevelUp + $27f8 = LevelUp.doit + $283c = LevelUp.checknlevel + $286a = !0 + $2882 = !1 + $288b = LevelUp.bellmaybe + $289d = LevelUp.leveljinglemaybe + $28aa = LevelUp.checkspeedup + $28bb = !2 + $28c8 = !3 + $28d9 = !4 + $28e6 = DoSpeedUp + SECTION: $2927-$2a70 ($014a bytes) ["Progress Data"] + $2927 = sProgressData + SECTION: $2a71-$2b50 ($00e0 bytes) ["Score Functions"] + $2a71 = ScoreInit + $2a99 = IncreaseScore + $2ad1 = IncreaseScore.doConvert + $2ad3 = !0 + $2ae9 = IncreaseScore.carry + $2aeb = IncreaseScore.postConvert + $2af8 = !1 + $2aff = IncreaseScore.preAddDigit + $2b27 = IncreaseScore.addDigit + $2b3d = IncreaseScore.nextDigit + SECTION: $2b51-$2c1d ($00cd bytes) ["Input Functions"] + $2b51 = InputInit + $2b63 = GetInput + $2b63 = GetInput.btns + $2b70 = GetInput.readA + $2b74 = GetInput.setA + $2b7f = GetInput.clearA + $2b82 = GetInput.readB + $2b86 = GetInput.setB + $2b91 = GetInput.clearB + $2b94 = GetInput.readSelect + $2b98 = GetInput.setSelect + $2ba3 = GetInput.clearSelect + $2ba6 = GetInput.readStart + $2baa = GetInput.setStart + $2bb5 = GetInput.clearStart + $2bb8 = GetInput.dpad + $2bc5 = GetInput.readUp + $2bc9 = GetInput.setUp + $2bd4 = GetInput.clearUp + $2bd7 = GetInput.readDown + $2bdb = GetInput.setDown + $2be6 = GetInput.clearDown + $2be9 = GetInput.readLeft + $2bed = GetInput.setLeft + $2bf8 = GetInput.clearLeft + $2bfb = GetInput.readRight + $2bff = GetInput.setRight + $2c0a = GetInput.clearRight + $2c0d = GetInput.priorities + $2c18 = GetInput.zero + SECTION: $2c1e-$2cd4 ($00b7 bytes) ["SRAM Functions"] + $2c1e = RestoreSRAM + $2c77 = InitializeSRAM + SECTION: $2cd5-$2d86 ($00b2 bytes) ["Progress Functions"] + $2cd5 = SetProgress + $2ce0 = SetProgress.loop + $2ce4 = SetProgress.correct + $2d0b = SetProgress.wvr_u1 + $2d17 = SetProgress.wvr_u2 + $2d25 = SetProgress.wvr_u3 + $2d31 = SetProgress.wvr_u4 + $2d3f = SetProgress.wvr_u5 + $2d4b = SetProgress.wvr_u6 + $2d59 = SetProgress.wvr_u7 + $2d65 = SetProgress.wvr_u8 + $2d73 = SetProgress.wvr_u9 + $2d7f = SetProgress.wvr_u10 + SECTION: $2d87-$2e1e ($0098 bytes) ["Code Entry Point"] + $2d87 = Main + $2db0 = Main.notgbc + $2db6 = Main.wvr_u1 + $2de3 = EventLoop + $2df9 = EventLoop.eventloopjumps + $2e02 = EventLoopPostHandler + $2e04 = EventLoopPostHandler.wvb_u2 + $2e16 = EventLoopPostHandler.vblankjumps + SECTION: $2e1f-$2ea6 ($0088 bytes) ["Time Functions"] + $2e1f = TimeInit + $2e34 = ResetGameTime + $2e3f = CheckTorikan + $2e56 = CheckTorikan.failure + $2e58 = CheckTorikan.success + $2e5b = HandleTimers + $2e83 = HandleTimers.go + SECTION: $2ea7-$2f13 ($006d bytes) ["Title Function Trampolines"] + $2ea7 = SwitchToTitle + $2eb0 = TitleEventLoopHandler + $2eba = TitleVBlankHandler + $2ec4 = DrawOption6 + SECTION: $2f14-$2f65 ($0052 bytes) ["Tile Functions"] + $2f14 = LoadTitleTiles + $2f32 = LoadGameplayTiles + $2f48 = LoadGameplayTiles.gbc + $2f57 = LoadGameplayTiles.dmg + SECTION: $2f66-$2fa1 ($003c bytes) ["Time Data"] + $2f66 = sFramesToCS + SECTION: $2fa2-$2fcf ($002e bytes) ["Memory Functions"] + $2fa2 = UnsafeMemCopy + $2fab = SafeMemCopy.wvr_u1 + $2fab = SafeMemCopy + $2fba = UnsafeMemSet + $2fc2 = SafeMemSet + $2fc2 = SafeMemSet.wvr_u2 + SECTION: $2fd0-$2ff5 ($0026 bytes) ["Gameplay Function Trampolines"] + $2fd0 = SwitchToGameplay + $2fd9 = SwitchToGameplayBig + $2fe2 = GamePlayEventLoopHandler + $2fec = GamePlayBigEventLoopHandler + SECTION: $2ff6-$3017 ($0022 bytes) ["OAM Functions"] + $2ff6 = CopyOAMHandler + $3002 = ClearOAM + SECTION: $3018-$3030 ($0019 bytes) ["Interrupt Initialization Functions"] + $3018 = IntrInit + $301c = InitializeLCDCInterrupt + SECTION: $3031-$303f ($000f bytes) ["Banking Functions"] + $3031 = BankingInit + SECTION: $3040-$3049 ($000a bytes) ["OAM DMA Code"] + $3040 = OAMDMA + $304a = OAMDMAEnd + EMPTY: $304a-$3fff ($0fb6 bytes) + TOTAL EMPTY: $0fc1 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] - SECTION: $4008-$7283 ($327c bytes) ["Static Global data"] + SECTION: $4008-$7293 ($328c bytes) ["Static Global data"] $4008 = sDMGTSpeedCurve - $4210 = sDMGTSpeedCurveEnd - $4212 = sTGM1SpeedCurve - $4398 = sTGM1SpeedCurveEnd - $439a = sCHILSpeedCurve - $44b8 = sCHILSpeedCurveEnd - $44ba = sTGM3SpeedCurve - $469b = sTGM3SpeedCurveEnd - $469d = sDEATSpeedCurve - $46eb = sDEATSpeedCurveEnd - $46ed = sSHIRSpeedCurve - $4748 = sSHIRSpeedCurveEnd - $474a = sMYCOSpeedCurve - $4882 = sMYCOSpeedCurveEnd - $4884 = sSharedTiles - $4b84 = sTitleTiles - $4b84 = sSharedTilesEnd - $5884 = sTitleTilesEnd - $5884 = sGameplayTilesM - $6584 = sGameplayTilesMEnd - $6584 = sGameplayTilesC - $7284 = sGameplayTilesCEnd - EMPTY: $7284-$7fff ($0d7c bytes) - TOTAL EMPTY: $0d7c bytes + $4203 = sDMGTSpeedCurveEnd + $4205 = sDMGTSpeedCurveSpecialData + $420b = sTGM1SpeedCurve + $4391 = sTGM1SpeedCurveEnd + $4393 = sTGM1SpeedCurveSpecialData + $4399 = sCHILSpeedCurve + $44b7 = sCHILSpeedCurveEnd + $44b9 = sCHILSpeedCurveSpecialData + $44bf = sTGM3SpeedCurve + $46a0 = sTGM3SpeedCurveEnd + $46a2 = sTGM3SpeedCurveSpecialData + $46a8 = sDEATSpeedCurve + $46f6 = sDEATSpeedCurveEnd + $46f8 = sDEATSpeedCurveSpecialData + $46fe = sSHIRSpeedCurve + $4759 = sSHIRSpeedCurveEnd + $475b = sSHIRSpeedCurveSpecialData + $4761 = sMYCOSpeedCurve + $488c = sMYCOSpeedCurveEnd + $488e = sMYCOSpeedCurveSpecialData + $4894 = sSharedTiles + $4b94 = sTitleTiles + $4b94 = sSharedTilesEnd + $5894 = sTitleTilesEnd + $5894 = sGameplayTilesM + $6594 = sGameplayTilesMEnd + $6594 = sGameplayTilesC + $7294 = sGameplayTilesCEnd + EMPTY: $7294-$7fff ($0d6c bytes) + TOTAL EMPTY: $0d6c bytes ROMX bank #2: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_SFX"] @@ -2470,8 +2479,8 @@ HRAM bank #0: TOTAL EMPTY: $0003 bytes SUMMARY: - ROM0: 12310 bytes used / 4074 free - ROMX: 56883 bytes used / 41421 free in 6 banks + ROM0: 12351 bytes used / 4033 free + ROMX: 56899 bytes used / 41405 free in 6 banks SRAM: 14 bytes used / 8178 free in 1 bank WRAM0: 3515 bytes used / 581 free HRAM: 124 bytes used / 3 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index e12300e..7687ad0 100644 Binary files a/bin/DMGTRIS.pocket and b/bin/DMGTRIS.pocket differ diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index 4ef78c2..36c8df9 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -150,207 +150,214 @@ 00:1d2d DecayGradeDelay.gradejumptable 00:1d42 PrepareScore 00:1d55 DrawGradeProgressDMGT -00:1d64 UpdateGradeDMGT -00:1d7e UpdateGradeDMGT.clearrate -00:1d8f UpdateGradeDMGT.combomult -00:1d9c UpdateGradeDMGT.combo10 -00:1dad UpdateGradeDMGT.combo5 -00:1dbe UpdateGradeDMGT.combo1 -00:1dcd UpdateGradeDMGT.prelevel -00:1ddc UpdateGradeDMGT.single -00:1dec UpdateGradeDMGT.double -00:1dfd UpdateGradeDMGT.adddonce -00:1e01 UpdateGradeDMGT.triple -00:1e12 UpdateGradeDMGT.addtonce -00:1e16 UpdateGradeDMGT.tetris -00:1e1a UpdateGradeDMGT.levelmult -00:1e32 UpdateGradeDMGT.mult5 -00:1e39 UpdateGradeDMGT.mult4 -00:1e3f UpdateGradeDMGT.mult3 -00:1e44 UpdateGradeDMGT.mult2 -00:1e48 UpdateGradeDMGT.mult1 -00:1e49 UpdateGradeDMGT.processgrade -00:1e6f UpdateGradeDMGT.increasegrademaybe -00:1e90 UpdateGradeDMGT.gotgm -00:1e9b DecayGradeDMGT -00:1ebf DecayGradeDMGT.nodecay -00:1ec6 DecayGradeDMGT.decay -00:1ed4 UpdateGradeTGM1 -00:1ede UpdateGradeTGM1.trygradeup -00:1ef8 UpdateGradeTGM1.increasegrade -00:1f0a UpdateGradeTGM1.skipjingle -00:1f17 UpdateGradeTGM1.maybegm -00:1f2d UpdateGradeDEAT -00:1f39 UpdateGradeDEAT.notgm -00:1f52 UpdateGradeDEAT.notm -00:1f72 UpdateGradeDEAT.disqualify -00:1f78 UpdateGradeSHIR -00:1fb8 UpdateGradeSHIR.s5torikan -00:1fc8 UpdateGradeSHIR.s10torikan -00:1fd7 UpdateGradeSHIR.disqualify -00:1fdd sTGM1GradeScores -00:1fff sTGM3InternalGradeSystem -00:209f sTGM3GradeBoosts -00:20be sTGM3LevelMultiplier -00:20c2 sTGM3BaselineCOOL -00:20cb sTGM3REGRETConditions -00:20df sDMGTGrading -00:2193 sDMGTGaugeLUT -00:2293 SFXInit -00:22b5 SFXPopQueue -00:22ca SFXPushQueue -00:22db SFXProcessQueue -00:2309 SFXTriggerNoise -00:232f SFXEnqueue -00:2344 SFXEnqueue.findsfx -00:249d SFXKill -00:24c8 SFXPlayNoise -00:24d3 SFXPlayNoise.noisereg -00:24ea SFXPlayNoise.savenoiseplayhead -00:24f3 SFXPlay -00:2501 SFXPlay.play -00:250d SFXPlay.getRegister -00:2521 SFXPlay.savePlayhead -00:252a HarvestEntropy -00:2530 HarvestEntropy.loop -00:2551 RNGInit -00:25b7 RNGInit.complexinit -00:25e9 ShiftHistory -00:2606 GetNextHellPiece -00:260b GetNextTGM1Piece -00:2628 GetNextTGM2Piece -00:2645 GetNextNesPiece -00:2653 GetNextTGM3Piece -00:270a GetNextPiece -00:2718 GetNextPiece.nextpiecejumps -00:2727 Next35Piece -00:2731 Next7Piece -00:273b NextByte -00:275b LevelInit -00:27ab LevelUp -00:27cf LevelUp.doit -00:2813 LevelUp.checknlevel -00:2862 LevelUp.bellmaybe -00:2874 LevelUp.leveljinglemaybe -00:2881 LevelUp.checkspeedup -00:28bd DoSpeedUp -00:28fe sProgressData -00:2a48 ScoreInit -00:2a70 IncreaseScore -00:2aa8 IncreaseScore.doConvert -00:2ac0 IncreaseScore.carry -00:2ac2 IncreaseScore.postConvert -00:2ad6 IncreaseScore.preAddDigit -00:2afe IncreaseScore.addDigit -00:2b14 IncreaseScore.nextDigit -00:2b28 InputInit -00:2b3a GetInput -00:2b3a GetInput.btns -00:2b47 GetInput.readA -00:2b4b GetInput.setA -00:2b56 GetInput.clearA -00:2b59 GetInput.readB -00:2b5d GetInput.setB -00:2b68 GetInput.clearB -00:2b6b GetInput.readSelect -00:2b6f GetInput.setSelect -00:2b7a GetInput.clearSelect -00:2b7d GetInput.readStart -00:2b81 GetInput.setStart -00:2b8c GetInput.clearStart -00:2b8f GetInput.dpad -00:2b9c GetInput.readUp -00:2ba0 GetInput.setUp -00:2bab GetInput.clearUp -00:2bae GetInput.readDown -00:2bb2 GetInput.setDown -00:2bbd GetInput.clearDown -00:2bc0 GetInput.readLeft -00:2bc4 GetInput.setLeft -00:2bcf GetInput.clearLeft -00:2bd2 GetInput.readRight -00:2bd6 GetInput.setRight -00:2be1 GetInput.clearRight -00:2be4 GetInput.priorities -00:2bef GetInput.zero -00:2bf5 RestoreSRAM -00:2c4e InitializeSRAM -00:2cac SetProgress -00:2cb7 SetProgress.loop -00:2cbb SetProgress.correct -00:2ce2 SetProgress.wvr_u1 -00:2cee SetProgress.wvr_u2 -00:2cfc SetProgress.wvr_u3 -00:2d08 SetProgress.wvr_u4 -00:2d16 SetProgress.wvr_u5 -00:2d22 SetProgress.wvr_u6 -00:2d30 SetProgress.wvr_u7 -00:2d3c SetProgress.wvr_u8 -00:2d4a SetProgress.wvr_u9 -00:2d56 SetProgress.wvr_u10 -00:2d5e Main -00:2d87 Main.notgbc -00:2d8d Main.wvr_u1 -00:2dba EventLoop -00:2dd0 EventLoop.eventloopjumps -00:2dd9 EventLoopPostHandler -00:2ddb EventLoopPostHandler.wvb_u2 -00:2ded EventLoopPostHandler.vblankjumps -00:2df6 TimeInit -00:2e0b ResetGameTime -00:2e16 CheckTorikan -00:2e2d CheckTorikan.failure -00:2e2f CheckTorikan.success -00:2e32 HandleTimers -00:2e5a HandleTimers.go -00:2e7e SwitchToTitle -00:2e87 TitleEventLoopHandler -00:2e91 TitleVBlankHandler -00:2e9b DrawOption6 -00:2eeb LoadTitleTiles -00:2f09 LoadGameplayTiles -00:2f1f LoadGameplayTiles.gbc -00:2f2e LoadGameplayTiles.dmg -00:2f3d sFramesToCS -00:2f79 UnsafeMemCopy -00:2f82 SafeMemCopy.wvr_u1 -00:2f82 SafeMemCopy -00:2f91 UnsafeMemSet -00:2f99 SafeMemSet -00:2f99 SafeMemSet.wvr_u2 -00:2fa7 SwitchToGameplay -00:2fb0 SwitchToGameplayBig -00:2fb9 GamePlayEventLoopHandler -00:2fc3 GamePlayBigEventLoopHandler -00:2fcd CopyOAMHandler -00:2fd9 ClearOAM -00:2fef IntrInit -00:2ff3 InitializeLCDCInterrupt -00:3008 BankingInit -00:3017 OAMDMA -00:3021 OAMDMAEnd +00:1d70 UpdateGradeDMGT +00:1d8a UpdateGradeDMGT.clearrate +00:1d9b UpdateGradeDMGT.combomult +00:1da8 UpdateGradeDMGT.combo10 +00:1db9 UpdateGradeDMGT.combo5 +00:1dca UpdateGradeDMGT.combo1 +00:1dd9 UpdateGradeDMGT.prelevel +00:1de8 UpdateGradeDMGT.single +00:1df8 UpdateGradeDMGT.double +00:1e09 UpdateGradeDMGT.adddonce +00:1e0d UpdateGradeDMGT.triple +00:1e1e UpdateGradeDMGT.addtonce +00:1e22 UpdateGradeDMGT.tetris +00:1e26 UpdateGradeDMGT.levelmult +00:1e3e UpdateGradeDMGT.mult5 +00:1e45 UpdateGradeDMGT.mult4 +00:1e4b UpdateGradeDMGT.mult3 +00:1e50 UpdateGradeDMGT.mult2 +00:1e54 UpdateGradeDMGT.mult1 +00:1e55 UpdateGradeDMGT.processgrade +00:1e7e UpdateGradeDMGT.increasegrademaybe +00:1ea2 UpdateGradeDMGT.gotgm +00:1eb0 DecayGradeDMGT +00:1ed4 DecayGradeDMGT.nodecay +00:1edb DecayGradeDMGT.decay +00:1ee9 UpdateGradeTGM1 +00:1ef3 UpdateGradeTGM1.trygradeup +00:1f0d UpdateGradeTGM1.increasegrade +00:1f22 UpdateGradeTGM1.skipjingle +00:1f2f UpdateGradeTGM1.maybegm +00:1f48 UpdateGradeDEAT +00:1f54 UpdateGradeDEAT.notgm +00:1f70 UpdateGradeDEAT.notm +00:1f93 UpdateGradeDEAT.disqualify +00:1f99 UpdateGradeSHIR +00:1fdc UpdateGradeSHIR.s5torikan +00:1fec UpdateGradeSHIR.s10torikan +00:1ffb UpdateGradeSHIR.disqualify +00:2001 sTGM1GradeScores +00:2023 sTGM3InternalGradeSystem +00:20c3 sTGM3GradeBoosts +00:20e2 sTGM3LevelMultiplier +00:20e6 sTGM3BaselineCOOL +00:20ef sTGM3REGRETConditions +00:2103 sDMGTGrading +00:21b7 sDMGTGaugeLUT +00:22b7 SFXInit +00:22d9 SFXPopQueue +00:22ee SFXPushQueue +00:22ff SFXProcessQueue +00:232d SFXTriggerNoise +00:2353 SFXEnqueue +00:2368 SFXEnqueue.findsfx +00:24c2 SFXKill +00:24ef SFXPlayNoise +00:24fa SFXPlayNoise.noisereg +00:2511 SFXPlayNoise.savenoiseplayhead +00:251a SFXPlay +00:2528 SFXPlay.play +00:2534 SFXPlay.getRegister +00:2548 SFXPlay.savePlayhead +00:2551 HarvestEntropy +00:2557 HarvestEntropy.loop +00:2578 RNGInit +00:25de RNGInit.complexinit +00:2610 ShiftHistory +00:262d GetNextHellPiece +00:2632 GetNextTGM1Piece +00:264f GetNextTGM2Piece +00:266c GetNextNesPiece +00:267a GetNextTGM3Piece +00:2731 GetNextPiece +00:273f GetNextPiece.nextpiecejumps +00:274e Next35Piece +00:2758 Next7Piece +00:2764 NextByte +00:2784 LevelInit +00:27d4 LevelUp +00:27f8 LevelUp.doit +00:283c LevelUp.checknlevel +00:288b LevelUp.bellmaybe +00:289d LevelUp.leveljinglemaybe +00:28aa LevelUp.checkspeedup +00:28e6 DoSpeedUp +00:2927 sProgressData +00:2a71 ScoreInit +00:2a99 IncreaseScore +00:2ad1 IncreaseScore.doConvert +00:2ae9 IncreaseScore.carry +00:2aeb IncreaseScore.postConvert +00:2aff IncreaseScore.preAddDigit +00:2b27 IncreaseScore.addDigit +00:2b3d IncreaseScore.nextDigit +00:2b51 InputInit +00:2b63 GetInput +00:2b63 GetInput.btns +00:2b70 GetInput.readA +00:2b74 GetInput.setA +00:2b7f GetInput.clearA +00:2b82 GetInput.readB +00:2b86 GetInput.setB +00:2b91 GetInput.clearB +00:2b94 GetInput.readSelect +00:2b98 GetInput.setSelect +00:2ba3 GetInput.clearSelect +00:2ba6 GetInput.readStart +00:2baa GetInput.setStart +00:2bb5 GetInput.clearStart +00:2bb8 GetInput.dpad +00:2bc5 GetInput.readUp +00:2bc9 GetInput.setUp +00:2bd4 GetInput.clearUp +00:2bd7 GetInput.readDown +00:2bdb GetInput.setDown +00:2be6 GetInput.clearDown +00:2be9 GetInput.readLeft +00:2bed GetInput.setLeft +00:2bf8 GetInput.clearLeft +00:2bfb GetInput.readRight +00:2bff GetInput.setRight +00:2c0a GetInput.clearRight +00:2c0d GetInput.priorities +00:2c18 GetInput.zero +00:2c1e RestoreSRAM +00:2c77 InitializeSRAM +00:2cd5 SetProgress +00:2ce0 SetProgress.loop +00:2ce4 SetProgress.correct +00:2d0b SetProgress.wvr_u1 +00:2d17 SetProgress.wvr_u2 +00:2d25 SetProgress.wvr_u3 +00:2d31 SetProgress.wvr_u4 +00:2d3f SetProgress.wvr_u5 +00:2d4b SetProgress.wvr_u6 +00:2d59 SetProgress.wvr_u7 +00:2d65 SetProgress.wvr_u8 +00:2d73 SetProgress.wvr_u9 +00:2d7f SetProgress.wvr_u10 +00:2d87 Main +00:2db0 Main.notgbc +00:2db6 Main.wvr_u1 +00:2de3 EventLoop +00:2df9 EventLoop.eventloopjumps +00:2e02 EventLoopPostHandler +00:2e04 EventLoopPostHandler.wvb_u2 +00:2e16 EventLoopPostHandler.vblankjumps +00:2e1f TimeInit +00:2e34 ResetGameTime +00:2e3f CheckTorikan +00:2e56 CheckTorikan.failure +00:2e58 CheckTorikan.success +00:2e5b HandleTimers +00:2e83 HandleTimers.go +00:2ea7 SwitchToTitle +00:2eb0 TitleEventLoopHandler +00:2eba TitleVBlankHandler +00:2ec4 DrawOption6 +00:2f14 LoadTitleTiles +00:2f32 LoadGameplayTiles +00:2f48 LoadGameplayTiles.gbc +00:2f57 LoadGameplayTiles.dmg +00:2f66 sFramesToCS +00:2fa2 UnsafeMemCopy +00:2fab SafeMemCopy.wvr_u1 +00:2fab SafeMemCopy +00:2fba UnsafeMemSet +00:2fc2 SafeMemSet +00:2fc2 SafeMemSet.wvr_u2 +00:2fd0 SwitchToGameplay +00:2fd9 SwitchToGameplayBig +00:2fe2 GamePlayEventLoopHandler +00:2fec GamePlayBigEventLoopHandler +00:2ff6 CopyOAMHandler +00:3002 ClearOAM +00:3018 IntrInit +00:301c InitializeLCDCInterrupt +00:3031 BankingInit +00:3040 OAMDMA +00:304a OAMDMAEnd 01:4008 sDMGTSpeedCurve -01:4210 sDMGTSpeedCurveEnd -01:4212 sTGM1SpeedCurve -01:4398 sTGM1SpeedCurveEnd -01:439a sCHILSpeedCurve -01:44b8 sCHILSpeedCurveEnd -01:44ba sTGM3SpeedCurve -01:469b sTGM3SpeedCurveEnd -01:469d sDEATSpeedCurve -01:46eb sDEATSpeedCurveEnd -01:46ed sSHIRSpeedCurve -01:4748 sSHIRSpeedCurveEnd -01:474a sMYCOSpeedCurve -01:4882 sMYCOSpeedCurveEnd -01:4884 sSharedTiles -01:4b84 sTitleTiles -01:4b84 sSharedTilesEnd -01:5884 sTitleTilesEnd -01:5884 sGameplayTilesM -01:6584 sGameplayTilesMEnd -01:6584 sGameplayTilesC -01:7284 sGameplayTilesCEnd +01:4203 sDMGTSpeedCurveEnd +01:4205 sDMGTSpeedCurveSpecialData +01:420b sTGM1SpeedCurve +01:4391 sTGM1SpeedCurveEnd +01:4393 sTGM1SpeedCurveSpecialData +01:4399 sCHILSpeedCurve +01:44b7 sCHILSpeedCurveEnd +01:44b9 sCHILSpeedCurveSpecialData +01:44bf sTGM3SpeedCurve +01:46a0 sTGM3SpeedCurveEnd +01:46a2 sTGM3SpeedCurveSpecialData +01:46a8 sDEATSpeedCurve +01:46f6 sDEATSpeedCurveEnd +01:46f8 sDEATSpeedCurveSpecialData +01:46fe sSHIRSpeedCurve +01:4759 sSHIRSpeedCurveEnd +01:475b sSHIRSpeedCurveSpecialData +01:4761 sMYCOSpeedCurve +01:488c sMYCOSpeedCurveEnd +01:488e sMYCOSpeedCurveSpecialData +01:4894 sSharedTiles +01:4b94 sTitleTiles +01:4b94 sSharedTilesEnd +01:5894 sTitleTilesEnd +01:5894 sGameplayTilesM +01:6594 sGameplayTilesMEnd +01:6594 sGameplayTilesC +01:7294 sGameplayTilesCEnd 02:4008 sSFXPieceI 02:4325 sSFXPieceZ 02:4325 sSFXPieceIEnd diff --git a/src/grading.asm b/src/grading.asm index d2b1f60..9965e3d 100644 --- a/src/grading.asm +++ b/src/grading.asm @@ -346,7 +346,12 @@ PrepareScore: ret DrawGradeProgressDMGT:: - ld hl, sDMGTGaugeLUT + ld a, [wDisplayedGrade] + cp a, GRADE_GM + jr nz, :+ + ld a, $FF + ld [wGradeGauge], a +: ld hl, sDMGTGaugeLUT ld a, [wGradeGauge] ld b, 0 ld c, a @@ -552,6 +557,7 @@ UpdateGradeDMGT:: jr z, .gotgm ; No, play the normal jingle. + call SFXKill ld a, SFX_RANKUP call SFXEnqueue ld a, $0F @@ -578,6 +584,7 @@ UpdateGradeDMGT:: jr z, .gotgm ; No, play the normal jingle. + call SFXKill ld a, SFX_RANKUP call SFXEnqueue ld a, $0F @@ -585,6 +592,7 @@ UpdateGradeDMGT:: ret .gotgm + call SFXKill ld a, SFX_RANKGM call SFXEnqueue ld a, $0F @@ -700,6 +708,7 @@ UpdateGradeTGM1: ldh a, [hCurrentlyPlaying] cp a, SFX_RANKUP jr z, .skipjingle + call SFXKill ld a, SFX_RANKUP call SFXEnqueue @@ -725,6 +734,7 @@ UpdateGradeTGM1: ld [wDisplayedGrade], a ; Sound effect + call SFXKill ld a, SFX_RANKGM jp SFXEnqueue @@ -762,6 +772,7 @@ UpdateGradeDEAT: ld [wDisplayedGrade], a ; Play the jingle. + call SFXKill ld a, SFX_RANKGM call SFXEnqueue @@ -790,6 +801,7 @@ UpdateGradeDEAT: ld [wDisplayedGrade], a ; Play the jingle. + call SFXKill ld a, SFX_RANKUP call SFXEnqueue @@ -850,6 +862,7 @@ UpdateGradeSHIR: ld [wDisplayedGrade], a ; Otherwise, set the grade. ; Play the jingle. + call SFXKill ld a, SFX_RANKUP call SFXEnqueue diff --git a/src/res/other_data.inc b/src/res/other_data.inc index 550b996..c77dfb3 100644 --- a/src/res/other_data.inc +++ b/src/res/other_data.inc @@ -186,15 +186,17 @@ sDMGTSpeedCurve:: ; Speed curve of the game. dw $6666, 6666, $6700 ; Level 6666 db 20, $00 - db 1, 1, 1, 2, 1 - - dw $9999, 9999, $9999 ; Level 9999 - db 20, $00 - db 1, 1, 1, 1, 1 + db 1, 1, 1, 3, 1 sDMGTSpeedCurveEnd:: dw $FFFF ; End. +sDMGTSpeedCurveSpecialData:: + dw $FFFF ; When do we get bones? + dw $2000 ; When do blocks turn invisible? + dw $9999 ; When is the hard kill screen? + + sTGM1SpeedCurve:: dw $0000, 0, $0100 db 1, 4 @@ -319,6 +321,11 @@ sTGM1SpeedCurve:: sTGM1SpeedCurveEnd:: dw $FFFF +sTGM1SpeedCurveSpecialData:: + dw $FFFF ; When do we get bones? + dw $FFFF ; When do blocks turn invisible? + dw $0999 ; When is the hard kill screen? + sCHILSpeedCurve:: dw $0000, 0, $0100 @@ -412,6 +419,11 @@ sCHILSpeedCurve:: sCHILSpeedCurveEnd:: dw $FFFF +sCHILSpeedCurveSpecialData:: + dw $FFFF ; When do we get bones? + dw $FFFF ; When do blocks turn invisible? + dw $9999 ; When is the hard kill screen? + sTGM3SpeedCurve:: dw $0000, 0, $0100 @@ -565,6 +577,11 @@ sTGM3SpeedCurve:: sTGM3SpeedCurveEnd:: dw $FFFF +sTGM3SpeedCurveSpecialData:: + dw $FFFF ; When do we get bones? + dw $1300 ; When do blocks turn invisible? + dw $1500 ; When is the hard kill screen? + sDEATSpeedCurve:: dw $0000, 0, $0100 db 20, $00 @@ -593,6 +610,12 @@ sDEATSpeedCurve:: sDEATSpeedCurveEnd:: dw $FFFF +sDEATSpeedCurveSpecialData:: + dw $FFFF ; When do we get bones? + dw $0999 ; When do blocks turn invisible? + dw $1200 ; When is the hard kill screen? + + sSHIRSpeedCurve:: dw $0000, 0, $0100 db 20, $00 @@ -625,6 +648,12 @@ sSHIRSpeedCurve:: sSHIRSpeedCurveEnd:: dw $FFFF +sSHIRSpeedCurveSpecialData:: + dw $0900 ; When do we get bones? + dw $1300 ; When do blocks turn invisible? + dw $1500 ; When is the hard kill screen? + + sMYCOSpeedCurve:: dw $0000, 0, $0100 db 1, 4 @@ -718,13 +747,15 @@ sMYCOSpeedCurve:: db 20, $00 db 20, 20, 8, 30, 20 - dw $0300, 300, $0400 - db 20, $00 - db 1, 1, 1, 1, 1 - sMYCOSpeedCurveEnd:: dw $FFFF +sMYCOSpeedCurveSpecialData:: + dw $FFFF ; When do we get bones? + dw $FFFF ; When do blocks turn invisible? + dw $0300 ; When is the hard kill screen? + + sSharedTiles:: DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF diff --git a/src/rng.asm b/src/rng.asm index f44fc1d..ba902db 100644 --- a/src/rng.asm +++ b/src/rng.asm @@ -432,6 +432,8 @@ Next35Piece: ; Tries generating bytes until it gets one in [0; 7) Next7Piece: + xor a, a + ret : call NextByte and a, $07 cp a, 7 diff --git a/src/sfx.asm b/src/sfx.asm index f9073f5..68d31a1 100644 --- a/src/sfx.asm +++ b/src/sfx.asm @@ -92,6 +92,8 @@ SFXProcessQueue: xor a, a ldh [hPlayhead], a ldh [hPlayhead+1], a + ld a, $FF + ldh [hCurrentlyPlaying], a ; Music will just repeat. ldh a, [hPlayQueue] @@ -100,10 +102,7 @@ SFXProcessQueue: jr SFXEnqueue ; Try 4 times to pop a sound effect off the queue. -: ld a, $FF - ldh [hCurrentlyPlaying], a - - call SFXPopQueue +: call SFXPopQueue cp a, $FF jr nz, :+ call SFXPopQueue @@ -117,7 +116,7 @@ SFXProcessQueue: ret z ; If we got a valid sound effect, then play it. - jr SFXEnqueue +: jr SFXEnqueue ; Noise effects use their own playhead that can play at the same time as the normal queue. @@ -341,7 +340,7 @@ SFXEnqueue:: ldh [hPlayhead], a ld a, HIGH(sSFXLevelUp) ldh [hPlayhead+1], a - jr SFXPlay + jp SFXPlay ; Other : cp a, SFX_RANKUP @@ -395,6 +394,7 @@ SFXKill:: ldh [hPlayQueue+1], a ldh [hPlayQueue+2], a ldh [hPlayQueue+3], a + ldh [hCurrentlyPlaying], a xor a, a ldh [hPlayhead], a ldh [hPlayhead+1], a