From 190c403e804a74dbc45914c2b552250276e1b83c Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Mon, 6 Nov 2023 11:02:12 +0100 Subject: [PATCH] Add progress bar. --- bin/DMGTRIS.GBC | Bin 131072 -> 131072 bytes bin/DMGTRIS.map | 744 ++++++++++++++------------ bin/DMGTRIS.pocket | Bin 131072 -> 131072 bytes bin/DMGTRIS.sym | 549 ++++++++++--------- src/grading.asm | 42 +- src/progress.asm | 358 +++++++++++++ src/res/gameplay_big_data.inc | 4 +- src/res/gameplay_data.inc | 4 +- src/res/other_data.inc | 56 +- src/res/sources/complete_gameplay.gbr | Bin 39009 -> 39009 bytes src/res/sources/map_gameplay.gbm | Bin 4388 -> 4388 bytes src/res/sources/tiles_gameplay_c.gbr | Bin 39009 -> 39009 bytes src/res/sources/tiles_gameplay_m.gbr | Bin 39009 -> 39009 bytes src/sprites.asm | 132 +++-- src/state_gameplay.asm | 86 +-- 15 files changed, 1232 insertions(+), 743 deletions(-) create mode 100644 src/progress.asm diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index a79a639e3a896bebebc6b207f683f27e74cf5054..7b69c850bb070e3f64a3988c040130d4385f56b5 100644 GIT binary patch delta 6803 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 QnrKQ(ZQ<=aJ+b(I07F+)iU0rr delta 5946 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 P`0{EapI`CIwMqX2{?}3S diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index 1d25b57..19e5919 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -119,7 +119,7 @@ ROM0 bank #0: $1499 = !11 $14e8 = !12 $1537 = !13 - SECTION: $1589-$1af6 ($056e bytes) ["Domain Specific Functions"] + SECTION: $1589-$1b36 ($05ae bytes) ["Domain Specific Functions"] $1589 = ApplyTells $15e6 = ApplyNext $15f4 = ApplyNext.bone @@ -144,272 +144,301 @@ ROM0 bank #0: $1816 = ApplyTime.loop0 $1845 = ApplyTime.loop1 $189a = ApplyNumbers8 - $18ce = ApplyNumbers6 - $18f6 = ApplyNumbers4 - $1912 = SetNumberSpritePositions - $1a19 = GradeRendering - $1a4e = GradeRendering.effect - $1a5e = GradeRendering.noeffect - $1a66 = GradeRendering.drawgrade - $1a6d = GradeRendering.regulargrade - $1a75 = GradeRendering.sgrade - $1a8b = GradeRendering.hisgrade - $1aa1 = GradeRendering.mgrade - $1ab7 = GradeRendering.lettergrade - $1ad4 = GradeRendering.mk - $1ada = GradeRendering.mv - $1ae0 = GradeRendering.mo - $1ae6 = GradeRendering.mm - $1aec = GradeRendering.gmgrade - SECTION: $1af7-$1e06 ($0310 bytes) ["Grading Functions"] - $1af7 = GradeInit - $1b22 = GradeInit.grade9start - $1b27 = GradeInit.end - $1b29 = UpdateGrade - $1b37 = UpdateGrade.gradejumptable - $1b49 = DecayGradeProcess - $1b57 = DecayGradeProcess.gradejumptable - $1b69 = DecayGradeDelay - $1b77 = DecayGradeDelay.gradejumptable - $1b89 = PrepareScore - $1b9c = UpdateGradeDMGT - $1bb2 = UpdateGradeDMGT.clearrate - $1bc3 = UpdateGradeDMGT.combomult - $1bd0 = UpdateGradeDMGT.combo10 - $1be1 = UpdateGradeDMGT.combo5 - $1bf2 = UpdateGradeDMGT.combo1 - $1c01 = UpdateGradeDMGT.prelevel - $1c10 = UpdateGradeDMGT.single - $1c20 = UpdateGradeDMGT.double - $1c31 = UpdateGradeDMGT.adddonce - $1c35 = UpdateGradeDMGT.triple - $1c46 = UpdateGradeDMGT.addtonce - $1c4a = UpdateGradeDMGT.tetris - $1c4e = UpdateGradeDMGT.levelmult - $1c66 = UpdateGradeDMGT.mult5 - $1c6d = UpdateGradeDMGT.mult4 - $1c73 = UpdateGradeDMGT.mult3 - $1c78 = UpdateGradeDMGT.mult2 - $1c7c = UpdateGradeDMGT.mult1 - $1c7d = UpdateGradeDMGT.processgrade - $1ca1 = UpdateGradeDMGT.increasegrademaybe - $1cc2 = UpdateGradeDMGT.gotgm - $1ccd = DecayGradeDMGT - $1ced = DecayGradeDMGT.nodecay - $1cf2 = DecayGradeDMGT.decay - $1cfe = UpdateGradeTGM1 - $1d08 = UpdateGradeTGM1.trygradeup - $1d22 = UpdateGradeTGM1.increasegrade - $1d34 = UpdateGradeTGM1.skipjingle - $1d41 = UpdateGradeTGM1.maybegm - $1d57 = UpdateGradeDEAT - $1d63 = UpdateGradeDEAT.notgm - $1d7c = UpdateGradeDEAT.notm - $1d9c = UpdateGradeDEAT.disqualify - $1da2 = UpdateGradeSHIR - $1de2 = UpdateGradeSHIR.s5torikan - $1df2 = UpdateGradeSHIR.s10torikan - $1e01 = UpdateGradeSHIR.disqualify - SECTION: $1e07-$209d ($0297 bytes) ["SFX Functions"] - $1e07 = SFXInit - $1e29 = SFXPopQueue - $1e3e = SFXPushQueue - $1e4f = SFXProcessQueue - $1e5c = !0 - $1e7d = SFXTriggerNoise - $1e8a = !1 - $1e97 = !2 - $1ea3 = SFXEnqueue - $1eb8 = SFXEnqueue.findsfx - $1ecd = !3 - $1edd = !4 - $1eed = !5 - $1efd = !6 - $1f0d = !7 - $1f1d = !8 - $1f2d = !9 - $1f3d = !10 - $1f4d = !11 - $1f5d = !12 - $1f6d = !13 - $1f7d = !14 - $1f8d = !15 - $1f9d = !16 - $1fad = !17 - $1fbc = !18 - $1fcb = !19 - $1fda = !20 - $1fe8 = !21 - $1ff6 = !22 - $2004 = !23 - $2011 = SFXKill - $203c = SFXPlayNoise - $2047 = SFXPlayNoise.noisereg - $2054 = !24 - $205e = SFXPlayNoise.savenoiseplayhead - $2067 = SFXPlay - $2072 = !25 - $2075 = SFXPlay.play - $2081 = SFXPlay.getRegister - $208b = !26 - $2095 = SFXPlay.savePlayhead - SECTION: $209e-$228b ($01ee bytes) ["RNG Functions"] - $209e = RNGInit - $20ce = !0 - $20e9 = RNGInit.complexinit - $2100 = !1 - $211a = ShiftHistory - $2137 = GetNextHellPiece - $213c = GetNextTGM1Piece - $213f = !2 - $2157 = !3 - $2159 = GetNextTGM2Piece - $215c = !4 - $2174 = !5 - $2176 = GetNextNesPiece - $2184 = GetNextTGM3Piece - $2187 = !6 - $21aa = !7 - $21ad = !8 - $21bd = !9 - $21c7 = !10 - $21d5 = !11 - $21e4 = !12 - $21f0 = !13 - $21fc = !14 - $2208 = !15 - $2214 = !16 - $2220 = !17 - $222c = !18 - $223b = GetNextPiece - $2249 = GetNextPiece.nextpiecejumps - $2258 = Next35Piece - $2258 = !19 - $2262 = Next7Piece - $2262 = !20 - $226c = NextByte - SECTION: $228c-$2441 ($01b6 bytes) ["Grading Data"] - $228c = sTGM1GradeScores - $22ae = sTGM3InternalGradeSystem - $234e = sTGM3GradeBoosts - $236d = sTGM3LevelMultiplier - $2371 = sTGM3BaselineCOOL - $237a = sTGM3REGRETConditions - $238e = sDMGTGrading - SECTION: $2442-$25e4 ($01a3 bytes) ["Level Functions"] - $2442 = LevelInit - $2492 = LevelUp - $24b6 = LevelUp.doit - $24fa = LevelUp.checknlevel - $2528 = !0 - $2540 = !1 - $2549 = LevelUp.bellmaybe - $255b = LevelUp.leveljinglemaybe - $2568 = LevelUp.checkspeedup - $2579 = !2 - $2586 = !3 - $2597 = !4 - $25a4 = DoSpeedUp - SECTION: $25e5-$26c4 ($00e0 bytes) ["Score Functions"] - $25e5 = ScoreInit - $260d = IncreaseScore - $2645 = IncreaseScore.doConvert - $2647 = !0 - $265d = IncreaseScore.carry - $265f = IncreaseScore.postConvert - $266c = !1 - $2673 = IncreaseScore.preAddDigit - $269b = IncreaseScore.addDigit - $26b1 = IncreaseScore.nextDigit - SECTION: $26c5-$2791 ($00cd bytes) ["Input Functions"] - $26c5 = InputInit - $26d7 = GetInput - $26d7 = GetInput.btns - $26e4 = GetInput.readA - $26e8 = GetInput.setA - $26f3 = GetInput.clearA - $26f6 = GetInput.readB - $26fa = GetInput.setB - $2705 = GetInput.clearB - $2708 = GetInput.readSelect - $270c = GetInput.setSelect - $2717 = GetInput.clearSelect - $271a = GetInput.readStart - $271e = GetInput.setStart - $2729 = GetInput.clearStart - $272c = GetInput.dpad - $2739 = GetInput.readUp - $273d = GetInput.setUp - $2748 = GetInput.clearUp - $274b = GetInput.readDown - $274f = GetInput.setDown - $275a = GetInput.clearDown - $275d = GetInput.readLeft - $2761 = GetInput.setLeft - $276c = GetInput.clearLeft - $276f = GetInput.readRight - $2773 = GetInput.setRight - $277e = GetInput.clearRight - $2781 = GetInput.priorities - $278c = GetInput.zero - SECTION: $2792-$2848 ($00b7 bytes) ["SRAM Functions"] - $2792 = RestoreSRAM - $27eb = InitializeSRAM - SECTION: $2849-$28ec ($00a4 bytes) ["Code Entry Point"] - $2849 = Main - $285e = Main.wvr_u1 - $2867 = !0 - $2877 = Main.notgbc - $28a6 = Main.wvb_u2 - $28ab = !1 - $28b1 = EventLoop - $28c7 = EventLoop.eventloopjumps - $28d0 = EventLoopPostHandler - $28d2 = EventLoopPostHandler.wvb_u3 - $28e4 = EventLoopPostHandler.vblankjumps - SECTION: $28ed-$2974 ($0088 bytes) ["Time Functions"] - $28ed = TimeInit - $2902 = ResetGameTime - $290d = CheckTorikan - $2924 = CheckTorikan.failure - $2926 = CheckTorikan.success - $2929 = HandleTimers - $2951 = HandleTimers.go - SECTION: $2975-$29e2 ($006e bytes) ["Title Function Trampolines"] - $2975 = SwitchToTitle - $297f = TitleEventLoopHandler - $2989 = TitleVBlankHandler - $2993 = DrawOption6 - SECTION: $29e3-$2a34 ($0052 bytes) ["Tile Functions"] - $29e3 = LoadTitleTiles - $2a01 = LoadGameplayTiles - $2a17 = LoadGameplayTiles.gbc - $2a26 = LoadGameplayTiles.dmg - SECTION: $2a35-$2a70 ($003c bytes) ["Time Data"] - $2a35 = sFramesToCS - SECTION: $2a71-$2a9e ($002e bytes) ["Memory Functions"] - $2a71 = UnsafeMemCopy - $2a7a = SafeMemCopy.wvr_u1 - $2a7a = SafeMemCopy - $2a89 = UnsafeMemSet - $2a91 = SafeMemSet - $2a91 = SafeMemSet.wvr_u2 - SECTION: $2a9f-$2ac6 ($0028 bytes) ["Gameplay Function Trampolines"] - $2a9f = SwitchToGameplay - $2aa9 = SwitchToGameplayBig - $2ab3 = GamePlayEventLoopHandler - $2abd = GamePlayBigEventLoopHandler - SECTION: $2ac7-$2ae8 ($0022 bytes) ["OAM Functions"] - $2ac7 = CopyOAMHandler - $2ad3 = ClearOAM - SECTION: $2ae9-$2b01 ($0019 bytes) ["Interrupt Initialization Functions"] - $2ae9 = IntrInit - $2aed = InitializeLCDCInterrupt - SECTION: $2b02-$2b0b ($000a bytes) ["OAM DMA Code"] - $2b02 = OAMDMA - $2b0c = OAMDMAEnd - EMPTY: $2b0c-$3fff ($14f4 bytes) - TOTAL EMPTY: $14ff bytes + $18e7 = ApplyNumbers8.one + $18ed = ApplyNumbers8.two + $18f3 = ApplyNumbers8.three + $18f9 = ApplyNumbers8.four + $18ff = ApplyNumbers8.five + $1905 = ApplyNumbers8.six + $190b = ApplyNumbers8.seven + $1911 = ApplyNumbers8.eight + $1916 = ApplyNumbers4 + $193b = ApplyNumbers4.one + $1941 = ApplyNumbers4.two + $1947 = ApplyNumbers4.three + $194d = ApplyNumbers4.four + $1952 = SetNumberSpritePositions + $1a59 = GradeRendering + $1a8e = GradeRendering.effect + $1a9e = GradeRendering.noeffect + $1aa6 = GradeRendering.drawgrade + $1aad = GradeRendering.regulargrade + $1ab5 = GradeRendering.sgrade + $1acb = GradeRendering.hisgrade + $1ae1 = GradeRendering.mgrade + $1af7 = GradeRendering.lettergrade + $1b14 = GradeRendering.mk + $1b1a = GradeRendering.mv + $1b20 = GradeRendering.mo + $1b26 = GradeRendering.mm + $1b2c = GradeRendering.gmgrade + SECTION: $1b37-$1e63 ($032d bytes) ["Grading Functions"] + $1b37 = GradeInit + $1b62 = GradeInit.grade9start + $1b67 = GradeInit.end + $1b69 = UpdateGrade + $1b77 = UpdateGrade.gradejumptable + $1b89 = DecayGradeProcess + $1b97 = DecayGradeProcess.gradejumptable + $1ba9 = DecayGradeDelay + $1bb7 = DecayGradeDelay.gradejumptable + $1bc9 = PrepareScore + $1bdc = DrawGradeProgressDMGT + $1beb = UpdateGradeDMGT + $1c05 = UpdateGradeDMGT.clearrate + $1c16 = UpdateGradeDMGT.combomult + $1c23 = UpdateGradeDMGT.combo10 + $1c34 = UpdateGradeDMGT.combo5 + $1c45 = UpdateGradeDMGT.combo1 + $1c54 = UpdateGradeDMGT.prelevel + $1c63 = UpdateGradeDMGT.single + $1c73 = UpdateGradeDMGT.double + $1c84 = UpdateGradeDMGT.adddonce + $1c88 = UpdateGradeDMGT.triple + $1c99 = UpdateGradeDMGT.addtonce + $1c9d = UpdateGradeDMGT.tetris + $1ca1 = UpdateGradeDMGT.levelmult + $1cb9 = UpdateGradeDMGT.mult5 + $1cc0 = UpdateGradeDMGT.mult4 + $1cc6 = UpdateGradeDMGT.mult3 + $1ccb = UpdateGradeDMGT.mult2 + $1ccf = UpdateGradeDMGT.mult1 + $1cd0 = UpdateGradeDMGT.processgrade + $1cf6 = UpdateGradeDMGT.increasegrademaybe + $1d17 = UpdateGradeDMGT.gotgm + $1d22 = DecayGradeDMGT + $1d46 = DecayGradeDMGT.nodecay + $1d4d = DecayGradeDMGT.decay + $1d5b = UpdateGradeTGM1 + $1d65 = UpdateGradeTGM1.trygradeup + $1d7f = UpdateGradeTGM1.increasegrade + $1d91 = UpdateGradeTGM1.skipjingle + $1d9e = UpdateGradeTGM1.maybegm + $1db4 = UpdateGradeDEAT + $1dc0 = UpdateGradeDEAT.notgm + $1dd9 = UpdateGradeDEAT.notm + $1df9 = UpdateGradeDEAT.disqualify + $1dff = UpdateGradeSHIR + $1e3f = UpdateGradeSHIR.s5torikan + $1e4f = UpdateGradeSHIR.s10torikan + $1e5e = UpdateGradeSHIR.disqualify + SECTION: $1e64-$2119 ($02b6 bytes) ["Grading Data"] + $1e64 = sTGM1GradeScores + $1e86 = sTGM3InternalGradeSystem + $1f26 = sTGM3GradeBoosts + $1f45 = sTGM3LevelMultiplier + $1f49 = sTGM3BaselineCOOL + $1f52 = sTGM3REGRETConditions + $1f66 = sDMGTGrading + $201a = sDMGTGaugeLUT + SECTION: $211a-$23b0 ($0297 bytes) ["SFX Functions"] + $211a = SFXInit + $213c = SFXPopQueue + $2151 = SFXPushQueue + $2162 = SFXProcessQueue + $216f = !0 + $2190 = SFXTriggerNoise + $219d = !1 + $21aa = !2 + $21b6 = SFXEnqueue + $21cb = SFXEnqueue.findsfx + $21e0 = !3 + $21f0 = !4 + $2200 = !5 + $2210 = !6 + $2220 = !7 + $2230 = !8 + $2240 = !9 + $2250 = !10 + $2260 = !11 + $2270 = !12 + $2280 = !13 + $2290 = !14 + $22a0 = !15 + $22b0 = !16 + $22c0 = !17 + $22cf = !18 + $22de = !19 + $22ed = !20 + $22fb = !21 + $2309 = !22 + $2317 = !23 + $2324 = SFXKill + $234f = SFXPlayNoise + $235a = SFXPlayNoise.noisereg + $2367 = !24 + $2371 = SFXPlayNoise.savenoiseplayhead + $237a = SFXPlay + $2385 = !25 + $2388 = SFXPlay.play + $2394 = SFXPlay.getRegister + $239e = !26 + $23a8 = SFXPlay.savePlayhead + SECTION: $23b1-$259e ($01ee bytes) ["RNG Functions"] + $23b1 = RNGInit + $23e1 = !0 + $23fc = RNGInit.complexinit + $2413 = !1 + $242d = ShiftHistory + $244a = GetNextHellPiece + $244f = GetNextTGM1Piece + $2452 = !2 + $246a = !3 + $246c = GetNextTGM2Piece + $246f = !4 + $2487 = !5 + $2489 = GetNextNesPiece + $2497 = GetNextTGM3Piece + $249a = !6 + $24bd = !7 + $24c0 = !8 + $24d0 = !9 + $24da = !10 + $24e8 = !11 + $24f7 = !12 + $2503 = !13 + $250f = !14 + $251b = !15 + $2527 = !16 + $2533 = !17 + $253f = !18 + $254e = GetNextPiece + $255c = GetNextPiece.nextpiecejumps + $256b = Next35Piece + $256b = !19 + $2575 = Next7Piece + $2575 = !20 + $257f = NextByte + SECTION: $259f-$2741 ($01a3 bytes) ["Level Functions"] + $259f = LevelInit + $25ef = LevelUp + $2613 = LevelUp.doit + $2657 = LevelUp.checknlevel + $2685 = !0 + $269d = !1 + $26a6 = LevelUp.bellmaybe + $26b8 = LevelUp.leveljinglemaybe + $26c5 = LevelUp.checkspeedup + $26d6 = !2 + $26e3 = !3 + $26f4 = !4 + $2701 = DoSpeedUp + SECTION: $2742-$288b ($014a bytes) ["Progress Data"] + $2742 = sProgressData + SECTION: $288c-$296b ($00e0 bytes) ["Score Functions"] + $288c = ScoreInit + $28b4 = IncreaseScore + $28ec = IncreaseScore.doConvert + $28ee = !0 + $2904 = IncreaseScore.carry + $2906 = IncreaseScore.postConvert + $2913 = !1 + $291a = IncreaseScore.preAddDigit + $2942 = IncreaseScore.addDigit + $2958 = IncreaseScore.nextDigit + SECTION: $296c-$2a38 ($00cd bytes) ["Input Functions"] + $296c = InputInit + $297e = GetInput + $297e = GetInput.btns + $298b = GetInput.readA + $298f = GetInput.setA + $299a = GetInput.clearA + $299d = GetInput.readB + $29a1 = GetInput.setB + $29ac = GetInput.clearB + $29af = GetInput.readSelect + $29b3 = GetInput.setSelect + $29be = GetInput.clearSelect + $29c1 = GetInput.readStart + $29c5 = GetInput.setStart + $29d0 = GetInput.clearStart + $29d3 = GetInput.dpad + $29e0 = GetInput.readUp + $29e4 = GetInput.setUp + $29ef = GetInput.clearUp + $29f2 = GetInput.readDown + $29f6 = GetInput.setDown + $2a01 = GetInput.clearDown + $2a04 = GetInput.readLeft + $2a08 = GetInput.setLeft + $2a13 = GetInput.clearLeft + $2a16 = GetInput.readRight + $2a1a = GetInput.setRight + $2a25 = GetInput.clearRight + $2a28 = GetInput.priorities + $2a33 = GetInput.zero + SECTION: $2a39-$2aef ($00b7 bytes) ["SRAM Functions"] + $2a39 = RestoreSRAM + $2a92 = InitializeSRAM + SECTION: $2af0-$2ba1 ($00b2 bytes) ["Progress Functions"] + $2af0 = SetProgress + $2afb = SetProgress.loop + $2aff = SetProgress.correct + $2b26 = SetProgress.wvr_u1 + $2b32 = SetProgress.wvr_u2 + $2b40 = SetProgress.wvr_u3 + $2b4c = SetProgress.wvr_u4 + $2b5a = SetProgress.wvr_u5 + $2b66 = SetProgress.wvr_u6 + $2b74 = SetProgress.wvr_u7 + $2b80 = SetProgress.wvr_u8 + $2b8e = SetProgress.wvr_u9 + $2b9a = SetProgress.wvr_u10 + SECTION: $2ba2-$2c45 ($00a4 bytes) ["Code Entry Point"] + $2ba2 = Main + $2bb7 = Main.wvr_u1 + $2bc0 = !0 + $2bd0 = Main.notgbc + $2bff = Main.wvb_u2 + $2c04 = !1 + $2c0a = EventLoop + $2c20 = EventLoop.eventloopjumps + $2c29 = EventLoopPostHandler + $2c2b = EventLoopPostHandler.wvb_u3 + $2c3d = EventLoopPostHandler.vblankjumps + SECTION: $2c46-$2ccd ($0088 bytes) ["Time Functions"] + $2c46 = TimeInit + $2c5b = ResetGameTime + $2c66 = CheckTorikan + $2c7d = CheckTorikan.failure + $2c7f = CheckTorikan.success + $2c82 = HandleTimers + $2caa = HandleTimers.go + SECTION: $2cce-$2d3b ($006e bytes) ["Title Function Trampolines"] + $2cce = SwitchToTitle + $2cd8 = TitleEventLoopHandler + $2ce2 = TitleVBlankHandler + $2cec = DrawOption6 + SECTION: $2d3c-$2d8d ($0052 bytes) ["Tile Functions"] + $2d3c = LoadTitleTiles + $2d5a = LoadGameplayTiles + $2d70 = LoadGameplayTiles.gbc + $2d7f = LoadGameplayTiles.dmg + SECTION: $2d8e-$2dc9 ($003c bytes) ["Time Data"] + $2d8e = sFramesToCS + SECTION: $2dca-$2df7 ($002e bytes) ["Memory Functions"] + $2dca = UnsafeMemCopy + $2dd3 = SafeMemCopy.wvr_u1 + $2dd3 = SafeMemCopy + $2de2 = UnsafeMemSet + $2dea = SafeMemSet + $2dea = SafeMemSet.wvr_u2 + SECTION: $2df8-$2e1f ($0028 bytes) ["Gameplay Function Trampolines"] + $2df8 = SwitchToGameplay + $2e02 = SwitchToGameplayBig + $2e0c = GamePlayEventLoopHandler + $2e16 = GamePlayBigEventLoopHandler + SECTION: $2e20-$2e41 ($0022 bytes) ["OAM Functions"] + $2e20 = CopyOAMHandler + $2e2c = ClearOAM + SECTION: $2e42-$2e5a ($0019 bytes) ["Interrupt Initialization Functions"] + $2e42 = IntrInit + $2e46 = InitializeLCDCInterrupt + SECTION: $2e5b-$2e64 ($000a bytes) ["OAM DMA Code"] + $2e5b = OAMDMA + $2e65 = OAMDMAEnd + EMPTY: $2e65-$3fff ($119b bytes) + TOTAL EMPTY: $11a6 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -922,7 +951,7 @@ ROMX bank #5: $5310 = ClearLines.r_u48 $5310 = ClearLines.fixgarbo $5313 = ClearLines.fixgarboloop - SECTION: $531d-$6146 ($0e2a bytes) ["Gameplay Function Banked"] + SECTION: $531d-$610f ($0df3 bytes) ["Gameplay Function Banked"] $531d = SwitchToGameplayB $5323 = SwitchToGameplayB.wvr_u1 $532c = SwitchToGameplayB.loadtilemap @@ -1380,35 +1409,35 @@ ROMX bank #5: $5fed = GamePlayEventLoopHandlerB.noretry $5ffa = GamePlayEventLoopHandlerB.pauseMode $6012 = GamePlayEventLoopHandlerB.noqr - $6022 = GamePlayEventLoopHandlerB.nounpause - $60a6 = GamePlayEventLoopHandlerB.drawStaticInfo - $60d7 = DoHold - $60db = DoHold.checkIRSA - $60e2 = DoHold.ldb3 - $60ee = DoHold.lda3 - $60f8 = DoHold.cp3 - $6106 = DoHold.checkIRSB - $610d = DoHold.lda4 - $6119 = DoHold.ldb4 - $6123 = DoHold.cp4 - $6131 = DoHold.noRotation - $613c = DoHold.doHoldOperation - SECTION: $6147-$655c ($0416 bytes) ["Gameplay Static Data"] - $6147 = sLeftDasSlam - $614d = sRightDasSlam - $6153 = sLeady - $615d = sGo - $6167 = sPause - $617b = sPieceXOffsets - $6197 = sPieceYOffsets - $61b3 = sPieceFastRotationStates - $6223 = sPieceRotationStates - $6293 = sTGM3Bag - $62b6 = sTGM3Droughts - $62bd = sGameplayTileMap - $655d = sGameplayTileMapEnd - EMPTY: $655d-$7fff ($1aa3 bytes) - TOTAL EMPTY: $1aa3 bytes + $6027 = GamePlayEventLoopHandlerB.nounpause + $606f = GamePlayEventLoopHandlerB.drawStaticInfo + $60a0 = DoHold + $60a4 = DoHold.checkIRSA + $60ab = DoHold.ldb3 + $60b7 = DoHold.lda3 + $60c1 = DoHold.cp3 + $60cf = DoHold.checkIRSB + $60d6 = DoHold.lda4 + $60e2 = DoHold.ldb4 + $60ec = DoHold.cp4 + $60fa = DoHold.noRotation + $6105 = DoHold.doHoldOperation + SECTION: $6110-$6539 ($042a bytes) ["Gameplay Static Data"] + $6110 = sLeftDasSlam + $6116 = sRightDasSlam + $611c = sLeady + $6126 = sGo + $6130 = sPause + $6158 = sPieceXOffsets + $6174 = sPieceYOffsets + $6190 = sPieceFastRotationStates + $6200 = sPieceRotationStates + $6270 = sTGM3Bag + $6293 = sTGM3Droughts + $629a = sGameplayTileMap + $653a = sGameplayTileMapEnd + EMPTY: $653a-$7fff ($1ac6 bytes) + TOTAL EMPTY: $1ac6 bytes ROMX bank #6: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_GAMEPLAY_BIG"] @@ -1707,7 +1736,7 @@ ROMX bank #6: $5262 = BigClearLines.fixgarbo $5265 = BigClearLines.fixgarboloop $5283 = BigWidenField - SECTION: $55d3-$6471 ($0e9f bytes) ["Gameplay Function Big Banked"] + SECTION: $55d3-$6446 ($0e74 bytes) ["Gameplay Function Big Banked"] $55d3 = SwitchToGameplayBigB $55d9 = SwitchToGameplayBigB.wvr_u214 $55e2 = SwitchToGameplayBigB.loadtilemap @@ -2185,33 +2214,33 @@ ROMX bank #6: $6325 = GamePlayBigEventLoopHandlerB.noretry $6332 = GamePlayBigEventLoopHandlerB.pauseMode $634a = GamePlayBigEventLoopHandlerB.noqr - $6359 = GamePlayBigEventLoopHandlerB.nounpause - $63d1 = GamePlayBigEventLoopHandlerB.drawStaticInfo - $6402 = BigDoHold - $6406 = BigDoHold.checkIRSA - $640d = BigDoHold.ldb3 - $6419 = BigDoHold.lda3 - $6423 = BigDoHold.cp3 - $6431 = BigDoHold.checkIRSB - $6438 = BigDoHold.lda4 - $6444 = BigDoHold.ldb4 - $644e = BigDoHold.cp4 - $645c = BigDoHold.noRotation - $6467 = BigDoHold.doHoldOperation - SECTION: $6472-$685d ($03ec bytes) ["Gameplay Big Static Data"] - $6472 = sBigLeftDasSlam - $6478 = sBigRightDasSlam - $647e = sBigLeady - $6488 = sBigGo - $6492 = sBigPause - $64a6 = sBigPieceXOffsets - $64c2 = sBigPieceYOffsets - $64de = sBigPieceFastRotationStates - $654e = sBigPieceRotationStates - $65be = sBigGameplayTileMap - $685e = sBigGameplayTileMapEnd - EMPTY: $685e-$7fff ($17a2 bytes) - TOTAL EMPTY: $17a2 bytes + $635e = GamePlayBigEventLoopHandlerB.nounpause + $63a6 = GamePlayBigEventLoopHandlerB.drawStaticInfo + $63d7 = BigDoHold + $63db = BigDoHold.checkIRSA + $63e2 = BigDoHold.ldb3 + $63ee = BigDoHold.lda3 + $63f8 = BigDoHold.cp3 + $6406 = BigDoHold.checkIRSB + $640d = BigDoHold.lda4 + $6419 = BigDoHold.ldb4 + $6423 = BigDoHold.cp4 + $6431 = BigDoHold.noRotation + $643c = BigDoHold.doHoldOperation + SECTION: $6447-$6846 ($0400 bytes) ["Gameplay Big Static Data"] + $6447 = sBigLeftDasSlam + $644d = sBigRightDasSlam + $6453 = sBigLeady + $645d = sBigGo + $6467 = sBigPause + $648f = sBigPieceXOffsets + $64ab = sBigPieceYOffsets + $64c7 = sBigPieceFastRotationStates + $6537 = sBigPieceRotationStates + $65a7 = sBigGameplayTileMap + $6847 = sBigGameplayTileMapEnd + EMPTY: $6847-$7fff ($17b9 bytes) + TOTAL EMPTY: $17b9 bytes SRAM bank #0: SECTION: $a000-$a00d ($000e bytes) ["Persistent Globals"] @@ -2309,30 +2338,41 @@ WRAM0 bank #0: $cd9a = wDRate $cd9b = wTRate $cd9c = wQRate - SECTION: $cd9d-$cda5 ($0009 bytes) ["Globals"] - $cd9d = wSwapABState - $cd9e = wRNGModeState - $cd9f = wRotModeState - $cda0 = wDropModeState - $cda1 = wSpeedCurveState - $cda2 = wAlways20GState - $cda3 = wInitialA - $cda4 = wInitialB - $cda5 = wInitialC - SECTION: $cda6-$cda9 ($0004 bytes) ["Banking Variables"] - $cda6 = wBankBackup - SECTION: $cdaa-$cdac ($0003 bytes) ["GBC Variables"] - $cdaa = wOuterReps - $cdab = wInnerReps - $cdac = wTitlePal - SECTION: $cdad-$cdaf ($0003 bytes) ["Time Variables"] - $cdad = wMinutes - $cdae = wSeconds - $cdaf = wFrames - SECTION: $cdb0-$cdb0 ($0001 byte) ["Title Variables"] - $cdb0 = wSelected - EMPTY: $cdb1-$cfff ($024f bytes) - TOTAL EMPTY: $024f bytes + SECTION: $cd9d-$cda6 ($000a bytes) ["Progress Variables"] + $cd9d = wProgress0B1 + $cd9e = wProgress0B2 + $cd9f = wProgress1B1 + $cda0 = wProgress1B2 + $cda1 = wProgress2B1 + $cda2 = wProgress2B2 + $cda3 = wProgress3B1 + $cda4 = wProgress3B2 + $cda5 = wProgress4B1 + $cda6 = wProgress4B2 + SECTION: $cda7-$cdaf ($0009 bytes) ["Globals"] + $cda7 = wSwapABState + $cda8 = wRNGModeState + $cda9 = wRotModeState + $cdaa = wDropModeState + $cdab = wSpeedCurveState + $cdac = wAlways20GState + $cdad = wInitialA + $cdae = wInitialB + $cdaf = wInitialC + SECTION: $cdb0-$cdb3 ($0004 bytes) ["Banking Variables"] + $cdb0 = wBankBackup + SECTION: $cdb4-$cdb6 ($0003 bytes) ["GBC Variables"] + $cdb4 = wOuterReps + $cdb5 = wInnerReps + $cdb6 = wTitlePal + SECTION: $cdb7-$cdb9 ($0003 bytes) ["Time Variables"] + $cdb7 = wMinutes + $cdb8 = wSeconds + $cdb9 = wFrames + SECTION: $cdba-$cdba ($0001 byte) ["Title Variables"] + $cdba = wSelected + EMPTY: $cdbb-$cfff ($0245 bytes) + TOTAL EMPTY: $0245 bytes HRAM bank #0: SECTION: $ff80-$ff9a ($001b bytes) ["High Field Variables"] @@ -2423,8 +2463,8 @@ HRAM bank #0: TOTAL EMPTY: $0003 bytes SUMMARY: - ROM0: 11009 bytes used / 5375 free - ROMX: 56581 bytes used / 41723 free in 6 banks + ROM0: 11866 bytes used / 4518 free + ROMX: 56523 bytes used / 41781 free in 6 banks SRAM: 14 bytes used / 8178 free in 1 bank - WRAM0: 3505 bytes used / 591 free + WRAM0: 3515 bytes used / 581 free HRAM: 124 bytes used / 3 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index 9f56d2f2a781ddbb40ccc1fc8db7a801985b0be3..87c76700129566919eab9d1a91223ebde3c58116 100644 GIT binary patch delta 6804 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 Qi^iMMQd@XCPmeGDAE7K)PXGV_ delta 5947 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 TuD@3oz?WAC`TUAsmL~lhuoqI7 diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index 7c80afd..5b8f76e 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -109,195 +109,222 @@ 00:1816 ApplyTime.loop0 00:1845 ApplyTime.loop1 00:189a ApplyNumbers8 -00:18ce ApplyNumbers6 -00:18f6 ApplyNumbers4 -00:1912 SetNumberSpritePositions -00:1a19 GradeRendering -00:1a4e GradeRendering.effect -00:1a5e GradeRendering.noeffect -00:1a66 GradeRendering.drawgrade -00:1a6d GradeRendering.regulargrade -00:1a75 GradeRendering.sgrade -00:1a8b GradeRendering.hisgrade -00:1aa1 GradeRendering.mgrade -00:1ab7 GradeRendering.lettergrade -00:1ad4 GradeRendering.mk -00:1ada GradeRendering.mv -00:1ae0 GradeRendering.mo -00:1ae6 GradeRendering.mm -00:1aec GradeRendering.gmgrade -00:1af7 GradeInit -00:1b22 GradeInit.grade9start -00:1b27 GradeInit.end -00:1b29 UpdateGrade -00:1b37 UpdateGrade.gradejumptable -00:1b49 DecayGradeProcess -00:1b57 DecayGradeProcess.gradejumptable -00:1b69 DecayGradeDelay -00:1b77 DecayGradeDelay.gradejumptable -00:1b89 PrepareScore -00:1b9c UpdateGradeDMGT -00:1bb2 UpdateGradeDMGT.clearrate -00:1bc3 UpdateGradeDMGT.combomult -00:1bd0 UpdateGradeDMGT.combo10 -00:1be1 UpdateGradeDMGT.combo5 -00:1bf2 UpdateGradeDMGT.combo1 -00:1c01 UpdateGradeDMGT.prelevel -00:1c10 UpdateGradeDMGT.single -00:1c20 UpdateGradeDMGT.double -00:1c31 UpdateGradeDMGT.adddonce -00:1c35 UpdateGradeDMGT.triple -00:1c46 UpdateGradeDMGT.addtonce -00:1c4a UpdateGradeDMGT.tetris -00:1c4e UpdateGradeDMGT.levelmult -00:1c66 UpdateGradeDMGT.mult5 -00:1c6d UpdateGradeDMGT.mult4 -00:1c73 UpdateGradeDMGT.mult3 -00:1c78 UpdateGradeDMGT.mult2 -00:1c7c UpdateGradeDMGT.mult1 -00:1c7d UpdateGradeDMGT.processgrade -00:1ca1 UpdateGradeDMGT.increasegrademaybe -00:1cc2 UpdateGradeDMGT.gotgm -00:1ccd DecayGradeDMGT -00:1ced DecayGradeDMGT.nodecay -00:1cf2 DecayGradeDMGT.decay -00:1cfe UpdateGradeTGM1 -00:1d08 UpdateGradeTGM1.trygradeup -00:1d22 UpdateGradeTGM1.increasegrade -00:1d34 UpdateGradeTGM1.skipjingle -00:1d41 UpdateGradeTGM1.maybegm -00:1d57 UpdateGradeDEAT -00:1d63 UpdateGradeDEAT.notgm -00:1d7c UpdateGradeDEAT.notm -00:1d9c UpdateGradeDEAT.disqualify -00:1da2 UpdateGradeSHIR -00:1de2 UpdateGradeSHIR.s5torikan -00:1df2 UpdateGradeSHIR.s10torikan -00:1e01 UpdateGradeSHIR.disqualify -00:1e07 SFXInit -00:1e29 SFXPopQueue -00:1e3e SFXPushQueue -00:1e4f SFXProcessQueue -00:1e7d SFXTriggerNoise -00:1ea3 SFXEnqueue -00:1eb8 SFXEnqueue.findsfx -00:2011 SFXKill -00:203c SFXPlayNoise -00:2047 SFXPlayNoise.noisereg -00:205e SFXPlayNoise.savenoiseplayhead -00:2067 SFXPlay -00:2075 SFXPlay.play -00:2081 SFXPlay.getRegister -00:2095 SFXPlay.savePlayhead -00:209e RNGInit -00:20e9 RNGInit.complexinit -00:211a ShiftHistory -00:2137 GetNextHellPiece -00:213c GetNextTGM1Piece -00:2159 GetNextTGM2Piece -00:2176 GetNextNesPiece -00:2184 GetNextTGM3Piece -00:223b GetNextPiece -00:2249 GetNextPiece.nextpiecejumps -00:2258 Next35Piece -00:2262 Next7Piece -00:226c NextByte -00:228c sTGM1GradeScores -00:22ae sTGM3InternalGradeSystem -00:234e sTGM3GradeBoosts -00:236d sTGM3LevelMultiplier -00:2371 sTGM3BaselineCOOL -00:237a sTGM3REGRETConditions -00:238e sDMGTGrading -00:2442 LevelInit -00:2492 LevelUp -00:24b6 LevelUp.doit -00:24fa LevelUp.checknlevel -00:2549 LevelUp.bellmaybe -00:255b LevelUp.leveljinglemaybe -00:2568 LevelUp.checkspeedup -00:25a4 DoSpeedUp -00:25e5 ScoreInit -00:260d IncreaseScore -00:2645 IncreaseScore.doConvert -00:265d IncreaseScore.carry -00:265f IncreaseScore.postConvert -00:2673 IncreaseScore.preAddDigit -00:269b IncreaseScore.addDigit -00:26b1 IncreaseScore.nextDigit -00:26c5 InputInit -00:26d7 GetInput -00:26d7 GetInput.btns -00:26e4 GetInput.readA -00:26e8 GetInput.setA -00:26f3 GetInput.clearA -00:26f6 GetInput.readB -00:26fa GetInput.setB -00:2705 GetInput.clearB -00:2708 GetInput.readSelect -00:270c GetInput.setSelect -00:2717 GetInput.clearSelect -00:271a GetInput.readStart -00:271e GetInput.setStart -00:2729 GetInput.clearStart -00:272c GetInput.dpad -00:2739 GetInput.readUp -00:273d GetInput.setUp -00:2748 GetInput.clearUp -00:274b GetInput.readDown -00:274f GetInput.setDown -00:275a GetInput.clearDown -00:275d GetInput.readLeft -00:2761 GetInput.setLeft -00:276c GetInput.clearLeft -00:276f GetInput.readRight -00:2773 GetInput.setRight -00:277e GetInput.clearRight -00:2781 GetInput.priorities -00:278c GetInput.zero -00:2792 RestoreSRAM -00:27eb InitializeSRAM -00:2849 Main -00:285e Main.wvr_u1 -00:2877 Main.notgbc -00:28a6 Main.wvb_u2 -00:28b1 EventLoop -00:28c7 EventLoop.eventloopjumps -00:28d0 EventLoopPostHandler -00:28d2 EventLoopPostHandler.wvb_u3 -00:28e4 EventLoopPostHandler.vblankjumps -00:28ed TimeInit -00:2902 ResetGameTime -00:290d CheckTorikan -00:2924 CheckTorikan.failure -00:2926 CheckTorikan.success -00:2929 HandleTimers -00:2951 HandleTimers.go -00:2975 SwitchToTitle -00:297f TitleEventLoopHandler -00:2989 TitleVBlankHandler -00:2993 DrawOption6 -00:29e3 LoadTitleTiles -00:2a01 LoadGameplayTiles -00:2a17 LoadGameplayTiles.gbc -00:2a26 LoadGameplayTiles.dmg -00:2a35 sFramesToCS -00:2a71 UnsafeMemCopy -00:2a7a SafeMemCopy.wvr_u1 -00:2a7a SafeMemCopy -00:2a89 UnsafeMemSet -00:2a91 SafeMemSet -00:2a91 SafeMemSet.wvr_u2 -00:2a9f SwitchToGameplay -00:2aa9 SwitchToGameplayBig -00:2ab3 GamePlayEventLoopHandler -00:2abd GamePlayBigEventLoopHandler -00:2ac7 CopyOAMHandler -00:2ad3 ClearOAM -00:2ae9 IntrInit -00:2aed InitializeLCDCInterrupt -00:2b02 OAMDMA -00:2b0c OAMDMAEnd +00:18e7 ApplyNumbers8.one +00:18ed ApplyNumbers8.two +00:18f3 ApplyNumbers8.three +00:18f9 ApplyNumbers8.four +00:18ff ApplyNumbers8.five +00:1905 ApplyNumbers8.six +00:190b ApplyNumbers8.seven +00:1911 ApplyNumbers8.eight +00:1916 ApplyNumbers4 +00:193b ApplyNumbers4.one +00:1941 ApplyNumbers4.two +00:1947 ApplyNumbers4.three +00:194d ApplyNumbers4.four +00:1952 SetNumberSpritePositions +00:1a59 GradeRendering +00:1a8e GradeRendering.effect +00:1a9e GradeRendering.noeffect +00:1aa6 GradeRendering.drawgrade +00:1aad GradeRendering.regulargrade +00:1ab5 GradeRendering.sgrade +00:1acb GradeRendering.hisgrade +00:1ae1 GradeRendering.mgrade +00:1af7 GradeRendering.lettergrade +00:1b14 GradeRendering.mk +00:1b1a GradeRendering.mv +00:1b20 GradeRendering.mo +00:1b26 GradeRendering.mm +00:1b2c GradeRendering.gmgrade +00:1b37 GradeInit +00:1b62 GradeInit.grade9start +00:1b67 GradeInit.end +00:1b69 UpdateGrade +00:1b77 UpdateGrade.gradejumptable +00:1b89 DecayGradeProcess +00:1b97 DecayGradeProcess.gradejumptable +00:1ba9 DecayGradeDelay +00:1bb7 DecayGradeDelay.gradejumptable +00:1bc9 PrepareScore +00:1bdc DrawGradeProgressDMGT +00:1beb UpdateGradeDMGT +00:1c05 UpdateGradeDMGT.clearrate +00:1c16 UpdateGradeDMGT.combomult +00:1c23 UpdateGradeDMGT.combo10 +00:1c34 UpdateGradeDMGT.combo5 +00:1c45 UpdateGradeDMGT.combo1 +00:1c54 UpdateGradeDMGT.prelevel +00:1c63 UpdateGradeDMGT.single +00:1c73 UpdateGradeDMGT.double +00:1c84 UpdateGradeDMGT.adddonce +00:1c88 UpdateGradeDMGT.triple +00:1c99 UpdateGradeDMGT.addtonce +00:1c9d UpdateGradeDMGT.tetris +00:1ca1 UpdateGradeDMGT.levelmult +00:1cb9 UpdateGradeDMGT.mult5 +00:1cc0 UpdateGradeDMGT.mult4 +00:1cc6 UpdateGradeDMGT.mult3 +00:1ccb UpdateGradeDMGT.mult2 +00:1ccf UpdateGradeDMGT.mult1 +00:1cd0 UpdateGradeDMGT.processgrade +00:1cf6 UpdateGradeDMGT.increasegrademaybe +00:1d17 UpdateGradeDMGT.gotgm +00:1d22 DecayGradeDMGT +00:1d46 DecayGradeDMGT.nodecay +00:1d4d DecayGradeDMGT.decay +00:1d5b UpdateGradeTGM1 +00:1d65 UpdateGradeTGM1.trygradeup +00:1d7f UpdateGradeTGM1.increasegrade +00:1d91 UpdateGradeTGM1.skipjingle +00:1d9e UpdateGradeTGM1.maybegm +00:1db4 UpdateGradeDEAT +00:1dc0 UpdateGradeDEAT.notgm +00:1dd9 UpdateGradeDEAT.notm +00:1df9 UpdateGradeDEAT.disqualify +00:1dff UpdateGradeSHIR +00:1e3f UpdateGradeSHIR.s5torikan +00:1e4f UpdateGradeSHIR.s10torikan +00:1e5e UpdateGradeSHIR.disqualify +00:1e64 sTGM1GradeScores +00:1e86 sTGM3InternalGradeSystem +00:1f26 sTGM3GradeBoosts +00:1f45 sTGM3LevelMultiplier +00:1f49 sTGM3BaselineCOOL +00:1f52 sTGM3REGRETConditions +00:1f66 sDMGTGrading +00:201a sDMGTGaugeLUT +00:211a SFXInit +00:213c SFXPopQueue +00:2151 SFXPushQueue +00:2162 SFXProcessQueue +00:2190 SFXTriggerNoise +00:21b6 SFXEnqueue +00:21cb SFXEnqueue.findsfx +00:2324 SFXKill +00:234f SFXPlayNoise +00:235a SFXPlayNoise.noisereg +00:2371 SFXPlayNoise.savenoiseplayhead +00:237a SFXPlay +00:2388 SFXPlay.play +00:2394 SFXPlay.getRegister +00:23a8 SFXPlay.savePlayhead +00:23b1 RNGInit +00:23fc RNGInit.complexinit +00:242d ShiftHistory +00:244a GetNextHellPiece +00:244f GetNextTGM1Piece +00:246c GetNextTGM2Piece +00:2489 GetNextNesPiece +00:2497 GetNextTGM3Piece +00:254e GetNextPiece +00:255c GetNextPiece.nextpiecejumps +00:256b Next35Piece +00:2575 Next7Piece +00:257f NextByte +00:259f LevelInit +00:25ef LevelUp +00:2613 LevelUp.doit +00:2657 LevelUp.checknlevel +00:26a6 LevelUp.bellmaybe +00:26b8 LevelUp.leveljinglemaybe +00:26c5 LevelUp.checkspeedup +00:2701 DoSpeedUp +00:2742 sProgressData +00:288c ScoreInit +00:28b4 IncreaseScore +00:28ec IncreaseScore.doConvert +00:2904 IncreaseScore.carry +00:2906 IncreaseScore.postConvert +00:291a IncreaseScore.preAddDigit +00:2942 IncreaseScore.addDigit +00:2958 IncreaseScore.nextDigit +00:296c InputInit +00:297e GetInput +00:297e GetInput.btns +00:298b GetInput.readA +00:298f GetInput.setA +00:299a GetInput.clearA +00:299d GetInput.readB +00:29a1 GetInput.setB +00:29ac GetInput.clearB +00:29af GetInput.readSelect +00:29b3 GetInput.setSelect +00:29be GetInput.clearSelect +00:29c1 GetInput.readStart +00:29c5 GetInput.setStart +00:29d0 GetInput.clearStart +00:29d3 GetInput.dpad +00:29e0 GetInput.readUp +00:29e4 GetInput.setUp +00:29ef GetInput.clearUp +00:29f2 GetInput.readDown +00:29f6 GetInput.setDown +00:2a01 GetInput.clearDown +00:2a04 GetInput.readLeft +00:2a08 GetInput.setLeft +00:2a13 GetInput.clearLeft +00:2a16 GetInput.readRight +00:2a1a GetInput.setRight +00:2a25 GetInput.clearRight +00:2a28 GetInput.priorities +00:2a33 GetInput.zero +00:2a39 RestoreSRAM +00:2a92 InitializeSRAM +00:2af0 SetProgress +00:2afb SetProgress.loop +00:2aff SetProgress.correct +00:2b26 SetProgress.wvr_u1 +00:2b32 SetProgress.wvr_u2 +00:2b40 SetProgress.wvr_u3 +00:2b4c SetProgress.wvr_u4 +00:2b5a SetProgress.wvr_u5 +00:2b66 SetProgress.wvr_u6 +00:2b74 SetProgress.wvr_u7 +00:2b80 SetProgress.wvr_u8 +00:2b8e SetProgress.wvr_u9 +00:2b9a SetProgress.wvr_u10 +00:2ba2 Main +00:2bb7 Main.wvr_u1 +00:2bd0 Main.notgbc +00:2bff Main.wvb_u2 +00:2c0a EventLoop +00:2c20 EventLoop.eventloopjumps +00:2c29 EventLoopPostHandler +00:2c2b EventLoopPostHandler.wvb_u3 +00:2c3d EventLoopPostHandler.vblankjumps +00:2c46 TimeInit +00:2c5b ResetGameTime +00:2c66 CheckTorikan +00:2c7d CheckTorikan.failure +00:2c7f CheckTorikan.success +00:2c82 HandleTimers +00:2caa HandleTimers.go +00:2cce SwitchToTitle +00:2cd8 TitleEventLoopHandler +00:2ce2 TitleVBlankHandler +00:2cec DrawOption6 +00:2d3c LoadTitleTiles +00:2d5a LoadGameplayTiles +00:2d70 LoadGameplayTiles.gbc +00:2d7f LoadGameplayTiles.dmg +00:2d8e sFramesToCS +00:2dca UnsafeMemCopy +00:2dd3 SafeMemCopy.wvr_u1 +00:2dd3 SafeMemCopy +00:2de2 UnsafeMemSet +00:2dea SafeMemSet +00:2dea SafeMemSet.wvr_u2 +00:2df8 SwitchToGameplay +00:2e02 SwitchToGameplayBig +00:2e0c GamePlayEventLoopHandler +00:2e16 GamePlayBigEventLoopHandler +00:2e20 CopyOAMHandler +00:2e2c ClearOAM +00:2e42 IntrInit +00:2e46 InitializeLCDCInterrupt +00:2e5b OAMDMA +00:2e65 OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4210 sDMGTSpeedCurveEnd 01:4212 sTGM1SpeedCurve @@ -1140,32 +1167,32 @@ 05:5fed GamePlayEventLoopHandlerB.noretry 05:5ffa GamePlayEventLoopHandlerB.pauseMode 05:6012 GamePlayEventLoopHandlerB.noqr -05:6022 GamePlayEventLoopHandlerB.nounpause -05:60a6 GamePlayEventLoopHandlerB.drawStaticInfo -05:60d7 DoHold -05:60db DoHold.checkIRSA -05:60e2 DoHold.ldb3 -05:60ee DoHold.lda3 -05:60f8 DoHold.cp3 -05:6106 DoHold.checkIRSB -05:610d DoHold.lda4 -05:6119 DoHold.ldb4 -05:6123 DoHold.cp4 -05:6131 DoHold.noRotation -05:613c DoHold.doHoldOperation -05:6147 sLeftDasSlam -05:614d sRightDasSlam -05:6153 sLeady -05:615d sGo -05:6167 sPause -05:617b sPieceXOffsets -05:6197 sPieceYOffsets -05:61b3 sPieceFastRotationStates -05:6223 sPieceRotationStates -05:6293 sTGM3Bag -05:62b6 sTGM3Droughts -05:62bd sGameplayTileMap -05:655d sGameplayTileMapEnd +05:6027 GamePlayEventLoopHandlerB.nounpause +05:606f GamePlayEventLoopHandlerB.drawStaticInfo +05:60a0 DoHold +05:60a4 DoHold.checkIRSA +05:60ab DoHold.ldb3 +05:60b7 DoHold.lda3 +05:60c1 DoHold.cp3 +05:60cf DoHold.checkIRSB +05:60d6 DoHold.lda4 +05:60e2 DoHold.ldb4 +05:60ec DoHold.cp4 +05:60fa DoHold.noRotation +05:6105 DoHold.doHoldOperation +05:6110 sLeftDasSlam +05:6116 sRightDasSlam +05:611c sLeady +05:6126 sGo +05:6130 sPause +05:6158 sPieceXOffsets +05:6174 sPieceYOffsets +05:6190 sPieceFastRotationStates +05:6200 sPieceRotationStates +05:6270 sTGM3Bag +05:6293 sTGM3Droughts +05:629a sGameplayTileMap +05:653a sGameplayTileMapEnd 06:4008 BigFieldInit 06:4049 BigFieldClear 06:40ef BigToBackupField @@ -1886,30 +1913,30 @@ 06:6325 GamePlayBigEventLoopHandlerB.noretry 06:6332 GamePlayBigEventLoopHandlerB.pauseMode 06:634a GamePlayBigEventLoopHandlerB.noqr -06:6359 GamePlayBigEventLoopHandlerB.nounpause -06:63d1 GamePlayBigEventLoopHandlerB.drawStaticInfo -06:6402 BigDoHold -06:6406 BigDoHold.checkIRSA -06:640d BigDoHold.ldb3 -06:6419 BigDoHold.lda3 -06:6423 BigDoHold.cp3 -06:6431 BigDoHold.checkIRSB -06:6438 BigDoHold.lda4 -06:6444 BigDoHold.ldb4 -06:644e BigDoHold.cp4 -06:645c BigDoHold.noRotation -06:6467 BigDoHold.doHoldOperation -06:6472 sBigLeftDasSlam -06:6478 sBigRightDasSlam -06:647e sBigLeady -06:6488 sBigGo -06:6492 sBigPause -06:64a6 sBigPieceXOffsets -06:64c2 sBigPieceYOffsets -06:64de sBigPieceFastRotationStates -06:654e sBigPieceRotationStates -06:65be sBigGameplayTileMap -06:685e sBigGameplayTileMapEnd +06:635e GamePlayBigEventLoopHandlerB.nounpause +06:63a6 GamePlayBigEventLoopHandlerB.drawStaticInfo +06:63d7 BigDoHold +06:63db BigDoHold.checkIRSA +06:63e2 BigDoHold.ldb3 +06:63ee BigDoHold.lda3 +06:63f8 BigDoHold.cp3 +06:6406 BigDoHold.checkIRSB +06:640d BigDoHold.lda4 +06:6419 BigDoHold.ldb4 +06:6423 BigDoHold.cp4 +06:6431 BigDoHold.noRotation +06:643c BigDoHold.doHoldOperation +06:6447 sBigLeftDasSlam +06:644d sBigRightDasSlam +06:6453 sBigLeady +06:645d sBigGo +06:6467 sBigPause +06:648f sBigPieceXOffsets +06:64ab sBigPieceYOffsets +06:64c7 sBigPieceFastRotationStates +06:6537 sBigPieceRotationStates +06:65a7 sBigGameplayTileMap +06:6847 sBigGameplayTileMapEnd 00:a000 rCheck 00:a006 rSwapABState 00:a007 rRNGModeState @@ -1993,23 +2020,33 @@ 00:cd9a wDRate 00:cd9b wTRate 00:cd9c wQRate -00:cd9d wSwapABState -00:cd9e wRNGModeState -00:cd9f wRotModeState -00:cda0 wDropModeState -00:cda1 wSpeedCurveState -00:cda2 wAlways20GState -00:cda3 wInitialA -00:cda4 wInitialB -00:cda5 wInitialC -00:cda6 wBankBackup -00:cdaa wOuterReps -00:cdab wInnerReps -00:cdac wTitlePal -00:cdad wMinutes -00:cdae wSeconds -00:cdaf wFrames -00:cdb0 wSelected +00:cd9d wProgress0B1 +00:cd9e wProgress0B2 +00:cd9f wProgress1B1 +00:cda0 wProgress1B2 +00:cda1 wProgress2B1 +00:cda2 wProgress2B2 +00:cda3 wProgress3B1 +00:cda4 wProgress3B2 +00:cda5 wProgress4B1 +00:cda6 wProgress4B2 +00:cda7 wSwapABState +00:cda8 wRNGModeState +00:cda9 wRotModeState +00:cdaa wDropModeState +00:cdab wSpeedCurveState +00:cdac wAlways20GState +00:cdad wInitialA +00:cdae wInitialB +00:cdaf wInitialC +00:cdb0 wBankBackup +00:cdb4 wOuterReps +00:cdb5 wInnerReps +00:cdb6 wTitlePal +00:cdb7 wMinutes +00:cdb8 wSeconds +00:cdb9 wFrames +00:cdba wSelected 00:ff80 hPieceDataBase 00:ff82 hPieceDataBaseFast 00:ff84 hPieceDataOffset diff --git a/src/grading.asm b/src/grading.asm index d814228..12441ca 100644 --- a/src/grading.asm +++ b/src/grading.asm @@ -208,6 +208,24 @@ sDMGTGrading: db 5, 2, 8, 10, 20 ; Grade MM — frames/decay, single base, double base, triple base, tetris base ; No entry for GM. We're done there. +sDMGTGaugeLUT: + db 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3 + db 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7 + db 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10,10,10 + db 10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13 + db 14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17 + db 17,17,17,18,18,18,18,19,19,19,19,19,20,20,20,20 + db 20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24 + db 24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27 + db 27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31 + db 31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32 + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + SECTION "Grading Functions", ROM0 ; Wipe the grading variables. GradeInit:: @@ -324,16 +342,26 @@ PrepareScore: ld b, a ret +DrawGradeProgressDMGT:: + ld hl, sDMGTGaugeLUT + ld a, [wGradeGauge] + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + call SetProgress + ret + UpdateGradeDMGT:: ; Did we have line clears? ldh a, [hLineClearCt] cp a, 0 - ret z + jp z, DrawGradeProgressDMGT ; Bail if we're already GM. ld a, [wDisplayedGrade] cp a, GRADE_GM - ret z + jp z, DrawGradeProgressDMGT ; Get grade in BC. ld b, 0 @@ -525,7 +553,7 @@ UpdateGradeDMGT:: call SFXEnqueue ld a, $0F ld [wEffectTimer], a - ret + jp DrawGradeProgressDMGT .increasegrademaybe ; Do we have 150 in the gauge? @@ -565,12 +593,12 @@ DecayGradeDMGT:: ; Bail if the gauge is empty. ld a, [wGradeGauge] cp a, 0 - ret z + jp z, DrawGradeProgressDMGT ; Bail if we're already GM. ld a, [wDisplayedGrade] cp a, GRADE_GM - ret z + jp z, DrawGradeProgressDMGT ; Get grade in BC. ld b, 0 @@ -598,7 +626,7 @@ DecayGradeDMGT:: .nodecay ld a, b ld [wDecayCounter], a - ret + jp DrawGradeProgressDMGT ; Yes, decay. .decay @@ -607,7 +635,7 @@ DecayGradeDMGT:: ld [wGradeGauge], a xor a, a ld [wDecayCounter], a - ret + jp DrawGradeProgressDMGT UpdateGradeTGM1: diff --git a/src/progress.asm b/src/progress.asm new file mode 100644 index 0000000..9588670 --- /dev/null +++ b/src/progress.asm @@ -0,0 +1,358 @@ +; 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(PROGRESS_ASM) +DEF PROGRESS_ASM EQU 1 + + +INCLUDE "globals.asm" + + +DEF TILE_BAR_0 EQU 248 +DEF TILE_BAR_1 EQU 249 +DEF TILE_BAR_2 EQU 250 +DEF TILE_BAR_3 EQU 251 +DEF TILE_BAR_4 EQU 252 + + +SECTION "Progress Data", ROM0 +sProgressData: + db %00010000, %00110000 ; 0 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011000, %00111000 ; 1 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011100, %00111100 ; 2 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011110, %00111110 ; 3 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 4 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 5 + db %10000000, %10000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 6 + db %11000000, %11000000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 7 + db %11100000, %11100000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 8 + db %11110000, %11110000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 9 + db %11111000, %11111000 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 10 + db %11111100, %11111100 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 11 + db %11111110, %11111110 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 12 + db %11111111, %11111111 + db %00000000, %00000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 13 + db %11111111, %11111111 + db %10000000, %10000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 14 + db %11111111, %11111111 + db %11000000, %11000000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 15 + db %11111111, %11111111 + db %11100000, %11100000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 16 + db %11111111, %11111111 + db %11110000, %11110000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 17 + db %11111111, %11111111 + db %11111000, %11111000 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 18 + db %11111111, %11111111 + db %11111100, %11111100 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 19 + db %11111111, %11111111 + db %11111110, %11111110 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 20 + db %11111111, %11111111 + db %11111111, %11111111 + db %00000000, %00000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 21 + db %11111111, %11111111 + db %11111111, %11111111 + db %10000000, %10000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 22 + db %11111111, %11111111 + db %11111111, %11111111 + db %11000000, %11000000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 23 + db %11111111, %11111111 + db %11111111, %11111111 + db %11100000, %11100000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 24 + db %11111111, %11111111 + db %11111111, %11111111 + db %11110000, %11110000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 25 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111000, %11111000 + db %00000000, %00001000 + + db %00011111, %00111111 ; 26 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111100, %11111100 + db %00000000, %00001000 + + db %00011111, %00111111 ; 27 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111110, %11111110 + db %00000000, %00001000 + + db %00011111, %00111111 ; 28 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111111, %11111111 + db %00000000, %00001000 + + db %00011111, %00111111 ; 29 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111111, %11111111 + db %10000000, %10001000 + + db %00011111, %00111111 ; 30 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111111, %11111111 + db %11000000, %11001000 + + db %00011111, %00111111 ; 31 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111111, %11111111 + db %11100000, %11101000 + + db %00011111, %00111111 ; 32 + db %11111111, %11111111 + db %11111111, %11111111 + db %11111111, %11111111 + db %11110000, %11111000 + + + + + + +SECTION "Progress Variables", WRAM0 +wProgress0B1:: ds 1 +wProgress0B2:: ds 1 +wProgress1B1:: ds 1 +wProgress1B2:: ds 1 +wProgress2B1:: ds 1 +wProgress2B2:: ds 1 +wProgress3B1:: ds 1 +wProgress3B2:: ds 1 +wProgress4B1:: ds 1 +wProgress4B2:: ds 1 + + +SECTION "Progress Functions", ROM0 + + ; Changes the tiles between the level counters to show some progress. + ; Progress in A, 0-32. +SetProgress:: + ld hl, sProgressData + cp a, 0 + jr z, .correct + ld b, a + ld de, 10 +.loop + add hl, de + dec b + jr nz, .loop + +.correct + ld de, wProgress0B1 + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + + ld hl, _VRAM + (TILE_BAR_0*16) + (3*2) + ld a, [wProgress0B1] + ld b, a + wait_vram + ld [hl], b + inc hl + ld a, [wProgress0B2] + ld b, a + wait_vram + ld [hl], b + + ld hl, _VRAM + (TILE_BAR_1*16) + (3*2) + ld a, [wProgress1B1] + ld b, a + wait_vram + ld [hl], b + inc hl + ld a, [wProgress1B2] + ld b, a + wait_vram + ld [hl], b + + ld hl, _VRAM + (TILE_BAR_2*16) + (3*2) + ld a, [wProgress2B1] + ld b, a + wait_vram + ld [hl], b + inc hl + ld a, [wProgress2B2] + ld b, a + wait_vram + ld [hl], b + + ld hl, _VRAM + (TILE_BAR_3*16) + (3*2) + ld a, [wProgress3B1] + ld b, a + wait_vram + ld [hl], b + inc hl + ld a, [wProgress3B2] + ld b, a + wait_vram + ld [hl], b + + ld hl, _VRAM + (TILE_BAR_4*16) + (3*2) + ld a, [wProgress4B1] + ld b, a + wait_vram + ld [hl], b + inc hl + ld a, [wProgress4B2] + ld b, a + wait_vram + ld [hl], b + + ret + + + + + +ENDC diff --git a/src/res/gameplay_big_data.inc b/src/res/gameplay_big_data.inc index 8de11a3..d48961b 100644 --- a/src/res/gameplay_big_data.inc +++ b/src/res/gameplay_big_data.inc @@ -45,7 +45,9 @@ sBigGo:: db " GO " sBigPause:: db "P A U S E " + db " " db " P A U S E" + db " " sBigPieceXOffsets:: ; How to draw each piece. X-offsets of the sprites. db 0, 8, 16, 24 ; I @@ -312,7 +314,7 @@ sBigGameplayTileMap:: DB $01,$01,$6D,$01,$01,$01,$01,$01,$6F,$01 DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01 - DB $01,$01,$01,$01,$6D,$F2,$72,$72,$72,$F3 + DB $01,$01,$01,$01,$6D,$F8,$F9,$FA,$FB,$FC DB $6F,$01,$01,$6F,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01 DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$01 diff --git a/src/res/gameplay_data.inc b/src/res/gameplay_data.inc index ffa9e3a..1c6fb35 100644 --- a/src/res/gameplay_data.inc +++ b/src/res/gameplay_data.inc @@ -45,7 +45,9 @@ sGo:: db " GO " sPause:: db "P A U S E " + db " " db " P A U S E" + db " " sPieceXOffsets:: ; How to draw each piece. X-offsets of the sprites. db 0, 8, 16, 24 ; I @@ -324,7 +326,7 @@ sGameplayTileMap:: DB $01,$01,$6D,$01,$01,$01,$01,$01,$6F,$01 DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01 - DB $01,$01,$01,$01,$6D,$F2,$72,$72,$72,$F3 + DB $01,$01,$01,$01,$6D,$F8,$F9,$FA,$FB,$FC DB $6F,$01,$01,$6F,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01 DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$01 diff --git a/src/res/other_data.inc b/src/res/other_data.inc index 5a086b2..c418116 100644 --- a/src/res/other_data.inc +++ b/src/res/other_data.inc @@ -1532,10 +1532,10 @@ sGameplayTilesM:: DB $1C,$14,$9C,$94,$1C,$14,$00,$00 DB $DC,$D4,$1C,$14,$1C,$14,$1C,$14 DB $1C,$14,$1C,$14,$1C,$14,$00,$00 - DB $00,$00,$00,$00,$00,$1F,$1F,$3F - DB $00,$1F,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$F0,$F0,$F8 - DB $00,$F0,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$F7,$F7,$FF,$08 DB $FF,$E3,$1C,$14,$1C,$14,$00,$00 DB $1C,$14,$1C,$14,$FF,$E3,$FF,$08 @@ -1544,16 +1544,16 @@ sGameplayTilesM:: DB $F8,$08,$FC,$E4,$1C,$14,$00,$00 DB $00,$00,$00,$00,$00,$00,$FF,$FF DB $FF,$00,$FF,$FF,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$1F,$00,$20 + DB $00,$1F,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$FF,$00,$00 + DB $00,$FF,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$FF,$00,$00 + DB $00,$FF,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$FF,$00,$00 + DB $00,$FF,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$F0,$00,$08 + DB $00,$F0,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 @@ -1951,10 +1951,10 @@ sGameplayTilesC:: DB $1C,$14,$9C,$94,$1C,$14,$00,$00 DB $DC,$D4,$1C,$14,$1C,$14,$1C,$14 DB $1C,$14,$1C,$14,$1C,$14,$00,$00 - DB $00,$00,$00,$00,$00,$1F,$1F,$3F - DB $00,$1F,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$F0,$F0,$F8 - DB $00,$F0,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$F7,$F7,$FF,$08 DB $FF,$E3,$1C,$14,$1C,$14,$00,$00 DB $1C,$14,$1C,$14,$FF,$E3,$FF,$08 @@ -1963,16 +1963,16 @@ sGameplayTilesC:: DB $F8,$08,$FC,$E4,$1C,$14,$00,$00 DB $00,$00,$00,$00,$00,$00,$FF,$FF DB $FF,$00,$FF,$FF,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$1F,$00,$20 + DB $00,$1F,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$FF,$00,$00 + DB $00,$FF,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$FF,$00,$00 + DB $00,$FF,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$FF,$00,$00 + DB $00,$FF,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$F0,$00,$08 + DB $00,$F0,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 diff --git a/src/res/sources/complete_gameplay.gbr b/src/res/sources/complete_gameplay.gbr index 3d6180b4ca57f160c008e6ee0e4f260b21f8c161..96734b708b652cb9c51675fa416f267659242aa6 100644 GIT binary patch delta 63 zcmaF3f$8A}rVaOcCMPJ@PVSFlot)77Z}Pn!r^yd;tS8^jaRB4<`5YX~K)}Snz%aSK O(HE$A@@DS|VjKX)FB*gZ delta 47 zcmaF3f$8A}rVaOcCdc(TaWgP5FoOUS1H=^#0qNp!$|^v-bos4gjB< B5aa*= diff --git a/src/res/sources/map_gameplay.gbm b/src/res/sources/map_gameplay.gbm index fad9fb0e4c4abd0e7b4f01d1130a6efe2ad45251..ea01b599c7a844ced3e54b9d98f7c041c2a65c03 100644 GIT binary patch delta 190 zcmZ3Yv_xsc9Y*^r>c=%D=IdR#$IZZS$GTX~we{Q*hM!psp3zJU63JbRB0x4H0}udd z8z9vnaEnoFomwnN2q-^Unn_+dpXoU}Hv=03I|CPk9)kuGBLheUNG10~L+Qx{Oez{c z(-|J^>nejuumJh!nk=U5Y23VrX(=1;51@4n48Ir{elsxq*__9DfR)n>s3RMsYqL53 GTSfq`Br&`I delta 190 zcmZ3Yv_xsc9Y*`WUkMBB)wHhM<7QyEV_huA#dCTI!_O=R&uAtF`&X@uB0x4H0}udd z8z5CLaEnopy=)yw2q-^Unn_+diRn2zHv=03I|D0&DZ_O}Mh1`ykV>|RhSHM@m{c^_ zfXW~3>nejuumJh!n&$PNvD&@a0|Ucky=GG|hY7^lpJ6b$znpb)LgT;9394@yC!ft` K-yGD!F9HBusuT18 diff --git a/src/res/sources/tiles_gameplay_m.gbr b/src/res/sources/tiles_gameplay_m.gbr index 0ba9a8e2e14d2d214786a949148a3a0176f73cc1..03228fc524e22ac8eee432e56a8906644d499afa 100644 GIT binary patch delta 118 zcmaF3f$8A}rVaNRCMPJ@PClQ^Iys^7-{gA@9IOl=F!^@a0|Ucky=GG|hY7^lpJ6chd@}3ggvNiH8=6n^Y)(*C LV%+RKL5u?cbS)GP diff --git a/src/sprites.asm b/src/sprites.asm index 20c30d1..7299c65 100644 --- a/src/sprites.asm +++ b/src/sprites.asm @@ -606,91 +606,113 @@ ApplyNumbers8:: ld bc, 4 ld a, [de] - add a, TILE_0 + cp a, 0 + jr nz, .one + ld a, TILE_BLANK ld [hl], a add hl, bc inc de + ld a, [de] + cp a, 0 + jr nz, .two + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + ld a, [de] + cp a, 0 + jr nz, .three + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + ld a, [de] + cp a, 0 + jr nz, .four + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + ld a, [de] + cp a, 0 + jr nz, .five + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + ld a, [de] + cp a, 0 + jr nz, .six + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + ld a, [de] + cp a, 0 + jr nz, .seven + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + jr .eight + +.one ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.two ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.three ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.four ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.five ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.six ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de - ld a, [de] - add a, TILE_0 - ld [hl], a - ret - - - ; Generic function to draw a BCD number (6 digits) as 6 sprites. - ; Address of first sprite in hl. - ; Address of first digit in de. -ApplyNumbers6:: - inc hl - inc hl - ld bc, 4 - - ld a, [de] - add a, TILE_0 - ld [hl], a - add hl, bc - inc de - - ld a, [de] - add a, TILE_0 - ld [hl], a - add hl, bc - inc de - - ld a, [de] - add a, TILE_0 - ld [hl], a - add hl, bc - inc de - - ld a, [de] - add a, TILE_0 - ld [hl], a - add hl, bc - inc de - +.seven ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.eight ld a, [de] add a, TILE_0 ld [hl], a @@ -706,23 +728,53 @@ ApplyNumbers4:: ld bc, 4 ld a, [de] - add a, TILE_0 + cp a, 0 + jr nz, .one + ld a, TILE_BLANK ld [hl], a add hl, bc inc de + ld a, [de] + cp a, 0 + jr nz, .two + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + ld a, [de] + cp a, 0 + jr nz, .three + ld a, TILE_BLANK + ld [hl], a + add hl, bc + inc de + + jr .four + +.one ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.two ld a, [de] add a, TILE_0 ld [hl], a add hl, bc inc de +.three + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + +.four ld a, [de] add a, TILE_0 ld [hl], a diff --git a/src/state_gameplay.asm b/src/state_gameplay.asm index 7e4bddf..44d95a2 100644 --- a/src/state_gameplay.asm +++ b/src/state_gameplay.asm @@ -556,58 +556,41 @@ GamePlayEventLoopHandlerB:: call FromBackupField ldh a, [hPrePause] ldh [hMode], a + xor a, a + ldh [hLeftState], a + ldh [hRightState], a jp .drawStaticInfo ; Draw PAUSE all over the field. .nounpause + ld de, sPause + ld hl, wField+(0*10) + ld bc, 40 + call UnsafeMemCopy ld de, sPause ld hl, wField+(4*10) - ld bc, 20 - call UnsafeMemCopy - ld de, sPause - ld hl, wField+(2*10) - ld bc, 20 - call UnsafeMemCopy - ld de, sPause - ld hl, wField+(6*10) - ld bc, 20 + ld bc, 40 call UnsafeMemCopy ld de, sPause ld hl, wField+(8*10) - ld bc, 20 - call UnsafeMemCopy - ld de, sPause - ld hl, wField+(10*10) - ld bc, 20 + ld bc, 40 call UnsafeMemCopy ld de, sPause ld hl, wField+(12*10) - ld bc, 20 - call UnsafeMemCopy - ld de, sPause - ld hl, wField+(14*10) - ld bc, 20 + ld bc, 40 call UnsafeMemCopy ld de, sPause ld hl, wField+(16*10) - ld bc, 20 - call UnsafeMemCopy - ld de, sPause - ld hl, wField+(18*10) - ld bc, 20 + ld bc, 40 call UnsafeMemCopy ld de, sPause ld hl, wField+(20*10) - ld bc, 20 - call UnsafeMemCopy - ld de, sPause - ld hl, wField+(22*10) - ld bc, 20 + ld bc, 40 call UnsafeMemCopy ; Always draw the score, level, next piece, and held piece. -.drawStaticInfo: +.drawStaticInfo ldh a, [hNextPiece] call ApplyNext @@ -1192,49 +1175,36 @@ GamePlayBigEventLoopHandlerB: call BigFromBackupField ldh a, [hPrePause] ldh [hMode], a + xor a, a + ldh [hLeftState], a + ldh [hRightState], a jr .drawStaticInfo ; Draw PAUSE all over the field. .nounpause ld de, sBigPause - ld hl, wWideBlittedField - ld bc, 20 + ld hl, wWideBlittedField+(0*10) + ld bc, 40 call UnsafeMemCopy ld de, sBigPause - ld hl, wWideBlittedField+20 - ld bc, 20 + ld hl, wWideBlittedField+(4*10) + ld bc, 40 call UnsafeMemCopy ld de, sBigPause - ld hl, wWideBlittedField+40 - ld bc, 20 + ld hl, wWideBlittedField+(8*10) + ld bc, 40 call UnsafeMemCopy ld de, sBigPause - ld hl, wWideBlittedField+60 - ld bc, 20 + ld hl, wWideBlittedField+(12*10) + ld bc, 40 call UnsafeMemCopy ld de, sBigPause - ld hl, wWideBlittedField+80 - ld bc, 20 + ld hl, wWideBlittedField+(16*10) + ld bc, 40 call UnsafeMemCopy ld de, sBigPause - ld hl, wWideBlittedField+100 - ld bc, 20 - call UnsafeMemCopy - ld de, sBigPause - ld hl, wWideBlittedField+120 - ld bc, 20 - call UnsafeMemCopy - ld de, sBigPause - ld hl, wWideBlittedField+140 - ld bc, 20 - call UnsafeMemCopy - ld de, sBigPause - ld hl, wWideBlittedField+160 - ld bc, 20 - call UnsafeMemCopy - ld de, sBigPause - ld hl, wWideBlittedField+180 - ld bc, 20 + ld hl, wWideBlittedField+(20*10) + ld bc, 40 call UnsafeMemCopy