Expand score to 8 digits.

This commit is contained in:
Randy Thiemann 2023-11-03 03:03:47 +01:00
parent df9b65e78f
commit ae2711689a
10 changed files with 752 additions and 644 deletions

Binary file not shown.

View File

@ -119,7 +119,7 @@ ROM0 bank #0:
$1566 = !11 $1566 = !11
$15b5 = !12 $15b5 = !12
$1604 = !13 $1604 = !13
SECTION: $1656-$1a21 ($03cc bytes) ["Domain Specific Functions"] SECTION: $1656-$1a75 ($0420 bytes) ["Domain Specific Functions"]
$1656 = ApplyTells $1656 = ApplyTells
$16b1 = ApplyNext $16b1 = ApplyNext
$16e1 = ApplyNext.regular $16e1 = ApplyNext.regular
@ -134,269 +134,270 @@ ROM0 bank #0:
$17d0 = ApplyHold.postoffsets $17d0 = ApplyHold.postoffsets
$17d4 = ApplyHold.getoffh $17d4 = ApplyHold.getoffh
$17df = ApplyHold.skipoffh $17df = ApplyHold.skipoffh
$1819 = ApplyNumbers6 $1819 = ApplyNumbers8
$1841 = ApplyNumbers4 $184d = ApplyNumbers6
$185d = SetNumberSpritePositions $1875 = ApplyNumbers4
$1944 = GradeRendering $1891 = SetNumberSpritePositions
$1979 = GradeRendering.effect $1998 = GradeRendering
$1989 = GradeRendering.noeffect $19cd = GradeRendering.effect
$1991 = GradeRendering.drawgrade $19dd = GradeRendering.noeffect
$1998 = GradeRendering.regulargrade $19e5 = GradeRendering.drawgrade
$19a0 = GradeRendering.sgrade $19ec = GradeRendering.regulargrade
$19b6 = GradeRendering.hisgrade $19f4 = GradeRendering.sgrade
$19cc = GradeRendering.mgrade $1a0a = GradeRendering.hisgrade
$19e2 = GradeRendering.lettergrade $1a20 = GradeRendering.mgrade
$19ff = GradeRendering.mk $1a36 = GradeRendering.lettergrade
$1a05 = GradeRendering.mv $1a53 = GradeRendering.mk
$1a0b = GradeRendering.mo $1a59 = GradeRendering.mv
$1a11 = GradeRendering.mm $1a5f = GradeRendering.mo
$1a17 = GradeRendering.gmgrade $1a65 = GradeRendering.mm
SECTION: $1a22-$1d35 ($0314 bytes) ["Grading Functions"] $1a6b = GradeRendering.gmgrade
$1a22 = GradeInit SECTION: $1a76-$1d85 ($0310 bytes) ["Grading Functions"]
$1a4d = GradeInit.grade9start $1a76 = GradeInit
$1a52 = GradeInit.end $1aa1 = GradeInit.grade9start
$1a54 = UpdateGrade $1aa6 = GradeInit.end
$1a62 = UpdateGrade.gradejumptable $1aa8 = UpdateGrade
$1a74 = DecayGradeProcess $1ab6 = UpdateGrade.gradejumptable
$1a82 = DecayGradeProcess.gradejumptable $1ac8 = DecayGradeProcess
$1a94 = DecayGradeDelay $1ad6 = DecayGradeProcess.gradejumptable
$1aa2 = DecayGradeDelay.gradejumptable $1ae8 = DecayGradeDelay
$1ab4 = PrepareScore $1af6 = DecayGradeDelay.gradejumptable
$1acb = UpdateGradeDMGT $1b08 = PrepareScore
$1ae1 = UpdateGradeDMGT.clearrate $1b1b = UpdateGradeDMGT
$1af2 = UpdateGradeDMGT.combomult $1b31 = UpdateGradeDMGT.clearrate
$1aff = UpdateGradeDMGT.combo10 $1b42 = UpdateGradeDMGT.combomult
$1b10 = UpdateGradeDMGT.combo5 $1b4f = UpdateGradeDMGT.combo10
$1b21 = UpdateGradeDMGT.combo1 $1b60 = UpdateGradeDMGT.combo5
$1b30 = UpdateGradeDMGT.prelevel $1b71 = UpdateGradeDMGT.combo1
$1b3f = UpdateGradeDMGT.single $1b80 = UpdateGradeDMGT.prelevel
$1b4f = UpdateGradeDMGT.double $1b8f = UpdateGradeDMGT.single
$1b60 = UpdateGradeDMGT.adddonce $1b9f = UpdateGradeDMGT.double
$1b64 = UpdateGradeDMGT.triple $1bb0 = UpdateGradeDMGT.adddonce
$1b75 = UpdateGradeDMGT.addtonce $1bb4 = UpdateGradeDMGT.triple
$1b79 = UpdateGradeDMGT.tetris $1bc5 = UpdateGradeDMGT.addtonce
$1b7d = UpdateGradeDMGT.levelmult $1bc9 = UpdateGradeDMGT.tetris
$1b95 = UpdateGradeDMGT.mult5 $1bcd = UpdateGradeDMGT.levelmult
$1b9c = UpdateGradeDMGT.mult4 $1be5 = UpdateGradeDMGT.mult5
$1ba2 = UpdateGradeDMGT.mult3 $1bec = UpdateGradeDMGT.mult4
$1ba7 = UpdateGradeDMGT.mult2 $1bf2 = UpdateGradeDMGT.mult3
$1bab = UpdateGradeDMGT.mult1 $1bf7 = UpdateGradeDMGT.mult2
$1bac = UpdateGradeDMGT.processgrade $1bfb = UpdateGradeDMGT.mult1
$1bd0 = UpdateGradeDMGT.increasegrademaybe $1bfc = UpdateGradeDMGT.processgrade
$1bf1 = UpdateGradeDMGT.gotgm $1c20 = UpdateGradeDMGT.increasegrademaybe
$1bfc = DecayGradeDMGT $1c41 = UpdateGradeDMGT.gotgm
$1c1c = DecayGradeDMGT.nodecay $1c4c = DecayGradeDMGT
$1c21 = DecayGradeDMGT.decay $1c6c = DecayGradeDMGT.nodecay
$1c2d = UpdateGradeTGM1 $1c71 = DecayGradeDMGT.decay
$1c37 = UpdateGradeTGM1.trygradeup $1c7d = UpdateGradeTGM1
$1c51 = UpdateGradeTGM1.increasegrade $1c87 = UpdateGradeTGM1.trygradeup
$1c63 = UpdateGradeTGM1.skipjingle $1ca1 = UpdateGradeTGM1.increasegrade
$1c70 = UpdateGradeTGM1.maybegm $1cb3 = UpdateGradeTGM1.skipjingle
$1c86 = UpdateGradeDEAT $1cc0 = UpdateGradeTGM1.maybegm
$1c92 = UpdateGradeDEAT.notgm $1cd6 = UpdateGradeDEAT
$1cab = UpdateGradeDEAT.notm $1ce2 = UpdateGradeDEAT.notgm
$1ccb = UpdateGradeDEAT.disqualify $1cfb = UpdateGradeDEAT.notm
$1cd1 = UpdateGradeSHIR $1d1b = UpdateGradeDEAT.disqualify
$1d11 = UpdateGradeSHIR.s5torikan $1d21 = UpdateGradeSHIR
$1d21 = UpdateGradeSHIR.s10torikan $1d61 = UpdateGradeSHIR.s5torikan
$1d30 = UpdateGradeSHIR.disqualify $1d71 = UpdateGradeSHIR.s10torikan
SECTION: $1d36-$1fcc ($0297 bytes) ["SFX Functions"] $1d80 = UpdateGradeSHIR.disqualify
$1d36 = SFXInit SECTION: $1d86-$201c ($0297 bytes) ["SFX Functions"]
$1d58 = SFXPopQueue $1d86 = SFXInit
$1d6d = SFXPushQueue $1da8 = SFXPopQueue
$1d7e = SFXProcessQueue $1dbd = SFXPushQueue
$1d8b = !0 $1dce = SFXProcessQueue
$1dac = SFXTriggerNoise $1ddb = !0
$1db9 = !1 $1dfc = SFXTriggerNoise
$1dc6 = !2 $1e09 = !1
$1dd2 = SFXEnqueue $1e16 = !2
$1de7 = SFXEnqueue.findsfx $1e22 = SFXEnqueue
$1dfc = !3 $1e37 = SFXEnqueue.findsfx
$1e0c = !4 $1e4c = !3
$1e1c = !5 $1e5c = !4
$1e2c = !6 $1e6c = !5
$1e3c = !7 $1e7c = !6
$1e4c = !8 $1e8c = !7
$1e5c = !9 $1e9c = !8
$1e6c = !10 $1eac = !9
$1e7c = !11 $1ebc = !10
$1e8c = !12 $1ecc = !11
$1e9c = !13 $1edc = !12
$1eac = !14 $1eec = !13
$1ebc = !15 $1efc = !14
$1ecc = !16 $1f0c = !15
$1edc = !17 $1f1c = !16
$1eeb = !18 $1f2c = !17
$1efa = !19 $1f3b = !18
$1f09 = !20 $1f4a = !19
$1f17 = !21 $1f59 = !20
$1f25 = !22 $1f67 = !21
$1f33 = !23 $1f75 = !22
$1f40 = SFXKill $1f83 = !23
$1f6b = SFXPlayNoise $1f90 = SFXKill
$1f76 = SFXPlayNoise.noisereg $1fbb = SFXPlayNoise
$1f83 = !24 $1fc6 = SFXPlayNoise.noisereg
$1f8d = SFXPlayNoise.savenoiseplayhead $1fd3 = !24
$1f96 = SFXPlay $1fdd = SFXPlayNoise.savenoiseplayhead
$1fa1 = !25 $1fe6 = SFXPlay
$1fa4 = SFXPlay.play $1ff1 = !25
$1fb0 = SFXPlay.getRegister $1ff4 = SFXPlay.play
$1fba = !26 $2000 = SFXPlay.getRegister
$1fc4 = SFXPlay.savePlayhead $200a = !26
SECTION: $1fcd-$21ba ($01ee bytes) ["RNG Functions"] $2014 = SFXPlay.savePlayhead
$1fcd = RNGInit SECTION: $201d-$220a ($01ee bytes) ["RNG Functions"]
$1ffd = !0 $201d = RNGInit
$2018 = RNGInit.complexinit $204d = !0
$202f = !1 $2068 = RNGInit.complexinit
$2049 = ShiftHistory $207f = !1
$2066 = GetNextHellPiece $2099 = ShiftHistory
$206b = GetNextTGM1Piece $20b6 = GetNextHellPiece
$206e = !2 $20bb = GetNextTGM1Piece
$2086 = !3 $20be = !2
$2088 = GetNextTGM2Piece $20d6 = !3
$208b = !4 $20d8 = GetNextTGM2Piece
$20a3 = !5 $20db = !4
$20a5 = GetNextNesPiece $20f3 = !5
$20b3 = GetNextTGM3Piece $20f5 = GetNextNesPiece
$20b6 = !6 $2103 = GetNextTGM3Piece
$20d9 = !7 $2106 = !6
$20dc = !8 $2129 = !7
$20ec = !9 $212c = !8
$20f6 = !10 $213c = !9
$2104 = !11 $2146 = !10
$2113 = !12 $2154 = !11
$211f = !13 $2163 = !12
$212b = !14 $216f = !13
$2137 = !15 $217b = !14
$2143 = !16 $2187 = !15
$214f = !17 $2193 = !16
$215b = !18 $219f = !17
$216a = GetNextPiece $21ab = !18
$2178 = GetNextPiece.nextpiecejumps $21ba = GetNextPiece
$2187 = Next35Piece $21c8 = GetNextPiece.nextpiecejumps
$2187 = !19 $21d7 = Next35Piece
$2191 = Next7Piece $21d7 = !19
$2191 = !20 $21e1 = Next7Piece
$219b = NextByte $21e1 = !20
SECTION: $21bb-$2370 ($01b6 bytes) ["Grading Data"] $21eb = NextByte
$21bb = sTGM1GradeScores SECTION: $220b-$23c0 ($01b6 bytes) ["Grading Data"]
$21dd = sTGM3InternalGradeSystem $220b = sTGM1GradeScores
$227d = sTGM3GradeBoosts $222d = sTGM3InternalGradeSystem
$229c = sTGM3LevelMultiplier $22cd = sTGM3GradeBoosts
$22a0 = sTGM3BaselineCOOL $22ec = sTGM3LevelMultiplier
$22a9 = sTGM3REGRETConditions $22f0 = sTGM3BaselineCOOL
$22bd = sDMGTGrading $22f9 = sTGM3REGRETConditions
SECTION: $2371-$2513 ($01a3 bytes) ["Level Functions"] $230d = sDMGTGrading
$2371 = LevelInit SECTION: $23c1-$2563 ($01a3 bytes) ["Level Functions"]
$23c1 = LevelUp $23c1 = LevelInit
$23e5 = LevelUp.doit $2411 = LevelUp
$2429 = LevelUp.checknlevel $2435 = LevelUp.doit
$2457 = !0 $2479 = LevelUp.checknlevel
$246f = !1 $24a7 = !0
$2478 = LevelUp.bellmaybe $24bf = !1
$248a = LevelUp.leveljinglemaybe $24c8 = LevelUp.bellmaybe
$2497 = LevelUp.checkspeedup $24da = LevelUp.leveljinglemaybe
$24a8 = !2 $24e7 = LevelUp.checkspeedup
$24b5 = !3 $24f8 = !2
$24c6 = !4 $2505 = !3
$24d3 = DoSpeedUp $2516 = !4
SECTION: $2514-$25e0 ($00cd bytes) ["Input Functions"] $2523 = DoSpeedUp
$2514 = InputInit SECTION: $2564-$2643 ($00e0 bytes) ["Score Functions"]
$2526 = GetInput $2564 = ScoreInit
$2526 = GetInput.btns $258c = IncreaseScore
$2533 = GetInput.readA $25c4 = IncreaseScore.doConvert
$2537 = GetInput.setA $25c6 = !0
$2542 = GetInput.clearA $25dc = IncreaseScore.carry
$2545 = GetInput.readB $25de = IncreaseScore.postConvert
$2549 = GetInput.setB $25eb = !1
$2554 = GetInput.clearB $25f2 = IncreaseScore.preAddDigit
$2557 = GetInput.readSelect $261a = IncreaseScore.addDigit
$255b = GetInput.setSelect $2630 = IncreaseScore.nextDigit
$2566 = GetInput.clearSelect SECTION: $2644-$2710 ($00cd bytes) ["Input Functions"]
$2569 = GetInput.readStart $2644 = InputInit
$256d = GetInput.setStart $2656 = GetInput
$2578 = GetInput.clearStart $2656 = GetInput.btns
$257b = GetInput.dpad $2663 = GetInput.readA
$2588 = GetInput.readUp $2667 = GetInput.setA
$258c = GetInput.setUp $2672 = GetInput.clearA
$2597 = GetInput.clearUp $2675 = GetInput.readB
$259a = GetInput.readDown $2679 = GetInput.setB
$259e = GetInput.setDown $2684 = GetInput.clearB
$25a9 = GetInput.clearDown $2687 = GetInput.readSelect
$25ac = GetInput.readLeft $268b = GetInput.setSelect
$25b0 = GetInput.setLeft $2696 = GetInput.clearSelect
$25bb = GetInput.clearLeft $2699 = GetInput.readStart
$25be = GetInput.readRight $269d = GetInput.setStart
$25c2 = GetInput.setRight $26a8 = GetInput.clearStart
$25cd = GetInput.clearRight $26ab = GetInput.dpad
$25d0 = GetInput.priorities $26b8 = GetInput.readUp
$25db = GetInput.zero $26bc = GetInput.setUp
SECTION: $25e1-$26ac ($00cc bytes) ["Score Functions"] $26c7 = GetInput.clearUp
$25e1 = ScoreInit $26ca = GetInput.readDown
$2601 = IncreaseScore $26ce = GetInput.setDown
$2635 = IncreaseScore.doConvert $26d9 = GetInput.clearDown
$2637 = !0 $26dc = GetInput.readLeft
$264d = IncreaseScore.carry $26e0 = GetInput.setLeft
$264f = IncreaseScore.postConvert $26eb = GetInput.clearLeft
$265c = !1 $26ee = GetInput.readRight
$2663 = IncreaseScore.preAddDigit $26f2 = GetInput.setRight
$2683 = IncreaseScore.addDigit $26fd = GetInput.clearRight
$2699 = IncreaseScore.nextDigit $2700 = GetInput.priorities
SECTION: $26ad-$2763 ($00b7 bytes) ["SRAM Functions"] $270b = GetInput.zero
$26ad = RestoreSRAM SECTION: $2711-$27c7 ($00b7 bytes) ["SRAM Functions"]
$2706 = InitializeSRAM $2711 = RestoreSRAM
SECTION: $2764-$2807 ($00a4 bytes) ["Code Entry Point"] $276a = InitializeSRAM
$2764 = Main SECTION: $27c8-$286b ($00a4 bytes) ["Code Entry Point"]
$2779 = Main.wvr_u1 $27c8 = Main
$2782 = !0 $27dd = Main.wvr_u1
$2792 = Main.notgbc $27e6 = !0
$27c1 = Main.wvb_u2 $27f6 = Main.notgbc
$27c6 = !1 $2825 = Main.wvb_u2
$27cc = EventLoop $282a = !1
$27e2 = EventLoop.eventloopjumps $2830 = EventLoop
$27eb = EventLoopPostHandler $2846 = EventLoop.eventloopjumps
$27ed = EventLoopPostHandler.wvb_u3 $284f = EventLoopPostHandler
$27ff = EventLoopPostHandler.vblankjumps $2851 = EventLoopPostHandler.wvb_u3
SECTION: $2808-$287b ($0074 bytes) ["Time Functions"] $2863 = EventLoopPostHandler.vblankjumps
$2808 = TimeInit SECTION: $286c-$28df ($0074 bytes) ["Time Functions"]
$281d = ResetGameTime $286c = TimeInit
$2828 = CheckTorikan $2881 = ResetGameTime
$283f = CheckTorikan.failure $288c = CheckTorikan
$2841 = CheckTorikan.success $28a3 = CheckTorikan.failure
$2844 = HandleTimers $28a5 = CheckTorikan.success
SECTION: $287c-$28e9 ($006e bytes) ["Title Function Trampolines"] $28a8 = HandleTimers
$287c = SwitchToTitle SECTION: $28e0-$294d ($006e bytes) ["Title Function Trampolines"]
$2886 = TitleEventLoopHandler $28e0 = SwitchToTitle
$2890 = TitleVBlankHandler $28ea = TitleEventLoopHandler
$289a = DrawOption6 $28f4 = TitleVBlankHandler
SECTION: $28ea-$293b ($0052 bytes) ["Tile Functions"] $28fe = DrawOption6
$28ea = LoadTitleTiles SECTION: $294e-$299f ($0052 bytes) ["Tile Functions"]
$2908 = LoadGameplayTiles $294e = LoadTitleTiles
$291e = LoadGameplayTiles.gbc $296c = LoadGameplayTiles
$292d = LoadGameplayTiles.dmg $2982 = LoadGameplayTiles.gbc
SECTION: $293c-$2969 ($002e bytes) ["Memory Functions"] $2991 = LoadGameplayTiles.dmg
$293c = UnsafeMemCopy SECTION: $29a0-$29cd ($002e bytes) ["Memory Functions"]
$2945 = SafeMemCopy.wvr_u1 $29a0 = UnsafeMemCopy
$2945 = SafeMemCopy $29a9 = SafeMemCopy.wvr_u1
$2954 = UnsafeMemSet $29a9 = SafeMemCopy
$295c = SafeMemSet $29b8 = UnsafeMemSet
$295c = SafeMemSet.wvr_u2 $29c0 = SafeMemSet
SECTION: $296a-$2991 ($0028 bytes) ["Gameplay Function Trampolines"] $29c0 = SafeMemSet.wvr_u2
$296a = SwitchToGameplay SECTION: $29ce-$29f5 ($0028 bytes) ["Gameplay Function Trampolines"]
$2974 = SwitchToGameplayBig $29ce = SwitchToGameplay
$297e = GamePlayEventLoopHandler $29d8 = SwitchToGameplayBig
$2988 = GamePlayBigEventLoopHandler $29e2 = GamePlayEventLoopHandler
SECTION: $2992-$29b3 ($0022 bytes) ["OAM Functions"] $29ec = GamePlayBigEventLoopHandler
$2992 = CopyOAMHandler SECTION: $29f6-$2a17 ($0022 bytes) ["OAM Functions"]
$299e = ClearOAM $29f6 = CopyOAMHandler
SECTION: $29b4-$29cc ($0019 bytes) ["Interrupt Initialization Functions"] $2a02 = ClearOAM
$29b4 = IntrInit SECTION: $2a18-$2a30 ($0019 bytes) ["Interrupt Initialization Functions"]
$29b8 = InitializeLCDCInterrupt $2a18 = IntrInit
SECTION: $29cd-$29d6 ($000a bytes) ["OAM DMA Code"] $2a1c = InitializeLCDCInterrupt
$29cd = OAMDMA SECTION: $2a31-$2a3a ($000a bytes) ["OAM DMA Code"]
$29d7 = OAMDMAEnd $2a31 = OAMDMA
EMPTY: $29d7-$3fff ($1629 bytes) $2a3b = OAMDMAEnd
TOTAL EMPTY: $1634 bytes EMPTY: $2a3b-$3fff ($15c5 bytes)
TOTAL EMPTY: $15d0 bytes
ROMX bank #1: ROMX bank #1:
SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"]
@ -2232,32 +2233,32 @@ WRAM0 bank #0:
$c82c = wSPRScore4 $c82c = wSPRScore4
$c830 = wSPRScore5 $c830 = wSPRScore5
$c834 = wSPRScore6 $c834 = wSPRScore6
$c838 = wSPRCLevel1 $c838 = wSPRScore7
$c83c = wSPRCLevel2 $c83c = wSPRScore8
$c840 = wSPRCLevel3 $c840 = wSPRCLevel1
$c844 = wSPRCLevel4 $c844 = wSPRCLevel2
$c848 = wSPRNLevel1 $c848 = wSPRCLevel3
$c84c = wSPRNLevel2 $c84c = wSPRCLevel4
$c850 = wSPRNLevel3 $c850 = wSPRNLevel1
$c854 = wSPRNLevel4 $c854 = wSPRNLevel2
$c858 = wSPRQueue1A $c858 = wSPRNLevel3
$c85c = wSPRQueue1B $c85c = wSPRNLevel4
$c860 = wSPRQueue2A $c860 = wSPRQueue1A
$c864 = wSPRQueue2B $c864 = wSPRQueue1B
$c868 = wSPRModeRNG $c868 = wSPRQueue2A
$c86c = wSPRModeRot $c86c = wSPRQueue2B
$c870 = wSPRModeDrop $c870 = wSPRModeRNG
$c874 = wSPRModeHiG $c874 = wSPRModeRot
$c878 = wGrade0 $c878 = wSPRModeDrop
$c87c = wGrade1 $c87c = wSPRModeHiG
$c880 = wUnused0 $c880 = wSPRGrade1
$c884 = wUnused1 $c884 = wSPRGrade2
$c888 = wUnused2 $c888 = wUnused0
$c88c = wUnused3 $c88c = wUnused1
$c890 = wUnused4 $c890 = wUnused2
$c894 = wUnused5 $c894 = wUnused3
$c898 = wUnused6 $c898 = wUnused4
$c89c = wUnused7 $c89c = wUnused5
SECTION: $c8a0-$cd1e ($047f bytes) ["Field Variables"] SECTION: $c8a0-$cd1e ($047f bytes) ["Field Variables"]
$c8a0 = wField $c8a0 = wField
$c990 = wBackupField $c990 = wBackupField
@ -2358,58 +2359,57 @@ HRAM bank #0:
$ffab = hCLevel $ffab = hCLevel
$ffaf = hNLevel $ffaf = hNLevel
$ffb5 = hPrevHundreds $ffb5 = hPrevHundreds
SECTION: $ffb6-$ffc4 ($000f bytes) ["Score Variables"] SECTION: $ffb6-$ffc7 ($0012 bytes) ["Score Variables"]
$ffb6 = hScore $ffb6 = hScore
$ffbc = hScoreIncrement $ffbe = hScoreIncrement
$ffbe = hScoreIncrementBCD $ffc0 = hScoreIncrementBCD
$ffc4 = hScoreIncrementHead SECTION: $ffc8-$ffd2 ($000b bytes) ["High RNG Variables"]
SECTION: $ffc5-$ffcf ($000b bytes) ["High RNG Variables"] $ffc8 = hRNGSeed
$ffc5 = hRNGSeed $ffcc = hPieceHistory
$ffc9 = hPieceHistory $ffd0 = hNextPiece
$ffcd = hNextPiece $ffd1 = hUpcomingPiece1
$ffce = hUpcomingPiece1 $ffd2 = hUpcomingPiece2
$ffcf = hUpcomingPiece2 SECTION: $ffd3-$ffdc ($000a bytes) ["High Gameplay Variables"]
SECTION: $ffd0-$ffd9 ($000a bytes) ["High Gameplay Variables"] $ffd3 = hCurrentPiece
$ffd0 = hCurrentPiece $ffd4 = hCurrentPieceX
$ffd1 = hCurrentPieceX $ffd5 = hCurrentPieceY
$ffd2 = hCurrentPieceY $ffd6 = hCurrentPieceRotationState
$ffd3 = hCurrentPieceRotationState $ffd7 = hHeldPiece
$ffd4 = hHeldPiece $ffd8 = hHoldSpent
$ffd5 = hHoldSpent $ffd9 = hMode
$ffd6 = hMode $ffda = hModeCounter
$ffd7 = hModeCounter $ffdb = hPrePause
$ffd8 = hPrePause $ffdc = hRequestedJingle
$ffd9 = hRequestedJingle SECTION: $ffdd-$ffe6 ($000a bytes) ["OAM DMA"]
SECTION: $ffda-$ffe3 ($000a bytes) ["OAM DMA"] $ffdd = hOAMDMA
$ffda = hOAMDMA $ffe3 = !0
$ffe0 = !0 SECTION: $ffe7-$ffef ($0009 bytes) ["High SFX Variables"]
SECTION: $ffe4-$ffec ($0009 bytes) ["High SFX Variables"] $ffe7 = hPlayhead
$ffe4 = hPlayhead $ffe9 = hCurrentlyPlaying
$ffe6 = hCurrentlyPlaying $ffea = hPlayQueue
$ffe7 = hPlayQueue $ffee = hNoisePlayhead
$ffeb = hNoisePlayhead SECTION: $fff0-$fff7 ($0008 bytes) ["High Input Variables"]
SECTION: $ffed-$fff4 ($0008 bytes) ["High Input Variables"] $fff0 = hUpState
$ffed = hUpState $fff1 = hDownState
$ffee = hDownState $fff2 = hLeftState
$ffef = hLeftState $fff3 = hRightState
$fff0 = hRightState $fff4 = hAState
$fff1 = hAState $fff5 = hBState
$fff2 = hBState $fff6 = hStartState
$fff3 = hStartState $fff7 = hSelectState
$fff4 = hSelectState SECTION: $fff8-$fff9 ($0002 bytes) ["High Time Variables"]
SECTION: $fff5-$fff6 ($0002 bytes) ["High Time Variables"] $fff8 = hFrameCtr
$fff5 = hFrameCtr $fff9 = hEvenFrame
$fff6 = hEvenFrame SECTION: $fffa-$fffa ($0001 byte) ["High Globals"]
SECTION: $fff7-$fff7 ($0001 byte) ["High Globals"] $fffa = hGameState
$fff7 = hGameState SECTION: $fffb-$fffb ($0001 byte) ["High Interrupt Variables"]
SECTION: $fff8-$fff8 ($0001 byte) ["High Interrupt Variables"] $fffb = hLCDCCtr
$fff8 = hLCDCCtr EMPTY: $fffc-$fffe ($0003 bytes)
EMPTY: $fff9-$fffe ($0006 bytes) TOTAL EMPTY: $0003 bytes
TOTAL EMPTY: $0006 bytes
SUMMARY: SUMMARY:
ROM0: 10700 bytes used / 5684 free ROM0: 10800 bytes used / 5584 free
ROMX: 56508 bytes used / 41796 free in 6 banks ROMX: 56508 bytes used / 41796 free in 6 banks
SRAM: 14 bytes used / 8178 free in 1 bank SRAM: 14 bytes used / 8178 free in 1 bank
WRAM0: 3503 bytes used / 593 free WRAM0: 3503 bytes used / 593 free
HRAM: 121 bytes used / 6 free HRAM: 124 bytes used / 3 free

Binary file not shown.

View File

@ -99,193 +99,194 @@
00:17d0 ApplyHold.postoffsets 00:17d0 ApplyHold.postoffsets
00:17d4 ApplyHold.getoffh 00:17d4 ApplyHold.getoffh
00:17df ApplyHold.skipoffh 00:17df ApplyHold.skipoffh
00:1819 ApplyNumbers6 00:1819 ApplyNumbers8
00:1841 ApplyNumbers4 00:184d ApplyNumbers6
00:185d SetNumberSpritePositions 00:1875 ApplyNumbers4
00:1944 GradeRendering 00:1891 SetNumberSpritePositions
00:1979 GradeRendering.effect 00:1998 GradeRendering
00:1989 GradeRendering.noeffect 00:19cd GradeRendering.effect
00:1991 GradeRendering.drawgrade 00:19dd GradeRendering.noeffect
00:1998 GradeRendering.regulargrade 00:19e5 GradeRendering.drawgrade
00:19a0 GradeRendering.sgrade 00:19ec GradeRendering.regulargrade
00:19b6 GradeRendering.hisgrade 00:19f4 GradeRendering.sgrade
00:19cc GradeRendering.mgrade 00:1a0a GradeRendering.hisgrade
00:19e2 GradeRendering.lettergrade 00:1a20 GradeRendering.mgrade
00:19ff GradeRendering.mk 00:1a36 GradeRendering.lettergrade
00:1a05 GradeRendering.mv 00:1a53 GradeRendering.mk
00:1a0b GradeRendering.mo 00:1a59 GradeRendering.mv
00:1a11 GradeRendering.mm 00:1a5f GradeRendering.mo
00:1a17 GradeRendering.gmgrade 00:1a65 GradeRendering.mm
00:1a22 GradeInit 00:1a6b GradeRendering.gmgrade
00:1a4d GradeInit.grade9start 00:1a76 GradeInit
00:1a52 GradeInit.end 00:1aa1 GradeInit.grade9start
00:1a54 UpdateGrade 00:1aa6 GradeInit.end
00:1a62 UpdateGrade.gradejumptable 00:1aa8 UpdateGrade
00:1a74 DecayGradeProcess 00:1ab6 UpdateGrade.gradejumptable
00:1a82 DecayGradeProcess.gradejumptable 00:1ac8 DecayGradeProcess
00:1a94 DecayGradeDelay 00:1ad6 DecayGradeProcess.gradejumptable
00:1aa2 DecayGradeDelay.gradejumptable 00:1ae8 DecayGradeDelay
00:1ab4 PrepareScore 00:1af6 DecayGradeDelay.gradejumptable
00:1acb UpdateGradeDMGT 00:1b08 PrepareScore
00:1ae1 UpdateGradeDMGT.clearrate 00:1b1b UpdateGradeDMGT
00:1af2 UpdateGradeDMGT.combomult 00:1b31 UpdateGradeDMGT.clearrate
00:1aff UpdateGradeDMGT.combo10 00:1b42 UpdateGradeDMGT.combomult
00:1b10 UpdateGradeDMGT.combo5 00:1b4f UpdateGradeDMGT.combo10
00:1b21 UpdateGradeDMGT.combo1 00:1b60 UpdateGradeDMGT.combo5
00:1b30 UpdateGradeDMGT.prelevel 00:1b71 UpdateGradeDMGT.combo1
00:1b3f UpdateGradeDMGT.single 00:1b80 UpdateGradeDMGT.prelevel
00:1b4f UpdateGradeDMGT.double 00:1b8f UpdateGradeDMGT.single
00:1b60 UpdateGradeDMGT.adddonce 00:1b9f UpdateGradeDMGT.double
00:1b64 UpdateGradeDMGT.triple 00:1bb0 UpdateGradeDMGT.adddonce
00:1b75 UpdateGradeDMGT.addtonce 00:1bb4 UpdateGradeDMGT.triple
00:1b79 UpdateGradeDMGT.tetris 00:1bc5 UpdateGradeDMGT.addtonce
00:1b7d UpdateGradeDMGT.levelmult 00:1bc9 UpdateGradeDMGT.tetris
00:1b95 UpdateGradeDMGT.mult5 00:1bcd UpdateGradeDMGT.levelmult
00:1b9c UpdateGradeDMGT.mult4 00:1be5 UpdateGradeDMGT.mult5
00:1ba2 UpdateGradeDMGT.mult3 00:1bec UpdateGradeDMGT.mult4
00:1ba7 UpdateGradeDMGT.mult2 00:1bf2 UpdateGradeDMGT.mult3
00:1bab UpdateGradeDMGT.mult1 00:1bf7 UpdateGradeDMGT.mult2
00:1bac UpdateGradeDMGT.processgrade 00:1bfb UpdateGradeDMGT.mult1
00:1bd0 UpdateGradeDMGT.increasegrademaybe 00:1bfc UpdateGradeDMGT.processgrade
00:1bf1 UpdateGradeDMGT.gotgm 00:1c20 UpdateGradeDMGT.increasegrademaybe
00:1bfc DecayGradeDMGT 00:1c41 UpdateGradeDMGT.gotgm
00:1c1c DecayGradeDMGT.nodecay 00:1c4c DecayGradeDMGT
00:1c21 DecayGradeDMGT.decay 00:1c6c DecayGradeDMGT.nodecay
00:1c2d UpdateGradeTGM1 00:1c71 DecayGradeDMGT.decay
00:1c37 UpdateGradeTGM1.trygradeup 00:1c7d UpdateGradeTGM1
00:1c51 UpdateGradeTGM1.increasegrade 00:1c87 UpdateGradeTGM1.trygradeup
00:1c63 UpdateGradeTGM1.skipjingle 00:1ca1 UpdateGradeTGM1.increasegrade
00:1c70 UpdateGradeTGM1.maybegm 00:1cb3 UpdateGradeTGM1.skipjingle
00:1c86 UpdateGradeDEAT 00:1cc0 UpdateGradeTGM1.maybegm
00:1c92 UpdateGradeDEAT.notgm 00:1cd6 UpdateGradeDEAT
00:1cab UpdateGradeDEAT.notm 00:1ce2 UpdateGradeDEAT.notgm
00:1ccb UpdateGradeDEAT.disqualify 00:1cfb UpdateGradeDEAT.notm
00:1cd1 UpdateGradeSHIR 00:1d1b UpdateGradeDEAT.disqualify
00:1d11 UpdateGradeSHIR.s5torikan 00:1d21 UpdateGradeSHIR
00:1d21 UpdateGradeSHIR.s10torikan 00:1d61 UpdateGradeSHIR.s5torikan
00:1d30 UpdateGradeSHIR.disqualify 00:1d71 UpdateGradeSHIR.s10torikan
00:1d36 SFXInit 00:1d80 UpdateGradeSHIR.disqualify
00:1d58 SFXPopQueue 00:1d86 SFXInit
00:1d6d SFXPushQueue 00:1da8 SFXPopQueue
00:1d7e SFXProcessQueue 00:1dbd SFXPushQueue
00:1dac SFXTriggerNoise 00:1dce SFXProcessQueue
00:1dd2 SFXEnqueue 00:1dfc SFXTriggerNoise
00:1de7 SFXEnqueue.findsfx 00:1e22 SFXEnqueue
00:1f40 SFXKill 00:1e37 SFXEnqueue.findsfx
00:1f6b SFXPlayNoise 00:1f90 SFXKill
00:1f76 SFXPlayNoise.noisereg 00:1fbb SFXPlayNoise
00:1f8d SFXPlayNoise.savenoiseplayhead 00:1fc6 SFXPlayNoise.noisereg
00:1f96 SFXPlay 00:1fdd SFXPlayNoise.savenoiseplayhead
00:1fa4 SFXPlay.play 00:1fe6 SFXPlay
00:1fb0 SFXPlay.getRegister 00:1ff4 SFXPlay.play
00:1fc4 SFXPlay.savePlayhead 00:2000 SFXPlay.getRegister
00:1fcd RNGInit 00:2014 SFXPlay.savePlayhead
00:2018 RNGInit.complexinit 00:201d RNGInit
00:2049 ShiftHistory 00:2068 RNGInit.complexinit
00:2066 GetNextHellPiece 00:2099 ShiftHistory
00:206b GetNextTGM1Piece 00:20b6 GetNextHellPiece
00:2088 GetNextTGM2Piece 00:20bb GetNextTGM1Piece
00:20a5 GetNextNesPiece 00:20d8 GetNextTGM2Piece
00:20b3 GetNextTGM3Piece 00:20f5 GetNextNesPiece
00:216a GetNextPiece 00:2103 GetNextTGM3Piece
00:2178 GetNextPiece.nextpiecejumps 00:21ba GetNextPiece
00:2187 Next35Piece 00:21c8 GetNextPiece.nextpiecejumps
00:2191 Next7Piece 00:21d7 Next35Piece
00:219b NextByte 00:21e1 Next7Piece
00:21bb sTGM1GradeScores 00:21eb NextByte
00:21dd sTGM3InternalGradeSystem 00:220b sTGM1GradeScores
00:227d sTGM3GradeBoosts 00:222d sTGM3InternalGradeSystem
00:229c sTGM3LevelMultiplier 00:22cd sTGM3GradeBoosts
00:22a0 sTGM3BaselineCOOL 00:22ec sTGM3LevelMultiplier
00:22a9 sTGM3REGRETConditions 00:22f0 sTGM3BaselineCOOL
00:22bd sDMGTGrading 00:22f9 sTGM3REGRETConditions
00:2371 LevelInit 00:230d sDMGTGrading
00:23c1 LevelUp 00:23c1 LevelInit
00:23e5 LevelUp.doit 00:2411 LevelUp
00:2429 LevelUp.checknlevel 00:2435 LevelUp.doit
00:2478 LevelUp.bellmaybe 00:2479 LevelUp.checknlevel
00:248a LevelUp.leveljinglemaybe 00:24c8 LevelUp.bellmaybe
00:2497 LevelUp.checkspeedup 00:24da LevelUp.leveljinglemaybe
00:24d3 DoSpeedUp 00:24e7 LevelUp.checkspeedup
00:2514 InputInit 00:2523 DoSpeedUp
00:2526 GetInput 00:2564 ScoreInit
00:2526 GetInput.btns 00:258c IncreaseScore
00:2533 GetInput.readA 00:25c4 IncreaseScore.doConvert
00:2537 GetInput.setA 00:25dc IncreaseScore.carry
00:2542 GetInput.clearA 00:25de IncreaseScore.postConvert
00:2545 GetInput.readB 00:25f2 IncreaseScore.preAddDigit
00:2549 GetInput.setB 00:261a IncreaseScore.addDigit
00:2554 GetInput.clearB 00:2630 IncreaseScore.nextDigit
00:2557 GetInput.readSelect 00:2644 InputInit
00:255b GetInput.setSelect 00:2656 GetInput
00:2566 GetInput.clearSelect 00:2656 GetInput.btns
00:2569 GetInput.readStart 00:2663 GetInput.readA
00:256d GetInput.setStart 00:2667 GetInput.setA
00:2578 GetInput.clearStart 00:2672 GetInput.clearA
00:257b GetInput.dpad 00:2675 GetInput.readB
00:2588 GetInput.readUp 00:2679 GetInput.setB
00:258c GetInput.setUp 00:2684 GetInput.clearB
00:2597 GetInput.clearUp 00:2687 GetInput.readSelect
00:259a GetInput.readDown 00:268b GetInput.setSelect
00:259e GetInput.setDown 00:2696 GetInput.clearSelect
00:25a9 GetInput.clearDown 00:2699 GetInput.readStart
00:25ac GetInput.readLeft 00:269d GetInput.setStart
00:25b0 GetInput.setLeft 00:26a8 GetInput.clearStart
00:25bb GetInput.clearLeft 00:26ab GetInput.dpad
00:25be GetInput.readRight 00:26b8 GetInput.readUp
00:25c2 GetInput.setRight 00:26bc GetInput.setUp
00:25cd GetInput.clearRight 00:26c7 GetInput.clearUp
00:25d0 GetInput.priorities 00:26ca GetInput.readDown
00:25db GetInput.zero 00:26ce GetInput.setDown
00:25e1 ScoreInit 00:26d9 GetInput.clearDown
00:2601 IncreaseScore 00:26dc GetInput.readLeft
00:2635 IncreaseScore.doConvert 00:26e0 GetInput.setLeft
00:264d IncreaseScore.carry 00:26eb GetInput.clearLeft
00:264f IncreaseScore.postConvert 00:26ee GetInput.readRight
00:2663 IncreaseScore.preAddDigit 00:26f2 GetInput.setRight
00:2683 IncreaseScore.addDigit 00:26fd GetInput.clearRight
00:2699 IncreaseScore.nextDigit 00:2700 GetInput.priorities
00:26ad RestoreSRAM 00:270b GetInput.zero
00:2706 InitializeSRAM 00:2711 RestoreSRAM
00:2764 Main 00:276a InitializeSRAM
00:2779 Main.wvr_u1 00:27c8 Main
00:2792 Main.notgbc 00:27dd Main.wvr_u1
00:27c1 Main.wvb_u2 00:27f6 Main.notgbc
00:27cc EventLoop 00:2825 Main.wvb_u2
00:27e2 EventLoop.eventloopjumps 00:2830 EventLoop
00:27eb EventLoopPostHandler 00:2846 EventLoop.eventloopjumps
00:27ed EventLoopPostHandler.wvb_u3 00:284f EventLoopPostHandler
00:27ff EventLoopPostHandler.vblankjumps 00:2851 EventLoopPostHandler.wvb_u3
00:2808 TimeInit 00:2863 EventLoopPostHandler.vblankjumps
00:281d ResetGameTime 00:286c TimeInit
00:2828 CheckTorikan 00:2881 ResetGameTime
00:283f CheckTorikan.failure 00:288c CheckTorikan
00:2841 CheckTorikan.success 00:28a3 CheckTorikan.failure
00:2844 HandleTimers 00:28a5 CheckTorikan.success
00:287c SwitchToTitle 00:28a8 HandleTimers
00:2886 TitleEventLoopHandler 00:28e0 SwitchToTitle
00:2890 TitleVBlankHandler 00:28ea TitleEventLoopHandler
00:289a DrawOption6 00:28f4 TitleVBlankHandler
00:28ea LoadTitleTiles 00:28fe DrawOption6
00:2908 LoadGameplayTiles 00:294e LoadTitleTiles
00:291e LoadGameplayTiles.gbc 00:296c LoadGameplayTiles
00:292d LoadGameplayTiles.dmg 00:2982 LoadGameplayTiles.gbc
00:293c UnsafeMemCopy 00:2991 LoadGameplayTiles.dmg
00:2945 SafeMemCopy.wvr_u1 00:29a0 UnsafeMemCopy
00:2945 SafeMemCopy 00:29a9 SafeMemCopy.wvr_u1
00:2954 UnsafeMemSet 00:29a9 SafeMemCopy
00:295c SafeMemSet 00:29b8 UnsafeMemSet
00:295c SafeMemSet.wvr_u2 00:29c0 SafeMemSet
00:296a SwitchToGameplay 00:29c0 SafeMemSet.wvr_u2
00:2974 SwitchToGameplayBig 00:29ce SwitchToGameplay
00:297e GamePlayEventLoopHandler 00:29d8 SwitchToGameplayBig
00:2988 GamePlayBigEventLoopHandler 00:29e2 GamePlayEventLoopHandler
00:2992 CopyOAMHandler 00:29ec GamePlayBigEventLoopHandler
00:299e ClearOAM 00:29f6 CopyOAMHandler
00:29b4 IntrInit 00:2a02 ClearOAM
00:29b8 InitializeLCDCInterrupt 00:2a18 IntrInit
00:29cd OAMDMA 00:2a1c InitializeLCDCInterrupt
00:29d7 OAMDMAEnd 00:2a31 OAMDMA
00:2a3b OAMDMAEnd
01:4008 sDMGTSpeedCurve 01:4008 sDMGTSpeedCurve
01:4210 sDMGTSpeedCurveEnd 01:4210 sDMGTSpeedCurveEnd
01:4212 sTGM1SpeedCurve 01:4212 sTGM1SpeedCurve
@ -1921,32 +1922,32 @@
00:c82c wSPRScore4 00:c82c wSPRScore4
00:c830 wSPRScore5 00:c830 wSPRScore5
00:c834 wSPRScore6 00:c834 wSPRScore6
00:c838 wSPRCLevel1 00:c838 wSPRScore7
00:c83c wSPRCLevel2 00:c83c wSPRScore8
00:c840 wSPRCLevel3 00:c840 wSPRCLevel1
00:c844 wSPRCLevel4 00:c844 wSPRCLevel2
00:c848 wSPRNLevel1 00:c848 wSPRCLevel3
00:c84c wSPRNLevel2 00:c84c wSPRCLevel4
00:c850 wSPRNLevel3 00:c850 wSPRNLevel1
00:c854 wSPRNLevel4 00:c854 wSPRNLevel2
00:c858 wSPRQueue1A 00:c858 wSPRNLevel3
00:c85c wSPRQueue1B 00:c85c wSPRNLevel4
00:c860 wSPRQueue2A 00:c860 wSPRQueue1A
00:c864 wSPRQueue2B 00:c864 wSPRQueue1B
00:c868 wSPRModeRNG 00:c868 wSPRQueue2A
00:c86c wSPRModeRot 00:c86c wSPRQueue2B
00:c870 wSPRModeDrop 00:c870 wSPRModeRNG
00:c874 wSPRModeHiG 00:c874 wSPRModeRot
00:c878 wGrade0 00:c878 wSPRModeDrop
00:c87c wGrade1 00:c87c wSPRModeHiG
00:c880 wUnused0 00:c880 wSPRGrade1
00:c884 wUnused1 00:c884 wSPRGrade2
00:c888 wUnused2 00:c888 wUnused0
00:c88c wUnused3 00:c88c wUnused1
00:c890 wUnused4 00:c890 wUnused2
00:c894 wUnused5 00:c894 wUnused3
00:c898 wUnused6 00:c898 wUnused4
00:c89c wUnused7 00:c89c wUnused5
00:c8a0 wField 00:c8a0 wField
00:c990 wBackupField 00:c990 wBackupField
00:ca80 wPreShadowField 00:ca80 wPreShadowField
@ -2033,38 +2034,37 @@
00:ffaf hNLevel 00:ffaf hNLevel
00:ffb5 hPrevHundreds 00:ffb5 hPrevHundreds
00:ffb6 hScore 00:ffb6 hScore
00:ffbc hScoreIncrement 00:ffbe hScoreIncrement
00:ffbe hScoreIncrementBCD 00:ffc0 hScoreIncrementBCD
00:ffc4 hScoreIncrementHead 00:ffc8 hRNGSeed
00:ffc5 hRNGSeed 00:ffcc hPieceHistory
00:ffc9 hPieceHistory 00:ffd0 hNextPiece
00:ffcd hNextPiece 00:ffd1 hUpcomingPiece1
00:ffce hUpcomingPiece1 00:ffd2 hUpcomingPiece2
00:ffcf hUpcomingPiece2 00:ffd3 hCurrentPiece
00:ffd0 hCurrentPiece 00:ffd4 hCurrentPieceX
00:ffd1 hCurrentPieceX 00:ffd5 hCurrentPieceY
00:ffd2 hCurrentPieceY 00:ffd6 hCurrentPieceRotationState
00:ffd3 hCurrentPieceRotationState 00:ffd7 hHeldPiece
00:ffd4 hHeldPiece 00:ffd8 hHoldSpent
00:ffd5 hHoldSpent 00:ffd9 hMode
00:ffd6 hMode 00:ffda hModeCounter
00:ffd7 hModeCounter 00:ffdb hPrePause
00:ffd8 hPrePause 00:ffdc hRequestedJingle
00:ffd9 hRequestedJingle 00:ffdd hOAMDMA
00:ffda hOAMDMA 00:ffe7 hPlayhead
00:ffe4 hPlayhead 00:ffe9 hCurrentlyPlaying
00:ffe6 hCurrentlyPlaying 00:ffea hPlayQueue
00:ffe7 hPlayQueue 00:ffee hNoisePlayhead
00:ffeb hNoisePlayhead 00:fff0 hUpState
00:ffed hUpState 00:fff1 hDownState
00:ffee hDownState 00:fff2 hLeftState
00:ffef hLeftState 00:fff3 hRightState
00:fff0 hRightState 00:fff4 hAState
00:fff1 hAState 00:fff5 hBState
00:fff2 hBState 00:fff6 hStartState
00:fff3 hStartState 00:fff7 hSelectState
00:fff4 hSelectState 00:fff8 hFrameCtr
00:fff5 hFrameCtr 00:fff9 hEvenFrame
00:fff6 hEvenFrame 00:fffa hGameState
00:fff7 hGameState 00:fffb hLCDCCtr
00:fff8 hLCDCCtr

View File

@ -4341,7 +4341,6 @@ BigFieldDelay::
sub a, 2 ; - 2 sub a, 2 ; - 2
ldh [hComboCt], a ldh [hComboCt], a
; Line clear delay. ; Line clear delay.
; Count down the delay. If we're out of delay, clear the lines and go to LINE_ARE. ; Count down the delay. If we're out of delay, clear the lines and go to LINE_ARE.
.lineclear .lineclear

View File

@ -310,15 +310,15 @@ DecayGradeDelay::
; Get the four most significant figures of the score in BC as BCD. ; Get the four most significant figures of the score in BC as BCD.
PrepareScore: PrepareScore:
ld a, [hScore+3] ldh a, [hScore+SCORE_HUNDREDS]
ld b, a ld b, a
ld a, [hScore+2] ldh a, [hScore+SCORE_THOUSANDS]
swap a swap a
or b or b
ld c, a ld c, a
ld a, [hScore+1] ldh a, [hScore+SCORE_TENTHOUSANDS]
ld b, a ld b, a
ld a, [hScore] ldh a, [hScore+SCORE_HUNDREDTHOUSANDS]
swap a swap a
or b or b
ld b, a ld b, a
@ -457,10 +457,10 @@ UpdateGradeDMGT::
; What is our level multiplier? ; What is our level multiplier?
; Running counter is in in D now. ; Running counter is in in D now.
.levelmult .levelmult
ld a, [hCLevel] ; thousands ld a, [hCLevel+CLEVEL_THOUSANDS] ; thousands
cp a, 1 cp a, 1
jr nc, .mult5 jr nc, .mult5
ld a, [hCLevel+1] ; hundreds ld a, [hCLevel+CLEVEL_HUNDREDS] ; hundreds
cp a, 7 cp a, 7
jr nc, .mult4 jr nc, .mult4
cp a, 5 cp a, 5
@ -685,7 +685,7 @@ UpdateGradeTGM1:
.maybegm .maybegm
; Level needs to be 1000 or greater. ; Level needs to be 1000 or greater.
ld a, [hCLevel] ; Level, thousands digit. ld a, [hCLevel+CLEVEL_THOUSANDS] ; Level, thousands digit.
cp a, 1 cp a, 1
ret c ret c
@ -722,7 +722,7 @@ UpdateGradeDEAT:
jr nz, .notm jr nz, .notm
; We should be GM if we're at or past level 1000. ; We should be GM if we're at or past level 1000.
ldh a, [hCLevel] ; Level, thousands digit. ldh a, [hCLevel+CLEVEL_THOUSANDS] ; Level, thousands digit.
cp a, 1 cp a, 1
ret c ; If less than 1000, return. ret c ; If less than 1000, return.
@ -741,7 +741,7 @@ UpdateGradeDEAT:
.notm .notm
; If we're not M, check if we should be M. ; If we're not M, check if we should be M.
ldh a, [hCLevel+1] ; Level, hundreds digit. ldh a, [hCLevel+CLEVEL_HUNDREDS] ; Level, hundreds digit.
cp a, 5 cp a, 5
ret c ; If less than 500, return. ret c ; If less than 500, return.
@ -786,13 +786,13 @@ UpdateGradeSHIR:
ret z ret z
; We don't give out a grade until level 100. ; We don't give out a grade until level 100.
ldh a, [hCLevel+1] ; Level, hundreds digit. ldh a, [hCLevel+CLEVEL_HUNDREDS] ; Level, hundreds digit.
cp a, 0 cp a, 0
ret z ret z
; Get the hundreds and thousands of the level as a hex number. ; Get the hundreds and thousands of the level as a hex number.
ld b, a ; Hundreds ld b, a ; Hundreds
ldh a, [hCLevel] ; Thousands ldh a, [hCLevel+CLEVEL_THOUSANDS] ; Thousands
swap a swap a
or b or b

View File

@ -176,7 +176,7 @@ DEF HOLD_BASE_X EQU 100
DEF HOLD_BASE_Y EQU 77 DEF HOLD_BASE_Y EQU 77
DEF QUEUE_BASE_X EQU 133 DEF QUEUE_BASE_X EQU 133
DEF QUEUE_BASE_Y EQU 35 DEF QUEUE_BASE_Y EQU 35
DEF SCORE_BASE_X EQU 112 DEF SCORE_BASE_X EQU 99
DEF SCORE_BASE_Y EQU 112 DEF SCORE_BASE_Y EQU 112
DEF LEVEL_BASE_X EQU 112 DEF LEVEL_BASE_X EQU 112
DEF CLEVEL_BASE_Y EQU 133 DEF CLEVEL_BASE_Y EQU 133
@ -372,5 +372,23 @@ DEF MODE_GAME_OVER EQU 21
DEF MODE_PRE_GAME_OVER EQU 24 DEF MODE_PRE_GAME_OVER EQU 24
DEF MODE_PAUSED EQU 27 DEF MODE_PAUSED EQU 27
; Helpers to avoid magic numbers
DEF SCORE_ONES EQU 7
DEF SCORE_TENS EQU 6
DEF SCORE_HUNDREDS EQU 5
DEF SCORE_THOUSANDS EQU 4
DEF SCORE_TENTHOUSANDS EQU 3
DEF SCORE_HUNDREDTHOUSANDS EQU 2
DEF SCORE_MILLIONS EQU 1
DEF SCORE_TENMILLIONSS EQU 0
DEF CLEVEL_THOUSANDS EQU 0
DEF CLEVEL_HUNDREDS EQU 1
DEF CLEVEL_TENS EQU 2
DEF CLEVEL_ONES EQU 3
DEF NLEVEL_THOUSANDS EQU 0
DEF NLEVEL_HUNDREDS EQU 1
DEF NLEVEL_TENS EQU 2
DEF NLEVEL_ONES EQU 3
ENDC ENDC

View File

@ -23,10 +23,9 @@ INCLUDE "globals.asm"
SECTION "Score Variables", HRAM SECTION "Score Variables", HRAM
hScore:: ds 6 hScore:: ds 8
hScoreIncrement:: ds 2 hScoreIncrement:: ds 2
hScoreIncrementBCD:: ds 6 hScoreIncrementBCD:: ds 8
hScoreIncrementHead:: ds 1
SECTION "Score Functions", ROM0 SECTION "Score Functions", ROM0
@ -39,6 +38,8 @@ ScoreInit::
ldh [hScore+3], a ldh [hScore+3], a
ldh [hScore+4], a ldh [hScore+4], a
ldh [hScore+5], a ldh [hScore+5], a
ldh [hScore+6], a
ldh [hScore+7], a
ldh [hScoreIncrement], a ldh [hScoreIncrement], a
ldh [hScoreIncrement+1], a ldh [hScoreIncrement+1], a
ld a, $FF ld a, $FF
@ -48,6 +49,8 @@ ScoreInit::
ldh [hScoreIncrementBCD+3], a ldh [hScoreIncrementBCD+3], a
ldh [hScoreIncrementBCD+4], a ldh [hScoreIncrementBCD+4], a
ldh [hScoreIncrementBCD+5], a ldh [hScoreIncrementBCD+5], a
ldh [hScoreIncrementBCD+6], a
ldh [hScoreIncrementBCD+7], a
ret ret
@ -61,6 +64,8 @@ IncreaseScore::
ldh [hScoreIncrementBCD+3], a ldh [hScoreIncrementBCD+3], a
ldh [hScoreIncrementBCD+4], a ldh [hScoreIncrementBCD+4], a
ldh [hScoreIncrementBCD+5], a ldh [hScoreIncrementBCD+5], a
ldh [hScoreIncrementBCD+6], a
ldh [hScoreIncrementBCD+7], a
; First convert to BCD. ; First convert to BCD.
ldh a, [hScoreIncrement] ldh a, [hScoreIncrement]
@ -112,17 +117,21 @@ IncreaseScore::
ld [hl+], a ld [hl+], a
ld [hl], a ld [hl], a
ld de, hScoreIncrementBCD+5 ld hl, hScoreIncrementBCD+7
ld b, 0 ld b, 0
ld a, $FF ld a, $FF
: cp a, b : cp a, [hl]
jr nz, .preAddDigit jr nz, .preAddDigit
inc b inc b
dec de dec hl
jr :- jr :-
.preAddDigit .preAddDigit
; B contains the amount of times we need to shift the BCD score to the right. ; B contains the amount of times we need to shift the BCD score to the right.
ldh a, [hScoreIncrementBCD+6]
ldh [hScoreIncrementBCD+7], a
ldh a, [hScoreIncrementBCD+5]
ldh [hScoreIncrementBCD+6], a
ldh a, [hScoreIncrementBCD+4] ldh a, [hScoreIncrementBCD+4]
ldh [hScoreIncrementBCD+5], a ldh [hScoreIncrementBCD+5], a
ldh a, [hScoreIncrementBCD+3] ldh a, [hScoreIncrementBCD+3]
@ -136,9 +145,9 @@ IncreaseScore::
xor a, a xor a, a
ldh [hScoreIncrementBCD], a ldh [hScoreIncrementBCD], a
dec b dec b
jr z, :- jr nz, .preAddDigit
ld hl, hScore+5 ld hl, hScore+7
ld de, hScoreIncrementBCD+5 ld de, hScoreIncrementBCD+7
; DE is now pointing to the last digit of the BCD score. ; DE is now pointing to the last digit of the BCD score.
; HL points at the last digit of the displayed score. ; HL points at the last digit of the displayed score.
@ -156,8 +165,8 @@ IncreaseScore::
cp a, $0A cp a, $0A
jr c, .nextDigit jr c, .nextDigit
; Except if this is the 6th digit. ; Except if this is the 8th digit.
ld a, 5 ld a, 7
cp a, b cp a, b
jr z, .nextDigit jr z, .nextDigit
@ -175,7 +184,7 @@ IncreaseScore::
dec hl dec hl
; Check if we're out of numbers. ; Check if we're out of numbers.
ld a, 5 ld a, 7
cp a, b cp a, b
jr nz, .addDigit jr nz, .addDigit

View File

@ -40,6 +40,8 @@ wSPRScore3:: ds 4
wSPRScore4:: ds 4 wSPRScore4:: ds 4
wSPRScore5:: ds 4 wSPRScore5:: ds 4
wSPRScore6:: ds 4 wSPRScore6:: ds 4
wSPRScore7:: ds 4
wSPRScore8:: ds 4
wSPRCLevel1:: ds 4 wSPRCLevel1:: ds 4
wSPRCLevel2:: ds 4 wSPRCLevel2:: ds 4
wSPRCLevel3:: ds 4 wSPRCLevel3:: ds 4
@ -56,16 +58,14 @@ wSPRModeRNG:: ds 4
wSPRModeRot:: ds 4 wSPRModeRot:: ds 4
wSPRModeDrop:: ds 4 wSPRModeDrop:: ds 4
wSPRModeHiG:: ds 4 wSPRModeHiG:: ds 4
wGrade0:: ds 4 wSPRGrade1:: ds 4
wGrade1:: ds 4 wSPRGrade2:: ds 4
wUnused0:: ds 4 wUnused0:: ds 4
wUnused1:: ds 4 wUnused1:: ds 4
wUnused2:: ds 4 wUnused2:: ds 4
wUnused3:: ds 4 wUnused3:: ds 4
wUnused4:: ds 4 wUnused4:: ds 4
wUnused5:: ds 4 wUnused5:: ds 4
wUnused6:: ds 4
wUnused7:: ds 4
ENDU ENDU
@ -381,6 +381,64 @@ ApplyHold::
ret ret
; Generic function to draw a BCD number (8 digits) as 8 sprites.
; Address of first sprite in hl.
; Address of first digit in de.
ApplyNumbers8::
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
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
ret
; Generic function to draw a BCD number (6 digits) as 6 sprites. ; Generic function to draw a BCD number (6 digits) as 6 sprites.
; Address of first sprite in hl. ; Address of first sprite in hl.
; Address of first digit in de. ; Address of first digit in de.
@ -528,6 +586,30 @@ SetNumberSpritePositions::
ld [hl], a ld [hl], a
inc hl inc hl
inc hl inc hl
ld b, a
ld a, OAMF_PAL1 | $07
ld [hl], a
ld a, b
add a, 8
ld hl, wSPRScore7
ld [hl], SCORE_BASE_Y
inc hl
ld [hl], a
inc hl
inc hl
ld b, a
ld a, OAMF_PAL1 | $07
ld [hl], a
ld a, b
add a, 8
ld hl, wSPRScore8
ld [hl], SCORE_BASE_Y
inc hl
ld [hl], a
inc hl
inc hl
ld a, OAMF_PAL1 | $07 ld a, OAMF_PAL1 | $07
ld [hl], a ld [hl], a
@ -633,22 +715,22 @@ SetNumberSpritePositions::
GradeRendering:: GradeRendering::
; Set the Y position of the grade objects. ; Set the Y position of the grade objects.
ld a, GRADE_BASE_Y ld a, GRADE_BASE_Y
ld [wGrade0], a ld [wSPRGrade1], a
ld [wGrade1], a ld [wSPRGrade2], a
; Set the X position of the grade objects. ; Set the X position of the grade objects.
ldh a, [rSCX] ldh a, [rSCX]
ld b, a ld b, a
ld a, GRADE_BASE_X ld a, GRADE_BASE_X
sub a, b sub a, b
ld [wGrade0+1], a ld [wSPRGrade1+1], a
add a, 9 add a, 9
ld [wGrade1+1], a ld [wSPRGrade2+1], a
; Set the grades to blank ; Set the grades to blank
ld a, TILE_BLANK ld a, TILE_BLANK
ld [wGrade0+2], a ld [wSPRGrade1+2], a
ld [wGrade1+2], a ld [wSPRGrade2+2], a
; If our grade is GRADE_NONE, we don't need to do anything else. ; If our grade is GRADE_NONE, we don't need to do anything else.
ld a, [wDisplayedGrade] ld a, [wDisplayedGrade]
@ -667,19 +749,19 @@ GradeRendering::
; Cycle the palette of the grade objects. ; Cycle the palette of the grade objects.
.effect .effect
ld a, [wGrade0+3] ld a, [wSPRGrade1+3]
inc a inc a
and a, OAMF_PALMASK and a, OAMF_PALMASK
or a, OAMF_PAL1 or a, OAMF_PAL1
ld [wGrade0+3], a ld [wSPRGrade1+3], a
ld [wGrade1+3], a ld [wSPRGrade2+3], a
jr .drawgrade jr .drawgrade
; Set the palette of the grade objects to the normal palette. ; Set the palette of the grade objects to the normal palette.
.noeffect .noeffect
ld a, 7 | OAMF_PAL1 ld a, 7 | OAMF_PAL1
ld [wGrade0+3], a ld [wSPRGrade1+3], a
ld [wGrade1+3], a ld [wSPRGrade2+3], a
; Do we draw this as a regular grade? ; Do we draw this as a regular grade?
.drawgrade .drawgrade
@ -692,7 +774,7 @@ GradeRendering::
ld b, a ld b, a
ld a, "9" ld a, "9"
sub a, b sub a, b
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.sgrade .sgrade
@ -702,13 +784,13 @@ GradeRendering::
; Draw as S grade. ; Draw as S grade.
ld a, "S" ld a, "S"
ld [wGrade0+2], a ld [wSPRGrade1+2], a
ld a, [wDisplayedGrade] ld a, [wDisplayedGrade]
sub a, GRADE_S1 sub a, GRADE_S1
ld b, a ld b, a
ld a, "1" ld a, "1"
add a, b add a, b
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.hisgrade .hisgrade
@ -718,13 +800,13 @@ GradeRendering::
; Draw as high S grade. ; Draw as high S grade.
ld a, "S" ld a, "S"
ld [wGrade0+2], a ld [wSPRGrade1+2], a
ld a, [wDisplayedGrade] ld a, [wDisplayedGrade]
sub a, GRADE_S10 sub a, GRADE_S10
ld b, a ld b, a
ld a, "a" ld a, "a"
add a, b add a, b
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.mgrade .mgrade
@ -734,13 +816,13 @@ GradeRendering::
; Draw as m grade. ; Draw as m grade.
ld a, "m" ld a, "m"
ld [wGrade0+2], a ld [wSPRGrade1+2], a
ld a, [wDisplayedGrade] ld a, [wDisplayedGrade]
sub a, GRADE_M1 sub a, GRADE_M1
ld b, a ld b, a
ld a, "1" ld a, "1"
add a, b add a, b
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.lettergrade .lettergrade
@ -750,7 +832,7 @@ GradeRendering::
; Draw as MX grade. ; Draw as MX grade.
ld a, "M" ld a, "M"
ld [wGrade0+2], a ld [wSPRGrade1+2], a
ld a, [wDisplayedGrade] ld a, [wDisplayedGrade]
cp a, GRADE_M cp a, GRADE_M
ret z ; No second letter for M. ret z ; No second letter for M.
@ -766,30 +848,30 @@ GradeRendering::
.mk .mk
ld a, "K" ld a, "K"
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.mv .mv
ld a, "V" ld a, "V"
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.mo .mo
ld a, "O" ld a, "O"
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.mm .mm
ld a, "M" ld a, "M"
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret
.gmgrade .gmgrade
; Draw as GM grade. ; Draw as GM grade.
ld a, "G" ld a, "G"
ld [wGrade0+2], a ld [wSPRGrade1+2], a
ld a, "M" ld a, "M"
ld [wGrade1+2], a ld [wSPRGrade2+2], a
ret ret

View File

@ -614,7 +614,7 @@ GamePlayEventLoopHandlerB::
ld hl, wSPRScore1 ld hl, wSPRScore1
ld de, hScore ld de, hScore
call ApplyNumbers6 call ApplyNumbers8
ld hl, wSPRCLevel1 ld hl, wSPRCLevel1
ld de, hCLevel ld de, hCLevel
@ -1243,7 +1243,7 @@ GamePlayBigEventLoopHandlerB:
ld hl, wSPRScore1 ld hl, wSPRScore1
ld de, hScore ld de, hScore
call ApplyNumbers6 call ApplyNumbers8
ld hl, wSPRCLevel1 ld hl, wSPRCLevel1
ld de, hCLevel ld de, hCLevel