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