From 21691b1f52a677e9ec1fab19eed620dac0e463ea Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Fri, 10 Nov 2023 11:46:37 +0100 Subject: [PATCH] Add profile screen. --- bin/DMGTRIS.GBC | Bin 131072 -> 131072 bytes bin/DMGTRIS.map | 1314 ++++++++++---------- bin/DMGTRIS.pocket | Bin 131072 -> 131072 bytes bin/DMGTRIS.sym | 1025 +++++++-------- src/gbc.asm | 34 +- src/include/globals.asm | 13 + src/res/sources/map_title_main_profile.gbm | Bin 0 -> 4388 bytes src/res/title_data.inc | 71 ++ src/sram.asm | 49 + src/state_title.asm | 270 +++- 10 files changed, 1657 insertions(+), 1119 deletions(-) create mode 100644 src/res/sources/map_title_main_profile.gbm diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index c7b99b41121522b82dc1bf27c5fb8e43e6e1bde7..bb5611c4a90394699a09e96d0eb3b8c993d47b57 100644 GIT binary patch delta 6096 zcmb_g4Rlo1wZ3O2Gs)!tLYmAZOlD3(k|AmSOc?Q*Tn4BNKP3~BNvK*^B+>REB3bqM z(B&%$2u*4g(W~5O{h49}R^bubtY^?7O*s6_gq$MKBB0<%(O}Aws}!&!oxFYS+{xTn zt@f=q$vtO(`|N%8KIh!M&z|Y*Oz7-Pcuj|N^)tmdv`F`ZivD_ZR$tog6j0EUsmELo zvU9ZCnTe23>EqEL0?czgnA?xIINI*)zr(O!|9w>@o~ZzPvPfUh69^5`Fh7_H0*YR@ z)5wK}sR#eiWcrw_Fp*vpIb$N3i6kpgeBYF9bL~fWF_WPHt--$i;D@Q!eqGQn1&VY# zLB^IH9k&0=!)Hxc*X`^_i7O2$TW2c14L_L15BmGtr(V#TCRqLVO}(f`Tl;UzdJv&y z{YT6XB3-q!e}49mt|G+w!fE?%%nc!5*vxvJFFb|ydSBSa`Z!;hW4*x_M$n5{c=5s^ ztA$VDJ|?HES%YG*Jy2<+qKrstyp8;W9_{}P2n`v12gNCQZqaD1UeJj{d#Ss#)5v+?_0sTk=s^%m zqBZv~9nGaeIvp($(#Bq;1O&Fz@aB^zHjizmAX_uWnGnH2z`g87B4# zZKE~rHM<@04~=b8C$EKx`&7i{=KW#5qK3Z9JnPEjTJW=Ck8PSUVo!Y2md(g1WK=wD z%bPLDuDmmBIBC?US}0qoeX3vsXH`eV0(-vh0f)HAUd@yy7RZ*LVox^eQl~|<(gWcs zgT}bjSpdatb_Y{BYR_QZUGD5A@Yl)V9W-!CXZqheCw%~M88h{&Pj;`mB{Du)qwebSaU}2%YFCY3$fl`cRm& zCkY9`QNb0wKp5@>{A0k2RjdP?2ly5huLC>}@U1FFfC~W6Q}J5B7Qh}A>j5VLp0DCZ z0iOZf5WLW#7>onP>l%UefQtZoRRsg!I{>>?yaDhdfSXio1pE@<1uFg-;GY6ss^D-U zz@q>cM&M%rmjS#Dplw%aI2G{yfbWP5rvdzX6pB6H?bV4TqENc5vfatw_9MK3qIi}j zFVTzTVdVH*Sm(GBd?)lf8rIvV0dMTsIBSnWE52P?Xo*RM4USKPBf+D=WAs2dIUuH$ z*^)1oo6ib{7OUesApUP<)0ST>$0Or=9e>T=>yY8O2+sv`FU-i;_Fn>F-Ymp}f}Nf# zAA6j7`rNpcn${>MD25Y}Bd%$tL92|#WUb~j1 zkb`C9&t)XFoD7u_uAE*i|7dnNzv5beUhTiV{0&q*Sc%NnDYP$)Lz{XPng#HfvxV^* z)2!t==L<;{Ub$672@5uO+fL*nO#Y+DB}^jwHcNtmOG1Z z_Ko<=I7;LQ+@)L?N}fzsfnd(BkWh8>uXbKZ_^oTxuvBkA#)KSeHlLA|jwC^ksypsP z7P~nm-HPDjKr^7_G#`ZSL>ZP0TSjsg(tpEv+&7FHzG~b72CV71={9Cx{b=lS%z>2T z)XY`V!$!1J+GIp7O;ZtvT;db;cS)NPQM&Ei%)a0}de#Z&DdYs*!3DvE0!LRZVM*>2 zIx77>5mmN4vjh(Bl_linI^wA#ZFOWt9sk-~Rsi~R5N4r$G@N12<^>nNrw18W>`A7P&9+3PgFl&H$GQt`pHI0gP$g5~WcLgMFZ&b89&NqR2oJUnZ z-=wG?XG}|!dAv#f3^dvqv&cUdnZ2k z9ExKnE#04jvLXU|Re^3rK#mIdQcxZ%LzDTPEu3MWp(ImbA~a5E_DVH2?uPlr7{t3%+#D(FTieiAxL zabM4B>4Oxsz4|Lw{A5qWb=Zox)Rq2+veG_vKzb_`W$9o`V8zoqE~(tex}yk`-&B?GVL9Wgfx8Q}s;02X?y=1MI^ms|1mmKtx zKYK}Xv$Q`Q-Jb#~eKC#MJTiB%m&@Q5xZzbx9ty_|pSMF;C_H~S&aW;buL)+YY$CNy zq^^myG{Gw1&}yK}Kz*dm2Ip22F0|_e1cf`4?*TZ$C}V^|9Up+Rj4~)4GXaBHWfodg z6YH4?v5EMa$Zwj+KGj4mBs!g7irA=yvP~xx#B4+v6E>m@jSXoi4Ov`cLoTUW{3 zevB@Un|>PH`d`6qw781A+^lj_xJg{7VCla%N90IxmGm@^R^3zy!f)7ldE0J#^28|2 z!e1T-Xpy(RWzUee?XjoP%I3S4TPCao`j_o^IitUQM|Z|%7qWK1)%emdx({WJvs-fA zFq+0GB%Ee09kbB@-r`3xmw6xDoctC)emVe%-K|^v`~*E`1ii;)vL6*xY30fVMFS`@ z?#>wbdW;2=TIftv3jQICeCx7}zxbo0AW8+57-xKYrLSt-q&Lw|y$oW&^5!WD*2zy;|rhF*rwFTWi;&Z^JmQmO72 zs9@lc#psAGuG=YZk~-^9h5@!peo7(rKuT-sAZK(t2Ub3TY7ElxMs#0|k}J986Bi-n zoI)6``TgvgXJy;dS;BdC*$bP33u$s0y{nSi3uuCiy0G+!7iGiO5=ru+`c`ALd^%ij zPwg8!p?vY;;p>fjy4G$K^ubetBY2w6Y{O*%sH9jLUfxQXLap5Zdv~f2M(vYE1rt<< zf(zEJt`Wqgg-z%MG%9`6gnna&-1ct_pRgTTZBMgy#@ zyHXb2@-v;CCv?GQ~TEYSjqLIDb zSI12(uU})S<6b5FzHZ>@uNr`)$fEOZ0~9g*upg(5s73N0{Wv2^pY>x)l)m7{xl#Hv zKhBTR*ZtTLrHuhx8l}?%_=YH*9l$q6>FEJnqtc7lYWk{({U2QME{(*V# aznmW4NtT{(MTOs(A8ytU^leACF8yELNx_@| delta 5488 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 CiZxyU diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index 6f25526..b439793 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -32,7 +32,7 @@ ROM0 bank #0: $00f4 = DoDMGEffect.wvbe_u13 EMPTY: $00fd-$00ff ($0003 bytes) SECTION: $0100-$014f ($0050 bytes) ["Cartridge Header"] - SECTION: $0150-$0f6f ($0e20 bytes) ["GBC Functions"] + SECTION: $0150-$0fa7 ($0e58 bytes) ["GBC Functions"] $0150 = ToATTR $0173 = GBCTitleInit $0354 = GBCTitleInit.agb @@ -47,482 +47,486 @@ ROM0 bank #0: $0980 = GBCTitleProcess.noinc $0997 = !0 $09a4 = GBCTitleProcess.eventLoopProfile - $09a5 = GBCTitleProcess.eventLoopSettings - $09b7 = GBCTitleProcess.nores1 - $09ba = GBCTitleProcess.noinc1 - $09d1 = !1 - $09de = GBCTitleProcess.eventLoopRecords - $09df = GBCTitleProcess.eventLoopCredits - $09f1 = GBCTitleProcess.nores2 - $09f4 = GBCTitleProcess.noinc2 - $0a01 = GBCGameplayProcess - $0a3f = GBCGameplayProcess.goverride - $0a4b = !2 - $0a54 = !3 - $0a5d = !4 - $0a66 = GBCGameplayProcess.colorfield - $0bcc = !5 - $0bda = GBCGameplayProcess.outer1 - $0bdf = GBCGameplayProcess.inner1 - $0c03 = GBCGameplayProcess.outer2 - $0c08 = GBCGameplayProcess.inner2 - $0c2d = GBCGameplayProcess.empty - $0c31 = GBCGameplayProcess.sub59 - $0c33 = GBCGameplayProcess.sub52 - $0c35 = GBCGameplayProcess.sub45 - $0c37 = GBCGameplayProcess.sub38 - $0c39 = GBCGameplayProcess.sub31 - $0c3b = GBCGameplayProcess.sub24 - $0c3d = GBCGameplayProcess.sub17 - $0c3f = GBCGameplayProcess.sub10 - $0c41 = GBCGameplayProcess.done - $0c63 = GBCGameplayProcess.darker - $0c6a = GBCGameplayProcess.wvr_u1 - $0c77 = GBCGameplayProcess.lighter - $0c7e = GBCGameplayProcess.wvr_u2 - $0c8b = GBCGameplayProcess.black - $0c92 = GBCGameplayProcess.wvr_u3 - $0c9f = GBCBigGameplayProcess - $0cdd = GBCBigGameplayProcess.goverride - $0ce9 = !6 - $0cf2 = !7 - $0cfb = !8 - $0d04 = GBCBigGameplayProcess.colorfield - $0e6a = !9 - $0e78 = GBCBigGameplayProcess.outer1 - $0e7d = GBCBigGameplayProcess.inner1 - $0ea1 = GBCBigGameplayProcess.outer2 - $0ea6 = GBCBigGameplayProcess.inner2 - $0ecb = GBCBigGameplayProcess.empty - $0ecf = GBCBigGameplayProcess.sub59 - $0ed1 = GBCBigGameplayProcess.sub52 - $0ed3 = GBCBigGameplayProcess.sub45 - $0ed5 = GBCBigGameplayProcess.sub38 - $0ed7 = GBCBigGameplayProcess.sub31 - $0ed9 = GBCBigGameplayProcess.sub24 - $0edb = GBCBigGameplayProcess.sub17 - $0edd = GBCBigGameplayProcess.sub10 - $0edf = GBCBigGameplayProcess.done - $0f01 = GBCBigGameplayProcess.darker - $0f08 = GBCBigGameplayProcess.wvr_u4 - $0f15 = GBCBigGameplayProcess.lighter - $0f1c = GBCBigGameplayProcess.wvr_u5 - $0f29 = GBCBigGameplayProcess.black - $0f30 = GBCBigGameplayProcess.wvr_u6 - $0f3d = ToVRAM - $0f3d = GBCBlitField - SECTION: $0f70-$1759 ($07ea bytes) ["Field Function Unbanked"] - $0f70 = BlitField - $1133 = BlitField.waitendvbloop - $1139 = !0 - $1188 = !1 - $11d7 = !2 - $1226 = !3 - $1275 = !4 - $12c4 = !5 - $1313 = !6 - $1365 = BigBlitField - $1528 = BigBlitField.waitendvbloop - $152e = !7 - $157d = !8 - $15cc = !9 - $161b = !10 - $166a = !11 - $16b9 = !12 - $1708 = !13 - SECTION: $175a-$1d06 ($05ad bytes) ["Domain Specific Functions"] - $175a = ApplyTells - $1798 = ApplyTells.myco - $179d = ApplyTells.dropmode - $17c2 = ApplyNext - $17ca = ApplyNext.bone - $17e9 = ApplyNext.nobone - $180a = ApplyNext.pos - $181a = ApplyNext.regular - $1820 = ApplyNext.postoffsets - $1824 = ApplyNext.getoffn - $182f = ApplyNext.skipoffn - $18cd = ApplyNext.done - $18d0 = ApplyHold - $18d8 = ApplyHold.bone - $18f7 = ApplyHold.nobone - $1914 = ApplyHold.hide - $1926 = ApplyHold.show - $1936 = ApplyHold.x - $1946 = ApplyHold.regular - $194c = ApplyHold.postoffsets - $1950 = ApplyHold.getoffh - $195b = ApplyHold.skipoffh - $1995 = ApplyTime - $19e6 = ApplyTime.loop0 - $1a15 = ApplyTime.loop1 - $1a6a = ApplyNumbers8 - $1ab7 = ApplyNumbers8.one - $1abd = ApplyNumbers8.two - $1ac3 = ApplyNumbers8.three - $1ac9 = ApplyNumbers8.four - $1acf = ApplyNumbers8.five - $1ad5 = ApplyNumbers8.six - $1adb = ApplyNumbers8.seven - $1ae1 = ApplyNumbers8.eight - $1ae6 = ApplyNumbers4 - $1b0b = ApplyNumbers4.one - $1b11 = ApplyNumbers4.two - $1b17 = ApplyNumbers4.three - $1b1d = ApplyNumbers4.four - $1b22 = SetNumberSpritePositions - $1c29 = GradeRendering - $1c5e = GradeRendering.effect - $1c6e = GradeRendering.noeffect - $1c76 = GradeRendering.drawgrade - $1c7d = GradeRendering.regulargrade - $1c85 = GradeRendering.sgrade - $1c9b = GradeRendering.hisgrade - $1cb1 = GradeRendering.mgrade - $1cc7 = GradeRendering.lettergrade - $1ce4 = GradeRendering.mk - $1cea = GradeRendering.mv - $1cf0 = GradeRendering.mo - $1cf6 = GradeRendering.mm - $1cfc = GradeRendering.gmgrade - SECTION: $1d07-$20e6 ($03e0 bytes) ["Grading Functions"] - $1d07 = GradeInit - $1d32 = GradeInit.grade9start - $1d37 = GradeInit.end - $1d39 = UpdateGrade - $1d47 = UpdateGrade.gradejumptable - $1d5c = DecayGradeProcess - $1d6a = DecayGradeProcess.gradejumptable - $1d7f = DecayGradeDelay - $1d8d = DecayGradeDelay.gradejumptable - $1da2 = PrepareScore - $1db5 = DrawGradeProgressDMGT - $1dc1 = !0 - $1dd0 = UpdateGradeDMGT - $1e09 = UpdateGradeDMGT.checklineclears - $1e23 = UpdateGradeDMGT.clearrate - $1e34 = UpdateGradeDMGT.combomult - $1e41 = UpdateGradeDMGT.combo10 - $1e52 = UpdateGradeDMGT.combo5 - $1e63 = UpdateGradeDMGT.combo1 - $1e72 = UpdateGradeDMGT.prelevel - $1e81 = UpdateGradeDMGT.single - $1e91 = UpdateGradeDMGT.double - $1ea2 = UpdateGradeDMGT.adddonce - $1ea6 = UpdateGradeDMGT.triple - $1eb7 = UpdateGradeDMGT.addtonce - $1ebb = UpdateGradeDMGT.tetris - $1ebf = UpdateGradeDMGT.levelmult - $1ed7 = UpdateGradeDMGT.mult5 - $1ede = UpdateGradeDMGT.mult4 - $1ee4 = UpdateGradeDMGT.mult3 - $1ee9 = UpdateGradeDMGT.mult2 - $1eed = UpdateGradeDMGT.mult1 - $1eee = UpdateGradeDMGT.processgrade - $1f17 = UpdateGradeDMGT.increasegrademaybe - $1f3b = UpdateGradeDMGT.gotgm - $1f49 = DecayGradeDMGT - $1f6d = DecayGradeDMGT.nodecay - $1f74 = DecayGradeDMGT.decay - $1f82 = UpdateGradeTGM1 - $1f8c = UpdateGradeTGM1.trygradeup - $1fa6 = UpdateGradeTGM1.increasegrade - $1fbb = UpdateGradeTGM1.skipjingle - $1fc8 = UpdateGradeTGM1.maybegm - $1fe1 = UpdateGradeDEAT - $1fed = UpdateGradeDEAT.notgm - $2009 = UpdateGradeDEAT.notm - $202c = UpdateGradeDEAT.disqualify - $204a = UpdateGradeSHIR - $208d = UpdateGradeSHIR.s5torikan - $209d = UpdateGradeSHIR.s10torikan - $20ac = UpdateGradeSHIR.disqualify - $20bb = UpdateGradeSHIR.l1000 - $20d1 = UpdateGradeSHIR.l500 - SECTION: $20e7-$248b ($03a5 bytes) ["SRAM Functions"] - $20e7 = RestoreSRAM - $2117 = TrustedLoad - $2169 = TrustedLoad.jumps - $2181 = TrustedLoad.dmgt - $2187 = TrustedLoad.tgm1 - $218d = TrustedLoad.tgm3 - $2193 = TrustedLoad.deat - $2199 = TrustedLoad.shir - $219f = TrustedLoad.chil - $21a5 = TrustedLoad.myco - $21ab = TrustedLoad.search - $21bd = TrustedLoad.notfound - $21c4 = TrustedLoad.fallback - $21df = InitializeSRAM - $22ff = NextProfile - $2308 = NextProfile.update - $230b = ChangeProfile - $230b = ChangeProfile.backup - $233a = ChangeProfile.first - $2348 = ChangeProfile.second - $2356 = ChangeProfile.third - $2364 = ChangeProfile.fourth - $2372 = ChangeProfile.fifth - $2380 = ChangeProfile.sixth - $238e = ChangeProfile.seventh - $239c = ChangeProfile.eighth - $23aa = ChangeProfile.ninth - $23b8 = ChangeProfile.tenth - $23c6 = ChangeProfile.restore - $23f6 = ChangeProfile.lfirst - $2405 = ChangeProfile.lsecond - $2414 = ChangeProfile.lthird - $2423 = ChangeProfile.lfourth - $2432 = ChangeProfile.lfifth - $2441 = ChangeProfile.lsixth - $2450 = ChangeProfile.lseventh - $245f = ChangeProfile.leighth - $246e = ChangeProfile.lninth - $247d = ChangeProfile.ltenth - SECTION: $248c-$2800 ($0375 bytes) ["Level Functions"] - $248c = LevelInit - $24f1 = SpecialLevelInit - $24ff = SpecialLevelInit.jumps - $2514 = SpecialLevelInit.dmgt - $2519 = SpecialLevelInit.tgm1 - $251e = SpecialLevelInit.tgm3 - $2523 = SpecialLevelInit.deat - $2528 = SpecialLevelInit.shir - $252d = SpecialLevelInit.chil - $2532 = SpecialLevelInit.myco - $2537 = SpecialLevelInit.loaddata - $256c = LevelUp - $2596 = LevelUp.doit - $25e0 = LevelUp.checknlevel - $260e = !0 - $2626 = !1 - $262f = LevelUp.bellmaybe - $2648 = LevelUp.leveljinglemaybe - $2655 = LevelUp.checkspeedup - $2669 = !2 - $2676 = !3 - $2687 = !4 - $2694 = DoSpeedUp - $26d5 = CheckSpecialLevelConditions - $2706 = CheckSpecialLevelConditions.override - $2721 = CheckSpecialLevelConditions.nooverride - $2727 = CheckSpecialLevelConditions.speciallock - $2748 = CheckSpecialLevelConditions.bones - $275d = CheckSpecialLevelConditions.enterthebonezone - $2762 = CheckSpecialLevelConditions.invis - $2777 = CheckSpecialLevelConditions.vanishoxyaction - $277c = CheckSpecialLevelConditions.killscreen - $278d = CheckSpecialLevelConditions.rip - $27bd = CheckSpecialLevelConditions.staffroll - $27cb = CheckSpecialLevelConditions.justkill - $27df = TriggerKillScreen - SECTION: $2801-$2ab6 ($02b6 bytes) ["Grading Data"] - $2801 = sTGM1GradeScores - $2823 = sTGM3InternalGradeSystem - $28c3 = sTGM3GradeBoosts - $28e2 = sTGM3LevelMultiplier - $28e6 = sTGM3BaselineCOOL - $28ef = sTGM3REGRETConditions - $2903 = sDMGTGrading - $29b7 = sDMGTGaugeLUT - SECTION: $2ab7-$2d50 ($029a bytes) ["SFX Functions"] - $2ab7 = SFXInit - $2ad9 = SFXPopQueue - $2aee = SFXPushQueue - $2aff = SFXProcessQueue - $2b10 = !0 - $2b2b = !1 - $2b2d = SFXTriggerNoise - $2b3a = !2 - $2b47 = !3 - $2b53 = SFXEnqueue - $2b68 = SFXEnqueue.findsfx - $2b7d = !4 - $2b8d = !5 - $2b9d = !6 - $2bad = !7 - $2bbd = !8 - $2bcd = !9 - $2bdd = !10 - $2bed = !11 - $2bfd = !12 - $2c0d = !13 - $2c1d = !14 - $2c2d = !15 - $2c3d = !16 - $2c4d = !17 - $2c5d = !18 - $2c6c = !19 - $2c7b = !20 - $2c8a = !21 - $2c99 = !22 - $2ca7 = !23 - $2cb5 = !24 - $2cc2 = SFXKill - $2cef = SFXPlayNoise - $2cfa = SFXPlayNoise.noisereg - $2d07 = !25 - $2d11 = SFXPlayNoise.savenoiseplayhead - $2d1a = SFXPlay - $2d25 = !26 - $2d28 = SFXPlay.play - $2d34 = SFXPlay.getRegister - $2d3e = !27 - $2d48 = SFXPlay.savePlayhead - SECTION: $2d51-$2f81 ($0231 bytes) ["RNG Functions"] - $2d51 = HarvestEntropy - $2d57 = HarvestEntropy.loop - $2d78 = RNGInit - $2dae = !0 - $2dde = RNGInit.complexinit - $2df5 = !1 - $2e10 = ShiftHistory - $2e2d = GetNextHellPiece - $2e32 = GetNextTGM1Piece - $2e35 = !2 - $2e4d = !3 - $2e4f = GetNextTGM2Piece - $2e52 = !4 - $2e6a = !5 - $2e6c = GetNextNesPiece - $2e7a = GetNextTGM3Piece - $2e7d = !6 - $2ea0 = !7 - $2ea3 = !8 - $2eb3 = !9 - $2ebd = !10 - $2ecb = !11 - $2eda = !12 - $2ee6 = !13 - $2ef2 = !14 - $2efe = !15 - $2f0a = !16 - $2f16 = !17 - $2f22 = !18 - $2f31 = GetNextPiece - $2f3f = GetNextPiece.nextpiecejumps - $2f4e = Next35Piece - $2f4e = !19 - $2f58 = Next7Piece - $2f58 = !20 - $2f62 = NextByte - SECTION: $2f82-$30cb ($014a bytes) ["Progress Data"] - $2f82 = sProgressData - SECTION: $30cc-$31ab ($00e0 bytes) ["Score Functions"] - $30cc = ScoreInit - $30f4 = IncreaseScore - $312c = IncreaseScore.doConvert - $312e = !0 - $3144 = IncreaseScore.carry - $3146 = IncreaseScore.postConvert - $3153 = !1 - $315a = IncreaseScore.preAddDigit - $3182 = IncreaseScore.addDigit - $3198 = IncreaseScore.nextDigit - SECTION: $31ac-$3278 ($00cd bytes) ["Input Functions"] - $31ac = InputInit - $31be = GetInput - $31be = GetInput.btns - $31cb = GetInput.readA - $31cf = GetInput.setA - $31da = GetInput.clearA - $31dd = GetInput.readB - $31e1 = GetInput.setB - $31ec = GetInput.clearB - $31ef = GetInput.readSelect - $31f3 = GetInput.setSelect - $31fe = GetInput.clearSelect - $3201 = GetInput.readStart - $3205 = GetInput.setStart - $3210 = GetInput.clearStart - $3213 = GetInput.dpad - $3220 = GetInput.readUp - $3224 = GetInput.setUp - $322f = GetInput.clearUp - $3232 = GetInput.readDown - $3236 = GetInput.setDown - $3241 = GetInput.clearDown - $3244 = GetInput.readLeft - $3248 = GetInput.setLeft - $3253 = GetInput.clearLeft - $3256 = GetInput.readRight - $325a = GetInput.setRight - $3265 = GetInput.clearRight - $3268 = GetInput.priorities - $3273 = GetInput.zero - SECTION: $3279-$3343 ($00cb bytes) ["Title Function Trampolines"] - $3279 = SwitchToTitle - $3282 = TitleEventLoopHandler - $328c = TitleVBlankHandler - $3296 = PersistLevel - $32a4 = DrawSpeedMain - $32f4 = DrawSpeedSettings - SECTION: $3344-$3409 ($00c6 bytes) ["Time Functions"] - $3344 = TimeInit - $3364 = StartCountdown - $3372 = ResetGameTime - $337d = CheckTorikan - $3394 = CheckTorikan.failure - $3396 = CheckTorikan.success - $3399 = HandleTimers - $33bf = HandleTimers.reduce - $33cc = HandleTimers.clock - $33e6 = HandleTimers.go - SECTION: $340a-$34bb ($00b2 bytes) ["Progress Functions"] - $340a = SetProgress - $3415 = SetProgress.loop - $3419 = SetProgress.correct - $3440 = SetProgress.wvr_u1 - $344c = SetProgress.wvr_u2 - $345a = SetProgress.wvr_u3 - $3466 = SetProgress.wvr_u4 - $3474 = SetProgress.wvr_u5 - $3480 = SetProgress.wvr_u6 - $348e = SetProgress.wvr_u7 - $349a = SetProgress.wvr_u8 - $34a8 = SetProgress.wvr_u9 - $34b4 = SetProgress.wvr_u10 - SECTION: $34bc-$354d ($0092 bytes) ["Code Entry Point"] - $34bc = Main - $34e5 = Main.notgbc - $34eb = Main.wvr_u1 - $3512 = EventLoop - $3528 = EventLoop.eventloopjumps - $3531 = EventLoopPostHandler - $3533 = EventLoopPostHandler.wvb_u2 - $3545 = EventLoopPostHandler.vblankjumps - SECTION: $354e-$359f ($0052 bytes) ["Tile Functions"] - $354e = LoadTitleTiles - $356c = LoadGameplayTiles - $3582 = LoadGameplayTiles.gbc - $3591 = LoadGameplayTiles.dmg - SECTION: $35a0-$35db ($003c bytes) ["Time Data"] - $35a0 = sFramesToCS - SECTION: $35dc-$3609 ($002e bytes) ["Memory Functions"] - $35dc = UnsafeMemCopy - $35e5 = SafeMemCopy.wvr_u1 - $35e5 = SafeMemCopy - $35f4 = UnsafeMemSet - $35fc = SafeMemSet - $35fc = SafeMemSet.wvr_u2 - SECTION: $360a-$362f ($0026 bytes) ["Gameplay Function Trampolines"] - $360a = SwitchToGameplay - $3613 = SwitchToGameplayBig - $361c = GamePlayEventLoopHandler - $3626 = GamePlayBigEventLoopHandler - SECTION: $3630-$3654 ($0025 bytes) ["Interrupt Initialization Functions"] - $3630 = EnableScreenSquish - $364a = DisableScreenSquish - SECTION: $3655-$3676 ($0022 bytes) ["OAM Functions"] - $3655 = CopyOAMHandler - $3661 = ClearOAM - SECTION: $3677-$3685 ($000f bytes) ["Banking Functions"] - $3677 = BankingInit - SECTION: $3686-$368f ($000a bytes) ["OAM DMA Code"] - $3686 = OAMDMA - $3690 = OAMDMAEnd - EMPTY: $3690-$3fff ($0970 bytes) - TOTAL EMPTY: $097b bytes + $09b6 = GBCTitleProcess.nores3 + $09b9 = GBCTitleProcess.noinc3 + $09d0 = !1 + $09dd = GBCTitleProcess.eventLoopSettings + $09ef = GBCTitleProcess.nores1 + $09f2 = GBCTitleProcess.noinc1 + $0a09 = !2 + $0a16 = GBCTitleProcess.eventLoopRecords + $0a17 = GBCTitleProcess.eventLoopCredits + $0a29 = GBCTitleProcess.nores2 + $0a2c = GBCTitleProcess.noinc2 + $0a39 = GBCGameplayProcess + $0a77 = GBCGameplayProcess.goverride + $0a83 = !3 + $0a8c = !4 + $0a95 = !5 + $0a9e = GBCGameplayProcess.colorfield + $0c04 = !6 + $0c12 = GBCGameplayProcess.outer1 + $0c17 = GBCGameplayProcess.inner1 + $0c3b = GBCGameplayProcess.outer2 + $0c40 = GBCGameplayProcess.inner2 + $0c65 = GBCGameplayProcess.empty + $0c69 = GBCGameplayProcess.sub59 + $0c6b = GBCGameplayProcess.sub52 + $0c6d = GBCGameplayProcess.sub45 + $0c6f = GBCGameplayProcess.sub38 + $0c71 = GBCGameplayProcess.sub31 + $0c73 = GBCGameplayProcess.sub24 + $0c75 = GBCGameplayProcess.sub17 + $0c77 = GBCGameplayProcess.sub10 + $0c79 = GBCGameplayProcess.done + $0c9b = GBCGameplayProcess.darker + $0ca2 = GBCGameplayProcess.wvr_u1 + $0caf = GBCGameplayProcess.lighter + $0cb6 = GBCGameplayProcess.wvr_u2 + $0cc3 = GBCGameplayProcess.black + $0cca = GBCGameplayProcess.wvr_u3 + $0cd7 = GBCBigGameplayProcess + $0d15 = GBCBigGameplayProcess.goverride + $0d21 = !7 + $0d2a = !8 + $0d33 = !9 + $0d3c = GBCBigGameplayProcess.colorfield + $0ea2 = !10 + $0eb0 = GBCBigGameplayProcess.outer1 + $0eb5 = GBCBigGameplayProcess.inner1 + $0ed9 = GBCBigGameplayProcess.outer2 + $0ede = GBCBigGameplayProcess.inner2 + $0f03 = GBCBigGameplayProcess.empty + $0f07 = GBCBigGameplayProcess.sub59 + $0f09 = GBCBigGameplayProcess.sub52 + $0f0b = GBCBigGameplayProcess.sub45 + $0f0d = GBCBigGameplayProcess.sub38 + $0f0f = GBCBigGameplayProcess.sub31 + $0f11 = GBCBigGameplayProcess.sub24 + $0f13 = GBCBigGameplayProcess.sub17 + $0f15 = GBCBigGameplayProcess.sub10 + $0f17 = GBCBigGameplayProcess.done + $0f39 = GBCBigGameplayProcess.darker + $0f40 = GBCBigGameplayProcess.wvr_u4 + $0f4d = GBCBigGameplayProcess.lighter + $0f54 = GBCBigGameplayProcess.wvr_u5 + $0f61 = GBCBigGameplayProcess.black + $0f68 = GBCBigGameplayProcess.wvr_u6 + $0f75 = ToVRAM + $0f75 = GBCBlitField + SECTION: $0fa8-$1791 ($07ea bytes) ["Field Function Unbanked"] + $0fa8 = BlitField + $116b = BlitField.waitendvbloop + $1171 = !0 + $11c0 = !1 + $120f = !2 + $125e = !3 + $12ad = !4 + $12fc = !5 + $134b = !6 + $139d = BigBlitField + $1560 = BigBlitField.waitendvbloop + $1566 = !7 + $15b5 = !8 + $1604 = !9 + $1653 = !10 + $16a2 = !11 + $16f1 = !12 + $1740 = !13 + SECTION: $1792-$1d3e ($05ad bytes) ["Domain Specific Functions"] + $1792 = ApplyTells + $17d0 = ApplyTells.myco + $17d5 = ApplyTells.dropmode + $17fa = ApplyNext + $1802 = ApplyNext.bone + $1821 = ApplyNext.nobone + $1842 = ApplyNext.pos + $1852 = ApplyNext.regular + $1858 = ApplyNext.postoffsets + $185c = ApplyNext.getoffn + $1867 = ApplyNext.skipoffn + $1905 = ApplyNext.done + $1908 = ApplyHold + $1910 = ApplyHold.bone + $192f = ApplyHold.nobone + $194c = ApplyHold.hide + $195e = ApplyHold.show + $196e = ApplyHold.x + $197e = ApplyHold.regular + $1984 = ApplyHold.postoffsets + $1988 = ApplyHold.getoffh + $1993 = ApplyHold.skipoffh + $19cd = ApplyTime + $1a1e = ApplyTime.loop0 + $1a4d = ApplyTime.loop1 + $1aa2 = ApplyNumbers8 + $1aef = ApplyNumbers8.one + $1af5 = ApplyNumbers8.two + $1afb = ApplyNumbers8.three + $1b01 = ApplyNumbers8.four + $1b07 = ApplyNumbers8.five + $1b0d = ApplyNumbers8.six + $1b13 = ApplyNumbers8.seven + $1b19 = ApplyNumbers8.eight + $1b1e = ApplyNumbers4 + $1b43 = ApplyNumbers4.one + $1b49 = ApplyNumbers4.two + $1b4f = ApplyNumbers4.three + $1b55 = ApplyNumbers4.four + $1b5a = SetNumberSpritePositions + $1c61 = GradeRendering + $1c96 = GradeRendering.effect + $1ca6 = GradeRendering.noeffect + $1cae = GradeRendering.drawgrade + $1cb5 = GradeRendering.regulargrade + $1cbd = GradeRendering.sgrade + $1cd3 = GradeRendering.hisgrade + $1ce9 = GradeRendering.mgrade + $1cff = GradeRendering.lettergrade + $1d1c = GradeRendering.mk + $1d22 = GradeRendering.mv + $1d28 = GradeRendering.mo + $1d2e = GradeRendering.mm + $1d34 = GradeRendering.gmgrade + SECTION: $1d3f-$213f ($0401 bytes) ["SRAM Functions"] + $1d3f = RestoreSRAM + $1d6f = TrustedLoad + $1dc1 = TrustedLoad.jumps + $1dd9 = TrustedLoad.dmgt + $1ddf = TrustedLoad.tgm1 + $1de5 = TrustedLoad.tgm3 + $1deb = TrustedLoad.deat + $1df1 = TrustedLoad.shir + $1df7 = TrustedLoad.chil + $1dfd = TrustedLoad.myco + $1e03 = TrustedLoad.search + $1e15 = TrustedLoad.notfound + $1e1c = TrustedLoad.fallback + $1e37 = InitializeSRAM + $1f57 = NextProfile + $1f60 = NextProfile.update + $1f63 = ChangeProfile + $1f63 = ChangeProfile.backup + $1f92 = ChangeProfile.first + $1fa0 = ChangeProfile.second + $1fae = ChangeProfile.third + $1fbc = ChangeProfile.fourth + $1fca = ChangeProfile.fifth + $1fd8 = ChangeProfile.sixth + $1fe6 = ChangeProfile.seventh + $1ff4 = ChangeProfile.eighth + $2002 = ChangeProfile.ninth + $2010 = ChangeProfile.tenth + $201e = ChangeProfile.restore + $204e = ChangeProfile.lfirst + $205d = ChangeProfile.lsecond + $206c = ChangeProfile.lthird + $207b = ChangeProfile.lfourth + $208a = ChangeProfile.lfifth + $2099 = ChangeProfile.lsixth + $20a8 = ChangeProfile.lseventh + $20b7 = ChangeProfile.leighth + $20c6 = ChangeProfile.lninth + $20d5 = ChangeProfile.ltenth + $20e4 = ResetProfile + SECTION: $2140-$251f ($03e0 bytes) ["Grading Functions"] + $2140 = GradeInit + $216b = GradeInit.grade9start + $2170 = GradeInit.end + $2172 = UpdateGrade + $2180 = UpdateGrade.gradejumptable + $2195 = DecayGradeProcess + $21a3 = DecayGradeProcess.gradejumptable + $21b8 = DecayGradeDelay + $21c6 = DecayGradeDelay.gradejumptable + $21db = PrepareScore + $21ee = DrawGradeProgressDMGT + $21fa = !0 + $2209 = UpdateGradeDMGT + $2242 = UpdateGradeDMGT.checklineclears + $225c = UpdateGradeDMGT.clearrate + $226d = UpdateGradeDMGT.combomult + $227a = UpdateGradeDMGT.combo10 + $228b = UpdateGradeDMGT.combo5 + $229c = UpdateGradeDMGT.combo1 + $22ab = UpdateGradeDMGT.prelevel + $22ba = UpdateGradeDMGT.single + $22ca = UpdateGradeDMGT.double + $22db = UpdateGradeDMGT.adddonce + $22df = UpdateGradeDMGT.triple + $22f0 = UpdateGradeDMGT.addtonce + $22f4 = UpdateGradeDMGT.tetris + $22f8 = UpdateGradeDMGT.levelmult + $2310 = UpdateGradeDMGT.mult5 + $2317 = UpdateGradeDMGT.mult4 + $231d = UpdateGradeDMGT.mult3 + $2322 = UpdateGradeDMGT.mult2 + $2326 = UpdateGradeDMGT.mult1 + $2327 = UpdateGradeDMGT.processgrade + $2350 = UpdateGradeDMGT.increasegrademaybe + $2374 = UpdateGradeDMGT.gotgm + $2382 = DecayGradeDMGT + $23a6 = DecayGradeDMGT.nodecay + $23ad = DecayGradeDMGT.decay + $23bb = UpdateGradeTGM1 + $23c5 = UpdateGradeTGM1.trygradeup + $23df = UpdateGradeTGM1.increasegrade + $23f4 = UpdateGradeTGM1.skipjingle + $2401 = UpdateGradeTGM1.maybegm + $241a = UpdateGradeDEAT + $2426 = UpdateGradeDEAT.notgm + $2442 = UpdateGradeDEAT.notm + $2465 = UpdateGradeDEAT.disqualify + $2483 = UpdateGradeSHIR + $24c6 = UpdateGradeSHIR.s5torikan + $24d6 = UpdateGradeSHIR.s10torikan + $24e5 = UpdateGradeSHIR.disqualify + $24f4 = UpdateGradeSHIR.l1000 + $250a = UpdateGradeSHIR.l500 + SECTION: $2520-$2894 ($0375 bytes) ["Level Functions"] + $2520 = LevelInit + $2585 = SpecialLevelInit + $2593 = SpecialLevelInit.jumps + $25a8 = SpecialLevelInit.dmgt + $25ad = SpecialLevelInit.tgm1 + $25b2 = SpecialLevelInit.tgm3 + $25b7 = SpecialLevelInit.deat + $25bc = SpecialLevelInit.shir + $25c1 = SpecialLevelInit.chil + $25c6 = SpecialLevelInit.myco + $25cb = SpecialLevelInit.loaddata + $2600 = LevelUp + $262a = LevelUp.doit + $2674 = LevelUp.checknlevel + $26a2 = !0 + $26ba = !1 + $26c3 = LevelUp.bellmaybe + $26dc = LevelUp.leveljinglemaybe + $26e9 = LevelUp.checkspeedup + $26fd = !2 + $270a = !3 + $271b = !4 + $2728 = DoSpeedUp + $2769 = CheckSpecialLevelConditions + $279a = CheckSpecialLevelConditions.override + $27b5 = CheckSpecialLevelConditions.nooverride + $27bb = CheckSpecialLevelConditions.speciallock + $27dc = CheckSpecialLevelConditions.bones + $27f1 = CheckSpecialLevelConditions.enterthebonezone + $27f6 = CheckSpecialLevelConditions.invis + $280b = CheckSpecialLevelConditions.vanishoxyaction + $2810 = CheckSpecialLevelConditions.killscreen + $2821 = CheckSpecialLevelConditions.rip + $2851 = CheckSpecialLevelConditions.staffroll + $285f = CheckSpecialLevelConditions.justkill + $2873 = TriggerKillScreen + SECTION: $2895-$2b4a ($02b6 bytes) ["Grading Data"] + $2895 = sTGM1GradeScores + $28b7 = sTGM3InternalGradeSystem + $2957 = sTGM3GradeBoosts + $2976 = sTGM3LevelMultiplier + $297a = sTGM3BaselineCOOL + $2983 = sTGM3REGRETConditions + $2997 = sDMGTGrading + $2a4b = sDMGTGaugeLUT + SECTION: $2b4b-$2de4 ($029a bytes) ["SFX Functions"] + $2b4b = SFXInit + $2b6d = SFXPopQueue + $2b82 = SFXPushQueue + $2b93 = SFXProcessQueue + $2ba4 = !0 + $2bbf = !1 + $2bc1 = SFXTriggerNoise + $2bce = !2 + $2bdb = !3 + $2be7 = SFXEnqueue + $2bfc = SFXEnqueue.findsfx + $2c11 = !4 + $2c21 = !5 + $2c31 = !6 + $2c41 = !7 + $2c51 = !8 + $2c61 = !9 + $2c71 = !10 + $2c81 = !11 + $2c91 = !12 + $2ca1 = !13 + $2cb1 = !14 + $2cc1 = !15 + $2cd1 = !16 + $2ce1 = !17 + $2cf1 = !18 + $2d00 = !19 + $2d0f = !20 + $2d1e = !21 + $2d2d = !22 + $2d3b = !23 + $2d49 = !24 + $2d56 = SFXKill + $2d83 = SFXPlayNoise + $2d8e = SFXPlayNoise.noisereg + $2d9b = !25 + $2da5 = SFXPlayNoise.savenoiseplayhead + $2dae = SFXPlay + $2db9 = !26 + $2dbc = SFXPlay.play + $2dc8 = SFXPlay.getRegister + $2dd2 = !27 + $2ddc = SFXPlay.savePlayhead + SECTION: $2de5-$3015 ($0231 bytes) ["RNG Functions"] + $2de5 = HarvestEntropy + $2deb = HarvestEntropy.loop + $2e0c = RNGInit + $2e42 = !0 + $2e72 = RNGInit.complexinit + $2e89 = !1 + $2ea4 = ShiftHistory + $2ec1 = GetNextHellPiece + $2ec6 = GetNextTGM1Piece + $2ec9 = !2 + $2ee1 = !3 + $2ee3 = GetNextTGM2Piece + $2ee6 = !4 + $2efe = !5 + $2f00 = GetNextNesPiece + $2f0e = GetNextTGM3Piece + $2f11 = !6 + $2f34 = !7 + $2f37 = !8 + $2f47 = !9 + $2f51 = !10 + $2f5f = !11 + $2f6e = !12 + $2f7a = !13 + $2f86 = !14 + $2f92 = !15 + $2f9e = !16 + $2faa = !17 + $2fb6 = !18 + $2fc5 = GetNextPiece + $2fd3 = GetNextPiece.nextpiecejumps + $2fe2 = Next35Piece + $2fe2 = !19 + $2fec = Next7Piece + $2fec = !20 + $2ff6 = NextByte + SECTION: $3016-$315f ($014a bytes) ["Progress Data"] + $3016 = sProgressData + SECTION: $3160-$323f ($00e0 bytes) ["Score Functions"] + $3160 = ScoreInit + $3188 = IncreaseScore + $31c0 = IncreaseScore.doConvert + $31c2 = !0 + $31d8 = IncreaseScore.carry + $31da = IncreaseScore.postConvert + $31e7 = !1 + $31ee = IncreaseScore.preAddDigit + $3216 = IncreaseScore.addDigit + $322c = IncreaseScore.nextDigit + SECTION: $3240-$330c ($00cd bytes) ["Input Functions"] + $3240 = InputInit + $3252 = GetInput + $3252 = GetInput.btns + $325f = GetInput.readA + $3263 = GetInput.setA + $326e = GetInput.clearA + $3271 = GetInput.readB + $3275 = GetInput.setB + $3280 = GetInput.clearB + $3283 = GetInput.readSelect + $3287 = GetInput.setSelect + $3292 = GetInput.clearSelect + $3295 = GetInput.readStart + $3299 = GetInput.setStart + $32a4 = GetInput.clearStart + $32a7 = GetInput.dpad + $32b4 = GetInput.readUp + $32b8 = GetInput.setUp + $32c3 = GetInput.clearUp + $32c6 = GetInput.readDown + $32ca = GetInput.setDown + $32d5 = GetInput.clearDown + $32d8 = GetInput.readLeft + $32dc = GetInput.setLeft + $32e7 = GetInput.clearLeft + $32ea = GetInput.readRight + $32ee = GetInput.setRight + $32f9 = GetInput.clearRight + $32fc = GetInput.priorities + $3307 = GetInput.zero + SECTION: $330d-$33d7 ($00cb bytes) ["Title Function Trampolines"] + $330d = SwitchToTitle + $3316 = TitleEventLoopHandler + $3320 = TitleVBlankHandler + $332a = PersistLevel + $3338 = DrawSpeedMain + $3388 = DrawSpeedSettings + SECTION: $33d8-$349d ($00c6 bytes) ["Time Functions"] + $33d8 = TimeInit + $33f8 = StartCountdown + $3406 = ResetGameTime + $3411 = CheckTorikan + $3428 = CheckTorikan.failure + $342a = CheckTorikan.success + $342d = HandleTimers + $3453 = HandleTimers.reduce + $3460 = HandleTimers.clock + $347a = HandleTimers.go + SECTION: $349e-$354f ($00b2 bytes) ["Progress Functions"] + $349e = SetProgress + $34a9 = SetProgress.loop + $34ad = SetProgress.correct + $34d4 = SetProgress.wvr_u1 + $34e0 = SetProgress.wvr_u2 + $34ee = SetProgress.wvr_u3 + $34fa = SetProgress.wvr_u4 + $3508 = SetProgress.wvr_u5 + $3514 = SetProgress.wvr_u6 + $3522 = SetProgress.wvr_u7 + $352e = SetProgress.wvr_u8 + $353c = SetProgress.wvr_u9 + $3548 = SetProgress.wvr_u10 + SECTION: $3550-$35e1 ($0092 bytes) ["Code Entry Point"] + $3550 = Main + $3579 = Main.notgbc + $357f = Main.wvr_u1 + $35a6 = EventLoop + $35bc = EventLoop.eventloopjumps + $35c5 = EventLoopPostHandler + $35c7 = EventLoopPostHandler.wvb_u2 + $35d9 = EventLoopPostHandler.vblankjumps + SECTION: $35e2-$3633 ($0052 bytes) ["Tile Functions"] + $35e2 = LoadTitleTiles + $3600 = LoadGameplayTiles + $3616 = LoadGameplayTiles.gbc + $3625 = LoadGameplayTiles.dmg + SECTION: $3634-$366f ($003c bytes) ["Time Data"] + $3634 = sFramesToCS + SECTION: $3670-$369d ($002e bytes) ["Memory Functions"] + $3670 = UnsafeMemCopy + $3679 = SafeMemCopy.wvr_u1 + $3679 = SafeMemCopy + $3688 = UnsafeMemSet + $3690 = SafeMemSet + $3690 = SafeMemSet.wvr_u2 + SECTION: $369e-$36c3 ($0026 bytes) ["Gameplay Function Trampolines"] + $369e = SwitchToGameplay + $36a7 = SwitchToGameplayBig + $36b0 = GamePlayEventLoopHandler + $36ba = GamePlayBigEventLoopHandler + SECTION: $36c4-$36e8 ($0025 bytes) ["Interrupt Initialization Functions"] + $36c4 = EnableScreenSquish + $36de = DisableScreenSquish + SECTION: $36e9-$370a ($0022 bytes) ["OAM Functions"] + $36e9 = CopyOAMHandler + $36f5 = ClearOAM + SECTION: $370b-$3719 ($000f bytes) ["Banking Functions"] + $370b = BankingInit + SECTION: $371a-$3723 ($000a bytes) ["OAM DMA Code"] + $371a = OAMDMA + $3724 = OAMDMAEnd + EMPTY: $3724-$3fff ($08dc bytes) + TOTAL EMPTY: $08e7 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -623,7 +627,7 @@ ROMX bank #3: ROMX bank #4: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_TITLE"] - SECTION: $4008-$4a8f ($0a88 bytes) ["Title Screen Static Data"] + SECTION: $4008-$4d2f ($0d28 bytes) ["Title Screen Static Data"] $4008 = sEasterM0 $400d = sEasterM1 $4012 = sEasterC0 @@ -652,157 +656,207 @@ ROMX bank #4: $4550 = sTitleScreenMainMapEnd $47f0 = sTitleScreenCreditsMap $47f0 = sTitleScreenSettingsMapEnd + $4a90 = sTitleScreenProfileMap $4a90 = sTitleScreenCreditsMapEnd - SECTION: $4a90-$5239 ($07aa bytes) ["Title Functions Banked"] - $4a90 = SwitchToTitleB - $4a96 = SwitchToTitleB.wvr_u1 - $4a9f = !0 - $4ac2 = SwitchToTitleB.wvb_u2 - $4ac9 = SwitchToTitleB.wvbe_u3 - $4acf = SwitchTitleMode - $4ae0 = SwitchTitleMode.wvr_u4 - $4ae9 = !1 - $4af4 = SwitchTitleMode.jumps - $4b03 = SwitchTitleMode.switchMain - $4b30 = SwitchTitleMode.notsgb - $4b51 = SwitchTitleMode.notmgb - $4b79 = SwitchTitleMode.agb - $4b93 = SwitchTitleMode.done - $4b9b = SwitchTitleMode.switchProfile - $4ba3 = SwitchTitleMode.switchSettings - $4bb7 = SwitchTitleMode.switchRecords - $4bbf = SwitchTitleMode.switchCredits - $4bd3 = TitleEventLoopHandlerB - $4be1 = TitleEventLoopHandlerB.jumps - $4bf0 = TitleEventLoopHandlerB.eventLoopMain - $4c1a = TitleEventLoopHandlerB.d0 - $4c2e = TitleEventLoopHandlerB.eventLoopProfile - $4c2f = TitleEventLoopHandlerB.eventLoopSettings - $4c59 = TitleEventLoopHandlerB.d1 - $4c6e = TitleEventLoopHandlerB.l1 - $4c83 = TitleEventLoopHandlerB.r1 - $4c97 = TitleEventLoopHandlerB.eventLoopRecords - $4c98 = TitleEventLoopHandlerB.eventLoopCredits - $4cae = TitleEventLoopHandlerB.quitcredits - $4cb3 = TitleVBlankHandlerB - $4cc1 = TitleVBlankHandlerB.jumps - $4cd0 = TitleVBlankHandlerB.vblankMain - $4cda = TitleVBlankHandlerB.notselected_u5 - $4cdf = TitleVBlankHandlerB.selected_u5 - $4ce2 = TitleVBlankHandlerB.done_u5 - $4cec = TitleVBlankHandlerB.notselected_u6 - $4cf1 = TitleVBlankHandlerB.selected_u6 - $4cf4 = TitleVBlankHandlerB.done_u6 - $4cfe = TitleVBlankHandlerB.notselected_u7 - $4d03 = TitleVBlankHandlerB.selected_u7 - $4d06 = TitleVBlankHandlerB.done_u7 - $4d10 = TitleVBlankHandlerB.notselected_u8 - $4d15 = TitleVBlankHandlerB.selected_u8 - $4d18 = TitleVBlankHandlerB.done_u8 - $4d22 = TitleVBlankHandlerB.notselected_u9 - $4d27 = TitleVBlankHandlerB.selected_u9 - $4d2a = TitleVBlankHandlerB.done_u9 - $4d34 = TitleVBlankHandlerB.notselected_u10 - $4d39 = TitleVBlankHandlerB.selected_u10 - $4d3c = TitleVBlankHandlerB.done_u10 - $4dc6 = TitleVBlankHandlerB.disabled - $4dd2 = TitleVBlankHandlerB.profile - $4de1 = TitleVBlankHandlerB.vblankProfile - $4de2 = TitleVBlankHandlerB.vblankSettings - $4dec = TitleVBlankHandlerB.notselected_u11 - $4df1 = TitleVBlankHandlerB.selected_u11 - $4df4 = TitleVBlankHandlerB.done_u11 - $4dfe = TitleVBlankHandlerB.notselected_u12 - $4e03 = TitleVBlankHandlerB.selected_u12 - $4e06 = TitleVBlankHandlerB.done_u12 - $4e10 = TitleVBlankHandlerB.notselected_u13 - $4e15 = TitleVBlankHandlerB.selected_u13 - $4e18 = TitleVBlankHandlerB.done_u13 - $4e22 = TitleVBlankHandlerB.notselected_u14 - $4e27 = TitleVBlankHandlerB.selected_u14 - $4e2a = TitleVBlankHandlerB.done_u14 - $4e34 = TitleVBlankHandlerB.notselected_u15 - $4e39 = TitleVBlankHandlerB.selected_u15 - $4e3c = TitleVBlankHandlerB.done_u15 - $4e46 = TitleVBlankHandlerB.notselected_u16 - $4e4b = TitleVBlankHandlerB.selected_u16 - $4e4e = TitleVBlankHandlerB.done_u16 - $4e58 = TitleVBlankHandlerB.notselected_u17 - $4e5d = TitleVBlankHandlerB.selected_u17 - $4e60 = TitleVBlankHandlerB.done_u17 - $4e6a = TitleVBlankHandlerB.notselected_u18 - $4e6f = TitleVBlankHandlerB.selected_u18 - $4e72 = TitleVBlankHandlerB.done_u18 - $4efc = TitleVBlankHandlerB.disabled1 - $4f08 = TitleVBlankHandlerB.buttons - $4f2d = !2 - $4f35 = TitleVBlankHandlerB.donetetry - $4f5b = TitleVBlankHandlerB.vblankRecords - $4f5c = TitleVBlankHandlerB.vblankCredits - $4f5d = MainHandleA - $4f6b = MainHandleA.jumps - $4f7d = MainHandleA.tosettings - $4f82 = MainHandleA.tocredits - $4f87 = MainHandleUp - $4f93 = !3 - $4f99 = MainHandleDown - $4fa5 = !4 - $4faa = SettingsHandleA - $4fb7 = SettingsHandleB - $4fbc = SettingsHandleDown - $4fc8 = !5 - $4fcd = SettingsHandleUp - $4fd9 = !6 - $4fdf = SettingsHandleLeft - $4ff0 = SettingsHandleLeft.jumps - $5008 = SettingsHandleLeft.buttons - $5017 = !7 - $5020 = SettingsHandleLeft.rng - $502f = !8 - $5038 = SettingsHandleLeft.rot - $5047 = !9 - $5050 = SettingsHandleLeft.drop - $505f = !10 - $5068 = SettingsHandleLeft.curve - $507a = !11 - $5086 = SettingsHandleLeft.hig - $5095 = !12 - $509e = SettingsHandleRight - $50af = SettingsHandleRight.jumps - $50c7 = SettingsHandleRight.buttons - $50d6 = !13 - $50de = SettingsHandleRight.rng - $50ed = !14 - $50f5 = SettingsHandleRight.rot - $5104 = !15 - $510c = SettingsHandleRight.drop - $511b = !16 - $5123 = SettingsHandleRight.curve - $5135 = !17 - $5140 = SettingsHandleRight.hig - $514f = !18 - $5157 = DecrementLevel - $516d = IncrementLevel - $5183 = InitSpeedCurve - $5192 = GetEnd - $519d = !19 - $51a5 = !20 - $51ad = !21 - $51b5 = !22 - $51bd = !23 - $51c5 = !24 - $51c9 = GetStart - $51d4 = !25 - $51dc = !26 - $51e4 = !27 - $51ec = !28 - $51f4 = !29 - $51fc = !30 - $5200 = CheckLevelRange - $5219 = CheckLevelRange.notatend - $5239 = CheckLevelRange.notatstart - EMPTY: $523a-$7fff ($2dc6 bytes) - TOTAL EMPTY: $2dc6 bytes + $4d30 = sTitleScreenProfileMapEnd + SECTION: $4d30-$56d8 ($09a9 bytes) ["Title Functions Banked"] + $4d30 = SwitchToTitleB + $4d36 = SwitchToTitleB.wvr_u1 + $4d3f = !0 + $4d62 = SwitchToTitleB.wvb_u2 + $4d69 = SwitchToTitleB.wvbe_u3 + $4d6f = SwitchTitleMode + $4d80 = SwitchTitleMode.wvr_u4 + $4d89 = !1 + $4d94 = SwitchTitleMode.jumps + $4da3 = SwitchTitleMode.switchMain + $4dd0 = SwitchTitleMode.notsgb + $4df1 = SwitchTitleMode.notmgb + $4e19 = SwitchTitleMode.agb + $4e33 = SwitchTitleMode.done + $4e3b = SwitchTitleMode.switchProfile + $4e4f = SwitchTitleMode.switchSettings + $4e63 = SwitchTitleMode.switchRecords + $4e6b = SwitchTitleMode.switchCredits + $4e7f = TitleEventLoopHandlerB + $4e8d = TitleEventLoopHandlerB.jumps + $4e9c = TitleEventLoopHandlerB.eventLoopMain + $4ec6 = TitleEventLoopHandlerB.d0 + $4eda = TitleEventLoopHandlerB.eventLoopProfile + $4f04 = TitleEventLoopHandlerB.d2 + $4f19 = TitleEventLoopHandlerB.l2 + $4f2e = TitleEventLoopHandlerB.r2 + $4f43 = TitleEventLoopHandlerB.eventLoopSettings + $4f6d = TitleEventLoopHandlerB.d1 + $4f82 = TitleEventLoopHandlerB.l1 + $4f97 = TitleEventLoopHandlerB.r1 + $4fab = TitleEventLoopHandlerB.eventLoopRecords + $4fac = TitleEventLoopHandlerB.eventLoopCredits + $4fc2 = TitleEventLoopHandlerB.quitcredits + $4fc7 = TitleVBlankHandlerB + $4fd5 = TitleVBlankHandlerB.jumps + $4fe4 = TitleVBlankHandlerB.vblankMain + $4fee = TitleVBlankHandlerB.notselected_u5 + $4ff3 = TitleVBlankHandlerB.selected_u5 + $4ff6 = TitleVBlankHandlerB.done_u5 + $5000 = TitleVBlankHandlerB.notselected_u6 + $5005 = TitleVBlankHandlerB.selected_u6 + $5008 = TitleVBlankHandlerB.done_u6 + $5012 = TitleVBlankHandlerB.notselected_u7 + $5017 = TitleVBlankHandlerB.selected_u7 + $501a = TitleVBlankHandlerB.done_u7 + $5024 = TitleVBlankHandlerB.notselected_u8 + $5029 = TitleVBlankHandlerB.selected_u8 + $502c = TitleVBlankHandlerB.done_u8 + $5036 = TitleVBlankHandlerB.notselected_u9 + $503b = TitleVBlankHandlerB.selected_u9 + $503e = TitleVBlankHandlerB.done_u9 + $5048 = TitleVBlankHandlerB.notselected_u10 + $504d = TitleVBlankHandlerB.selected_u10 + $5050 = TitleVBlankHandlerB.done_u10 + $50da = TitleVBlankHandlerB.disabled + $50e6 = TitleVBlankHandlerB.profile + $50f5 = TitleVBlankHandlerB.vblankProfile + $50ff = TitleVBlankHandlerB.notselected_u11 + $5104 = TitleVBlankHandlerB.selected_u11 + $5107 = TitleVBlankHandlerB.done_u11 + $5111 = TitleVBlankHandlerB.notselected_u12 + $5116 = TitleVBlankHandlerB.selected_u12 + $5119 = TitleVBlankHandlerB.done_u12 + $5123 = TitleVBlankHandlerB.notselected_u13 + $5128 = TitleVBlankHandlerB.selected_u13 + $512b = TitleVBlankHandlerB.done_u13 + $5135 = TitleVBlankHandlerB.notselected_u14 + $513a = TitleVBlankHandlerB.selected_u14 + $513d = TitleVBlankHandlerB.done_u14 + $5147 = TitleVBlankHandlerB.notselected_u15 + $514c = TitleVBlankHandlerB.selected_u15 + $514f = TitleVBlankHandlerB.done_u15 + $5159 = TitleVBlankHandlerB.notselected_u16 + $515e = TitleVBlankHandlerB.selected_u16 + $5161 = TitleVBlankHandlerB.done_u16 + $5180 = TitleVBlankHandlerB.vblankSettings + $518a = TitleVBlankHandlerB.notselected_u17 + $518f = TitleVBlankHandlerB.selected_u17 + $5192 = TitleVBlankHandlerB.done_u17 + $519c = TitleVBlankHandlerB.notselected_u18 + $51a1 = TitleVBlankHandlerB.selected_u18 + $51a4 = TitleVBlankHandlerB.done_u18 + $51ae = TitleVBlankHandlerB.notselected_u19 + $51b3 = TitleVBlankHandlerB.selected_u19 + $51b6 = TitleVBlankHandlerB.done_u19 + $51c0 = TitleVBlankHandlerB.notselected_u20 + $51c5 = TitleVBlankHandlerB.selected_u20 + $51c8 = TitleVBlankHandlerB.done_u20 + $51d2 = TitleVBlankHandlerB.notselected_u21 + $51d7 = TitleVBlankHandlerB.selected_u21 + $51da = TitleVBlankHandlerB.done_u21 + $51e4 = TitleVBlankHandlerB.notselected_u22 + $51e9 = TitleVBlankHandlerB.selected_u22 + $51ec = TitleVBlankHandlerB.done_u22 + $51f6 = TitleVBlankHandlerB.notselected_u23 + $51fb = TitleVBlankHandlerB.selected_u23 + $51fe = TitleVBlankHandlerB.done_u23 + $5208 = TitleVBlankHandlerB.notselected_u24 + $520d = TitleVBlankHandlerB.selected_u24 + $5210 = TitleVBlankHandlerB.done_u24 + $529a = TitleVBlankHandlerB.disabled1 + $52a6 = TitleVBlankHandlerB.buttons + $52cb = !2 + $52d3 = TitleVBlankHandlerB.donetetry + $52f9 = TitleVBlankHandlerB.vblankRecords + $52fa = TitleVBlankHandlerB.vblankCredits + $52fb = MainHandleA + $5309 = MainHandleA.jumps + $531b = MainHandleA.tosettings + $5320 = MainHandleA.tocredits + $5325 = MainHandleA.toprofile + $532a = MainHandleUp + $5336 = !3 + $533c = MainHandleDown + $5348 = !4 + $534d = SettingsHandleA + $535a = ProfileHandleB + $535a = SettingsHandleB + $535f = SettingsHandleDown + $536b = !5 + $5370 = SettingsHandleUp + $537c = !6 + $5382 = SettingsHandleLeft + $5393 = SettingsHandleLeft.jumps + $53ab = SettingsHandleLeft.buttons + $53ba = !7 + $53c3 = SettingsHandleLeft.rng + $53d2 = !8 + $53db = SettingsHandleLeft.rot + $53ea = !9 + $53f3 = SettingsHandleLeft.drop + $5402 = !10 + $540b = SettingsHandleLeft.curve + $541d = !11 + $5429 = SettingsHandleLeft.hig + $5438 = !12 + $5441 = SettingsHandleRight + $5452 = SettingsHandleRight.jumps + $546a = SettingsHandleRight.buttons + $5479 = !13 + $5481 = SettingsHandleRight.rng + $5490 = !14 + $5498 = SettingsHandleRight.rot + $54a7 = !15 + $54af = SettingsHandleRight.drop + $54be = !16 + $54c6 = SettingsHandleRight.curve + $54d8 = !17 + $54e3 = SettingsHandleRight.hig + $54f2 = !18 + $54fa = ProfileHandleA + $550e = ProfileHandleRight + $5522 = ProfileHandleRight.jumps + $5531 = ProfileHandleRight.idx + $553a = ProfileHandleRight.doit + $553d = ProfileHandleRight.l0 + $5547 = ProfileHandleRight.doit1 + $554e = ProfileHandleRight.l1 + $5558 = ProfileHandleRight.doit2 + $555f = ProfileHandleRight.l2 + $5569 = ProfileHandleRight.doit3 + $5570 = ProfileHandleLeft + $5584 = ProfileHandleLeft.jumps + $5593 = ProfileHandleLeft.idx + $559d = ProfileHandleLeft.doit + $55a0 = ProfileHandleLeft.l0 + $55aa = ProfileHandleLeft.doit1 + $55b1 = ProfileHandleLeft.l1 + $55bb = ProfileHandleLeft.doit2 + $55c2 = ProfileHandleLeft.l2 + $55cc = ProfileHandleLeft.doit3 + $55d3 = ProfileHandleDown + $55df = !19 + $55e4 = ProfileHandleUp + $55f0 = !20 + $55f6 = DecrementLevel + $560c = IncrementLevel + $5622 = InitSpeedCurve + $5631 = GetEnd + $563c = !21 + $5644 = !22 + $564c = !23 + $5654 = !24 + $565c = !25 + $5664 = !26 + $5668 = GetStart + $5673 = !27 + $567b = !28 + $5683 = !29 + $568b = !30 + $5693 = !31 + $569b = !32 + $569f = CheckLevelRange + $56b8 = CheckLevelRange.notatend + $56d8 = CheckLevelRange.notatstart + EMPTY: $56d9-$7fff ($2927 bytes) + TOTAL EMPTY: $2927 bytes ROMX bank #5: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_GAMEPLAY"] @@ -2814,8 +2868,8 @@ HRAM bank #0: TOTAL EMPTY: $0003 bytes SUMMARY: - ROM0: 13957 bytes used / 2427 free - ROMX: 62762 bytes used / 35542 free in 6 banks + ROM0: 14105 bytes used / 2279 free + ROMX: 63945 bytes used / 34359 free in 6 banks SRAM: 711 bytes used / 7481 free in 1 bank WRAM0: 3545 bytes used / 551 free HRAM: 124 bytes used / 3 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index e1f9d9f673a1170791bd90f61943bfdf09d1e0b7..b77053148f017a88822e3f915a74613c0ec4821b 100644 GIT binary patch delta 6096 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 DEps)F diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index dee73f8..2dd1142 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -36,377 +36,380 @@ 00:097d GBCTitleProcess.nores 00:0980 GBCTitleProcess.noinc 00:09a4 GBCTitleProcess.eventLoopProfile -00:09a5 GBCTitleProcess.eventLoopSettings -00:09b7 GBCTitleProcess.nores1 -00:09ba GBCTitleProcess.noinc1 -00:09de GBCTitleProcess.eventLoopRecords -00:09df GBCTitleProcess.eventLoopCredits -00:09f1 GBCTitleProcess.nores2 -00:09f4 GBCTitleProcess.noinc2 -00:0a01 GBCGameplayProcess -00:0a3f GBCGameplayProcess.goverride -00:0a66 GBCGameplayProcess.colorfield -00:0bda GBCGameplayProcess.outer1 -00:0bdf GBCGameplayProcess.inner1 -00:0c03 GBCGameplayProcess.outer2 -00:0c08 GBCGameplayProcess.inner2 -00:0c2d GBCGameplayProcess.empty -00:0c31 GBCGameplayProcess.sub59 -00:0c33 GBCGameplayProcess.sub52 -00:0c35 GBCGameplayProcess.sub45 -00:0c37 GBCGameplayProcess.sub38 -00:0c39 GBCGameplayProcess.sub31 -00:0c3b GBCGameplayProcess.sub24 -00:0c3d GBCGameplayProcess.sub17 -00:0c3f GBCGameplayProcess.sub10 -00:0c41 GBCGameplayProcess.done -00:0c63 GBCGameplayProcess.darker -00:0c6a GBCGameplayProcess.wvr_u1 -00:0c77 GBCGameplayProcess.lighter -00:0c7e GBCGameplayProcess.wvr_u2 -00:0c8b GBCGameplayProcess.black -00:0c92 GBCGameplayProcess.wvr_u3 -00:0c9f GBCBigGameplayProcess -00:0cdd GBCBigGameplayProcess.goverride -00:0d04 GBCBigGameplayProcess.colorfield -00:0e78 GBCBigGameplayProcess.outer1 -00:0e7d GBCBigGameplayProcess.inner1 -00:0ea1 GBCBigGameplayProcess.outer2 -00:0ea6 GBCBigGameplayProcess.inner2 -00:0ecb GBCBigGameplayProcess.empty -00:0ecf GBCBigGameplayProcess.sub59 -00:0ed1 GBCBigGameplayProcess.sub52 -00:0ed3 GBCBigGameplayProcess.sub45 -00:0ed5 GBCBigGameplayProcess.sub38 -00:0ed7 GBCBigGameplayProcess.sub31 -00:0ed9 GBCBigGameplayProcess.sub24 -00:0edb GBCBigGameplayProcess.sub17 -00:0edd GBCBigGameplayProcess.sub10 -00:0edf GBCBigGameplayProcess.done -00:0f01 GBCBigGameplayProcess.darker -00:0f08 GBCBigGameplayProcess.wvr_u4 -00:0f15 GBCBigGameplayProcess.lighter -00:0f1c GBCBigGameplayProcess.wvr_u5 -00:0f29 GBCBigGameplayProcess.black -00:0f30 GBCBigGameplayProcess.wvr_u6 -00:0f3d ToVRAM -00:0f3d GBCBlitField -00:0f70 BlitField -00:1133 BlitField.waitendvbloop -00:1365 BigBlitField -00:1528 BigBlitField.waitendvbloop -00:175a ApplyTells -00:1798 ApplyTells.myco -00:179d ApplyTells.dropmode -00:17c2 ApplyNext -00:17ca ApplyNext.bone -00:17e9 ApplyNext.nobone -00:180a ApplyNext.pos -00:181a ApplyNext.regular -00:1820 ApplyNext.postoffsets -00:1824 ApplyNext.getoffn -00:182f ApplyNext.skipoffn -00:18cd ApplyNext.done -00:18d0 ApplyHold -00:18d8 ApplyHold.bone -00:18f7 ApplyHold.nobone -00:1914 ApplyHold.hide -00:1926 ApplyHold.show -00:1936 ApplyHold.x -00:1946 ApplyHold.regular -00:194c ApplyHold.postoffsets -00:1950 ApplyHold.getoffh -00:195b ApplyHold.skipoffh -00:1995 ApplyTime -00:19e6 ApplyTime.loop0 -00:1a15 ApplyTime.loop1 -00:1a6a ApplyNumbers8 -00:1ab7 ApplyNumbers8.one -00:1abd ApplyNumbers8.two -00:1ac3 ApplyNumbers8.three -00:1ac9 ApplyNumbers8.four -00:1acf ApplyNumbers8.five -00:1ad5 ApplyNumbers8.six -00:1adb ApplyNumbers8.seven -00:1ae1 ApplyNumbers8.eight -00:1ae6 ApplyNumbers4 -00:1b0b ApplyNumbers4.one -00:1b11 ApplyNumbers4.two -00:1b17 ApplyNumbers4.three -00:1b1d ApplyNumbers4.four -00:1b22 SetNumberSpritePositions -00:1c29 GradeRendering -00:1c5e GradeRendering.effect -00:1c6e GradeRendering.noeffect -00:1c76 GradeRendering.drawgrade -00:1c7d GradeRendering.regulargrade -00:1c85 GradeRendering.sgrade -00:1c9b GradeRendering.hisgrade -00:1cb1 GradeRendering.mgrade -00:1cc7 GradeRendering.lettergrade -00:1ce4 GradeRendering.mk -00:1cea GradeRendering.mv -00:1cf0 GradeRendering.mo -00:1cf6 GradeRendering.mm -00:1cfc GradeRendering.gmgrade -00:1d07 GradeInit -00:1d32 GradeInit.grade9start -00:1d37 GradeInit.end -00:1d39 UpdateGrade -00:1d47 UpdateGrade.gradejumptable -00:1d5c DecayGradeProcess -00:1d6a DecayGradeProcess.gradejumptable -00:1d7f DecayGradeDelay -00:1d8d DecayGradeDelay.gradejumptable -00:1da2 PrepareScore -00:1db5 DrawGradeProgressDMGT -00:1dd0 UpdateGradeDMGT -00:1e09 UpdateGradeDMGT.checklineclears -00:1e23 UpdateGradeDMGT.clearrate -00:1e34 UpdateGradeDMGT.combomult -00:1e41 UpdateGradeDMGT.combo10 -00:1e52 UpdateGradeDMGT.combo5 -00:1e63 UpdateGradeDMGT.combo1 -00:1e72 UpdateGradeDMGT.prelevel -00:1e81 UpdateGradeDMGT.single -00:1e91 UpdateGradeDMGT.double -00:1ea2 UpdateGradeDMGT.adddonce -00:1ea6 UpdateGradeDMGT.triple -00:1eb7 UpdateGradeDMGT.addtonce -00:1ebb UpdateGradeDMGT.tetris -00:1ebf UpdateGradeDMGT.levelmult -00:1ed7 UpdateGradeDMGT.mult5 -00:1ede UpdateGradeDMGT.mult4 -00:1ee4 UpdateGradeDMGT.mult3 -00:1ee9 UpdateGradeDMGT.mult2 -00:1eed UpdateGradeDMGT.mult1 -00:1eee UpdateGradeDMGT.processgrade -00:1f17 UpdateGradeDMGT.increasegrademaybe -00:1f3b UpdateGradeDMGT.gotgm -00:1f49 DecayGradeDMGT -00:1f6d DecayGradeDMGT.nodecay -00:1f74 DecayGradeDMGT.decay -00:1f82 UpdateGradeTGM1 -00:1f8c UpdateGradeTGM1.trygradeup -00:1fa6 UpdateGradeTGM1.increasegrade -00:1fbb UpdateGradeTGM1.skipjingle -00:1fc8 UpdateGradeTGM1.maybegm -00:1fe1 UpdateGradeDEAT -00:1fed UpdateGradeDEAT.notgm -00:2009 UpdateGradeDEAT.notm -00:202c UpdateGradeDEAT.disqualify -00:204a UpdateGradeSHIR -00:208d UpdateGradeSHIR.s5torikan -00:209d UpdateGradeSHIR.s10torikan -00:20ac UpdateGradeSHIR.disqualify -00:20bb UpdateGradeSHIR.l1000 -00:20d1 UpdateGradeSHIR.l500 -00:20e7 RestoreSRAM -00:2117 TrustedLoad -00:2169 TrustedLoad.jumps -00:2181 TrustedLoad.dmgt -00:2187 TrustedLoad.tgm1 -00:218d TrustedLoad.tgm3 -00:2193 TrustedLoad.deat -00:2199 TrustedLoad.shir -00:219f TrustedLoad.chil -00:21a5 TrustedLoad.myco -00:21ab TrustedLoad.search -00:21bd TrustedLoad.notfound -00:21c4 TrustedLoad.fallback -00:21df InitializeSRAM -00:22ff NextProfile -00:2308 NextProfile.update -00:230b ChangeProfile -00:230b ChangeProfile.backup -00:233a ChangeProfile.first -00:2348 ChangeProfile.second -00:2356 ChangeProfile.third -00:2364 ChangeProfile.fourth -00:2372 ChangeProfile.fifth -00:2380 ChangeProfile.sixth -00:238e ChangeProfile.seventh -00:239c ChangeProfile.eighth -00:23aa ChangeProfile.ninth -00:23b8 ChangeProfile.tenth -00:23c6 ChangeProfile.restore -00:23f6 ChangeProfile.lfirst -00:2405 ChangeProfile.lsecond -00:2414 ChangeProfile.lthird -00:2423 ChangeProfile.lfourth -00:2432 ChangeProfile.lfifth -00:2441 ChangeProfile.lsixth -00:2450 ChangeProfile.lseventh -00:245f ChangeProfile.leighth -00:246e ChangeProfile.lninth -00:247d ChangeProfile.ltenth -00:248c LevelInit -00:24f1 SpecialLevelInit -00:24ff SpecialLevelInit.jumps -00:2514 SpecialLevelInit.dmgt -00:2519 SpecialLevelInit.tgm1 -00:251e SpecialLevelInit.tgm3 -00:2523 SpecialLevelInit.deat -00:2528 SpecialLevelInit.shir -00:252d SpecialLevelInit.chil -00:2532 SpecialLevelInit.myco -00:2537 SpecialLevelInit.loaddata -00:256c LevelUp -00:2596 LevelUp.doit -00:25e0 LevelUp.checknlevel -00:262f LevelUp.bellmaybe -00:2648 LevelUp.leveljinglemaybe -00:2655 LevelUp.checkspeedup -00:2694 DoSpeedUp -00:26d5 CheckSpecialLevelConditions -00:2706 CheckSpecialLevelConditions.override -00:2721 CheckSpecialLevelConditions.nooverride -00:2727 CheckSpecialLevelConditions.speciallock -00:2748 CheckSpecialLevelConditions.bones -00:275d CheckSpecialLevelConditions.enterthebonezone -00:2762 CheckSpecialLevelConditions.invis -00:2777 CheckSpecialLevelConditions.vanishoxyaction -00:277c CheckSpecialLevelConditions.killscreen -00:278d CheckSpecialLevelConditions.rip -00:27bd CheckSpecialLevelConditions.staffroll -00:27cb CheckSpecialLevelConditions.justkill -00:27df TriggerKillScreen -00:2801 sTGM1GradeScores -00:2823 sTGM3InternalGradeSystem -00:28c3 sTGM3GradeBoosts -00:28e2 sTGM3LevelMultiplier -00:28e6 sTGM3BaselineCOOL -00:28ef sTGM3REGRETConditions -00:2903 sDMGTGrading -00:29b7 sDMGTGaugeLUT -00:2ab7 SFXInit -00:2ad9 SFXPopQueue -00:2aee SFXPushQueue -00:2aff SFXProcessQueue -00:2b2d SFXTriggerNoise -00:2b53 SFXEnqueue -00:2b68 SFXEnqueue.findsfx -00:2cc2 SFXKill -00:2cef SFXPlayNoise -00:2cfa SFXPlayNoise.noisereg -00:2d11 SFXPlayNoise.savenoiseplayhead -00:2d1a SFXPlay -00:2d28 SFXPlay.play -00:2d34 SFXPlay.getRegister -00:2d48 SFXPlay.savePlayhead -00:2d51 HarvestEntropy -00:2d57 HarvestEntropy.loop -00:2d78 RNGInit -00:2dde RNGInit.complexinit -00:2e10 ShiftHistory -00:2e2d GetNextHellPiece -00:2e32 GetNextTGM1Piece -00:2e4f GetNextTGM2Piece -00:2e6c GetNextNesPiece -00:2e7a GetNextTGM3Piece -00:2f31 GetNextPiece -00:2f3f GetNextPiece.nextpiecejumps -00:2f4e Next35Piece -00:2f58 Next7Piece -00:2f62 NextByte -00:2f82 sProgressData -00:30cc ScoreInit -00:30f4 IncreaseScore -00:312c IncreaseScore.doConvert -00:3144 IncreaseScore.carry -00:3146 IncreaseScore.postConvert -00:315a IncreaseScore.preAddDigit -00:3182 IncreaseScore.addDigit -00:3198 IncreaseScore.nextDigit -00:31ac InputInit -00:31be GetInput -00:31be GetInput.btns -00:31cb GetInput.readA -00:31cf GetInput.setA -00:31da GetInput.clearA -00:31dd GetInput.readB -00:31e1 GetInput.setB -00:31ec GetInput.clearB -00:31ef GetInput.readSelect -00:31f3 GetInput.setSelect -00:31fe GetInput.clearSelect -00:3201 GetInput.readStart -00:3205 GetInput.setStart -00:3210 GetInput.clearStart -00:3213 GetInput.dpad -00:3220 GetInput.readUp -00:3224 GetInput.setUp -00:322f GetInput.clearUp -00:3232 GetInput.readDown -00:3236 GetInput.setDown -00:3241 GetInput.clearDown -00:3244 GetInput.readLeft -00:3248 GetInput.setLeft -00:3253 GetInput.clearLeft -00:3256 GetInput.readRight -00:325a GetInput.setRight -00:3265 GetInput.clearRight -00:3268 GetInput.priorities -00:3273 GetInput.zero -00:3279 SwitchToTitle -00:3282 TitleEventLoopHandler -00:328c TitleVBlankHandler -00:3296 PersistLevel -00:32a4 DrawSpeedMain -00:32f4 DrawSpeedSettings -00:3344 TimeInit -00:3364 StartCountdown -00:3372 ResetGameTime -00:337d CheckTorikan -00:3394 CheckTorikan.failure -00:3396 CheckTorikan.success -00:3399 HandleTimers -00:33bf HandleTimers.reduce -00:33cc HandleTimers.clock -00:33e6 HandleTimers.go -00:340a SetProgress -00:3415 SetProgress.loop -00:3419 SetProgress.correct -00:3440 SetProgress.wvr_u1 -00:344c SetProgress.wvr_u2 -00:345a SetProgress.wvr_u3 -00:3466 SetProgress.wvr_u4 -00:3474 SetProgress.wvr_u5 -00:3480 SetProgress.wvr_u6 -00:348e SetProgress.wvr_u7 -00:349a SetProgress.wvr_u8 -00:34a8 SetProgress.wvr_u9 -00:34b4 SetProgress.wvr_u10 -00:34bc Main -00:34e5 Main.notgbc -00:34eb Main.wvr_u1 -00:3512 EventLoop -00:3528 EventLoop.eventloopjumps -00:3531 EventLoopPostHandler -00:3533 EventLoopPostHandler.wvb_u2 -00:3545 EventLoopPostHandler.vblankjumps -00:354e LoadTitleTiles -00:356c LoadGameplayTiles -00:3582 LoadGameplayTiles.gbc -00:3591 LoadGameplayTiles.dmg -00:35a0 sFramesToCS -00:35dc UnsafeMemCopy -00:35e5 SafeMemCopy.wvr_u1 -00:35e5 SafeMemCopy -00:35f4 UnsafeMemSet -00:35fc SafeMemSet -00:35fc SafeMemSet.wvr_u2 -00:360a SwitchToGameplay -00:3613 SwitchToGameplayBig -00:361c GamePlayEventLoopHandler -00:3626 GamePlayBigEventLoopHandler -00:3630 EnableScreenSquish -00:364a DisableScreenSquish -00:3655 CopyOAMHandler -00:3661 ClearOAM -00:3677 BankingInit -00:3686 OAMDMA -00:3690 OAMDMAEnd +00:09b6 GBCTitleProcess.nores3 +00:09b9 GBCTitleProcess.noinc3 +00:09dd GBCTitleProcess.eventLoopSettings +00:09ef GBCTitleProcess.nores1 +00:09f2 GBCTitleProcess.noinc1 +00:0a16 GBCTitleProcess.eventLoopRecords +00:0a17 GBCTitleProcess.eventLoopCredits +00:0a29 GBCTitleProcess.nores2 +00:0a2c GBCTitleProcess.noinc2 +00:0a39 GBCGameplayProcess +00:0a77 GBCGameplayProcess.goverride +00:0a9e GBCGameplayProcess.colorfield +00:0c12 GBCGameplayProcess.outer1 +00:0c17 GBCGameplayProcess.inner1 +00:0c3b GBCGameplayProcess.outer2 +00:0c40 GBCGameplayProcess.inner2 +00:0c65 GBCGameplayProcess.empty +00:0c69 GBCGameplayProcess.sub59 +00:0c6b GBCGameplayProcess.sub52 +00:0c6d GBCGameplayProcess.sub45 +00:0c6f GBCGameplayProcess.sub38 +00:0c71 GBCGameplayProcess.sub31 +00:0c73 GBCGameplayProcess.sub24 +00:0c75 GBCGameplayProcess.sub17 +00:0c77 GBCGameplayProcess.sub10 +00:0c79 GBCGameplayProcess.done +00:0c9b GBCGameplayProcess.darker +00:0ca2 GBCGameplayProcess.wvr_u1 +00:0caf GBCGameplayProcess.lighter +00:0cb6 GBCGameplayProcess.wvr_u2 +00:0cc3 GBCGameplayProcess.black +00:0cca GBCGameplayProcess.wvr_u3 +00:0cd7 GBCBigGameplayProcess +00:0d15 GBCBigGameplayProcess.goverride +00:0d3c GBCBigGameplayProcess.colorfield +00:0eb0 GBCBigGameplayProcess.outer1 +00:0eb5 GBCBigGameplayProcess.inner1 +00:0ed9 GBCBigGameplayProcess.outer2 +00:0ede GBCBigGameplayProcess.inner2 +00:0f03 GBCBigGameplayProcess.empty +00:0f07 GBCBigGameplayProcess.sub59 +00:0f09 GBCBigGameplayProcess.sub52 +00:0f0b GBCBigGameplayProcess.sub45 +00:0f0d GBCBigGameplayProcess.sub38 +00:0f0f GBCBigGameplayProcess.sub31 +00:0f11 GBCBigGameplayProcess.sub24 +00:0f13 GBCBigGameplayProcess.sub17 +00:0f15 GBCBigGameplayProcess.sub10 +00:0f17 GBCBigGameplayProcess.done +00:0f39 GBCBigGameplayProcess.darker +00:0f40 GBCBigGameplayProcess.wvr_u4 +00:0f4d GBCBigGameplayProcess.lighter +00:0f54 GBCBigGameplayProcess.wvr_u5 +00:0f61 GBCBigGameplayProcess.black +00:0f68 GBCBigGameplayProcess.wvr_u6 +00:0f75 ToVRAM +00:0f75 GBCBlitField +00:0fa8 BlitField +00:116b BlitField.waitendvbloop +00:139d BigBlitField +00:1560 BigBlitField.waitendvbloop +00:1792 ApplyTells +00:17d0 ApplyTells.myco +00:17d5 ApplyTells.dropmode +00:17fa ApplyNext +00:1802 ApplyNext.bone +00:1821 ApplyNext.nobone +00:1842 ApplyNext.pos +00:1852 ApplyNext.regular +00:1858 ApplyNext.postoffsets +00:185c ApplyNext.getoffn +00:1867 ApplyNext.skipoffn +00:1905 ApplyNext.done +00:1908 ApplyHold +00:1910 ApplyHold.bone +00:192f ApplyHold.nobone +00:194c ApplyHold.hide +00:195e ApplyHold.show +00:196e ApplyHold.x +00:197e ApplyHold.regular +00:1984 ApplyHold.postoffsets +00:1988 ApplyHold.getoffh +00:1993 ApplyHold.skipoffh +00:19cd ApplyTime +00:1a1e ApplyTime.loop0 +00:1a4d ApplyTime.loop1 +00:1aa2 ApplyNumbers8 +00:1aef ApplyNumbers8.one +00:1af5 ApplyNumbers8.two +00:1afb ApplyNumbers8.three +00:1b01 ApplyNumbers8.four +00:1b07 ApplyNumbers8.five +00:1b0d ApplyNumbers8.six +00:1b13 ApplyNumbers8.seven +00:1b19 ApplyNumbers8.eight +00:1b1e ApplyNumbers4 +00:1b43 ApplyNumbers4.one +00:1b49 ApplyNumbers4.two +00:1b4f ApplyNumbers4.three +00:1b55 ApplyNumbers4.four +00:1b5a SetNumberSpritePositions +00:1c61 GradeRendering +00:1c96 GradeRendering.effect +00:1ca6 GradeRendering.noeffect +00:1cae GradeRendering.drawgrade +00:1cb5 GradeRendering.regulargrade +00:1cbd GradeRendering.sgrade +00:1cd3 GradeRendering.hisgrade +00:1ce9 GradeRendering.mgrade +00:1cff GradeRendering.lettergrade +00:1d1c GradeRendering.mk +00:1d22 GradeRendering.mv +00:1d28 GradeRendering.mo +00:1d2e GradeRendering.mm +00:1d34 GradeRendering.gmgrade +00:1d3f RestoreSRAM +00:1d6f TrustedLoad +00:1dc1 TrustedLoad.jumps +00:1dd9 TrustedLoad.dmgt +00:1ddf TrustedLoad.tgm1 +00:1de5 TrustedLoad.tgm3 +00:1deb TrustedLoad.deat +00:1df1 TrustedLoad.shir +00:1df7 TrustedLoad.chil +00:1dfd TrustedLoad.myco +00:1e03 TrustedLoad.search +00:1e15 TrustedLoad.notfound +00:1e1c TrustedLoad.fallback +00:1e37 InitializeSRAM +00:1f57 NextProfile +00:1f60 NextProfile.update +00:1f63 ChangeProfile +00:1f63 ChangeProfile.backup +00:1f92 ChangeProfile.first +00:1fa0 ChangeProfile.second +00:1fae ChangeProfile.third +00:1fbc ChangeProfile.fourth +00:1fca ChangeProfile.fifth +00:1fd8 ChangeProfile.sixth +00:1fe6 ChangeProfile.seventh +00:1ff4 ChangeProfile.eighth +00:2002 ChangeProfile.ninth +00:2010 ChangeProfile.tenth +00:201e ChangeProfile.restore +00:204e ChangeProfile.lfirst +00:205d ChangeProfile.lsecond +00:206c ChangeProfile.lthird +00:207b ChangeProfile.lfourth +00:208a ChangeProfile.lfifth +00:2099 ChangeProfile.lsixth +00:20a8 ChangeProfile.lseventh +00:20b7 ChangeProfile.leighth +00:20c6 ChangeProfile.lninth +00:20d5 ChangeProfile.ltenth +00:20e4 ResetProfile +00:2140 GradeInit +00:216b GradeInit.grade9start +00:2170 GradeInit.end +00:2172 UpdateGrade +00:2180 UpdateGrade.gradejumptable +00:2195 DecayGradeProcess +00:21a3 DecayGradeProcess.gradejumptable +00:21b8 DecayGradeDelay +00:21c6 DecayGradeDelay.gradejumptable +00:21db PrepareScore +00:21ee DrawGradeProgressDMGT +00:2209 UpdateGradeDMGT +00:2242 UpdateGradeDMGT.checklineclears +00:225c UpdateGradeDMGT.clearrate +00:226d UpdateGradeDMGT.combomult +00:227a UpdateGradeDMGT.combo10 +00:228b UpdateGradeDMGT.combo5 +00:229c UpdateGradeDMGT.combo1 +00:22ab UpdateGradeDMGT.prelevel +00:22ba UpdateGradeDMGT.single +00:22ca UpdateGradeDMGT.double +00:22db UpdateGradeDMGT.adddonce +00:22df UpdateGradeDMGT.triple +00:22f0 UpdateGradeDMGT.addtonce +00:22f4 UpdateGradeDMGT.tetris +00:22f8 UpdateGradeDMGT.levelmult +00:2310 UpdateGradeDMGT.mult5 +00:2317 UpdateGradeDMGT.mult4 +00:231d UpdateGradeDMGT.mult3 +00:2322 UpdateGradeDMGT.mult2 +00:2326 UpdateGradeDMGT.mult1 +00:2327 UpdateGradeDMGT.processgrade +00:2350 UpdateGradeDMGT.increasegrademaybe +00:2374 UpdateGradeDMGT.gotgm +00:2382 DecayGradeDMGT +00:23a6 DecayGradeDMGT.nodecay +00:23ad DecayGradeDMGT.decay +00:23bb UpdateGradeTGM1 +00:23c5 UpdateGradeTGM1.trygradeup +00:23df UpdateGradeTGM1.increasegrade +00:23f4 UpdateGradeTGM1.skipjingle +00:2401 UpdateGradeTGM1.maybegm +00:241a UpdateGradeDEAT +00:2426 UpdateGradeDEAT.notgm +00:2442 UpdateGradeDEAT.notm +00:2465 UpdateGradeDEAT.disqualify +00:2483 UpdateGradeSHIR +00:24c6 UpdateGradeSHIR.s5torikan +00:24d6 UpdateGradeSHIR.s10torikan +00:24e5 UpdateGradeSHIR.disqualify +00:24f4 UpdateGradeSHIR.l1000 +00:250a UpdateGradeSHIR.l500 +00:2520 LevelInit +00:2585 SpecialLevelInit +00:2593 SpecialLevelInit.jumps +00:25a8 SpecialLevelInit.dmgt +00:25ad SpecialLevelInit.tgm1 +00:25b2 SpecialLevelInit.tgm3 +00:25b7 SpecialLevelInit.deat +00:25bc SpecialLevelInit.shir +00:25c1 SpecialLevelInit.chil +00:25c6 SpecialLevelInit.myco +00:25cb SpecialLevelInit.loaddata +00:2600 LevelUp +00:262a LevelUp.doit +00:2674 LevelUp.checknlevel +00:26c3 LevelUp.bellmaybe +00:26dc LevelUp.leveljinglemaybe +00:26e9 LevelUp.checkspeedup +00:2728 DoSpeedUp +00:2769 CheckSpecialLevelConditions +00:279a CheckSpecialLevelConditions.override +00:27b5 CheckSpecialLevelConditions.nooverride +00:27bb CheckSpecialLevelConditions.speciallock +00:27dc CheckSpecialLevelConditions.bones +00:27f1 CheckSpecialLevelConditions.enterthebonezone +00:27f6 CheckSpecialLevelConditions.invis +00:280b CheckSpecialLevelConditions.vanishoxyaction +00:2810 CheckSpecialLevelConditions.killscreen +00:2821 CheckSpecialLevelConditions.rip +00:2851 CheckSpecialLevelConditions.staffroll +00:285f CheckSpecialLevelConditions.justkill +00:2873 TriggerKillScreen +00:2895 sTGM1GradeScores +00:28b7 sTGM3InternalGradeSystem +00:2957 sTGM3GradeBoosts +00:2976 sTGM3LevelMultiplier +00:297a sTGM3BaselineCOOL +00:2983 sTGM3REGRETConditions +00:2997 sDMGTGrading +00:2a4b sDMGTGaugeLUT +00:2b4b SFXInit +00:2b6d SFXPopQueue +00:2b82 SFXPushQueue +00:2b93 SFXProcessQueue +00:2bc1 SFXTriggerNoise +00:2be7 SFXEnqueue +00:2bfc SFXEnqueue.findsfx +00:2d56 SFXKill +00:2d83 SFXPlayNoise +00:2d8e SFXPlayNoise.noisereg +00:2da5 SFXPlayNoise.savenoiseplayhead +00:2dae SFXPlay +00:2dbc SFXPlay.play +00:2dc8 SFXPlay.getRegister +00:2ddc SFXPlay.savePlayhead +00:2de5 HarvestEntropy +00:2deb HarvestEntropy.loop +00:2e0c RNGInit +00:2e72 RNGInit.complexinit +00:2ea4 ShiftHistory +00:2ec1 GetNextHellPiece +00:2ec6 GetNextTGM1Piece +00:2ee3 GetNextTGM2Piece +00:2f00 GetNextNesPiece +00:2f0e GetNextTGM3Piece +00:2fc5 GetNextPiece +00:2fd3 GetNextPiece.nextpiecejumps +00:2fe2 Next35Piece +00:2fec Next7Piece +00:2ff6 NextByte +00:3016 sProgressData +00:3160 ScoreInit +00:3188 IncreaseScore +00:31c0 IncreaseScore.doConvert +00:31d8 IncreaseScore.carry +00:31da IncreaseScore.postConvert +00:31ee IncreaseScore.preAddDigit +00:3216 IncreaseScore.addDigit +00:322c IncreaseScore.nextDigit +00:3240 InputInit +00:3252 GetInput +00:3252 GetInput.btns +00:325f GetInput.readA +00:3263 GetInput.setA +00:326e GetInput.clearA +00:3271 GetInput.readB +00:3275 GetInput.setB +00:3280 GetInput.clearB +00:3283 GetInput.readSelect +00:3287 GetInput.setSelect +00:3292 GetInput.clearSelect +00:3295 GetInput.readStart +00:3299 GetInput.setStart +00:32a4 GetInput.clearStart +00:32a7 GetInput.dpad +00:32b4 GetInput.readUp +00:32b8 GetInput.setUp +00:32c3 GetInput.clearUp +00:32c6 GetInput.readDown +00:32ca GetInput.setDown +00:32d5 GetInput.clearDown +00:32d8 GetInput.readLeft +00:32dc GetInput.setLeft +00:32e7 GetInput.clearLeft +00:32ea GetInput.readRight +00:32ee GetInput.setRight +00:32f9 GetInput.clearRight +00:32fc GetInput.priorities +00:3307 GetInput.zero +00:330d SwitchToTitle +00:3316 TitleEventLoopHandler +00:3320 TitleVBlankHandler +00:332a PersistLevel +00:3338 DrawSpeedMain +00:3388 DrawSpeedSettings +00:33d8 TimeInit +00:33f8 StartCountdown +00:3406 ResetGameTime +00:3411 CheckTorikan +00:3428 CheckTorikan.failure +00:342a CheckTorikan.success +00:342d HandleTimers +00:3453 HandleTimers.reduce +00:3460 HandleTimers.clock +00:347a HandleTimers.go +00:349e SetProgress +00:34a9 SetProgress.loop +00:34ad SetProgress.correct +00:34d4 SetProgress.wvr_u1 +00:34e0 SetProgress.wvr_u2 +00:34ee SetProgress.wvr_u3 +00:34fa SetProgress.wvr_u4 +00:3508 SetProgress.wvr_u5 +00:3514 SetProgress.wvr_u6 +00:3522 SetProgress.wvr_u7 +00:352e SetProgress.wvr_u8 +00:353c SetProgress.wvr_u9 +00:3548 SetProgress.wvr_u10 +00:3550 Main +00:3579 Main.notgbc +00:357f Main.wvr_u1 +00:35a6 EventLoop +00:35bc EventLoop.eventloopjumps +00:35c5 EventLoopPostHandler +00:35c7 EventLoopPostHandler.wvb_u2 +00:35d9 EventLoopPostHandler.vblankjumps +00:35e2 LoadTitleTiles +00:3600 LoadGameplayTiles +00:3616 LoadGameplayTiles.gbc +00:3625 LoadGameplayTiles.dmg +00:3634 sFramesToCS +00:3670 UnsafeMemCopy +00:3679 SafeMemCopy.wvr_u1 +00:3679 SafeMemCopy +00:3688 UnsafeMemSet +00:3690 SafeMemSet +00:3690 SafeMemSet.wvr_u2 +00:369e SwitchToGameplay +00:36a7 SwitchToGameplayBig +00:36b0 GamePlayEventLoopHandler +00:36ba GamePlayBigEventLoopHandler +00:36c4 EnableScreenSquish +00:36de DisableScreenSquish +00:36e9 CopyOAMHandler +00:36f5 ClearOAM +00:370b BankingInit +00:371a OAMDMA +00:3724 OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4203 sDMGTSpeedCurveEnd 01:4205 sDMGTSpeedCurveSpecialData @@ -514,123 +517,171 @@ 04:4550 sTitleScreenMainMapEnd 04:47f0 sTitleScreenCreditsMap 04:47f0 sTitleScreenSettingsMapEnd +04:4a90 sTitleScreenProfileMap 04:4a90 sTitleScreenCreditsMapEnd -04:4a90 SwitchToTitleB -04:4a96 SwitchToTitleB.wvr_u1 -04:4ac2 SwitchToTitleB.wvb_u2 -04:4ac9 SwitchToTitleB.wvbe_u3 -04:4acf SwitchTitleMode -04:4ae0 SwitchTitleMode.wvr_u4 -04:4af4 SwitchTitleMode.jumps -04:4b03 SwitchTitleMode.switchMain -04:4b30 SwitchTitleMode.notsgb -04:4b51 SwitchTitleMode.notmgb -04:4b79 SwitchTitleMode.agb -04:4b93 SwitchTitleMode.done -04:4b9b SwitchTitleMode.switchProfile -04:4ba3 SwitchTitleMode.switchSettings -04:4bb7 SwitchTitleMode.switchRecords -04:4bbf SwitchTitleMode.switchCredits -04:4bd3 TitleEventLoopHandlerB -04:4be1 TitleEventLoopHandlerB.jumps -04:4bf0 TitleEventLoopHandlerB.eventLoopMain -04:4c1a TitleEventLoopHandlerB.d0 -04:4c2e TitleEventLoopHandlerB.eventLoopProfile -04:4c2f TitleEventLoopHandlerB.eventLoopSettings -04:4c59 TitleEventLoopHandlerB.d1 -04:4c6e TitleEventLoopHandlerB.l1 -04:4c83 TitleEventLoopHandlerB.r1 -04:4c97 TitleEventLoopHandlerB.eventLoopRecords -04:4c98 TitleEventLoopHandlerB.eventLoopCredits -04:4cae TitleEventLoopHandlerB.quitcredits -04:4cb3 TitleVBlankHandlerB -04:4cc1 TitleVBlankHandlerB.jumps -04:4cd0 TitleVBlankHandlerB.vblankMain -04:4cda TitleVBlankHandlerB.notselected_u5 -04:4cdf TitleVBlankHandlerB.selected_u5 -04:4ce2 TitleVBlankHandlerB.done_u5 -04:4cec TitleVBlankHandlerB.notselected_u6 -04:4cf1 TitleVBlankHandlerB.selected_u6 -04:4cf4 TitleVBlankHandlerB.done_u6 -04:4cfe TitleVBlankHandlerB.notselected_u7 -04:4d03 TitleVBlankHandlerB.selected_u7 -04:4d06 TitleVBlankHandlerB.done_u7 -04:4d10 TitleVBlankHandlerB.notselected_u8 -04:4d15 TitleVBlankHandlerB.selected_u8 -04:4d18 TitleVBlankHandlerB.done_u8 -04:4d22 TitleVBlankHandlerB.notselected_u9 -04:4d27 TitleVBlankHandlerB.selected_u9 -04:4d2a TitleVBlankHandlerB.done_u9 -04:4d34 TitleVBlankHandlerB.notselected_u10 -04:4d39 TitleVBlankHandlerB.selected_u10 -04:4d3c TitleVBlankHandlerB.done_u10 -04:4dc6 TitleVBlankHandlerB.disabled -04:4dd2 TitleVBlankHandlerB.profile -04:4de1 TitleVBlankHandlerB.vblankProfile -04:4de2 TitleVBlankHandlerB.vblankSettings -04:4dec TitleVBlankHandlerB.notselected_u11 -04:4df1 TitleVBlankHandlerB.selected_u11 -04:4df4 TitleVBlankHandlerB.done_u11 -04:4dfe TitleVBlankHandlerB.notselected_u12 -04:4e03 TitleVBlankHandlerB.selected_u12 -04:4e06 TitleVBlankHandlerB.done_u12 -04:4e10 TitleVBlankHandlerB.notselected_u13 -04:4e15 TitleVBlankHandlerB.selected_u13 -04:4e18 TitleVBlankHandlerB.done_u13 -04:4e22 TitleVBlankHandlerB.notselected_u14 -04:4e27 TitleVBlankHandlerB.selected_u14 -04:4e2a TitleVBlankHandlerB.done_u14 -04:4e34 TitleVBlankHandlerB.notselected_u15 -04:4e39 TitleVBlankHandlerB.selected_u15 -04:4e3c TitleVBlankHandlerB.done_u15 -04:4e46 TitleVBlankHandlerB.notselected_u16 -04:4e4b TitleVBlankHandlerB.selected_u16 -04:4e4e TitleVBlankHandlerB.done_u16 -04:4e58 TitleVBlankHandlerB.notselected_u17 -04:4e5d TitleVBlankHandlerB.selected_u17 -04:4e60 TitleVBlankHandlerB.done_u17 -04:4e6a TitleVBlankHandlerB.notselected_u18 -04:4e6f TitleVBlankHandlerB.selected_u18 -04:4e72 TitleVBlankHandlerB.done_u18 -04:4efc TitleVBlankHandlerB.disabled1 -04:4f08 TitleVBlankHandlerB.buttons -04:4f35 TitleVBlankHandlerB.donetetry -04:4f5b TitleVBlankHandlerB.vblankRecords -04:4f5c TitleVBlankHandlerB.vblankCredits -04:4f5d MainHandleA -04:4f6b MainHandleA.jumps -04:4f7d MainHandleA.tosettings -04:4f82 MainHandleA.tocredits -04:4f87 MainHandleUp -04:4f99 MainHandleDown -04:4faa SettingsHandleA -04:4fb7 SettingsHandleB -04:4fbc SettingsHandleDown -04:4fcd SettingsHandleUp -04:4fdf SettingsHandleLeft -04:4ff0 SettingsHandleLeft.jumps -04:5008 SettingsHandleLeft.buttons -04:5020 SettingsHandleLeft.rng -04:5038 SettingsHandleLeft.rot -04:5050 SettingsHandleLeft.drop -04:5068 SettingsHandleLeft.curve -04:5086 SettingsHandleLeft.hig -04:509e SettingsHandleRight -04:50af SettingsHandleRight.jumps -04:50c7 SettingsHandleRight.buttons -04:50de SettingsHandleRight.rng -04:50f5 SettingsHandleRight.rot -04:510c SettingsHandleRight.drop -04:5123 SettingsHandleRight.curve -04:5140 SettingsHandleRight.hig -04:5157 DecrementLevel -04:516d IncrementLevel -04:5183 InitSpeedCurve -04:5192 GetEnd -04:51c9 GetStart -04:5200 CheckLevelRange -04:5219 CheckLevelRange.notatend -04:5239 CheckLevelRange.notatstart +04:4d30 sTitleScreenProfileMapEnd +04:4d30 SwitchToTitleB +04:4d36 SwitchToTitleB.wvr_u1 +04:4d62 SwitchToTitleB.wvb_u2 +04:4d69 SwitchToTitleB.wvbe_u3 +04:4d6f SwitchTitleMode +04:4d80 SwitchTitleMode.wvr_u4 +04:4d94 SwitchTitleMode.jumps +04:4da3 SwitchTitleMode.switchMain +04:4dd0 SwitchTitleMode.notsgb +04:4df1 SwitchTitleMode.notmgb +04:4e19 SwitchTitleMode.agb +04:4e33 SwitchTitleMode.done +04:4e3b SwitchTitleMode.switchProfile +04:4e4f SwitchTitleMode.switchSettings +04:4e63 SwitchTitleMode.switchRecords +04:4e6b SwitchTitleMode.switchCredits +04:4e7f TitleEventLoopHandlerB +04:4e8d TitleEventLoopHandlerB.jumps +04:4e9c TitleEventLoopHandlerB.eventLoopMain +04:4ec6 TitleEventLoopHandlerB.d0 +04:4eda TitleEventLoopHandlerB.eventLoopProfile +04:4f04 TitleEventLoopHandlerB.d2 +04:4f19 TitleEventLoopHandlerB.l2 +04:4f2e TitleEventLoopHandlerB.r2 +04:4f43 TitleEventLoopHandlerB.eventLoopSettings +04:4f6d TitleEventLoopHandlerB.d1 +04:4f82 TitleEventLoopHandlerB.l1 +04:4f97 TitleEventLoopHandlerB.r1 +04:4fab TitleEventLoopHandlerB.eventLoopRecords +04:4fac TitleEventLoopHandlerB.eventLoopCredits +04:4fc2 TitleEventLoopHandlerB.quitcredits +04:4fc7 TitleVBlankHandlerB +04:4fd5 TitleVBlankHandlerB.jumps +04:4fe4 TitleVBlankHandlerB.vblankMain +04:4fee TitleVBlankHandlerB.notselected_u5 +04:4ff3 TitleVBlankHandlerB.selected_u5 +04:4ff6 TitleVBlankHandlerB.done_u5 +04:5000 TitleVBlankHandlerB.notselected_u6 +04:5005 TitleVBlankHandlerB.selected_u6 +04:5008 TitleVBlankHandlerB.done_u6 +04:5012 TitleVBlankHandlerB.notselected_u7 +04:5017 TitleVBlankHandlerB.selected_u7 +04:501a TitleVBlankHandlerB.done_u7 +04:5024 TitleVBlankHandlerB.notselected_u8 +04:5029 TitleVBlankHandlerB.selected_u8 +04:502c TitleVBlankHandlerB.done_u8 +04:5036 TitleVBlankHandlerB.notselected_u9 +04:503b TitleVBlankHandlerB.selected_u9 +04:503e TitleVBlankHandlerB.done_u9 +04:5048 TitleVBlankHandlerB.notselected_u10 +04:504d TitleVBlankHandlerB.selected_u10 +04:5050 TitleVBlankHandlerB.done_u10 +04:50da TitleVBlankHandlerB.disabled +04:50e6 TitleVBlankHandlerB.profile +04:50f5 TitleVBlankHandlerB.vblankProfile +04:50ff TitleVBlankHandlerB.notselected_u11 +04:5104 TitleVBlankHandlerB.selected_u11 +04:5107 TitleVBlankHandlerB.done_u11 +04:5111 TitleVBlankHandlerB.notselected_u12 +04:5116 TitleVBlankHandlerB.selected_u12 +04:5119 TitleVBlankHandlerB.done_u12 +04:5123 TitleVBlankHandlerB.notselected_u13 +04:5128 TitleVBlankHandlerB.selected_u13 +04:512b TitleVBlankHandlerB.done_u13 +04:5135 TitleVBlankHandlerB.notselected_u14 +04:513a TitleVBlankHandlerB.selected_u14 +04:513d TitleVBlankHandlerB.done_u14 +04:5147 TitleVBlankHandlerB.notselected_u15 +04:514c TitleVBlankHandlerB.selected_u15 +04:514f TitleVBlankHandlerB.done_u15 +04:5159 TitleVBlankHandlerB.notselected_u16 +04:515e TitleVBlankHandlerB.selected_u16 +04:5161 TitleVBlankHandlerB.done_u16 +04:5180 TitleVBlankHandlerB.vblankSettings +04:518a TitleVBlankHandlerB.notselected_u17 +04:518f TitleVBlankHandlerB.selected_u17 +04:5192 TitleVBlankHandlerB.done_u17 +04:519c TitleVBlankHandlerB.notselected_u18 +04:51a1 TitleVBlankHandlerB.selected_u18 +04:51a4 TitleVBlankHandlerB.done_u18 +04:51ae TitleVBlankHandlerB.notselected_u19 +04:51b3 TitleVBlankHandlerB.selected_u19 +04:51b6 TitleVBlankHandlerB.done_u19 +04:51c0 TitleVBlankHandlerB.notselected_u20 +04:51c5 TitleVBlankHandlerB.selected_u20 +04:51c8 TitleVBlankHandlerB.done_u20 +04:51d2 TitleVBlankHandlerB.notselected_u21 +04:51d7 TitleVBlankHandlerB.selected_u21 +04:51da TitleVBlankHandlerB.done_u21 +04:51e4 TitleVBlankHandlerB.notselected_u22 +04:51e9 TitleVBlankHandlerB.selected_u22 +04:51ec TitleVBlankHandlerB.done_u22 +04:51f6 TitleVBlankHandlerB.notselected_u23 +04:51fb TitleVBlankHandlerB.selected_u23 +04:51fe TitleVBlankHandlerB.done_u23 +04:5208 TitleVBlankHandlerB.notselected_u24 +04:520d TitleVBlankHandlerB.selected_u24 +04:5210 TitleVBlankHandlerB.done_u24 +04:529a TitleVBlankHandlerB.disabled1 +04:52a6 TitleVBlankHandlerB.buttons +04:52d3 TitleVBlankHandlerB.donetetry +04:52f9 TitleVBlankHandlerB.vblankRecords +04:52fa TitleVBlankHandlerB.vblankCredits +04:52fb MainHandleA +04:5309 MainHandleA.jumps +04:531b MainHandleA.tosettings +04:5320 MainHandleA.tocredits +04:5325 MainHandleA.toprofile +04:532a MainHandleUp +04:533c MainHandleDown +04:534d SettingsHandleA +04:535a ProfileHandleB +04:535a SettingsHandleB +04:535f SettingsHandleDown +04:5370 SettingsHandleUp +04:5382 SettingsHandleLeft +04:5393 SettingsHandleLeft.jumps +04:53ab SettingsHandleLeft.buttons +04:53c3 SettingsHandleLeft.rng +04:53db SettingsHandleLeft.rot +04:53f3 SettingsHandleLeft.drop +04:540b SettingsHandleLeft.curve +04:5429 SettingsHandleLeft.hig +04:5441 SettingsHandleRight +04:5452 SettingsHandleRight.jumps +04:546a SettingsHandleRight.buttons +04:5481 SettingsHandleRight.rng +04:5498 SettingsHandleRight.rot +04:54af SettingsHandleRight.drop +04:54c6 SettingsHandleRight.curve +04:54e3 SettingsHandleRight.hig +04:54fa ProfileHandleA +04:550e ProfileHandleRight +04:5522 ProfileHandleRight.jumps +04:5531 ProfileHandleRight.idx +04:553a ProfileHandleRight.doit +04:553d ProfileHandleRight.l0 +04:5547 ProfileHandleRight.doit1 +04:554e ProfileHandleRight.l1 +04:5558 ProfileHandleRight.doit2 +04:555f ProfileHandleRight.l2 +04:5569 ProfileHandleRight.doit3 +04:5570 ProfileHandleLeft +04:5584 ProfileHandleLeft.jumps +04:5593 ProfileHandleLeft.idx +04:559d ProfileHandleLeft.doit +04:55a0 ProfileHandleLeft.l0 +04:55aa ProfileHandleLeft.doit1 +04:55b1 ProfileHandleLeft.l1 +04:55bb ProfileHandleLeft.doit2 +04:55c2 ProfileHandleLeft.l2 +04:55cc ProfileHandleLeft.doit3 +04:55d3 ProfileHandleDown +04:55e4 ProfileHandleUp +04:55f6 DecrementLevel +04:560c IncrementLevel +04:5622 InitSpeedCurve +04:5631 GetEnd +04:5668 GetStart +04:569f CheckLevelRange +04:56b8 CheckLevelRange.notatend +04:56d8 CheckLevelRange.notatstart 05:4008 FieldInit 05:403e FieldClear 05:4049 ToBackupField diff --git a/src/gbc.asm b/src/gbc.asm index 4ae7e7d..c3a2bc5 100644 --- a/src/gbc.asm +++ b/src/gbc.asm @@ -294,7 +294,39 @@ GBCTitleProcess:: jp UnsafeMemSet .eventLoopProfile - ret + ; Palette for the title? + ldh a, [hFrameCtr] + and $0F + cp a, $01 + jr nz, .noinc3 + ld a, [wTitlePal] + inc a + cp a, $07 + jr c, .nores3 + ld a, $00 +.nores3 + ld [wTitlePal], a +.noinc3 + + ; Set the palette for the title. + ld a, [wTitlePal] + ld d, a + ld hl, wShadowTileAttrs + (0*32) + ld bc, (1*32) + call UnsafeMemSet + + ; And the selected row. + ld a, [wSelected] + inc a + ld hl, wShadowTileAttrs + (1*32) + ld bc, 32 +: add hl, bc + dec a + jr nz, :- + ld a, 3 + ld d, a + ld bc, 32 + jp UnsafeMemSet .eventLoopSettings ; Palette for the title? diff --git a/src/include/globals.asm b/src/include/globals.asm index e2992b7..125274a 100644 --- a/src/include/globals.asm +++ b/src/include/globals.asm @@ -444,4 +444,17 @@ DEF TITLE_SETTINGS_TETRY EQU $99C0 DEF TITLE_SETTINGS_SEL_BACK EQU 7 +DEF TITLE_PROFILE_OPTION_BASE EQU $9842 +DEF TITLE_PROFILE_OPTIONS EQU 6 +DEF TITLE_PROFILE_INDEX EQU $984F +DEF TITLE_PROFILE_NAME_0 EQU $986F +DEF TITLE_PROFILE_NAME_1 EQU $988F +DEF TITLE_PROFILE_NAME_2 EQU $98AF +DEF TITLE_PROFILE_SEL_RESET EQU 4 +DEF TITLE_PROFILE_SEL_BACK EQU 5 + + +DEF PROFILE_COUNT EQU 10 + + ENDC diff --git a/src/res/sources/map_title_main_profile.gbm b/src/res/sources/map_title_main_profile.gbm new file mode 100644 index 0000000000000000000000000000000000000000..82eb74008e7d1dc02047ee0b5c9cce8c23dbdcce GIT binary patch literal 4388 zcmeHL&u6Mr1Q-kR1^J%A0Qrl}`u43xDjVP$Q%5*uUuBRKTr zO}%>Y>d}ia@obC-Jv3fC8YL$9W@fjNvSh)O#+dyAGvB=V=6$nonB7^ja|=_s8}o&w zd1K-!$ z)9uXTie+vLd2UJ_4X!>-*Vz{xypyB|A9cD`>ZVoGZT*gI*fl-9T3W;SBeZGTvG>=S z%g?@kN&p{c*C%coo3HS*ioz`o&6lfMlD@nc)>p~)=E#T8b;Eiqh~54;{pSqIG3NWb z7mZe{iXZ&uFI2VdSORe*ForY8hocZ<1;-@OUbal0Me^9JpYSVei}n52Ummy^r;E>Q zyL=J0yK&l%Hxa1BMgjFs5a9`y zH(Ahb1Hk#A{Z&Eto|DnMCoABBq++yx!AP>;a5A zu_ZFxHS}6Jy*YiQ=cxa?V{xI-*QGBRHJ$%X_>1vp>A6Cpp;T|Th3>8?EDjeFJ)v(E HP1L^u)F77Z literal 0 HcmV?d00001 diff --git a/src/res/title_data.inc b/src/res/title_data.inc index 76b1ff4..baae517 100644 --- a/src/res/title_data.inc +++ b/src/res/title_data.inc @@ -336,5 +336,76 @@ sTitleScreenCreditsMap:: DB $00,$00 sTitleScreenCreditsMapEnd:: +sTitleScreenProfileMap:: + DB $01,$01,$01,$01,$01,$01,$1B,$1D,$1A,$11 + DB $14,$17,$10,$01,$01,$01,$01,$01,$01,$01 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$01,$01,$5D,$01,$19,$20 + DB $18,$0D,$10,$1D,$01,$01,$01,$01,$28,$01 + DB $29,$01,$01,$01,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$01,$01,$5D,$01 + DB $14,$19,$14,$1F,$14,$0C,$17,$01,$03,$01 + DB $28,$01,$29,$01,$01,$01,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01 + DB $5D,$01,$14,$19,$14,$1F,$14,$0C,$17,$01 + DB $04,$01,$28,$01,$29,$01,$01,$01,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $01,$01,$5D,$01,$14,$19,$14,$1F,$14,$0C + DB $17,$01,$05,$01,$28,$01,$29,$01,$01,$01 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$01,$01,$5D,$01,$1D,$10,$1E,$10 + DB $1F,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$01,$01,$5D,$01,$0D,$0C + DB $0E,$16,$6F,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + DB $01,$01,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$0C,$2A,$0E,$1A,$19,$11 + DB $01,$0D,$2A,$0D,$0C,$0E,$16,$01,$6D,$2A + DB $19,$0C,$21,$14,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + DB $00,$00 +sTitleScreenProfileMapEnd:: + ENDC diff --git a/src/sram.asm b/src/sram.asm index 1b262d7..a150aee 100644 --- a/src/sram.asm +++ b/src/sram.asm @@ -535,4 +535,53 @@ ChangeProfile:: jp TrustedLoad +ResetProfile:: + ld a, "P" + ld [rProfileName], a + ld [wProfileName], a + ld a, "R" + ld [rProfileName+1], a + ld [wProfileName+1], a + ld a, [rLastProfile] + add a, "0" + ld [rProfileName+2], a + ld [wProfileName+2], a + + ld a, BUTTON_MODE_NORM + ld [rSwapABState], a + ld [wSwapABState], a + + ld a, RNG_MODE_TGM3 + ld [rRNGModeState], a + ld [wRNGModeState], a + + ld a, ROT_MODE_ARSTI + ld [rRotModeState], a + ld [wRotModeState], a + + ld a, DROP_MODE_FIRM + ld [rDropModeState], a + ld [wDropModeState], a + + ld a, SCURVE_DMGT + ld [rSpeedCurveState], a + ld [wSpeedCurveState], a + + ld a, HIG_MODE_OFF + ld [rAlways20GState], a + ld [wAlways20GState], a + + ; Set to the default start level. + ld hl, sDMGTSpeedCurve + ld a, l + ldh [hStartSpeed], a + ld a, h + ldh [hStartSpeed+1], a + + xor a, a + ld [rSelectedStartLevel], a + ld [rSelectedStartLevel+1], a + ret + + ENDC diff --git a/src/state_title.asm b/src/state_title.asm index 31944b6..fe2c71b 100644 --- a/src/state_title.asm +++ b/src/state_title.asm @@ -324,6 +324,10 @@ SwitchTitleMode: ret .switchProfile + ld de, sTitleScreenProfileMap + ld hl, $9800 + ld bc, sTitleScreenProfileMapEnd - sTitleScreenProfileMap + call UnsafeMemCopy call GBCTitleInit ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01 ldh [rLCDC], a @@ -413,6 +417,63 @@ TitleEventLoopHandlerB: jp MainHandleDown .eventLoopProfile + ; A/Start? + ldh a, [hAState] + cp a, 1 + jp z, ProfileHandleA + ldh a, [hStartState] + cp a, 1 + jp z, ProfileHandleA + + ; B? + ldh a, [hBState] + cp a, 1 + jp z, ProfileHandleB + + ; Directions? + ldh a, [hUpState] + cp a, 1 + jp z, ProfileHandleUp + cp a, 16 + jp c, .d2 + ldh a, [hFrameCtr] + and 3 + cp a, 3 + jp z, ProfileHandleUp + +.d2 + ldh a, [hDownState] + cp a, 1 + jp z, ProfileHandleDown + cp a, 16 + jp c, .l2 + ldh a, [hFrameCtr] + and 3 + cp a, 3 + jp z, ProfileHandleDown + +.l2 + ldh a, [hLeftState] + cp a, 1 + jp z, ProfileHandleLeft + cp a, 16 + jp c, .r2 + ldh a, [hLeftState] + and 3 + cp a, 3 + jp z, ProfileHandleLeft + +.r2 + ldh a, [hRightState] + cp a, 1 + jp z, ProfileHandleRight + cp a, 16 + ret c + ldh a, [hRightState] + and 3 + cp a, 3 + ret nz + jp ProfileHandleRight ret .eventLoopSettings @@ -625,8 +686,43 @@ TitleVBlankHandlerB: jp DrawSpeedMain .vblankProfile + ; What is the current option? + DEF option = 0 + REPT TITLE_PROFILE_OPTIONS + ld hl, TITLE_PROFILE_OPTION_BASE+(32*option) + ld a, [wSelected] + cp a, option + jr z, .selected\@ +.notselected\@: + ld a, TILE_UNSELECTED + ld [hl], a + jr .done\@ +.selected\@: + ld a, TILE_SELECTED + ld [hl], a +.done\@: + DEF option += 1 + ENDR + + ; Which profile. + ld a, [rLastProfile] + add a, "0" + ld hl, TITLE_PROFILE_INDEX + ld [hl], a + + ; Name. + ld a, [wProfileName+0] + ld hl, TITLE_PROFILE_NAME_0 + ld [hl], a + ld a, [wProfileName+1] + ld hl, TITLE_PROFILE_NAME_1 + ld [hl], a + ld a, [wProfileName+2] + ld hl, TITLE_PROFILE_NAME_2 + ld [hl], a ret + .vblankSettings ; What is the current option? DEF option = 0 @@ -791,7 +887,7 @@ MainHandleA: .jumps jp SwitchToGameplay jp SwitchToGameplayBig - no_jump + jp .toprofile jp .tosettings no_jump jp .tocredits @@ -804,6 +900,10 @@ MainHandleA: ld a, TITLE_CREDITS jp SwitchTitleMode +.toprofile + ld a, TITLE_PROFILE + jp SwitchTitleMode + MainHandleUp: ld a, [wSelected] @@ -837,6 +937,7 @@ SettingsHandleA: jp SwitchTitleMode +ProfileHandleB: SettingsHandleB: ld a, TITLE_MAIN jp SwitchTitleMode @@ -1075,6 +1176,173 @@ SettingsHandleRight: ld [rAlways20GState], a ret +ProfileHandleA: + ld a, [wSelected] + cp a, TITLE_PROFILE_SEL_BACK + ld b, a + ld a, TITLE_MAIN + jp z, SwitchTitleMode + ld a, b + cp a, TITLE_PROFILE_SEL_RESET + jp z, ResetProfile + jp ProfileHandleRight + + +ProfileHandleRight: + ld a, [wSelected] + cp a, TITLE_PROFILE_SEL_BACK + ret z + cp a, TITLE_PROFILE_SEL_RESET + ret z + + ld b, a + add a, b + add a, b + ld c, a + ld b, 0 + ld hl, .jumps + add hl, bc + jp hl + +.jumps + jp .idx + jp .l0 + jp .l1 + jp .l2 + no_jump + +.idx + ld a, [rLastProfile] + inc a + cp a, PROFILE_COUNT + jr nz, .doit + xor a, a +.doit + jp ChangeProfile + +.l0 + ld a, [wProfileName+0] + inc a + cp a, "Z"+1 + jr nz, .doit1 + ld a, "0"-1 +.doit1 + ld [wProfileName+0], a + ld [rProfileName+0], a + ret + +.l1 + ld a, [wProfileName+1] + inc a + cp a, "Z"+1 + jr nz, .doit2 + ld a, "0"-1 +.doit2 + ld [wProfileName+1], a + ld [rProfileName+1], a + ret + +.l2 + ld a, [wProfileName+2] + inc a + cp a, "Z"+1 + jr nz, .doit3 + ld a, "0"-1 +.doit3 + ld [wProfileName+2], a + ld [rProfileName+2], a + ret + + +ProfileHandleLeft: + ld a, [wSelected] + cp a, TITLE_PROFILE_SEL_BACK + ret z + cp a, TITLE_PROFILE_SEL_RESET + ret z + + ld b, a + add a, b + add a, b + ld c, a + ld b, 0 + ld hl, .jumps + add hl, bc + jp hl + +.jumps + jp .idx + jp .l0 + jp .l1 + jp .l2 + no_jump + +.idx + ld a, [rLastProfile] + dec a + cp a, $FF + jr nz, .doit + ld a, PROFILE_COUNT-1 +.doit + jp ChangeProfile + +.l0 + ld a, [wProfileName+0] + dec a + cp a, "0"-2 + jr nz, .doit1 + ld a, "Z" +.doit1 + ld [wProfileName+0], a + ld [rProfileName+0], a + ret + +.l1 + ld a, [wProfileName+1] + dec a + cp a, "0"-2 + jr nz, .doit2 + ld a, "Z" +.doit2 + ld [wProfileName+1], a + ld [rProfileName+1], a + ret + +.l2 + ld a, [wProfileName+2] + dec a + cp a, "0"-2 + jr nz, .doit3 + ld a, "Z" +.doit3 + ld [wProfileName+2], a + ld [rProfileName+2], a + ret + + +ProfileHandleDown: + ld a, [wSelected] + cp a, TITLE_PROFILE_OPTIONS-1 + jr z, :+ + inc a + ld [wSelected], a + ret +: xor a, a + ld [wSelected], a + ret + + +ProfileHandleUp: + ld a, [wSelected] + cp a, 0 + jr z, :+ + dec a + ld [wSelected], a + ret +: ld a, TITLE_PROFILE_OPTIONS-1 + ld [wSelected], a + ret + ; Decrements start level. DecrementLevel: