From df9b65e78ffd2f02d8d4685e06ec11b587bc17c0 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Fri, 3 Nov 2023 01:20:40 +0100 Subject: [PATCH] Timer pause. --- bin/DMGTRIS.GBC | Bin 131072 -> 131072 bytes bin/DMGTRIS.map | 82 ++++++++++++++++++++-------------------- bin/DMGTRIS.pocket | Bin 131072 -> 131072 bytes bin/DMGTRIS.sym | 60 ++++++++++++++--------------- src/include/globals.asm | 13 +++++++ src/state_gameplay.asm | 14 +------ src/time.asm | 8 ++++ 7 files changed, 93 insertions(+), 84 deletions(-) diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index 970fbcc9192ec6f01593d796982378d67f940a65..350d854627624a8e44d8c60c95c245b1d12ebd6e 100644 GIT binary patch delta 1787 zcma)+Z)h839LJwub4eSM{<+e|TWxKg>Y96Wq9BU6YnrVob%icsBLlZ#>#B~fdm)Gj zD>h?Jd?8p9+SD@YZF!-HuGUmjP^5AZE^8k)1}id)MqgBnI8G-HQn~nCF1MV+fp0FK z`~Ay3-{1Ex7ORWJ>OR>IH3P@ePr~<(T@ndGKH_s=GzWe}qr?Xwmw#(v71%wG<}k_v z;;58<#`%pys&v#E9W45<3bL4w{7y z{~dH3V0B8Aq<{9rAl>Sbc@Ptyw~sZ6qF(Yh<@DxN7uWC@71Q^1WNYdr!pEP(rzq4S z_DtKIS(ne@4;LM>j{H4EPS#uej~1P>E+(#YOHGbKjT}S;ha7AvaB@&g;6SWtfzZPO zjT8EDH?0%ta$+gq+p|LGq)2Bw>9J1Qy_1GT{8K=?;X)DjFUlLD@)}XzB(7;KyyD-c zS4+5bGdV3P6Aj8}bK(`T-=l5lcd2@-stao33vp+{Egs+Rf{Xm%07fxD4%$!n!9k2p z0jg)Li0GDVSw4RwKR9MD;s*~{w}}VHK|dw)XkpRTZQ#Q5V9D>!E>c;8mA*LWosl@pEgX5$10_cTjH@bY{6al{M~ zWj=G3gUQ`}QG(B0fC=!Gn0ImP0<@zt23>`ATIirTEUTa)-vo0cFROSu$LE+oI3fd`XM55o%} zCBGboHbElF>5-s2zd?f`IvUbw{t_L>v?FtE7`8k+CPn4ffcCqN#AfXecJ*q1va5?u zCVzVt?q-YS`$qAy3N7UoFy6GWW@9c_tr2Xz%f=xaM{Ru6#*-D+C|&X;ms1ePERDcK z=M)pNcO5p7&-h~eKY5LBjG?rXDQ)0~Rb)r9qF+@}t>Wb>vLiduxH)308fK@rMii^a zbg-fgRb+}-(XN}AyUps8Z1ugF{*!RR!?ynQTg;+t>+k3#6*D#eD!F^uJ9NVsIL=O` z#s4c|nxn^=+!qJYSfi@q`gPW0ypoqy+-&ititn^|OU3OLYbwST7ggMCF_**lTilSt z4_Pea@FNy?+g#+B92J>lJF$PA1N=)>WOg3L=QG zN;Bs0g@Uz5lR5_8))%5|>$*&{7b4Y*a9R7XG1!nI<6 zfniBB`?Tw8XJ@se&gh`gTPpBeFqT5TNjlL&9^#C* zi~lR;+)3*c5odq&r69Y`Cv%XNK5HEbqy@dq2MT&{!Ob>oCh6=w8}g3&DCVY~MF$Dg zG4z?%+Vbv@gHM#4vfj*hl~`Hl_=id^Sr15;IywW6RfimFUUkYbZk3f|0SQG?0SS}c zVe&R6CpyUM0{K{)kA$|Jz{DevbQ^i8jdW}zrv>ywM7!Z;lHQ+`prE{ll{c|_QcIlW z*T|JJD&I`D3d&f6G8~k~g;ykx&?`M9Y#e~|Tz?;8QouOL7R>ecBjzA5^^_HXao?J) zD8@H({Ui1wu79U>D{aQR_^&X!QieMiC5jQF(=CM<@;F7cf{K{U;(?H)Vc+RET9}Ap za#ffs_LOFc-o&?X%L(+{47jLdnEO6~4plk4*ZA`?EjVT?_{dhU-F&*OrDJ5VkJcSe zpphByR|cI;ptq_VZsGE_OydPxiXqbU96ZAA!ODxDu7Tg#62)_Ur6Xi9vKUFCYYFd; z-6;71uykk!u@HWslK0AHzMG8_DZ7hu-Q1q!d<~A4*R+7y(no0vC@${ z%EI{89ucD>=U@y%WolWJItQ&x1!L~jRem2*RJ zxa4O=tW9S40ayoOCOH6MBQRwInjDIlJ1_u;T|TP*-$G0;_7Exa?KIq%d2$e*hiK;W zL1+m_v2tiA<}F?(u{aryYovIAj3V+*?%E)%_||&_<>!d@o6ZP9?RR?hYk$zIn|Lz6 z?twe$V!57SbVh}y$_gki+gP(PTd389ZM@0GaU1Wj@je@mS6L%uK9o5#3z6LX5RA1= zP$9dQV3`RSABz7cukmRyly*_24g92r^hj3piyEpmyjVkeWEV4Pj##OM>FKQzr5aKl ztY||GsUlXi{U#P}v-%8OeRr<+0POeCt$+D0wJ6>C`+8YLRLwuj-Y)tM-7p4@(o<^?R8>^JM0<=^@}i1@7B8!)+2R!ywOXvH2w7ZGQHRBB0o`kHLjm1y zakzjUw79*1wp6*~Swh`8Z3>ExfBSTrTJ+VlY0`58C(z8}GOAdp4f6an9tsu`zVfmbhx;>n7(;&cYMV F`~#*daozv` diff --git a/bin/DMGTRIS.map b/bin/DMGTRIS.map index f1eb61c..70f06f8 100644 --- a/bin/DMGTRIS.map +++ b/bin/DMGTRIS.map @@ -357,46 +357,46 @@ ROM0 bank #0: $27eb = EventLoopPostHandler $27ed = EventLoopPostHandler.wvb_u3 $27ff = EventLoopPostHandler.vblankjumps - SECTION: $2808-$2875 ($006e bytes) ["Title Function Trampolines"] - $2808 = SwitchToTitle - $2812 = TitleEventLoopHandler - $281c = TitleVBlankHandler - $2826 = DrawOption6 - SECTION: $2876-$28de ($0069 bytes) ["Time Functions"] - $2876 = TimeInit - $288b = ResetGameTime - $2896 = CheckTorikan - $28ad = CheckTorikan.failure - $28af = CheckTorikan.success - $28b2 = HandleTimers - SECTION: $28df-$2930 ($0052 bytes) ["Tile Functions"] - $28df = LoadTitleTiles - $28fd = LoadGameplayTiles - $2913 = LoadGameplayTiles.gbc - $2922 = LoadGameplayTiles.dmg - SECTION: $2931-$295e ($002e bytes) ["Memory Functions"] - $2931 = UnsafeMemCopy - $293a = SafeMemCopy.wvr_u1 - $293a = SafeMemCopy - $2949 = UnsafeMemSet - $2951 = SafeMemSet - $2951 = SafeMemSet.wvr_u2 - SECTION: $295f-$2986 ($0028 bytes) ["Gameplay Function Trampolines"] - $295f = SwitchToGameplay - $2969 = SwitchToGameplayBig - $2973 = GamePlayEventLoopHandler - $297d = GamePlayBigEventLoopHandler - SECTION: $2987-$29a8 ($0022 bytes) ["OAM Functions"] - $2987 = CopyOAMHandler - $2993 = ClearOAM - SECTION: $29a9-$29c1 ($0019 bytes) ["Interrupt Initialization Functions"] - $29a9 = IntrInit - $29ad = InitializeLCDCInterrupt - SECTION: $29c2-$29cb ($000a bytes) ["OAM DMA Code"] - $29c2 = OAMDMA - $29cc = OAMDMAEnd - EMPTY: $29cc-$3fff ($1634 bytes) - TOTAL EMPTY: $163f bytes + SECTION: $2808-$287b ($0074 bytes) ["Time Functions"] + $2808 = TimeInit + $281d = ResetGameTime + $2828 = CheckTorikan + $283f = CheckTorikan.failure + $2841 = CheckTorikan.success + $2844 = HandleTimers + SECTION: $287c-$28e9 ($006e bytes) ["Title Function Trampolines"] + $287c = SwitchToTitle + $2886 = TitleEventLoopHandler + $2890 = TitleVBlankHandler + $289a = DrawOption6 + SECTION: $28ea-$293b ($0052 bytes) ["Tile Functions"] + $28ea = LoadTitleTiles + $2908 = LoadGameplayTiles + $291e = LoadGameplayTiles.gbc + $292d = LoadGameplayTiles.dmg + SECTION: $293c-$2969 ($002e bytes) ["Memory Functions"] + $293c = UnsafeMemCopy + $2945 = SafeMemCopy.wvr_u1 + $2945 = SafeMemCopy + $2954 = UnsafeMemSet + $295c = SafeMemSet + $295c = SafeMemSet.wvr_u2 + SECTION: $296a-$2991 ($0028 bytes) ["Gameplay Function Trampolines"] + $296a = SwitchToGameplay + $2974 = SwitchToGameplayBig + $297e = GamePlayEventLoopHandler + $2988 = GamePlayBigEventLoopHandler + SECTION: $2992-$29b3 ($0022 bytes) ["OAM Functions"] + $2992 = CopyOAMHandler + $299e = ClearOAM + SECTION: $29b4-$29cc ($0019 bytes) ["Interrupt Initialization Functions"] + $29b4 = IntrInit + $29b8 = InitializeLCDCInterrupt + SECTION: $29cd-$29d6 ($000a bytes) ["OAM DMA Code"] + $29cd = OAMDMA + $29d7 = OAMDMAEnd + EMPTY: $29d7-$3fff ($1629 bytes) + TOTAL EMPTY: $1634 bytes ROMX bank #1: SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] @@ -2408,7 +2408,7 @@ HRAM bank #0: TOTAL EMPTY: $0006 bytes SUMMARY: - ROM0: 10689 bytes used / 5695 free + ROM0: 10700 bytes used / 5684 free ROMX: 56508 bytes used / 41796 free in 6 banks SRAM: 14 bytes used / 8178 free in 1 bank WRAM0: 3503 bytes used / 593 free diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index 4efc02be86180dddb482c835995b67dd3e41101a..600b6a649ec455b023e0f856d7e13cd7fe5a3720 100644 GIT binary patch delta 1786 zcma)+Z)h839LJwub4eSM{<+e|TWxKg>XLhOq9BU6YnrVob%h$Sk%8N=byY|0UI-$> zip`i4UkKKOHnog;TVG5>S8J*%C{noym$eTYgB6)Yqe8`q<81CYzVwXh28o=3A7WdU(i zNZ__I! zT)L5*5|!}=Wu!UzirDATHuO7Gy;ao(HTk)?GwBwOKJJ1G{6IfOaX=2*NBDsOj7|Wm zXRL_mrfgY0eu8h6Vt?@zT??)SqxfpX z9Xo`h?*hk$rZ5M>gXO$iHuDXAM*f1CHyYooGI0tt%OGNPUd;4(I3=(B7 zbDD#R-Muk_Po0Nx@RgW%ar`{AqcVnEg?3u#pgAn7pdsHlb0jaTcq+&444Gw>uW)8K z441uJjA&CS{~)wNEEOFD!3ZRbKue7h%N!qsIj4uIUq?cEzL(CYzMY2qQ%?=S^B|?Z z7=kuIBFf3(kUPIYLt#1+)@c4B9mBLEb9D%|JUb>t<=3G0yN<+W?GJYKYJak;i%z6| zdj{@gi{*Pq@UjXmd1ImVkWC%|4xG7JX^PwCLjDvPJiWY3-h>MHgn^h+g#+B92Jx+{dJolKl#t*bg~6+{qW zm1fN03k7SBCUp$FtuI7zt6iqq3z6zYxU7BH7;MNaF8ZQk#c?`ukm|+fF1h6<4t#U@ z-0xrR`To9l>9i-E_I#QG7|lHj-#fQNaSTeSkP|Vpz%xX|ApqI@ZGc6f_Z%~em;x{? ziRPYiedFw|bu<_qG>m2_`*(K`%>2g$s_bjPYRopaDf{fKuj7KC)tL%!9m0v0j80%A~5dTv!-Hv z6E`?&FX9IGShvzvyqEtPqpKCTi&3H&F*@B+h#`+rR83UGTn;Bgl7@X};%IR)ipe!$ zzSLKqBYF$p#;qjKv$No$l40(L1Ug#d@B!n`E41LGt>8mj!OrT_Z7-iBO9Qm-lLQ)_ z1;07yTmrpW<8T{Suw|Mq+ENUWX69iRyB{kre6|jLXIm7{50sCSrN~kwg{~*OyZ52g z`@qtnS;Rv4Av5oltNB2`k-t#Q8;u{-8avHI)3IvfI1Bd#qd4s6cJ`xGHHek2{0SB& zw)cq`9X}7_5UNniqV#!aXH1N_*V@V2CQ?MQ3K|m{r$*#t6-^cCoguZXay8Bm$KkS{ z6|pvz<&&@h#B3@FVIweY1X>)5m_M9^V=f<6|8F6tm->j5{cZ*x$UZRy&p|Z%#SpZG zqgXjQ9P^g0kXW3I#5Gd7NX8I(JAZu$R(%^ig7Qm5`%Pzrp!Pex`n5mk)lEFvU-!e^ zbg^9D2s*1mi@5^ID>l|_%ogi4VHJFGrSSKpiOKMaR_bn9QeLoG_T{+?b@5mocginoWpLpP0qWAs$o^nWF) z=IC){#c2?XHL5CVT&6w7D|typL5o*Z)N1jnirOvKRD>)ptEkIjwutVxI8a0nS{yE- zhb`_bqHQ%UdzMjeUYmxJ5hxTNY<%0o7O-o}S){H~4XY@Dz1z1SGKWJ_GL@r^3yPtU>QPyYk_ CuW<|j diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index b524dff..d008041 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -256,36 +256,36 @@ 00:27eb EventLoopPostHandler 00:27ed EventLoopPostHandler.wvb_u3 00:27ff EventLoopPostHandler.vblankjumps -00:2808 SwitchToTitle -00:2812 TitleEventLoopHandler -00:281c TitleVBlankHandler -00:2826 DrawOption6 -00:2876 TimeInit -00:288b ResetGameTime -00:2896 CheckTorikan -00:28ad CheckTorikan.failure -00:28af CheckTorikan.success -00:28b2 HandleTimers -00:28df LoadTitleTiles -00:28fd LoadGameplayTiles -00:2913 LoadGameplayTiles.gbc -00:2922 LoadGameplayTiles.dmg -00:2931 UnsafeMemCopy -00:293a SafeMemCopy.wvr_u1 -00:293a SafeMemCopy -00:2949 UnsafeMemSet -00:2951 SafeMemSet -00:2951 SafeMemSet.wvr_u2 -00:295f SwitchToGameplay -00:2969 SwitchToGameplayBig -00:2973 GamePlayEventLoopHandler -00:297d GamePlayBigEventLoopHandler -00:2987 CopyOAMHandler -00:2993 ClearOAM -00:29a9 IntrInit -00:29ad InitializeLCDCInterrupt -00:29c2 OAMDMA -00:29cc OAMDMAEnd +00:2808 TimeInit +00:281d ResetGameTime +00:2828 CheckTorikan +00:283f CheckTorikan.failure +00:2841 CheckTorikan.success +00:2844 HandleTimers +00:287c SwitchToTitle +00:2886 TitleEventLoopHandler +00:2890 TitleVBlankHandler +00:289a DrawOption6 +00:28ea LoadTitleTiles +00:2908 LoadGameplayTiles +00:291e LoadGameplayTiles.gbc +00:292d LoadGameplayTiles.dmg +00:293c UnsafeMemCopy +00:2945 SafeMemCopy.wvr_u1 +00:2945 SafeMemCopy +00:2954 UnsafeMemSet +00:295c SafeMemSet +00:295c SafeMemSet.wvr_u2 +00:296a SwitchToGameplay +00:2974 SwitchToGameplayBig +00:297e GamePlayEventLoopHandler +00:2988 GamePlayBigEventLoopHandler +00:2992 CopyOAMHandler +00:299e ClearOAM +00:29b4 IntrInit +00:29b8 InitializeLCDCInterrupt +00:29cd OAMDMA +00:29d7 OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4210 sDMGTSpeedCurveEnd 01:4212 sTGM1SpeedCurve diff --git a/src/include/globals.asm b/src/include/globals.asm index 7b65c40..c5a8ff4 100644 --- a/src/include/globals.asm +++ b/src/include/globals.asm @@ -360,4 +360,17 @@ DEF GRADE_MM EQU 35 DEF GRADE_GM EQU 36 DEF GRADE_NONE EQU 255 +; Game mode +DEF MODE_LEADY EQU 0 +DEF MODE_GO EQU 3 +DEF MODE_POSTGO EQU 6 +DEF MODE_PREFETCHED_PIECE EQU 9 +DEF MODE_SPAWN_PIECE EQU 12 +DEF MODE_PIECE_IN_MOTION EQU 15 +DEF MODE_DELAY EQU 18 +DEF MODE_GAME_OVER EQU 21 +DEF MODE_PRE_GAME_OVER EQU 24 +DEF MODE_PAUSED EQU 27 + + ENDC diff --git a/src/state_gameplay.asm b/src/state_gameplay.asm index 25f25bc..8418c32 100644 --- a/src/state_gameplay.asm +++ b/src/state_gameplay.asm @@ -24,18 +24,6 @@ INCLUDE "res/gameplay_data.inc" INCLUDE "res/gameplay_big_data.inc" -DEF MODE_LEADY EQU 0 -DEF MODE_GO EQU 3 -DEF MODE_POSTGO EQU 6 -DEF MODE_PREFETCHED_PIECE EQU 9 -DEF MODE_SPAWN_PIECE EQU 12 -DEF MODE_PIECE_IN_MOTION EQU 15 -DEF MODE_DELAY EQU 18 -DEF MODE_GAME_OVER EQU 21 -DEF MODE_PRE_GAME_OVER EQU 24 -DEF MODE_PAUSED EQU 27 - - SECTION "High Gameplay Variables", HRAM hCurrentPiece:: ds 1 hCurrentPieceX:: ds 1 @@ -43,7 +31,7 @@ hCurrentPieceY:: ds 1 hCurrentPieceRotationState:: ds 1 hHeldPiece:: ds 1 hHoldSpent:: ds 1 -hMode: ds 1 +hMode:: ds 1 hModeCounter: ds 1 hPrePause: ds 1 hRequestedJingle: ds 1 diff --git a/src/time.asm b/src/time.asm index 052cdd9..019718c 100644 --- a/src/time.asm +++ b/src/time.asm @@ -98,6 +98,14 @@ HandleTimers:: and 1 ldh [hEvenFrame], a + ldh a, [hMode] + cp a, MODE_PAUSED + ret z + cp a, MODE_GAME_OVER + ret z + cp a, MODE_PRE_GAME_OVER + ret z + ld a, [wFrames] inc a ld [wFrames], a