From 6719abe893d702c03b98902112ddf64f272020db Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Wed, 1 Nov 2023 20:51:29 +0100 Subject: [PATCH] Add GRADEUP SFX prio. --- bin/DMGTRIS.GBC | Bin 131072 -> 131072 bytes bin/DMGTRIS.map | 427 ++++++++++++++++++++++--------------------- bin/DMGTRIS.pocket | Bin 131072 -> 131072 bytes bin/DMGTRIS.sym | 260 +++++++++++++------------- src/res/sfx_data.inc | 39 ++++ src/sfx.asm | 67 +++---- 6 files changed, 408 insertions(+), 385 deletions(-) diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index 47f63b6ab184979cc5de8671b8ff7cd10504480a..895ca738e94e30ff93417df3b3bb46a394a6b828 100644 GIT binary patch delta 4307 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 Q{(m0T2$AvUVfLnf0!nL)&j0`b diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index 07e7e26..a798310 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -141,196 +141,196 @@ ROM0 bank #0: $1887 = GradeRendering.regulargrade $188f = GradeRendering.sgrade $18a5 = GradeRendering.gmgrade - SECTION: $18b0-$1b1d ($026e bytes) ["SFX Functions"] + SECTION: $18b0-$1b31 ($0282 bytes) ["SFX Functions"] $18b0 = SFXInit - $18d0 = SFXPopQueue - $18e5 = SFXPushQueue - $18f6 = SFXProcessQueue - $1903 = !0 - $1920 = SFXTriggerNoise - $192d = !1 - $193a = !2 - $1946 = SFXEnqueue - $1953 = !3 - $1965 = !4 - $1975 = !5 - $1985 = !6 - $1995 = !7 - $19a5 = !8 - $19b5 = !9 - $19c5 = !10 - $19d5 = !11 - $19e5 = !12 - $19f5 = !13 - $1a05 = !14 - $1a15 = !15 - $1a25 = !16 - $1a35 = !17 - $1a45 = !18 - $1a54 = !19 - $1a63 = !20 - $1a71 = !21 - $1a7f = !22 - $1a8d = !23 - $1a9a = SFXKill - $1abc = SFXPlayNoise - $1ac7 = SFXPlayNoise.noisereg - $1ad4 = !24 - $1ade = SFXPlayNoise.savenoiseplayhead - $1ae7 = SFXPlay - $1af2 = !25 - $1af5 = SFXPlay.play - $1b01 = SFXPlay.getRegister - $1b0b = !26 - $1b15 = SFXPlay.savePlayhead - SECTION: $1b1e-$1d0b ($01ee bytes) ["RNG Functions"] - $1b1e = RNGInit - $1b4e = !0 - $1b69 = RNGInit.complexinit - $1b80 = !1 - $1b9a = ShiftHistory - $1bb7 = GetNextHellPiece - $1bbc = GetNextTGM1Piece - $1bbf = !2 - $1bd7 = !3 - $1bd9 = GetNextTGM2Piece - $1bdc = !4 - $1bf4 = !5 - $1bf6 = GetNextNesPiece - $1c04 = GetNextTGM3Piece - $1c07 = !6 - $1c2a = !7 - $1c2d = !8 - $1c3d = !9 - $1c47 = !10 - $1c55 = !11 - $1c64 = !12 - $1c70 = !13 - $1c7c = !14 - $1c88 = !15 - $1c94 = !16 - $1ca0 = !17 - $1cac = !18 - $1cbb = GetNextPiece - $1cc9 = GetNextPiece.nextpiecejumps - $1cd8 = Next35Piece - $1cd8 = !19 - $1ce2 = Next7Piece - $1ce2 = !20 - $1cec = NextByte - SECTION: $1d0c-$1eae ($01a3 bytes) ["Level Functions"] - $1d0c = LevelInit - $1d5c = LevelUp - $1d80 = LevelUp.doit - $1dc4 = LevelUp.checknlevel - $1df2 = !0 - $1e0a = !1 - $1e13 = LevelUp.bellmaybe - $1e25 = LevelUp.leveljinglemaybe - $1e32 = LevelUp.checkspeedup - $1e43 = !2 - $1e50 = !3 - $1e61 = !4 - $1e6e = DoSpeedUp - SECTION: $1eaf-$1f7b ($00cd bytes) ["Input Functions"] - $1eaf = InputInit - $1ec1 = GetInput - $1ec1 = GetInput.btns - $1ece = GetInput.readA - $1ed2 = GetInput.setA - $1edd = GetInput.clearA - $1ee0 = GetInput.readB - $1ee4 = GetInput.setB - $1eef = GetInput.clearB - $1ef2 = GetInput.readSelect - $1ef6 = GetInput.setSelect - $1f01 = GetInput.clearSelect - $1f04 = GetInput.readStart - $1f08 = GetInput.setStart - $1f13 = GetInput.clearStart - $1f16 = GetInput.dpad - $1f23 = GetInput.readUp - $1f27 = GetInput.setUp - $1f32 = GetInput.clearUp - $1f35 = GetInput.readDown - $1f39 = GetInput.setDown - $1f44 = GetInput.clearDown - $1f47 = GetInput.readLeft - $1f4b = GetInput.setLeft - $1f56 = GetInput.clearLeft - $1f59 = GetInput.readRight - $1f5d = GetInput.setRight - $1f68 = GetInput.clearRight - $1f6b = GetInput.priorities - $1f76 = GetInput.zero - SECTION: $1f7c-$2047 ($00cc bytes) ["Score Functions"] - $1f7c = ScoreInit - $1f9c = IncreaseScore - $1fd0 = IncreaseScore.doConvert - $1fd2 = !0 - $1fe8 = IncreaseScore.carry - $1fea = IncreaseScore.postConvert - $1ff7 = !1 - $1ffe = IncreaseScore.preAddDigit - $201e = IncreaseScore.addDigit - $2034 = IncreaseScore.nextDigit - SECTION: $2048-$210a ($00c3 bytes) ["Code Entry Point"] - $2048 = Main - $205d = Main.wvr_u1 - $2066 = !0 - $2076 = Main.notgbc - $20a3 = Main.nocolortiles - $20c4 = Main.wvb_u2 - $20c9 = !1 - $20cf = EventLoop - $20e5 = EventLoop.eventloopjumps - $20ee = EventLoopPostHandler - $20f0 = EventLoopPostHandler.wvb_u3 - $2102 = EventLoopPostHandler.vblankjumps - SECTION: $210b-$21c1 ($00b7 bytes) ["SRAM Functions"] - $210b = RestoreSRAM - $2164 = InitializeSRAM - SECTION: $21c2-$2233 ($0072 bytes) ["Grading Functions"] - $21c2 = GradeInit - $21d0 = UpdateGrade - $21d9 = UpdateGrade.trygradeup - $21f3 = UpdateGrade.increasegrade - $2207 = CheckForGM - $221d = PrepareScore - SECTION: $2234-$22a1 ($006e bytes) ["Title Function Trampolines"] - $2234 = SwitchToTitle - $223e = TitleEventLoopHandler - $2248 = TitleVBlankHandler - $2252 = DrawOption6 - SECTION: $22a2-$22ee ($004d bytes) ["Time Functions"] - $22a2 = TimeInit - $22b7 = ResetTime - $22c2 = HandleTimers - SECTION: $22ef-$231c ($002e bytes) ["Memory Functions"] - $22ef = UnsafeMemCopy - $22f8 = SafeMemCopy.wvr_u1 - $22f8 = SafeMemCopy - $2307 = UnsafeMemSet - $230f = SafeMemSet - $230f = SafeMemSet.wvr_u2 - SECTION: $231d-$2344 ($0028 bytes) ["Gameplay Function Trampolines"] - $231d = SwitchToGameplay - $2327 = SwitchToGameplayBig - $2331 = GamePlayEventLoopHandler - $233b = GamePlayBigEventLoopHandler - SECTION: $2345-$2366 ($0022 bytes) ["Grading Data"] - $2345 = sGradeScores - SECTION: $2367-$2388 ($0022 bytes) ["OAM Functions"] - $2367 = CopyOAMHandler - $2373 = ClearOAM - SECTION: $2389-$23a1 ($0019 bytes) ["Interrupt Initialization Functions"] - $2389 = IntrInit - $238d = InitializeLCDCInterrupt - SECTION: $23a2-$23ab ($000a bytes) ["OAM DMA Code"] - $23a2 = OAMDMA - $23ac = OAMDMAEnd - EMPTY: $23ac-$3fff ($1c54 bytes) - TOTAL EMPTY: $1c5f bytes + $18d2 = SFXPopQueue + $18e7 = SFXPushQueue + $18f8 = SFXProcessQueue + $1905 = !0 + $1926 = SFXTriggerNoise + $1933 = !1 + $1940 = !2 + $194c = SFXEnqueue + $195e = SFXEnqueue.findsfx + $1973 = !3 + $1983 = !4 + $1993 = !5 + $19a3 = !6 + $19b3 = !7 + $19c3 = !8 + $19d3 = !9 + $19e3 = !10 + $19f3 = !11 + $1a03 = !12 + $1a13 = !13 + $1a23 = !14 + $1a33 = !15 + $1a43 = !16 + $1a53 = !17 + $1a62 = !18 + $1a71 = !19 + $1a7f = !20 + $1a8d = !21 + $1a9b = !22 + $1aa8 = SFXKill + $1ad0 = SFXPlayNoise + $1adb = SFXPlayNoise.noisereg + $1ae8 = !23 + $1af2 = SFXPlayNoise.savenoiseplayhead + $1afb = SFXPlay + $1b06 = !24 + $1b09 = SFXPlay.play + $1b15 = SFXPlay.getRegister + $1b1f = !25 + $1b29 = SFXPlay.savePlayhead + SECTION: $1b32-$1d1f ($01ee bytes) ["RNG Functions"] + $1b32 = RNGInit + $1b62 = !0 + $1b7d = RNGInit.complexinit + $1b94 = !1 + $1bae = ShiftHistory + $1bcb = GetNextHellPiece + $1bd0 = GetNextTGM1Piece + $1bd3 = !2 + $1beb = !3 + $1bed = GetNextTGM2Piece + $1bf0 = !4 + $1c08 = !5 + $1c0a = GetNextNesPiece + $1c18 = GetNextTGM3Piece + $1c1b = !6 + $1c3e = !7 + $1c41 = !8 + $1c51 = !9 + $1c5b = !10 + $1c69 = !11 + $1c78 = !12 + $1c84 = !13 + $1c90 = !14 + $1c9c = !15 + $1ca8 = !16 + $1cb4 = !17 + $1cc0 = !18 + $1ccf = GetNextPiece + $1cdd = GetNextPiece.nextpiecejumps + $1cec = Next35Piece + $1cec = !19 + $1cf6 = Next7Piece + $1cf6 = !20 + $1d00 = NextByte + SECTION: $1d20-$1ec2 ($01a3 bytes) ["Level Functions"] + $1d20 = LevelInit + $1d70 = LevelUp + $1d94 = LevelUp.doit + $1dd8 = LevelUp.checknlevel + $1e06 = !0 + $1e1e = !1 + $1e27 = LevelUp.bellmaybe + $1e39 = LevelUp.leveljinglemaybe + $1e46 = LevelUp.checkspeedup + $1e57 = !2 + $1e64 = !3 + $1e75 = !4 + $1e82 = DoSpeedUp + SECTION: $1ec3-$1f8f ($00cd bytes) ["Input Functions"] + $1ec3 = InputInit + $1ed5 = GetInput + $1ed5 = GetInput.btns + $1ee2 = GetInput.readA + $1ee6 = GetInput.setA + $1ef1 = GetInput.clearA + $1ef4 = GetInput.readB + $1ef8 = GetInput.setB + $1f03 = GetInput.clearB + $1f06 = GetInput.readSelect + $1f0a = GetInput.setSelect + $1f15 = GetInput.clearSelect + $1f18 = GetInput.readStart + $1f1c = GetInput.setStart + $1f27 = GetInput.clearStart + $1f2a = GetInput.dpad + $1f37 = GetInput.readUp + $1f3b = GetInput.setUp + $1f46 = GetInput.clearUp + $1f49 = GetInput.readDown + $1f4d = GetInput.setDown + $1f58 = GetInput.clearDown + $1f5b = GetInput.readLeft + $1f5f = GetInput.setLeft + $1f6a = GetInput.clearLeft + $1f6d = GetInput.readRight + $1f71 = GetInput.setRight + $1f7c = GetInput.clearRight + $1f7f = GetInput.priorities + $1f8a = GetInput.zero + SECTION: $1f90-$205b ($00cc bytes) ["Score Functions"] + $1f90 = ScoreInit + $1fb0 = IncreaseScore + $1fe4 = IncreaseScore.doConvert + $1fe6 = !0 + $1ffc = IncreaseScore.carry + $1ffe = IncreaseScore.postConvert + $200b = !1 + $2012 = IncreaseScore.preAddDigit + $2032 = IncreaseScore.addDigit + $2048 = IncreaseScore.nextDigit + SECTION: $205c-$211e ($00c3 bytes) ["Code Entry Point"] + $205c = Main + $2071 = Main.wvr_u1 + $207a = !0 + $208a = Main.notgbc + $20b7 = Main.nocolortiles + $20d8 = Main.wvb_u2 + $20dd = !1 + $20e3 = EventLoop + $20f9 = EventLoop.eventloopjumps + $2102 = EventLoopPostHandler + $2104 = EventLoopPostHandler.wvb_u3 + $2116 = EventLoopPostHandler.vblankjumps + SECTION: $211f-$21d5 ($00b7 bytes) ["SRAM Functions"] + $211f = RestoreSRAM + $2178 = InitializeSRAM + SECTION: $21d6-$2247 ($0072 bytes) ["Grading Functions"] + $21d6 = GradeInit + $21e4 = UpdateGrade + $21ed = UpdateGrade.trygradeup + $2207 = UpdateGrade.increasegrade + $221b = CheckForGM + $2231 = PrepareScore + SECTION: $2248-$22b5 ($006e bytes) ["Title Function Trampolines"] + $2248 = SwitchToTitle + $2252 = TitleEventLoopHandler + $225c = TitleVBlankHandler + $2266 = DrawOption6 + SECTION: $22b6-$2302 ($004d bytes) ["Time Functions"] + $22b6 = TimeInit + $22cb = ResetTime + $22d6 = HandleTimers + SECTION: $2303-$2330 ($002e bytes) ["Memory Functions"] + $2303 = UnsafeMemCopy + $230c = SafeMemCopy.wvr_u1 + $230c = SafeMemCopy + $231b = UnsafeMemSet + $2323 = SafeMemSet + $2323 = SafeMemSet.wvr_u2 + SECTION: $2331-$2358 ($0028 bytes) ["Gameplay Function Trampolines"] + $2331 = SwitchToGameplay + $233b = SwitchToGameplayBig + $2345 = GamePlayEventLoopHandler + $234f = GamePlayBigEventLoopHandler + SECTION: $2359-$237a ($0022 bytes) ["Grading Data"] + $2359 = sGradeScores + SECTION: $237b-$239c ($0022 bytes) ["OAM Functions"] + $237b = CopyOAMHandler + $2387 = ClearOAM + SECTION: $239d-$23b5 ($0019 bytes) ["Interrupt Initialization Functions"] + $239d = IntrInit + $23a1 = InitializeLCDCInterrupt + SECTION: $23b6-$23bf ($000a bytes) ["OAM DMA Code"] + $23b6 = OAMDMA + $23c0 = OAMDMAEnd + EMPTY: $23c0-$3fff ($1c40 bytes) + TOTAL EMPTY: $1c4b bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -2279,32 +2279,33 @@ HRAM bank #0: SECTION: $ffda-$ffe3 ($000a bytes) ["OAM DMA"] $ffda = hOAMDMA $ffe0 = !0 - SECTION: $ffe4-$ffeb ($0008 bytes) ["High Input Variables"] - $ffe4 = hUpState - $ffe5 = hDownState - $ffe6 = hLeftState - $ffe7 = hRightState - $ffe8 = hAState - $ffe9 = hBState - $ffea = hStartState - $ffeb = hSelectState - SECTION: $ffec-$fff3 ($0008 bytes) ["High SFX Variables"] - $ffec = hPlayhead - $ffee = hPlayQueue - $fff2 = hNoisePlayhead - SECTION: $fff4-$fff5 ($0002 bytes) ["High Time Variables"] - $fff4 = hFrameCtr - $fff5 = hEvenFrame - SECTION: $fff6-$fff6 ($0001 byte) ["High Globals"] - $fff6 = hGameState - SECTION: $fff7-$fff7 ($0001 byte) ["High Interrupt Variables"] - $fff7 = hLCDCCtr - EMPTY: $fff8-$fffe ($0007 bytes) - TOTAL EMPTY: $0007 bytes + SECTION: $ffe4-$ffec ($0009 bytes) ["High SFX Variables"] + $ffe4 = hPlayhead + $ffe6 = hCurrentlyPlaying + $ffe7 = hPlayQueue + $ffeb = hNoisePlayhead + SECTION: $ffed-$fff4 ($0008 bytes) ["High Input Variables"] + $ffed = hUpState + $ffee = hDownState + $ffef = hLeftState + $fff0 = hRightState + $fff1 = hAState + $fff2 = hBState + $fff3 = hStartState + $fff4 = hSelectState + SECTION: $fff5-$fff6 ($0002 bytes) ["High Time Variables"] + $fff5 = hFrameCtr + $fff6 = hEvenFrame + SECTION: $fff7-$fff7 ($0001 byte) ["High Globals"] + $fff7 = hGameState + SECTION: $fff8-$fff8 ($0001 byte) ["High Interrupt Variables"] + $fff8 = hLCDCCtr + EMPTY: $fff9-$fffe ($0006 bytes) + TOTAL EMPTY: $0006 bytes SUMMARY: - ROM0: 9121 bytes used / 7263 free + ROM0: 9141 bytes used / 7243 free ROMX: 48836 bytes used / 49468 free in 6 banks SRAM: 14 bytes used / 8178 free in 1 bank WRAM0: 3489 bytes used / 607 free - HRAM: 120 bytes used / 7 free + HRAM: 121 bytes used / 6 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index 5fba577fbf1cb13602dc047957a32be5e5f0ee41..d473554de1e5299e1ab075cc4a8d831066725f7a 100644 GIT binary patch delta 4307 zcmcInYj7LY72czjWXqO~m5G(LCEL4Na0G!u3T2qutQGQ*T}+f`14+Q4hPppGz`(R) znt;SJBom4gHQ4}xnxSPF+KB@$5z`0bc9R*&&aELdCP07-I8Nfk(#o%ZNY_2PTG zZ3m{4iT3-xbMC#n=broRIua?2L<;v=0M>5l}Jl(%?`~_elx~ybDceMD=S$Hpe)~%Ebv3PmK zrC*}k%YOl9qfU1>Oh$X$mm0XXyKGJugip|u^b{SYLtS)`9;c`2nS^>GsGg)J)Km1N zI!sSVQ*^jJah}vphZ9D=dO}O`7A}Z6L*y{0P4Qy(;>}*ljZ2)X)rxtCR7X!sZMcBu zM6%oZdc5s*Kikf2X{ST&xJC&*Ar;a=DL{`aUskqj3}1X6 zk05Wu_>E@Vg4~CEvB@7sz7Y9xlLPWgkcStV!b2!jpb#=Si@X^55|clI{6pj`Om0QK zKQI0$^0~-YnQCXos@Hh$&V8R-MYeh)kM%t96Tan(5 z^p-3w<%^`dkglW0xlP(d$o^@vyR=C zR?uoBW*->4nov*Qt)6LnJ#M%3KPYM%Uy$lDIzyZC+d~hEpK_-jpr<#{Gm4)vI>2UU z`#Bb~&7I>}j2I)WDdlr)3v<{Re85fk1USsPmmXAYd!x0UinXlhnz&tv5GY{q)TGFy zR|EeSn#Dgs|B=~BG?p(wZMc6bfrl?adubm%r0a~|E?IPvH$t=d(=>s(q~ELbN1yi8 zI48Z_N0P0j%3n?x}vHo9z&a&(wI2TL6gyqHT9Pb)&O^o;P0L( z{4JftpGN%8RZ3I!j_b}HoM^u?c>k3l_Sm`TCpC9sU4nct>=X?Ty&)_<~o@ z;!fcaiM~0s#!@nkyjTR)jrfEW*sHYP{KqsSpzO_7#wD*&F ztBpBq{bXo`fl%u(wCG|{ym-GTygvm+jKYcnqv1=)%@7e`+<=Nl?4qA{Zxc6oUkeC5 zVOGp+C)#Yj(lxM1xN|qy^pocLV3F{ciMdw2u2Yz>CokcJyo4LFdsLU{Abmm1dufqy z$8K;M6TP-bc+|vPrR&YSNUsqI8)+Pq-BZa!gS3%0k^4Ym=-IB}P9klgOUcWXQj#=R zn7d_Xj15kZfI}S%s_BqAy6;sD_#*6frgy%m)QQ-}z|X>0BU*v&dYmR9+4WyFiMmVI z?S5N5Dsl}#ftb>ucjW@D>^i49F~p*+Sjox-32bBNt+@f^Vs#?c1n`FCCRXeU;(70z z+c!5PoLuBsb*m718m#)WVxX`y8#reKo|*|b%s}B{eMG+*ke6Cvj)fKFHY@mMu_EVm z)h`x8&t&IQejIz&3J=uPc|>7PFZ>kTQ@D9Tq!+wQ7Iwx#W!zR&U7c~EBY{lc^v<{| zhvj4hq}cWVq%8Bt@zHJS5pAj`vqi6qRZVjiv<%=K>XY?DEPaxz$VEmml8(K)5E?9y zlGBTU163|s0(CGVfATmiDX6VbHU-tB{GH9PRvuXbUT0E2^OBR)R-n9ZGjJZPwSO*m znfeSab}{Y8CyM@vy&a=(xBdbQU~_mcRi$|hVWISFhB-`E_wvp zaX?x|-z9h0B$l3)5_(t411q2*jLqr7=2YLkp0{IcK=RXfT{|`imnZNLVqYkk7CmN@ z>~x?DLwn8(Ne((dt_t9@3ddMT+3r~~vU9=ZX% zN7A-X9hW_;U>=Ocf~(+YQ8i!V|jSJnn$dOnE_lL#wt%w6v)G?^6*dc@Fo+>nHIQawNb&Z z77)w+j&37tL|O$UNkrumk;g&KYCSi7u;I>U%jfL)$po{*8jn)9OP5OtGIU8!B+hcXB`Id x$~@ebhc|}u$WwV3i#9ztmWTWD@W*+0%*47q)yfSoLh1j{qe2i%{{}8v_b)AfcN+iz delta 4254 zcmcImeQ*@z8QD=7z@ArG2_ubv+dEeh|B$5}2L+<$$1>-kaaT{_0`3j5w z9CVGsRS$GNnWRv^x8`Idxwe!F_1<<+>$ z*7KmKX`DOVVXOmfI_PSAQ0!-icGB}Z=!IC2G5YOv*?U+!W?K#8>=-ddI?}NzTnN^% z(VcX32R$c$&p-c)wBVh*laCN^Gq^3%q(7iR@Jr1WoTPuv>?WF>bCZ6#)nCreL^Nk` zoF;~QrpX(D*c2;ZV z1_66ea^nDw^vPVH5)R9uKmhvX+XMGrnF!#eT}jfw#oqMCKJdpJfmqZZoAQ&< zK(a;?7k{2WB!3zBDQuIsm;czctwJh})yZed7eSqDuUJ}CSE{}mR)6<;&?(I(b@Gae zNZVODK$CQkrsxnIrXvZdm@=yM3wMXOLN$d&%B!X+*4{x=-SwypnaYr^40W$YWyDlQ zbY-ObR#b*fWms2+B`$YTeZW~WeD)?ie%2T;jfvwNbU@xyS?xPj3G7z{k4L8QSTu!)dU8tstnxdMk|!&-VkI_l;kGXX!^b#} z_lFz!_6S7m=H>w1v$zZsX@1Eue$to?(gI&kt`L+U>SL{ zjQqKRye;qpoH~WQ!Ny2JY>61F60^A|;%$7jV}@@5#B=PU9Y+;tgeyLPP{ z=IdOJVMn`ktt|7KZY&ov2gu_-riou6mR{BL;D**e^>Oz5-{?cRdiVg5ib-85V$B<8 zPaEg1%uCZ6^htA!D7JjDz?F<~E=LdfD3p$w=wNL+)+28f*4roPg#4CJmN!vNCz3!X z=CW`Z)75NXRp@4~{1)kCHUE*WNY>{W;28_AI z4*Gd#ySODFpAzT365_ks(n4k*(dKex-rnW>)M)gIIw=Kb#Nhjm3kO2HXl2}a22{4aI8A0)Q903;1ur@PzICHePOVJ7h^$t zHBIWip@Tu?xAm|cHY+6!a4Q^9wlzRmF;4$0`m|&p_7k!;L{2G(8X!=(xm+dml~wtgGxVk%WKg}*w18xhwUX(#;zBUs*u`C`*73s;ysd)|sk(e34=3uPy#fd^W zcwG*@I|uKuu##zlrR$9fe!YNL_V;wl*^OOgugezuvIWJ@_nFi}eNX|Zi$1&s4pg?` zUadI^A2UAvLq2y0o7-0Z%*U;YhU?Qma5cUeDsxtV|Nr0HkMrw5?)N9b#%%~|sryJ%jh z>E>nsSMyrdd>Qll`quk*-gW;$SmMyVOZfvD9E>RM9E2cx)!0F}z3@MJRcW)~Ri(}U zg;(X1e#5KSR_{B_`X)9V2JzY)+>(PIXv`sdaxfO{;^1fw?#{uV=HLq!*6nG5Qu7=X Q{r^0w5u)SI!|YA}1U(sz&Hw-a diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index 738aa8e..dbd3900 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -107,120 +107,121 @@ 00:188f GradeRendering.sgrade 00:18a5 GradeRendering.gmgrade 00:18b0 SFXInit -00:18d0 SFXPopQueue -00:18e5 SFXPushQueue -00:18f6 SFXProcessQueue -00:1920 SFXTriggerNoise -00:1946 SFXEnqueue -00:1a9a SFXKill -00:1abc SFXPlayNoise -00:1ac7 SFXPlayNoise.noisereg -00:1ade SFXPlayNoise.savenoiseplayhead -00:1ae7 SFXPlay -00:1af5 SFXPlay.play -00:1b01 SFXPlay.getRegister -00:1b15 SFXPlay.savePlayhead -00:1b1e RNGInit -00:1b69 RNGInit.complexinit -00:1b9a ShiftHistory -00:1bb7 GetNextHellPiece -00:1bbc GetNextTGM1Piece -00:1bd9 GetNextTGM2Piece -00:1bf6 GetNextNesPiece -00:1c04 GetNextTGM3Piece -00:1cbb GetNextPiece -00:1cc9 GetNextPiece.nextpiecejumps -00:1cd8 Next35Piece -00:1ce2 Next7Piece -00:1cec NextByte -00:1d0c LevelInit -00:1d5c LevelUp -00:1d80 LevelUp.doit -00:1dc4 LevelUp.checknlevel -00:1e13 LevelUp.bellmaybe -00:1e25 LevelUp.leveljinglemaybe -00:1e32 LevelUp.checkspeedup -00:1e6e DoSpeedUp -00:1eaf InputInit -00:1ec1 GetInput -00:1ec1 GetInput.btns -00:1ece GetInput.readA -00:1ed2 GetInput.setA -00:1edd GetInput.clearA -00:1ee0 GetInput.readB -00:1ee4 GetInput.setB -00:1eef GetInput.clearB -00:1ef2 GetInput.readSelect -00:1ef6 GetInput.setSelect -00:1f01 GetInput.clearSelect -00:1f04 GetInput.readStart -00:1f08 GetInput.setStart -00:1f13 GetInput.clearStart -00:1f16 GetInput.dpad -00:1f23 GetInput.readUp -00:1f27 GetInput.setUp -00:1f32 GetInput.clearUp -00:1f35 GetInput.readDown -00:1f39 GetInput.setDown -00:1f44 GetInput.clearDown -00:1f47 GetInput.readLeft -00:1f4b GetInput.setLeft -00:1f56 GetInput.clearLeft -00:1f59 GetInput.readRight -00:1f5d GetInput.setRight -00:1f68 GetInput.clearRight -00:1f6b GetInput.priorities -00:1f76 GetInput.zero -00:1f7c ScoreInit -00:1f9c IncreaseScore -00:1fd0 IncreaseScore.doConvert -00:1fe8 IncreaseScore.carry -00:1fea IncreaseScore.postConvert -00:1ffe IncreaseScore.preAddDigit -00:201e IncreaseScore.addDigit -00:2034 IncreaseScore.nextDigit -00:2048 Main -00:205d Main.wvr_u1 -00:2076 Main.notgbc -00:20a3 Main.nocolortiles -00:20c4 Main.wvb_u2 -00:20cf EventLoop -00:20e5 EventLoop.eventloopjumps -00:20ee EventLoopPostHandler -00:20f0 EventLoopPostHandler.wvb_u3 -00:2102 EventLoopPostHandler.vblankjumps -00:210b RestoreSRAM -00:2164 InitializeSRAM -00:21c2 GradeInit -00:21d0 UpdateGrade -00:21d9 UpdateGrade.trygradeup -00:21f3 UpdateGrade.increasegrade -00:2207 CheckForGM -00:221d PrepareScore -00:2234 SwitchToTitle -00:223e TitleEventLoopHandler -00:2248 TitleVBlankHandler -00:2252 DrawOption6 -00:22a2 TimeInit -00:22b7 ResetTime -00:22c2 HandleTimers -00:22ef UnsafeMemCopy -00:22f8 SafeMemCopy.wvr_u1 -00:22f8 SafeMemCopy -00:2307 UnsafeMemSet -00:230f SafeMemSet -00:230f SafeMemSet.wvr_u2 -00:231d SwitchToGameplay -00:2327 SwitchToGameplayBig -00:2331 GamePlayEventLoopHandler -00:233b GamePlayBigEventLoopHandler -00:2345 sGradeScores -00:2367 CopyOAMHandler -00:2373 ClearOAM -00:2389 IntrInit -00:238d InitializeLCDCInterrupt -00:23a2 OAMDMA -00:23ac OAMDMAEnd +00:18d2 SFXPopQueue +00:18e7 SFXPushQueue +00:18f8 SFXProcessQueue +00:1926 SFXTriggerNoise +00:194c SFXEnqueue +00:195e SFXEnqueue.findsfx +00:1aa8 SFXKill +00:1ad0 SFXPlayNoise +00:1adb SFXPlayNoise.noisereg +00:1af2 SFXPlayNoise.savenoiseplayhead +00:1afb SFXPlay +00:1b09 SFXPlay.play +00:1b15 SFXPlay.getRegister +00:1b29 SFXPlay.savePlayhead +00:1b32 RNGInit +00:1b7d RNGInit.complexinit +00:1bae ShiftHistory +00:1bcb GetNextHellPiece +00:1bd0 GetNextTGM1Piece +00:1bed GetNextTGM2Piece +00:1c0a GetNextNesPiece +00:1c18 GetNextTGM3Piece +00:1ccf GetNextPiece +00:1cdd GetNextPiece.nextpiecejumps +00:1cec Next35Piece +00:1cf6 Next7Piece +00:1d00 NextByte +00:1d20 LevelInit +00:1d70 LevelUp +00:1d94 LevelUp.doit +00:1dd8 LevelUp.checknlevel +00:1e27 LevelUp.bellmaybe +00:1e39 LevelUp.leveljinglemaybe +00:1e46 LevelUp.checkspeedup +00:1e82 DoSpeedUp +00:1ec3 InputInit +00:1ed5 GetInput +00:1ed5 GetInput.btns +00:1ee2 GetInput.readA +00:1ee6 GetInput.setA +00:1ef1 GetInput.clearA +00:1ef4 GetInput.readB +00:1ef8 GetInput.setB +00:1f03 GetInput.clearB +00:1f06 GetInput.readSelect +00:1f0a GetInput.setSelect +00:1f15 GetInput.clearSelect +00:1f18 GetInput.readStart +00:1f1c GetInput.setStart +00:1f27 GetInput.clearStart +00:1f2a GetInput.dpad +00:1f37 GetInput.readUp +00:1f3b GetInput.setUp +00:1f46 GetInput.clearUp +00:1f49 GetInput.readDown +00:1f4d GetInput.setDown +00:1f58 GetInput.clearDown +00:1f5b GetInput.readLeft +00:1f5f GetInput.setLeft +00:1f6a GetInput.clearLeft +00:1f6d GetInput.readRight +00:1f71 GetInput.setRight +00:1f7c GetInput.clearRight +00:1f7f GetInput.priorities +00:1f8a GetInput.zero +00:1f90 ScoreInit +00:1fb0 IncreaseScore +00:1fe4 IncreaseScore.doConvert +00:1ffc IncreaseScore.carry +00:1ffe IncreaseScore.postConvert +00:2012 IncreaseScore.preAddDigit +00:2032 IncreaseScore.addDigit +00:2048 IncreaseScore.nextDigit +00:205c Main +00:2071 Main.wvr_u1 +00:208a Main.notgbc +00:20b7 Main.nocolortiles +00:20d8 Main.wvb_u2 +00:20e3 EventLoop +00:20f9 EventLoop.eventloopjumps +00:2102 EventLoopPostHandler +00:2104 EventLoopPostHandler.wvb_u3 +00:2116 EventLoopPostHandler.vblankjumps +00:211f RestoreSRAM +00:2178 InitializeSRAM +00:21d6 GradeInit +00:21e4 UpdateGrade +00:21ed UpdateGrade.trygradeup +00:2207 UpdateGrade.increasegrade +00:221b CheckForGM +00:2231 PrepareScore +00:2248 SwitchToTitle +00:2252 TitleEventLoopHandler +00:225c TitleVBlankHandler +00:2266 DrawOption6 +00:22b6 TimeInit +00:22cb ResetTime +00:22d6 HandleTimers +00:2303 UnsafeMemCopy +00:230c SafeMemCopy.wvr_u1 +00:230c SafeMemCopy +00:231b UnsafeMemSet +00:2323 SafeMemSet +00:2323 SafeMemSet.wvr_u2 +00:2331 SwitchToGameplay +00:233b SwitchToGameplayBig +00:2345 GamePlayEventLoopHandler +00:234f GamePlayBigEventLoopHandler +00:2359 sGradeScores +00:237b CopyOAMHandler +00:2387 ClearOAM +00:239d IntrInit +00:23a1 InitializeLCDCInterrupt +00:23b6 OAMDMA +00:23c0 OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4210 sDMGTSpeedCurveEnd 01:4212 sTGM1SpeedCurve @@ -1949,18 +1950,19 @@ 00:ffd8 hPrePause 00:ffd9 hRequestedJingle 00:ffda hOAMDMA -00:ffe4 hUpState -00:ffe5 hDownState -00:ffe6 hLeftState -00:ffe7 hRightState -00:ffe8 hAState -00:ffe9 hBState -00:ffea hStartState -00:ffeb hSelectState -00:ffec hPlayhead -00:ffee hPlayQueue -00:fff2 hNoisePlayhead -00:fff4 hFrameCtr -00:fff5 hEvenFrame -00:fff6 hGameState -00:fff7 hLCDCCtr +00:ffe4 hPlayhead +00:ffe6 hCurrentlyPlaying +00:ffe7 hPlayQueue +00:ffeb hNoisePlayhead +00:ffed hUpState +00:ffee hDownState +00:ffef hLeftState +00:fff0 hRightState +00:fff1 hAState +00:fff2 hBState +00:fff3 hStartState +00:fff4 hSelectState +00:fff5 hFrameCtr +00:fff6 hEvenFrame +00:fff7 hGameState +00:fff8 hLCDCCtr diff --git a/src/res/sfx_data.inc b/src/res/sfx_data.inc index b359c5a..e400911 100644 --- a/src/res/sfx_data.inc +++ b/src/res/sfx_data.inc @@ -5,6 +5,45 @@ DEF SFX_DATA_INC EQU 1 INCLUDE "globals.asm" +DEF REG_NR10_CH1_SWEEP EQU $10 +DEF REG_NR11_CH1_LENDT EQU $11 +DEF REG_NR12_CH1_VOLEV EQU $12 +DEF REG_NR13_CH1_FRQLO EQU $13 +DEF REG_NR14_CH1_FRQHI EQU $14 +DEF REG_NR21_CH2_LENDT EQU $16 +DEF REG_NR22_CH2_VOLEV EQU $17 +DEF REG_NR23_CH2_FRQLO EQU $18 +DEF REG_NR24_CH2_FRQHI EQU $19 +DEF REG_NR30_CH3_DACEN EQU $1A +DEF REG_NR31_CH3_LENGT EQU $1B +DEF REG_NR32_CH3_VOLUM EQU $1C +DEF REG_NR33_CH3_FRQLO EQU $1D +DEF REG_NR34_CH3_FRQHI EQU $1E +DEF REG_NR41_CH4_LENGT EQU $20 +DEF REG_NR42_CH4_VOLEV EQU $21 +DEF REG_NR43_CH4_FQRND EQU $22 +DEF REG_NR44_CH4_CNTRL EQU $23 +DEF REG_NR50_MVOLVINPN EQU $24 +DEF REG_NR51_MASTERPAN EQU $25 +DEF REG_NR52_MASTERCTL EQU $26 +DEF REG_WAVE_PATTERN_0 EQU $30 +DEF REG_WAVE_PATTERN_1 EQU $31 +DEF REG_WAVE_PATTERN_2 EQU $32 +DEF REG_WAVE_PATTERN_3 EQU $33 +DEF REG_WAVE_PATTERN_4 EQU $34 +DEF REG_WAVE_PATTERN_5 EQU $35 +DEF REG_WAVE_PATTERN_6 EQU $36 +DEF REG_WAVE_PATTERN_7 EQU $37 +DEF REG_WAVE_PATTERN_8 EQU $38 +DEF REG_WAVE_PATTERN_9 EQU $39 +DEF REG_WAVE_PATTERN_A EQU $3A +DEF REG_WAVE_PATTERN_B EQU $3B +DEF REG_WAVE_PATTERN_C EQU $3C +DEF REG_WAVE_PATTERN_D EQU $3D +DEF REG_WAVE_PATTERN_E EQU $3E +DEF REG_WAVE_PATTERN_F EQU $3F + + SECTION "SFX Data", ROMX, BANK[BANK_SFX] ; These sound effects can contain any channel. sSFXPieceI:: diff --git a/src/sfx.asm b/src/sfx.asm index 0713e2b..5b56aee 100644 --- a/src/sfx.asm +++ b/src/sfx.asm @@ -19,45 +19,6 @@ IF !DEF(SFX_ASM) DEF SFX_ASM EQU 1 -DEF REG_NR10_CH1_SWEEP EQU $10 -DEF REG_NR11_CH1_LENDT EQU $11 -DEF REG_NR12_CH1_VOLEV EQU $12 -DEF REG_NR13_CH1_FRQLO EQU $13 -DEF REG_NR14_CH1_FRQHI EQU $14 -DEF REG_NR21_CH2_LENDT EQU $16 -DEF REG_NR22_CH2_VOLEV EQU $17 -DEF REG_NR23_CH2_FRQLO EQU $18 -DEF REG_NR24_CH2_FRQHI EQU $19 -DEF REG_NR30_CH3_DACEN EQU $1A -DEF REG_NR31_CH3_LENGT EQU $1B -DEF REG_NR32_CH3_VOLUM EQU $1C -DEF REG_NR33_CH3_FRQLO EQU $1D -DEF REG_NR34_CH3_FRQHI EQU $1E -DEF REG_NR41_CH4_LENGT EQU $20 -DEF REG_NR42_CH4_VOLEV EQU $21 -DEF REG_NR43_CH4_FQRND EQU $22 -DEF REG_NR44_CH4_CNTRL EQU $23 -DEF REG_NR50_MVOLVINPN EQU $24 -DEF REG_NR51_MASTERPAN EQU $25 -DEF REG_NR52_MASTERCTL EQU $26 -DEF REG_WAVE_PATTERN_0 EQU $30 -DEF REG_WAVE_PATTERN_1 EQU $31 -DEF REG_WAVE_PATTERN_2 EQU $32 -DEF REG_WAVE_PATTERN_3 EQU $33 -DEF REG_WAVE_PATTERN_4 EQU $34 -DEF REG_WAVE_PATTERN_5 EQU $35 -DEF REG_WAVE_PATTERN_6 EQU $36 -DEF REG_WAVE_PATTERN_7 EQU $37 -DEF REG_WAVE_PATTERN_8 EQU $38 -DEF REG_WAVE_PATTERN_9 EQU $39 -DEF REG_WAVE_PATTERN_A EQU $3A -DEF REG_WAVE_PATTERN_B EQU $3B -DEF REG_WAVE_PATTERN_C EQU $3C -DEF REG_WAVE_PATTERN_D EQU $3D -DEF REG_WAVE_PATTERN_E EQU $3E -DEF REG_WAVE_PATTERN_F EQU $3F - - INCLUDE "globals.asm" INCLUDE "res/sfx_data.inc" INCLUDE "res/music_data.inc" @@ -65,6 +26,7 @@ INCLUDE "res/music_data.inc" SECTION "High SFX Variables", HRAM hPlayhead:: ds 2 +hCurrentlyPlaying:: ds 1 hPlayQueue:: ds 4 hNoisePlayhead:: ds 2 @@ -85,6 +47,7 @@ SFXInit:: ldh [hPlayQueue+1], a ldh [hPlayQueue+2], a ldh [hPlayQueue+3], a + ldh [hCurrentlyPlaying], a xor a, a ldh [hPlayhead], a ldh [hPlayhead+1], a @@ -137,7 +100,10 @@ SFXProcessQueue: jr SFXEnqueue ; Try 4 times to pop a sound effect off the queue. -: call SFXPopQueue +: ld a, $FF + ldh [hCurrentlyPlaying], a + + call SFXPopQueue cp a, $FF jr nz, :+ call SFXPopQueue @@ -183,19 +149,28 @@ SFXTriggerNoise:: ; Attempt to play the sound effect in A. Will enqueue the sound effect if the play routine is currently busy. SFXEnqueue:: - ; If the playhead isn't null, then we're already playing something. + ; If we're playing the grade up sound, it has absolute prio. ld b, a + ldh a, [hCurrentlyPlaying] + cp a, SFX_RANKUP + ret z + + ; If the playhead isn't null, then we're already playing something. ldh a, [hPlayhead] ld l, a ldh a, [hPlayhead+1] ld h, a or a, l - jr z, :+ + jr z, .findsfx ld a, b jr SFXPushQueue +.findsfx + ld a, b + ldh [hCurrentlyPlaying], a + ; Menu music -: ld a, b + ld a, b cp a, MUSIC_MENU jr nz, :+ ldh [hPlayQueue], a @@ -385,6 +360,12 @@ SFXEnqueue:: ; Kill the non-noise sound and clear the queue. SFXKill:: + ; If we're playing the grade up sound, it has absolute prio and cannot be killed. + ld b, a + ldh a, [hCurrentlyPlaying] + cp a, SFX_RANKUP + ret z + ; Kill all sound without pops. ld a, %00111111 ldh [rNR11], a