From 31155adce5413de490c3b8bcab0c0dfd8295b672 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Fri, 24 Nov 2023 07:43:46 +0100 Subject: [PATCH] Remove the initial free hold because the reason for it has been fixed long ago. --- bin/PandorasBlocks.gbc | Bin 262144 -> 262144 bytes bin/PandorasBlocks.map | 1120 ++++++++++++++++--------------- bin/PandorasBlocks.pocket | Bin 262144 -> 262144 bytes bin/PandorasBlocks.sym | 914 ++++++++++++------------- src/include/globals.asm | 1 + src/res/other_data.inc | 2 +- src/res/sources/tiles_title.gbr | Bin 39009 -> 39009 bytes src/rng.asm | 22 +- src/sprites.asm | 12 + src/state_gameplay.asm | 16 +- 10 files changed, 1059 insertions(+), 1028 deletions(-) diff --git a/bin/PandorasBlocks.gbc b/bin/PandorasBlocks.gbc index a4c1a5f5e2d351aa367e1f8e5fe2a2a88ab49734..2e33753365a2401d38427ac9220e277442ceb131 100644 GIT binary patch delta 6540 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 delta 6611 zcmb_g3wTpiwmv&;64KJgVcL>Xpy#Abo4(SPQcOo0TWCoONDEV5a*>BEs2~DY?*}r{ z00aFL9f1QJ7=SJwpjON!EfYMPR2g0z>0p;KzG`=_^31%EfIa4%jva+kqVIHeXJCN%7oVR(|tdf%i89u z75tfI_LeYxzy~txU}12^f*;EJcXehcV)O2B9@OqtABI}i?(IkGn09X_tz+9Qw34@b zW1$wl%G^`e%B8aj%vCIMcpHaza(Fj~J2||c!v{J17mn{!g%5FjzY(-dt)->hM9a4Q=y34?~wX@20R7Ks*ACJPy9TB-H3b#e!<55`oZj^o$Zi`@JjO(>_ zW30>GZj`%JJB$h;U88B8qybjtBv8i&>zH6I3)U!5cR~d_Xfm4{6b#?2QC-DLHF&iK zuh-yh8oXPB_iOMW4S)PyHogp1Aq*xd--}?=?;^OZBZ%QF@yGu?(xBWO!KUAbu}9H9 z+#AQCPJB+drl|nWsh3ClPQ5VNd+OPIl>gLCe3S>(qxdKvs$uqs7uETElpoatc~iuD z>O?-`OJQeLach0HomaNArr`GBlbMvZ^`^&rQ{|4pUI&#;y=hx-db~GPzT2yBx~VsB z3sd3wY=^Eu+k;DUJtcI%6ifqOp@sb#r^Ua};wf4@U5jUH@mwvQFU-_h%kSjy>wHF4 zM^=Yd#p#SHX`{4B+AN9u24B8cb@)!sa&I3fjXvp3Qd?k5B**gbe+v_HDl>j-@FHD} zN9Ba7(zC(mWw;?8!RJ+UZx;6C)C>%2yWcUn*B{XJp}mu!H(8WR_6iBPYtSxXW9}Ml zwr<9xB_DICOAm4^oyEmDkA`MC#3wrQy}lDh;R#(jnj%cqWusbQxo$j^f6`5n-N_O1 z^X8=0=6QWw3h`G7fl5JYg^s+@=qce=-r&}bf+euJcw-;w8)KDp8&hruJ{S0yAeRBx z0Iv=5mB2>=A0OlhxEA=xAYTDI9e6{K#{iE9J}Ssp0lxrzf^@spKVd8g{urh3E8w}n zn}QwWz^4H>1^H^=%YaV|as}}1!0Up14e(ciPxf>8MBMkvL?Q9r-Y!rL7v zi(X%B@*MuU11Tx)A#3$;Aind;ba$k4o+76=h8qYn*XKT3eg>tGSd^0<(elc5wrhd~i^wMZ zU!U-1mE5zFO@gQ|?2}W{>1uNjxo}dyY3P6H)r=>L%zV= zSvekAj>idk<=gVllq25OQ3pTu0HbfX%5eYaoh8MlrNs>~-8Tex`3r-O z$Perxa6JS(i-JvW z3wsS?hkod@8 zZ^N<&Gar^+cs3*x4qLUb$5*Tsh;(TVT|uLE85E31?`&&p;3rO1HBINg-il)B2La+@ zzqrLOz8Vpi_{B^8Vs}6+G-7@*M7X}}wyAvHZvrE*Bb+?if@0`s*etw-&$iHE-M8pu zJN(^ywuC1e;vaRtUz`-23}QF`>NJQU7F}$mO8p%y&$<;QGmtLwQV1}=2}(E$@IHgE z4lft#j;4a4PajPye#n%!B9lg&(isqgDH+12M-_D;bDTkS@~2^RJ)cbd2iGI?JvJ)# ztN~x_nsn?4f@qLot3>C7skRTHjI-~~TRaSp8SP&CqWg`xD1lMEDy{vc^ak-uAsCXB z(E$lwEOgt~@Qa7Bw|yW?cdz|~OL4#PpIj2TP(Smz^iV%x)rk?glQj6mXxPH4sJ*K5 z8v>a&=`5A* zP`|gr=u#M!-3qm?4x=ypi2Wus*0OIxIwXuTZ--=y!U%^^>bIfRxqh_c+t66?cS0@G z!>BWi(A_}m&jjweQfR%a6u!FgP~Fvfce|<;E`#5mK=V|Oyc5* zo!@CgZYFI$ygJyOHeRp;qqoUU8ymt#pG!md5vNc$lSUsu!7l!r271e(H84;)rL!&}^U>B>a(a+;wZGl6-?U&Ma zKEW~*p=Gk9Ul}}^#H-LH!=23^nk^>Rpj34HkFjW44B9IGixO>w>Xs5sM_VloeNa6@ zZ;D%0=uOliHjYLU^0$?{KQy`bnayWq(mwb5mD2kbE76QI#*?ji?v>K}@UR$6NJceT zChm+wT6Krk)9Cd2bP7)TEbVZfxN~Tz0yc>-{22iV)`Vc$@`#?yj)HWW~U$1vSn2zSQ0AZRGlOf*K75EF`3zuC2Q-Y~0ETf!r9DDM zM&WrutbQ6?A$4<;;Yw_9Ht-3}G}Ilksr=p&FY&0fwpkCJ<<-vohEe23DZW=g%<1ma zgc;yIN8&Sh&c+__k(~qiDjU1bN16uljW%{81vDAinob-UcxGQw--5CfutTpC@S_H4 zG6OhI9Z&Zyj_#ZErTd)8eMUOBL^@-)>}WxSF_ybp^s#)}NAtq3AIMZH=i|S=fG@v@ zFD}4!FEWfB{`fC?sqB3LWO(YLKx0tF6Ri@E;i+PLAu4)m(7$@_J7^xXoN$lXJst;~ z`62H0UO86?w}{7~=#$8hq#^Kh`M3EX80<94rS;OLPH7#yuQtH@N{~c+Q0M;8azZoT z^FI!6Hq`VReNNm^h%UE+iOFE1G0F9v1B1qWhj;UrXE(dbhlXCPqW?VKJBFK>q5?xtaZvL#-bA#SO+5wBZFRhHqng{EZk#+QqEH}uwOmOJ!5;SCZaG&jdJ*!{K8c;%3e$dM>7<_K9>Xoj0 z4j6E_E6xet>U1fcI9{Apin7rY;+j%4RI})1&w5`Q)y+38Z@{M(d19R=kKB1y)@G$6npdb^Wmu86F;B``-N%)xu99f7Gg1g3^*jmV{P+WB8w#tlJ# zNPv`EwYdrnqVYE>a6VEfew4WSs9|+{AT<9IE&>Xup4=)pEDB(ojHo>d}H=urBNP-1jEz(!vte*uU3D8 zQC~%>qZ5q5ll=+CN0ZUYP=aBe!_Pbwm0%ovh9($N3zhm4j8~?hXXF2Ff&t5k&Ov$} zPOGq|*`I^>HGe7xDX)&?Af9ISKnq+Et-<^P$n&QnctaHaI0}Cqh2scHp@)ag?@vOW z3??C$=g=f%?5RK!Vt~ZtSe*B?PUUKF8snsHwU+qZM;&PtrDmk6{(q+^VtxzC{YTT2 T83X8bxyFpvm}MR281w%ELxC!D diff --git a/bin/PandorasBlocks.map b/bin/PandorasBlocks.map index 6ddb888..927557e 100644 --- a/bin/PandorasBlocks.map +++ b/bin/PandorasBlocks.map @@ -115,7 +115,7 @@ ROM0 bank #0: $1893 = !11 $18e1 = !12 $192f = !13 - SECTION: $1980-$1f9b ($061c bytes) ["Domain Specific Functions"] + SECTION: $1980-$1fae ($062f bytes) ["Domain Specific Functions"] $1980 = SetPal $198d = SetPal.darker $1993 = SetPal.lighter @@ -133,408 +133,410 @@ ROM0 bank #0: $1a6c = ApplyNext.skipoffn $1b08 = ApplyNext.done $1b0b = ApplyHold - $1b13 = ApplyHold.bone - $1b32 = ApplyHold.nobone - $1b4e = ApplyHold.hide - $1b60 = ApplyHold.show - $1b70 = ApplyHold.x - $1b80 = ApplyHold.regular - $1b86 = ApplyHold.postoffsets - $1b89 = ApplyHold.getoffh - $1b94 = ApplyHold.skipoffh - $1bce = ApplyTime - $1c1f = ApplyTime.loop0 - $1c4e = ApplyTime.loop1 - $1ca3 = ApplyNumbers8 - $1d05 = ApplyNumbers8.one - $1d0f = ApplyNumbers8.two - $1d19 = ApplyNumbers8.three - $1d23 = ApplyNumbers8.four - $1d2d = ApplyNumbers8.five - $1d37 = ApplyNumbers8.six - $1d41 = ApplyNumbers8.seven - $1d4b = ApplyNumbers8.eight - $1d54 = ApplyNumbers4 - $1d82 = ApplyNumbers4.one - $1d8c = ApplyNumbers4.two - $1d96 = ApplyNumbers4.three - $1da0 = ApplyNumbers4.four - $1da9 = SetNumberSpritePositions - $1ec0 = GradeRendering - $1ef3 = GradeRendering.effect - $1f03 = GradeRendering.noeffect - $1f0b = GradeRendering.drawgrade - $1f12 = GradeRendering.regulargrade - $1f1a = GradeRendering.sgrade - $1f30 = GradeRendering.hisgrade - $1f46 = GradeRendering.mgrade - $1f5c = GradeRendering.lettergrade - $1f79 = GradeRendering.mk - $1f7f = GradeRendering.mv - $1f85 = GradeRendering.mo - $1f8b = GradeRendering.mm - $1f91 = GradeRendering.gmgrade - SECTION: $1f9c-$24ba ($051f bytes) ["SRAM Functions"] - $1f9c = RestoreSRAM - $1fcb = TrustedLoad - $1fdc = !0 - $1fed = !1 - $1ffe = !2 - $200f = !3 - $2020 = !4 - $2031 = !5 - $2040 = !6 - $2051 = !7 - $207f = TrustedLoad.jumps - $2097 = TrustedLoad.dmgt - $209d = TrustedLoad.tgm1 - $20a3 = TrustedLoad.tgm3 - $20a9 = TrustedLoad.deat - $20af = TrustedLoad.shir - $20b5 = TrustedLoad.chil - $20bb = TrustedLoad.myco - $20c1 = TrustedLoad.search - $20d3 = TrustedLoad.notfound - $20da = TrustedLoad.fallback - $20f5 = InitializeSRAM - $2256 = ResetScores - $2264 = ResetScores.jumps - $2279 = ResetScores.dmgt - $2285 = ResetScores.tgm1 - $2291 = ResetScores.tgm3 - $229d = ResetScores.deat - $22a9 = ResetScores.shir - $22b5 = ResetScores.chil - $22c1 = ResetScores.myco - $22cd = NextProfile - $22d6 = NextProfile.update - $22d9 = ChangeProfile - $22d9 = ChangeProfile.backup - $2307 = ChangeProfile.first - $2315 = ChangeProfile.second - $2323 = ChangeProfile.third - $2331 = ChangeProfile.fourth - $233f = ChangeProfile.fifth - $234d = ChangeProfile.sixth - $235b = ChangeProfile.seventh - $2369 = ChangeProfile.eighth - $2377 = ChangeProfile.ninth - $2385 = ChangeProfile.tenth - $2393 = ChangeProfile.restore - $23c2 = ChangeProfile.lfirst - $23d1 = ChangeProfile.lsecond - $23e0 = ChangeProfile.lthird - $23ef = ChangeProfile.lfourth - $23fe = ChangeProfile.lfifth - $240d = ChangeProfile.lsixth - $241c = ChangeProfile.lseventh - $242b = ChangeProfile.leighth - $243a = ChangeProfile.lninth - $2449 = ChangeProfile.ltenth - $2458 = ResetProfile - SECTION: $24bb-$2916 ($045c bytes) ["Level Functions"] - $24bb = LevelInit - $252b = SpecialLevelInit - $2539 = SpecialLevelInit.jumps - $254e = SpecialLevelInit.dmgt - $2553 = SpecialLevelInit.tgm1 - $2558 = SpecialLevelInit.tgm3 - $255d = SpecialLevelInit.deat - $2562 = SpecialLevelInit.shir - $2567 = SpecialLevelInit.chil - $256c = SpecialLevelInit.myco - $2571 = SpecialLevelInit.loaddata - $25a6 = LevelUp - $25d0 = LevelUp.doit - $260f = LevelUp.checknlevel - $2643 = !0 - $265b = !1 - $2664 = LevelUp.checkcool - $2685 = LevelUp.checkregret - $26a2 = LevelUp.resetsectiontimer - $26c5 = LevelUp.regretavailable - $26c9 = LevelUp.bellmaybe - $26e5 = LevelUp.leveljinglemaybe - $26f5 = AdjustSpeedCurve - $26fb = AdjustSpeedCurve.docheck - $26fb = AdjustSpeedCurve.checkthousands - $270a = AdjustSpeedCurve.checkhundreds - $2717 = AdjustSpeedCurve.checktens - $2726 = AdjustSpeedCurve.checkones - $2731 = AdjustSpeedCurveForced - $276c = AdjustSpeedCurveForced.continue - $2771 = BuildTrueCLevel - $2799 = BuildTrueCLevel.thousands - $27ae = CheckSpecialLevelConditions - $27df = CheckSpecialLevelConditions.override - $27fa = CheckSpecialLevelConditions.nooverride - $2800 = CheckSpecialLevelConditions.speciallock - $2824 = CheckSpecialLevelConditions.bones - $2839 = CheckSpecialLevelConditions.enterthebonezone - $283e = CheckSpecialLevelConditions.invis - $2853 = CheckSpecialLevelConditions.vanishoxyaction - $2858 = CheckSpecialLevelConditions.killscreen - $2869 = CheckSpecialLevelConditions.rip - $2899 = CheckSpecialLevelConditions.staffroll - $28a7 = CheckSpecialLevelConditions.justkill - $28bb = TriggerKillScreen - $28dd = GetSection - $28eb = GetSectionBCD - $28f4 = GetAdjustedSection - $2902 = GetAdjustedSectionBCD - $290b = SkipSection - SECTION: $2917-$2c84 ($036e bytes) ["SFX Functions"] - $2917 = SFXInit - $2945 = SFXPopQueue - $295a = SFXPushQueue - $296b = SFXProcessQueue - $297c = !0 - $2997 = !1 - $2999 = SFXTriggerNoise - $29a6 = !2 - $29ba = !3 - $29c6 = SFXEnqueue - $29df = SFXEnqueue.findsfx - $29fe = !4 - $2a0e = !5 - $2a1e = !6 - $2a2e = !7 - $2a3e = !8 - $2a4e = !9 - $2a5e = !10 - $2a6e = !11 - $2a7e = !12 - $2a8e = !13 - $2a9e = !14 - $2aae = !15 - $2abe = !16 - $2ace = !17 - $2ade = !18 - $2aed = !19 - $2afc = !20 - $2b0b = !21 - $2b1a = !22 - $2b29 = !23 - $2b38 = !24 - $2b45 = SFXKill - $2b7b = SFXPlayNoise - $2b86 = SFXPlayNoise.noisereg - $2b93 = !25 - $2b9d = SFXPlayNoise.savenoiseplayhead - $2ba6 = SFXPlay - $2bab = SFXPlay.play - $2bb5 = SFXPlay.getRegister - $2bb6 = SFXPlay.checkEndOfSong - $2bc8 = SFXPlay.checkEndOfSample - $2bcc = SFXPlay.checkChangeBank - $2bd6 = SFXPlay.checkChangePlayHead - $2be9 = SFXPlay.applyRegister - $2bee = SFXPlay.savePlayhead - $2bf7 = SFXGoRoll - $2c34 = SFXEndOfGame - SECTION: $2c85-$2eb4 ($0230 bytes) ["RNG Functions"] - $2c85 = HarvestEntropy - $2c8b = HarvestEntropy.loop - $2cac = RNGInit - $2ce2 = !0 - $2d12 = RNGInit.complexinit - $2d29 = !1 - $2d44 = ShiftHistory - $2d61 = GetNextHellPiece - $2d66 = GetNextTGM1Piece - $2d69 = !2 - $2d81 = !3 - $2d83 = GetNextTGM2Piece - $2d86 = !4 - $2d9e = !5 - $2da0 = GetNextNesPiece - $2dae = GetNextTGM3Piece - $2db1 = !6 - $2dd4 = !7 - $2dd7 = !8 - $2de7 = !9 - $2df1 = !10 - $2dff = !11 - $2e0d = !12 - $2e19 = !13 - $2e25 = !14 - $2e31 = !15 - $2e3d = !16 - $2e49 = !17 - $2e55 = !18 - $2e64 = GetNextPiece - $2e72 = GetNextPiece.nextpiecejumps - $2e81 = Next35Piece - $2e81 = !19 - $2e8b = Next7Piece - $2e8b = !20 - $2e95 = NextByte - SECTION: $2eb5-$3079 ($01c5 bytes) ["Hi Score Functions"] - $2eb5 = CheckAndAddHiscore - $2ebf = CheckAndAddHiscore.checkloop - $2ec4 = CheckAndAddHiscore.checkgrade - $2ecd = CheckAndAddHiscore.oldgraded - $2edc = CheckAndAddHiscore.oldungraded - $2ee3 = CheckAndAddHiscore.checklevel - $2f08 = CheckAndAddHiscore.checkscore - $2f4b = CheckAndAddHiscore.notbetter - $2f58 = CheckAndAddHiscore.better - $2f5a = InsertHiScore - $2f5a = InsertHiScore.copylower - $2f6b = InsertHiScore.copyupper - $2f77 = !0 - $2f8b = InsertHiScore.findrow - $2f97 = !1 - $2f9b = InsertHiScore.insert - $2ff4 = InsertHiScore.persist - $3005 = GetHiScoreEntry - $3019 = !2 - $301d = GetHiScoreEntry.store - $3026 = InitTargetHSTable - $3031 = InitTargetHSTable.jumps - $3046 = InitTargetHSTable.dmgt - $304b = InitTargetHSTable.tgm1 - $3050 = InitTargetHSTable.tgm3 - $3055 = InitTargetHSTable.deat - $305a = InitTargetHSTable.shir - $305f = InitTargetHSTable.chil - $3064 = InitTargetHSTable.myco - $3067 = InitTargetHSTable.store - SECTION: $307a-$31c3 ($014a bytes) ["Progress Data"] - $307a = sProgressData - SECTION: $31c4-$330a ($0147 bytes) ["Time Functions"] - $31c4 = TimeInit - $31ed = StartCountdown - $31fb = ResetGameTime - $320f = CheckTorikan - $3225 = CheckTorikan.failure - $3227 = CheckTorikan.success - $322a = HandleTimers - $3250 = HandleTimers.reduce - $325d = HandleTimers.clock - $3277 = HandleTimers.go - $329b = CheckCOOL_REGRET - $32b2 = CheckCOOL_REGRET.failure - $32b4 = CheckCOOL_REGRET.success - $32b7 = HandleSectionTimers - $32d3 = HandleSectionTimers.continue - $32e7 = HandleSectionTimers.sectiongo - SECTION: $330b-$344a ($0140 bytes) ["Hi Score Data"] - $330b = sHiscoreDefaultData - SECTION: $344b-$3574 ($012a bytes) ["Input Functions"] - $344b = InputInit - $345d = GetInput - $345d = GetInput.btns - $346a = GetInput.readA - $346e = GetInput.setA - $3479 = GetInput.clearA - $347c = GetInput.readB - $3480 = GetInput.setB - $348b = GetInput.clearB - $348e = GetInput.readSelect - $3492 = GetInput.setSelect - $349d = GetInput.clearSelect - $34a0 = GetInput.readStart - $34a4 = GetInput.setStart - $34af = GetInput.clearStart - $34b2 = GetInput.dpad - $34bf = GetInput.readUp - $34c3 = GetInput.setUp - $34ce = GetInput.clearUp - $34d1 = GetInput.readDown - $34d5 = GetInput.setDown - $34e0 = GetInput.clearDown - $34e3 = GetInput.readLeft - $34e7 = GetInput.setLeft - $34f2 = GetInput.clearLeft - $34f5 = GetInput.readRight - $34f9 = GetInput.setRight - $3504 = GetInput.clearRight - $3507 = GetInput.priorities - $3514 = GetInput.jumps - $3523 = GetInput.dlru - $3533 = GetInput.ulrd - $3543 = GetInput.lrud - $354e = GetInput.udlr - $3559 = GetInput.zeroud - $355f = GetInput.zerolr - $3565 = GetInput.zerolrd - $356d = GetInput.zerolru - SECTION: $3575-$3654 ($00e0 bytes) ["Score Functions"] - $3575 = ScoreInit - $359d = IncreaseScore - $35d5 = IncreaseScore.doConvert - $35d7 = !0 - $35ed = IncreaseScore.carry - $35ef = IncreaseScore.postConvert - $35fc = !1 - $3603 = IncreaseScore.preAddDigit - $362b = IncreaseScore.addDigit - $3641 = IncreaseScore.nextDigit - SECTION: $3655-$371f ($00cb bytes) ["Title Function Trampolines"] - $3655 = SwitchToTitle - $365e = TitleEventLoopHandler - $3668 = TitleVBlankHandler - $3672 = PersistLevel - $3680 = DrawSpeedMain - $36d0 = DrawSpeedSettings - SECTION: $3720-$37d0 ($00b1 bytes) ["Progress Functions"] - $3720 = SetProgress - $372a = SetProgress.loop - $372e = SetProgress.correct - $3755 = SetProgress.wvr_u1 - $3761 = SetProgress.wvr_u2 - $376f = SetProgress.wvr_u3 - $377b = SetProgress.wvr_u4 - $3789 = SetProgress.wvr_u5 - $3795 = SetProgress.wvr_u6 - $37a3 = SetProgress.wvr_u7 - $37af = SetProgress.wvr_u8 - $37bd = SetProgress.wvr_u9 - $37c9 = SetProgress.wvr_u10 - SECTION: $37d1-$3871 ($00a1 bytes) ["Code Entry Point"] - $37d1 = Main - $37fa = Main.notgbc - $3806 = Main.wvr_u1 - $3833 = EventLoop - $384c = EventLoop.eventloopjumps - $3855 = EventLoopPostHandler - $3857 = EventLoopPostHandler.wvb_u2 - $3869 = EventLoopPostHandler.vblankjumps - SECTION: $3872-$38a7 ($0036 bytes) ["Grading Functions Unbanked"] - $3872 = GradeInit - $387b = UpdateGrade - $3884 = DecayGradeProcess - $388d = DecayGradeDelay - $3896 = TGM3REGRETHandler - $389f = TGM3COOLHandler - SECTION: $38a8-$38d5 ($002e bytes) ["Memory Functions"] - $38a8 = UnsafeMemCopy - $38b1 = SafeMemCopy.wvr_u1 - $38b1 = SafeMemCopy - $38c0 = UnsafeMemSet - $38c8 = SafeMemSet - $38c8 = SafeMemSet.wvr_u2 - SECTION: $38d6-$38fb ($0026 bytes) ["Gameplay Function Trampolines"] - $38d6 = SwitchToGameplay - $38df = SwitchToGameplayBig - $38e8 = GamePlayEventLoopHandler - $38f2 = GamePlayBigEventLoopHandler - SECTION: $38fc-$3920 ($0025 bytes) ["Interrupt Initialization Functions"] - $38fc = EnableScreenSquish - $3916 = DisableScreenSquish - SECTION: $3921-$3942 ($0022 bytes) ["OAM Functions"] - $3921 = CopyOAMHandler - $392d = ClearOAM - SECTION: $3943-$3953 ($0011 bytes) ["Intro Effect Trampoline"] - $3943 = DoIntroEffect - SECTION: $3954-$3962 ($000f bytes) ["Banking Functions"] - $3954 = BankingInit - SECTION: $3963-$396c ($000a bytes) ["OAM DMA Code"] - $3963 = OAMDMA - $396d = OAMDMAEnd - EMPTY: $396d-$3fff ($0693 bytes) - TOTAL EMPTY: $069b bytes + $1b1e = ApplyHold.drawhold + $1b26 = ApplyHold.bone + $1b45 = ApplyHold.nobone + $1b61 = ApplyHold.hide + $1b73 = ApplyHold.show + $1b83 = ApplyHold.x + $1b93 = ApplyHold.regular + $1b99 = ApplyHold.postoffsets + $1b9c = ApplyHold.getoffh + $1ba7 = ApplyHold.skipoffh + $1be1 = ApplyTime + $1c32 = ApplyTime.loop0 + $1c61 = ApplyTime.loop1 + $1cb6 = ApplyNumbers8 + $1d18 = ApplyNumbers8.one + $1d22 = ApplyNumbers8.two + $1d2c = ApplyNumbers8.three + $1d36 = ApplyNumbers8.four + $1d40 = ApplyNumbers8.five + $1d4a = ApplyNumbers8.six + $1d54 = ApplyNumbers8.seven + $1d5e = ApplyNumbers8.eight + $1d67 = ApplyNumbers4 + $1d95 = ApplyNumbers4.one + $1d9f = ApplyNumbers4.two + $1da9 = ApplyNumbers4.three + $1db3 = ApplyNumbers4.four + $1dbc = SetNumberSpritePositions + $1ed3 = GradeRendering + $1f06 = GradeRendering.effect + $1f16 = GradeRendering.noeffect + $1f1e = GradeRendering.drawgrade + $1f25 = GradeRendering.regulargrade + $1f2d = GradeRendering.sgrade + $1f43 = GradeRendering.hisgrade + $1f59 = GradeRendering.mgrade + $1f6f = GradeRendering.lettergrade + $1f8c = GradeRendering.mk + $1f92 = GradeRendering.mv + $1f98 = GradeRendering.mo + $1f9e = GradeRendering.mm + $1fa4 = GradeRendering.gmgrade + SECTION: $1faf-$24cd ($051f bytes) ["SRAM Functions"] + $1faf = RestoreSRAM + $1fde = TrustedLoad + $1fef = !0 + $2000 = !1 + $2011 = !2 + $2022 = !3 + $2033 = !4 + $2044 = !5 + $2053 = !6 + $2064 = !7 + $2092 = TrustedLoad.jumps + $20aa = TrustedLoad.dmgt + $20b0 = TrustedLoad.tgm1 + $20b6 = TrustedLoad.tgm3 + $20bc = TrustedLoad.deat + $20c2 = TrustedLoad.shir + $20c8 = TrustedLoad.chil + $20ce = TrustedLoad.myco + $20d4 = TrustedLoad.search + $20e6 = TrustedLoad.notfound + $20ed = TrustedLoad.fallback + $2108 = InitializeSRAM + $2269 = ResetScores + $2277 = ResetScores.jumps + $228c = ResetScores.dmgt + $2298 = ResetScores.tgm1 + $22a4 = ResetScores.tgm3 + $22b0 = ResetScores.deat + $22bc = ResetScores.shir + $22c8 = ResetScores.chil + $22d4 = ResetScores.myco + $22e0 = NextProfile + $22e9 = NextProfile.update + $22ec = ChangeProfile + $22ec = ChangeProfile.backup + $231a = ChangeProfile.first + $2328 = ChangeProfile.second + $2336 = ChangeProfile.third + $2344 = ChangeProfile.fourth + $2352 = ChangeProfile.fifth + $2360 = ChangeProfile.sixth + $236e = ChangeProfile.seventh + $237c = ChangeProfile.eighth + $238a = ChangeProfile.ninth + $2398 = ChangeProfile.tenth + $23a6 = ChangeProfile.restore + $23d5 = ChangeProfile.lfirst + $23e4 = ChangeProfile.lsecond + $23f3 = ChangeProfile.lthird + $2402 = ChangeProfile.lfourth + $2411 = ChangeProfile.lfifth + $2420 = ChangeProfile.lsixth + $242f = ChangeProfile.lseventh + $243e = ChangeProfile.leighth + $244d = ChangeProfile.lninth + $245c = ChangeProfile.ltenth + $246b = ResetProfile + SECTION: $24ce-$2929 ($045c bytes) ["Level Functions"] + $24ce = LevelInit + $253e = SpecialLevelInit + $254c = SpecialLevelInit.jumps + $2561 = SpecialLevelInit.dmgt + $2566 = SpecialLevelInit.tgm1 + $256b = SpecialLevelInit.tgm3 + $2570 = SpecialLevelInit.deat + $2575 = SpecialLevelInit.shir + $257a = SpecialLevelInit.chil + $257f = SpecialLevelInit.myco + $2584 = SpecialLevelInit.loaddata + $25b9 = LevelUp + $25e3 = LevelUp.doit + $2622 = LevelUp.checknlevel + $2656 = !0 + $266e = !1 + $2677 = LevelUp.checkcool + $2698 = LevelUp.checkregret + $26b5 = LevelUp.resetsectiontimer + $26d8 = LevelUp.regretavailable + $26dc = LevelUp.bellmaybe + $26f8 = LevelUp.leveljinglemaybe + $2708 = AdjustSpeedCurve + $270e = AdjustSpeedCurve.docheck + $270e = AdjustSpeedCurve.checkthousands + $271d = AdjustSpeedCurve.checkhundreds + $272a = AdjustSpeedCurve.checktens + $2739 = AdjustSpeedCurve.checkones + $2744 = AdjustSpeedCurveForced + $277f = AdjustSpeedCurveForced.continue + $2784 = BuildTrueCLevel + $27ac = BuildTrueCLevel.thousands + $27c1 = CheckSpecialLevelConditions + $27f2 = CheckSpecialLevelConditions.override + $280d = CheckSpecialLevelConditions.nooverride + $2813 = CheckSpecialLevelConditions.speciallock + $2837 = CheckSpecialLevelConditions.bones + $284c = CheckSpecialLevelConditions.enterthebonezone + $2851 = CheckSpecialLevelConditions.invis + $2866 = CheckSpecialLevelConditions.vanishoxyaction + $286b = CheckSpecialLevelConditions.killscreen + $287c = CheckSpecialLevelConditions.rip + $28ac = CheckSpecialLevelConditions.staffroll + $28ba = CheckSpecialLevelConditions.justkill + $28ce = TriggerKillScreen + $28f0 = GetSection + $28fe = GetSectionBCD + $2907 = GetAdjustedSection + $2915 = GetAdjustedSectionBCD + $291e = SkipSection + SECTION: $292a-$2c97 ($036e bytes) ["SFX Functions"] + $292a = SFXInit + $2958 = SFXPopQueue + $296d = SFXPushQueue + $297e = SFXProcessQueue + $298f = !0 + $29aa = !1 + $29ac = SFXTriggerNoise + $29b9 = !2 + $29cd = !3 + $29d9 = SFXEnqueue + $29f2 = SFXEnqueue.findsfx + $2a11 = !4 + $2a21 = !5 + $2a31 = !6 + $2a41 = !7 + $2a51 = !8 + $2a61 = !9 + $2a71 = !10 + $2a81 = !11 + $2a91 = !12 + $2aa1 = !13 + $2ab1 = !14 + $2ac1 = !15 + $2ad1 = !16 + $2ae1 = !17 + $2af1 = !18 + $2b00 = !19 + $2b0f = !20 + $2b1e = !21 + $2b2d = !22 + $2b3c = !23 + $2b4b = !24 + $2b58 = SFXKill + $2b8e = SFXPlayNoise + $2b99 = SFXPlayNoise.noisereg + $2ba6 = !25 + $2bb0 = SFXPlayNoise.savenoiseplayhead + $2bb9 = SFXPlay + $2bbe = SFXPlay.play + $2bc8 = SFXPlay.getRegister + $2bc9 = SFXPlay.checkEndOfSong + $2bdb = SFXPlay.checkEndOfSample + $2bdf = SFXPlay.checkChangeBank + $2be9 = SFXPlay.checkChangePlayHead + $2bfc = SFXPlay.applyRegister + $2c01 = SFXPlay.savePlayhead + $2c0a = SFXGoRoll + $2c47 = SFXEndOfGame + SECTION: $2c98-$2ebe ($0227 bytes) ["RNG Functions"] + $2c98 = HarvestEntropy + $2c9e = HarvestEntropy.loop + $2cbf = RNGInit + $2d00 = RNGInit.hellinit + $2d1c = RNGInit.complexinit + $2d33 = RNGInit.getfirstpiece + $2d48 = RNGInit.getqueue + $2d4e = ShiftHistory + $2d6b = GetNextHellPiece + $2d70 = GetNextTGM1Piece + $2d73 = !0 + $2d8b = !1 + $2d8d = GetNextTGM2Piece + $2d90 = !2 + $2da8 = !3 + $2daa = GetNextNesPiece + $2db8 = GetNextTGM3Piece + $2dbb = !4 + $2dde = !5 + $2de1 = !6 + $2df1 = !7 + $2dfb = !8 + $2e09 = !9 + $2e17 = !10 + $2e23 = !11 + $2e2f = !12 + $2e3b = !13 + $2e47 = !14 + $2e53 = !15 + $2e5f = !16 + $2e6e = GetNextPiece + $2e7c = GetNextPiece.nextpiecejumps + $2e8b = Next35Piece + $2e8b = !17 + $2e95 = Next7Piece + $2e95 = !18 + $2e9f = NextByte + SECTION: $2ebf-$3083 ($01c5 bytes) ["Hi Score Functions"] + $2ebf = CheckAndAddHiscore + $2ec9 = CheckAndAddHiscore.checkloop + $2ece = CheckAndAddHiscore.checkgrade + $2ed7 = CheckAndAddHiscore.oldgraded + $2ee6 = CheckAndAddHiscore.oldungraded + $2eed = CheckAndAddHiscore.checklevel + $2f12 = CheckAndAddHiscore.checkscore + $2f55 = CheckAndAddHiscore.notbetter + $2f62 = CheckAndAddHiscore.better + $2f64 = InsertHiScore + $2f64 = InsertHiScore.copylower + $2f75 = InsertHiScore.copyupper + $2f81 = !0 + $2f95 = InsertHiScore.findrow + $2fa1 = !1 + $2fa5 = InsertHiScore.insert + $2ffe = InsertHiScore.persist + $300f = GetHiScoreEntry + $3023 = !2 + $3027 = GetHiScoreEntry.store + $3030 = InitTargetHSTable + $303b = InitTargetHSTable.jumps + $3050 = InitTargetHSTable.dmgt + $3055 = InitTargetHSTable.tgm1 + $305a = InitTargetHSTable.tgm3 + $305f = InitTargetHSTable.deat + $3064 = InitTargetHSTable.shir + $3069 = InitTargetHSTable.chil + $306e = InitTargetHSTable.myco + $3071 = InitTargetHSTable.store + SECTION: $3084-$31cd ($014a bytes) ["Progress Data"] + $3084 = sProgressData + SECTION: $31ce-$3314 ($0147 bytes) ["Time Functions"] + $31ce = TimeInit + $31f7 = StartCountdown + $3205 = ResetGameTime + $3219 = CheckTorikan + $322f = CheckTorikan.failure + $3231 = CheckTorikan.success + $3234 = HandleTimers + $325a = HandleTimers.reduce + $3267 = HandleTimers.clock + $3281 = HandleTimers.go + $32a5 = CheckCOOL_REGRET + $32bc = CheckCOOL_REGRET.failure + $32be = CheckCOOL_REGRET.success + $32c1 = HandleSectionTimers + $32dd = HandleSectionTimers.continue + $32f1 = HandleSectionTimers.sectiongo + SECTION: $3315-$3454 ($0140 bytes) ["Hi Score Data"] + $3315 = sHiscoreDefaultData + SECTION: $3455-$357e ($012a bytes) ["Input Functions"] + $3455 = InputInit + $3467 = GetInput + $3467 = GetInput.btns + $3474 = GetInput.readA + $3478 = GetInput.setA + $3483 = GetInput.clearA + $3486 = GetInput.readB + $348a = GetInput.setB + $3495 = GetInput.clearB + $3498 = GetInput.readSelect + $349c = GetInput.setSelect + $34a7 = GetInput.clearSelect + $34aa = GetInput.readStart + $34ae = GetInput.setStart + $34b9 = GetInput.clearStart + $34bc = GetInput.dpad + $34c9 = GetInput.readUp + $34cd = GetInput.setUp + $34d8 = GetInput.clearUp + $34db = GetInput.readDown + $34df = GetInput.setDown + $34ea = GetInput.clearDown + $34ed = GetInput.readLeft + $34f1 = GetInput.setLeft + $34fc = GetInput.clearLeft + $34ff = GetInput.readRight + $3503 = GetInput.setRight + $350e = GetInput.clearRight + $3511 = GetInput.priorities + $351e = GetInput.jumps + $352d = GetInput.dlru + $353d = GetInput.ulrd + $354d = GetInput.lrud + $3558 = GetInput.udlr + $3563 = GetInput.zeroud + $3569 = GetInput.zerolr + $356f = GetInput.zerolrd + $3577 = GetInput.zerolru + SECTION: $357f-$365e ($00e0 bytes) ["Score Functions"] + $357f = ScoreInit + $35a7 = IncreaseScore + $35df = IncreaseScore.doConvert + $35e1 = !0 + $35f7 = IncreaseScore.carry + $35f9 = IncreaseScore.postConvert + $3606 = !1 + $360d = IncreaseScore.preAddDigit + $3635 = IncreaseScore.addDigit + $364b = IncreaseScore.nextDigit + SECTION: $365f-$3729 ($00cb bytes) ["Title Function Trampolines"] + $365f = SwitchToTitle + $3668 = TitleEventLoopHandler + $3672 = TitleVBlankHandler + $367c = PersistLevel + $368a = DrawSpeedMain + $36da = DrawSpeedSettings + SECTION: $372a-$37da ($00b1 bytes) ["Progress Functions"] + $372a = SetProgress + $3734 = SetProgress.loop + $3738 = SetProgress.correct + $375f = SetProgress.wvr_u1 + $376b = SetProgress.wvr_u2 + $3779 = SetProgress.wvr_u3 + $3785 = SetProgress.wvr_u4 + $3793 = SetProgress.wvr_u5 + $379f = SetProgress.wvr_u6 + $37ad = SetProgress.wvr_u7 + $37b9 = SetProgress.wvr_u8 + $37c7 = SetProgress.wvr_u9 + $37d3 = SetProgress.wvr_u10 + SECTION: $37db-$387b ($00a1 bytes) ["Code Entry Point"] + $37db = Main + $3804 = Main.notgbc + $3810 = Main.wvr_u1 + $383d = EventLoop + $3856 = EventLoop.eventloopjumps + $385f = EventLoopPostHandler + $3861 = EventLoopPostHandler.wvb_u2 + $3873 = EventLoopPostHandler.vblankjumps + SECTION: $387c-$38b1 ($0036 bytes) ["Grading Functions Unbanked"] + $387c = GradeInit + $3885 = UpdateGrade + $388e = DecayGradeProcess + $3897 = DecayGradeDelay + $38a0 = TGM3REGRETHandler + $38a9 = TGM3COOLHandler + SECTION: $38b2-$38df ($002e bytes) ["Memory Functions"] + $38b2 = UnsafeMemCopy + $38bb = SafeMemCopy.wvr_u1 + $38bb = SafeMemCopy + $38ca = UnsafeMemSet + $38d2 = SafeMemSet + $38d2 = SafeMemSet.wvr_u2 + SECTION: $38e0-$3905 ($0026 bytes) ["Gameplay Function Trampolines"] + $38e0 = SwitchToGameplay + $38e9 = SwitchToGameplayBig + $38f2 = GamePlayEventLoopHandler + $38fc = GamePlayBigEventLoopHandler + SECTION: $3906-$392a ($0025 bytes) ["Interrupt Initialization Functions"] + $3906 = EnableScreenSquish + $3920 = DisableScreenSquish + SECTION: $392b-$394c ($0022 bytes) ["OAM Functions"] + $392b = CopyOAMHandler + $3937 = ClearOAM + SECTION: $394d-$395d ($0011 bytes) ["Intro Effect Trampoline"] + $394d = DoIntroEffect + SECTION: $395e-$396c ($000f bytes) ["Banking Functions"] + $395e = BankingInit + SECTION: $396d-$3976 ($000a bytes) ["OAM DMA Code"] + $396d = OAMDMA + $3977 = OAMDMAEnd + EMPTY: $3977-$3fff ($0689 bytes) + TOTAL EMPTY: $0691 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -1683,7 +1685,7 @@ ROMX bank #4: $5395 = ClearLines.r_u48 $5395 = ClearLines.fixgarbo $5398 = ClearLines.fixgarboloop - SECTION: $53a2-$62c0 ($0f1f bytes) ["Gameplay Function Banked"] + SECTION: $53a2-$62c9 ($0f28 bytes) ["Gameplay Function Banked"] $53a2 = SwitchToGameplayB $53a8 = SwitchToGameplayB.wvr_u1 $53b1 = SwitchToGameplayB.loadtilemap @@ -2169,139 +2171,139 @@ ROMX bank #4: $629d = DoHold.cp4 $62ab = DoHold.noRotation $62b6 = DoHold.doHoldOperation - SECTION: $62c1-$6b56 ($0896 bytes) ["Gameplay Static Data"] - $62c1 = sLeftDasSlam - $62c7 = sRightDasSlam - $62cd = sLeady - $62d7 = sGo - $62e1 = sPause - $6309 = sKill - $63a9 = sYouAreGM - $640d = sFinalChallenge - $64d5 = sPieceXOffsets - $64f1 = sPieceYOffsets - $650d = sPieceFastRotationStates - $657d = sPieceRotationStates - $65ed = sTGM3Bag - $6610 = sTGM3Droughts - $6617 = sGameplayTileMap - $68b7 = sGameplayUngradedTileMap - $68b7 = sGameplayTileMapEnd - $6b57 = sGameplayUngradedTileMapEnd - SECTION: $6b57-$7268 ($0712 bytes) ["Grading Functions Banked"] - $6b57 = GradeInitB - $6ba1 = GradeInitB.grade9start - $6ba6 = UpdateGradeB - $6ba6 = GradeInitB.end - $6bb4 = UpdateGradeB.gradejumptable - $6bc9 = DecayGradeProcessB - $6bd7 = DecayGradeProcessB.gradejumptable - $6bec = DecayGradeDelayB - $6bfa = DecayGradeDelayB.gradejumptable - $6c0f = PrepareScore - $6c22 = DrawGradeProgressDMGT - $6c2e = !0 - $6c3d = UpdateGradeDMGT - $6c76 = UpdateGradeDMGT.checklineclears - $6c8f = UpdateGradeDMGT.clearrate - $6ca0 = UpdateGradeDMGT.combomult - $6cad = UpdateGradeDMGT.combo13 - $6cbe = UpdateGradeDMGT.combo8 - $6ccf = UpdateGradeDMGT.combo1 - $6cde = UpdateGradeDMGT.prelevel - $6ced = UpdateGradeDMGT.single - $6cfd = UpdateGradeDMGT.double - $6d0e = UpdateGradeDMGT.adddonce - $6d12 = UpdateGradeDMGT.triple - $6d23 = UpdateGradeDMGT.addtonce - $6d27 = UpdateGradeDMGT.tetris - $6d2b = UpdateGradeDMGT.levelmult - $6d43 = UpdateGradeDMGT.mult4 - $6d49 = UpdateGradeDMGT.mult3 - $6d4e = UpdateGradeDMGT.mult2 - $6d52 = UpdateGradeDMGT.mult1 - $6d53 = UpdateGradeDMGT.processgrade - $6d7c = UpdateGradeDMGT.increasegrademaybe - $6da0 = UpdateGradeDMGT.gotgm - $6dae = DecayGradeDMGT - $6dd1 = DecayGradeDMGT.nodecay - $6dd8 = DecayGradeDMGT.decay - $6de6 = UpdateGradeTGM1 - $6df6 = UpdateGradeTGM1.trygradeup - $6e11 = UpdateGradeTGM1.increasegrade - $6e26 = UpdateGradeTGM1.skipjingle - $6e32 = UpdateGradeTGM1.check300 - $6e50 = UpdateGradeTGM1.success300 - $6e57 = UpdateGradeTGM1.fail300 - $6e5e = UpdateGradeTGM1.check500 - $6e7c = UpdateGradeTGM1.success500 - $6e83 = UpdateGradeTGM1.fail500 - $6e8a = UpdateGradeTGM1.check999 - $6ec1 = UpdateGradeTGM1.success999 - $6ed9 = UpdateGradeTGM1.fail999 - $6edf = UpdateGradeDEAT - $6eeb = UpdateGradeDEAT.notgm - $6f07 = UpdateGradeDEAT.notm - $6f2a = UpdateGradeDEAT.disqualify - $6f48 = UpdateGradeSHIR - $6f8a = UpdateGradeSHIR.s5torikan - $6f9a = UpdateGradeSHIR.s10torikan - $6fa9 = UpdateGradeSHIR.disqualify - $6fb8 = UpdateGradeSHIR.l1000 - $6fce = UpdateGradeSHIR.l500 - $6fe4 = UpdateGradeTGM3 - $6fe4 = UpdateGradeTGM3.GradePoints - $6ff3 = !1 - $6ff8 = UpdateGradeTGM3.GetOffset - $700a = UpdateGradeTGM3.loadpoints - $7014 = UpdateGradeTGM3.multipliers - $7021 = !2 - $703b = !3 - $7040 = UpdateGradeTGM3.levelmultiplier - $7059 = UpdateGradeTGM3.Level750 - $706d = UpdateGradeTGM3.under750 - $7073 = UpdateGradeTGM3.Level500 - $7081 = UpdateGradeTGM3.Level250 - $7090 = UpdateGradeTGM3.under250 - $7094 = UpdateGradeTGM3.Multiply - $7097 = !4 - $709e = UpdateGradeTGM3.IncreaseInternalGrade - $70b6 = TGM3UpdateDisplayedGrade - $70cb = TGM3UpdateDisplayedGrade.update - $70e8 = TGM3UpdateDisplayedGrade.cool - $7107 = TGM3UpdateDisplayedGrade.nocool - $7113 = TGM3UpdateDisplayedGrade.continue - $7124 = CheckCOOL - $7138 = CheckCOOL.cool - $7159 = DecayGradeTGM3 - $716d = DecayGradeTGM3.points - $718a = !5 - $718e = DecayGradeTGM3.GetOffset - $7197 = DecayGradeTGM3.lpoints - $719b = TGM3COOLHandlerB - $71c2 = TGM3COOLHandlerB.checkCOOL - $71cc = TGM3COOLHandlerB.checkBaselineCOOL - $71d4 = TGM3COOLHandlerB.cool - $71ee = TGM3COOLHandlerB.nocool - $71fa = TGM3REGRETHandlerB - $7216 = TGM3REGRETHandlerB.regret - $7243 = TGM3StaffRollGradeUpdate - $7259 = TGM3StaffRollGradeUpdate.UpdateGrade - SECTION: $7269-$7592 ($032a bytes) ["Grading Data"] - $7269 = sDMGTGrading - $731d = sDMGTGaugeLUT - $741d = sTGM1GradeScores - $743f = sTGM3InternalGradeSystem - $74df = sTGM3GradeBoosts - $74fe = sTGM3HowManyInternalGradesToDecrease - $751d = sTGM3HowManyInternalGradesToIncrease - $753c = sTGM3ComboMultipliers - $756e = sTGM3LevelMultiplier - $7571 = sTGM3BaselineCOOL - $757a = sTGM3REGRETConditions - $758e = sTGM3StaffrollGrading - EMPTY: $7593-$7fff ($0a6d bytes) - TOTAL EMPTY: $0a6d bytes + SECTION: $62ca-$6b5f ($0896 bytes) ["Gameplay Static Data"] + $62ca = sLeftDasSlam + $62d0 = sRightDasSlam + $62d6 = sLeady + $62e0 = sGo + $62ea = sPause + $6312 = sKill + $63b2 = sYouAreGM + $6416 = sFinalChallenge + $64de = sPieceXOffsets + $64fa = sPieceYOffsets + $6516 = sPieceFastRotationStates + $6586 = sPieceRotationStates + $65f6 = sTGM3Bag + $6619 = sTGM3Droughts + $6620 = sGameplayTileMap + $68c0 = sGameplayUngradedTileMap + $68c0 = sGameplayTileMapEnd + $6b60 = sGameplayUngradedTileMapEnd + SECTION: $6b60-$7271 ($0712 bytes) ["Grading Functions Banked"] + $6b60 = GradeInitB + $6baa = GradeInitB.grade9start + $6baf = UpdateGradeB + $6baf = GradeInitB.end + $6bbd = UpdateGradeB.gradejumptable + $6bd2 = DecayGradeProcessB + $6be0 = DecayGradeProcessB.gradejumptable + $6bf5 = DecayGradeDelayB + $6c03 = DecayGradeDelayB.gradejumptable + $6c18 = PrepareScore + $6c2b = DrawGradeProgressDMGT + $6c37 = !0 + $6c46 = UpdateGradeDMGT + $6c7f = UpdateGradeDMGT.checklineclears + $6c98 = UpdateGradeDMGT.clearrate + $6ca9 = UpdateGradeDMGT.combomult + $6cb6 = UpdateGradeDMGT.combo13 + $6cc7 = UpdateGradeDMGT.combo8 + $6cd8 = UpdateGradeDMGT.combo1 + $6ce7 = UpdateGradeDMGT.prelevel + $6cf6 = UpdateGradeDMGT.single + $6d06 = UpdateGradeDMGT.double + $6d17 = UpdateGradeDMGT.adddonce + $6d1b = UpdateGradeDMGT.triple + $6d2c = UpdateGradeDMGT.addtonce + $6d30 = UpdateGradeDMGT.tetris + $6d34 = UpdateGradeDMGT.levelmult + $6d4c = UpdateGradeDMGT.mult4 + $6d52 = UpdateGradeDMGT.mult3 + $6d57 = UpdateGradeDMGT.mult2 + $6d5b = UpdateGradeDMGT.mult1 + $6d5c = UpdateGradeDMGT.processgrade + $6d85 = UpdateGradeDMGT.increasegrademaybe + $6da9 = UpdateGradeDMGT.gotgm + $6db7 = DecayGradeDMGT + $6dda = DecayGradeDMGT.nodecay + $6de1 = DecayGradeDMGT.decay + $6def = UpdateGradeTGM1 + $6dff = UpdateGradeTGM1.trygradeup + $6e1a = UpdateGradeTGM1.increasegrade + $6e2f = UpdateGradeTGM1.skipjingle + $6e3b = UpdateGradeTGM1.check300 + $6e59 = UpdateGradeTGM1.success300 + $6e60 = UpdateGradeTGM1.fail300 + $6e67 = UpdateGradeTGM1.check500 + $6e85 = UpdateGradeTGM1.success500 + $6e8c = UpdateGradeTGM1.fail500 + $6e93 = UpdateGradeTGM1.check999 + $6eca = UpdateGradeTGM1.success999 + $6ee2 = UpdateGradeTGM1.fail999 + $6ee8 = UpdateGradeDEAT + $6ef4 = UpdateGradeDEAT.notgm + $6f10 = UpdateGradeDEAT.notm + $6f33 = UpdateGradeDEAT.disqualify + $6f51 = UpdateGradeSHIR + $6f93 = UpdateGradeSHIR.s5torikan + $6fa3 = UpdateGradeSHIR.s10torikan + $6fb2 = UpdateGradeSHIR.disqualify + $6fc1 = UpdateGradeSHIR.l1000 + $6fd7 = UpdateGradeSHIR.l500 + $6fed = UpdateGradeTGM3 + $6fed = UpdateGradeTGM3.GradePoints + $6ffc = !1 + $7001 = UpdateGradeTGM3.GetOffset + $7013 = UpdateGradeTGM3.loadpoints + $701d = UpdateGradeTGM3.multipliers + $702a = !2 + $7044 = !3 + $7049 = UpdateGradeTGM3.levelmultiplier + $7062 = UpdateGradeTGM3.Level750 + $7076 = UpdateGradeTGM3.under750 + $707c = UpdateGradeTGM3.Level500 + $708a = UpdateGradeTGM3.Level250 + $7099 = UpdateGradeTGM3.under250 + $709d = UpdateGradeTGM3.Multiply + $70a0 = !4 + $70a7 = UpdateGradeTGM3.IncreaseInternalGrade + $70bf = TGM3UpdateDisplayedGrade + $70d4 = TGM3UpdateDisplayedGrade.update + $70f1 = TGM3UpdateDisplayedGrade.cool + $7110 = TGM3UpdateDisplayedGrade.nocool + $711c = TGM3UpdateDisplayedGrade.continue + $712d = CheckCOOL + $7141 = CheckCOOL.cool + $7162 = DecayGradeTGM3 + $7176 = DecayGradeTGM3.points + $7193 = !5 + $7197 = DecayGradeTGM3.GetOffset + $71a0 = DecayGradeTGM3.lpoints + $71a4 = TGM3COOLHandlerB + $71cb = TGM3COOLHandlerB.checkCOOL + $71d5 = TGM3COOLHandlerB.checkBaselineCOOL + $71dd = TGM3COOLHandlerB.cool + $71f7 = TGM3COOLHandlerB.nocool + $7203 = TGM3REGRETHandlerB + $721f = TGM3REGRETHandlerB.regret + $724c = TGM3StaffRollGradeUpdate + $7262 = TGM3StaffRollGradeUpdate.UpdateGrade + SECTION: $7272-$759b ($032a bytes) ["Grading Data"] + $7272 = sDMGTGrading + $7326 = sDMGTGaugeLUT + $7426 = sTGM1GradeScores + $7448 = sTGM3InternalGradeSystem + $74e8 = sTGM3GradeBoosts + $7507 = sTGM3HowManyInternalGradesToDecrease + $7526 = sTGM3HowManyInternalGradesToIncrease + $7545 = sTGM3ComboMultipliers + $7577 = sTGM3LevelMultiplier + $757a = sTGM3BaselineCOOL + $7583 = sTGM3REGRETConditions + $7597 = sTGM3StaffrollGrading + EMPTY: $759c-$7fff ($0a64 bytes) + TOTAL EMPTY: $0a64 bytes ROMX bank #5: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_GAMEPLAY_BIG"] @@ -2602,7 +2604,7 @@ ROMX bank #5: $5266 = BigClearLines.fixgarbo $5269 = BigClearLines.fixgarboloop $5286 = BigWidenField - SECTION: $55d6-$6597 ($0fc2 bytes) ["Gameplay Function Big Banked"] + SECTION: $55d6-$65a0 ($0fcb bytes) ["Gameplay Function Big Banked"] $55d6 = SwitchToGameplayBigB $55dc = SwitchToGameplayBigB.wvr_u214 $55e5 = SwitchToGameplayBigB.loadtilemap @@ -3108,25 +3110,25 @@ ROMX bank #5: $6574 = BigDoHold.cp4 $6582 = BigDoHold.noRotation $658d = BigDoHold.doHoldOperation - SECTION: $6598-$6e03 ($086c bytes) ["Gameplay Big Static Data"] - $6598 = sBigLeftDasSlam - $659e = sBigRightDasSlam - $65a4 = sBigLeady - $65ae = sBigGo - $65b8 = sBigPause - $65e0 = sBigKill - $6680 = sBigYouAreGM - $66e4 = sBigFinalChallenge - $67ac = sBigPieceXOffsets - $67c8 = sBigPieceYOffsets - $67e4 = sBigPieceFastRotationStates - $6854 = sBigPieceRotationStates - $68c4 = sBigGameplayTileMap - $6b64 = sBigGameplayUngradedTileMap - $6b64 = sBigGameplayTileMapEnd - $6e04 = sBigGameplayUngradedTileMapEnd - EMPTY: $6e04-$7fff ($11fc bytes) - TOTAL EMPTY: $11fc bytes + SECTION: $65a1-$6e0c ($086c bytes) ["Gameplay Big Static Data"] + $65a1 = sBigLeftDasSlam + $65a7 = sBigRightDasSlam + $65ad = sBigLeady + $65b7 = sBigGo + $65c1 = sBigPause + $65e9 = sBigKill + $6689 = sBigYouAreGM + $66ed = sBigFinalChallenge + $67b5 = sBigPieceXOffsets + $67d1 = sBigPieceYOffsets + $67ed = sBigPieceFastRotationStates + $685d = sBigPieceRotationStates + $68cd = sBigGameplayTileMap + $6b6d = sBigGameplayUngradedTileMap + $6b6d = sBigGameplayTileMapEnd + $6e0d = sBigGameplayUngradedTileMapEnd + EMPTY: $6e0d-$7fff ($11f3 bytes) + TOTAL EMPTY: $11f3 bytes ROMX bank #6: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_MUSIC_0"] @@ -3567,8 +3569,8 @@ HRAM bank #0: TOTAL EMPTY: $0000 bytes SUMMARY: - ROM0: 14693 bytes used / 1691 free - ROMX: 110558 bytes used / 36898 free in 9 banks + ROM0: 14703 bytes used / 1681 free + ROMX: 110576 bytes used / 36880 free in 9 banks SRAM: 2951 bytes used / 5241 free in 1 bank WRAM0: 3926 bytes used / 170 free HRAM: 127 bytes used / 0 free diff --git a/bin/PandorasBlocks.pocket b/bin/PandorasBlocks.pocket index 62ad4e27587743a5f3e2742a5b65caf73db09e9e..8d29f45c5ba7219fc6ac1130533107fb5d41de89 100644 GIT binary patch delta 6540 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 delta 6611 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