From b6a703e0b2f543f170caad5240dda48aaecf2b25 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Tue, 17 Oct 2023 07:59:54 +0200 Subject: [PATCH] More testing code. --- src/include/globals.asm | 1 + src/res/sources/sfx.fur | Bin 1107 -> 1146 bytes src/res/sources/sfx.vgm | Bin 5934 -> 6219 bytes src/res/sources/sfxparse.py | 3 ++- src/res/sources/sfxregs.txt | 37 ++++++++++++++++++++++++++++++++++++ src/sfx.asm | 15 ++++++++++++++- src/state_gameplay.asm | 26 +++++++++++++++++++++++++ src/time.asm | 5 ++++- tools/Emulicious.ini | 2 +- 9 files changed, 85 insertions(+), 4 deletions(-) diff --git a/src/include/globals.asm b/src/include/globals.asm index 5f4d8dc..9d0a25e 100644 --- a/src/include/globals.asm +++ b/src/include/globals.asm @@ -108,6 +108,7 @@ DEF SFX_IRS EQU 7 DEF SFX_DROP EQU 8 DEF SFX_LOCK EQU 9 DEF SFX_BELL EQU 10 +DEF SFX_MOVE EQU 11 ENDC diff --git a/src/res/sources/sfx.fur b/src/res/sources/sfx.fur index 3fd466b3285b25b37c423351d456ef31cd9ae32a..d78959dbe8cc571853e3ea437d1bca9b48cc2739 100644 GIT binary patch literal 1146 zcmV-=1cm!}oXwO?Y#UV&$7kNGy=%wmMomNmiE68A3l&PJf}#Qv5C_sKLYRs~?TLex znqoDHQ>Q64n8t1t^+OaD2?0{Y9dY2~^n}C(E}WvCIqU%tS591z%>TW8yV(uUUU~L! zJ@aPfeay^y;`ByywYpR*tu!udEY~J>h^Rz+W4?0wtx18P6ceq@&QO7zA(x=gN#M|< z$IN5KW5WLzQIbIiApl?UJ#&aU@E)iP-HkP(XkKG9U|F;DH>-g8@(ggWv%00aAka0Pz9h1H=c2 z4-g+9K0thc_yF+%;seA7hz}4SAYR8thf&$|pmXSfWzYuY*XQ3pV2+I8Myb@ZUNp<0 zSM>hOR~Dv@<97#%sgxa>K6#AZEEmWl#r?j%yXv2rb;zGV6IN^FHt4*gHpy z&3bk9;&RQJo{mjfsx<2BH7qrZr5rC@iUx+qj!sU$(huDyV)p^PZ|U9Yh5G8nf8GAM zc>6**zS)rygg^im(g2cFE6s$>*r~LRNWBKFRGOr_!Uo-f+sk3{>3G8|no~ z-bb5lQA*)hi6W3tKEby%F<2r%mvP2}W})EaVS~;tntVHqS0P38s>`ICW9Z6PL65d3#L{9bY#JFthh>}PHp|B>pRnBHV%tH(xHMxp*D}GGwV8UqQ)Db71#N=v7yfHHTJ_uNGg`> zYS#Ox@kW*17WwEyoCJ~+ODdF%?@PuP*>yYmR@ZFf>N{*>H{+X7IiV)IfK3%~>{#=p z(U7R(y7K*uTvlT}XG)(i=Tpw9TS@9xlDd_slqM<7 zNokps79I7V(QwqUW%0Sgy)L@hSPI61V@oX~^{`5Z%v?_QoUpqnKH;GNCzj49Zz{No M+{^a=28hL(ZND)B9 znrhV~4hd;v2#wt+DpVAKgi2Ax0f`G7kt1b(-mACSYIdZ_pVdcu5Xc6PHHpuIBo zXZ_yH`_7N|#yfguZDnb0zFu8yoL^h0kM0mrmG;|o?abRp1%^^gv^+IIJ>>Mc1c#ml z4n4e0Jfb~9{=aB@uO+7^Vov**8_3EJ;4Zia9z!bL01@~LG)hE2gL^=^L}OqAw7`$x zcW@W{3C?*$x4<2+2P!_%OJE&*4}Jl^fjw{^JOFN)Xb>C+AAks42HW5!_zC<9?tnkQ z9=H!40JnlFgBQU}MIT3rQ*ynsUr9~B{2wOUb|6WuS1HYq{yJ&0l({N5@k!d*xy5>Q zs?j{4LwhPstx@cD87LsY0VUu95BQ)ADxe4Sf0Ue_j5$Z27@VRH8Sd z`HQqa{Ql&7r*G&KRBb9k`>QB3k~NYh$p*<4k`{$+3Mzj7 zIb^=DRfY3U^4iFjbf~Kr9J9Ba!Y#d^o{;1+k+($!hchQtj;9F=+Z+TU8!VeFpRhKz zSUP$k=6`k@@qiKI(t4Miz*`2ZPQV>A_KX=rX2KOr?8wI~m)Kjubxti#EF15dc)Zw* z_cGb*A8wlreo8u3I#)VPb zf!Ynvv9ERuTk-8ylBrN`@46F^Tz68g+VIHcp28;kdao>>u{7Blo5qIGV%cW-g5^t= zuUNk3aKqF&_q5gCFm=v7$=k?P`vtQgRvZeHcZIMin;tkS?{Ma%(rWSo(o#WcP>qLF zmUU$}QPnlj%qn}rjG?mLItPgomdY$Un~gqZqET0`Ndayib^^=EER|R$_7xM0^m{FR zs&#u+^%=IYnu*Q1oOAPaXH)mvj?cGqpQP?(6X5Fvl=h3wWn1hK<5l#q<6YDBzUHJ{ z&0i1wch7lT@Raq;VoJgKzJy?xvBN${|0}kh06&W9v}b! diff --git a/src/res/sources/sfx.vgm b/src/res/sources/sfx.vgm index 3e929c8385aae79126080e6d06e6b3c40a38b454..d7a250d1ee6dcd5133f35500e54893ee837c18cd 100644 GIT binary patch delta 70 zcmZ3dciKQYEIn7jU4nt3kdXlnE{ZcSWKWaXD7{8(vH}~2C^rK)5NsAy+$>-ZB83<> P3pXq_`5|$7? delta 40 ocmX?Yuue}pEIn62OPqnBkdXlnwumt>WN(+;D7{8(@)PlN0JCTbcmMzZ diff --git a/src/res/sources/sfxparse.py b/src/res/sources/sfxparse.py index 2b1145f..e95ee2f 100644 --- a/src/res/sources/sfxparse.py +++ b/src/res/sources/sfxparse.py @@ -159,7 +159,8 @@ sfx_names = [ "sSFXIRS", "sSFXDrop", "sSFXLock", - "sSFXBell" + "sSFXBell", + "sSFXMove" ] def chunks(lst, n): diff --git a/src/res/sources/sfxregs.txt b/src/res/sources/sfxregs.txt index f7be52c..b8ef726 100644 --- a/src/res/sources/sfxregs.txt +++ b/src/res/sources/sfxregs.txt @@ -832,3 +832,40 @@ sSFXBell:: db $FF, $FF, $FF, $FF, $FF, $FF, $FE sSFXBellEnd:: +sSFXMove:: + db REG_NR42_CH4_VOLEV, $21, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $21, REG_NR43_CH4_FQRND, $00 + db REG_NR44_CH4_CNTRL, $80, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FE + +sSFXMoveEnd:: diff --git a/src/sfx.asm b/src/sfx.asm index f80feb6..86bb0fe 100644 --- a/src/sfx.asm +++ b/src/sfx.asm @@ -572,6 +572,10 @@ sSFXBell:: db REG_NR22_CH2_VOLEV, $08, REG_NR23_CH2_FRQLO, $97, REG_NR24_CH2_FRQHI, $87, $FE sSFXBellEnd:: +sSFXMove:: + db REG_NR42_CH4_VOLEV, $21, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $21, REG_NR43_CH4_FQRND, $00 + db REG_NR44_CH4_CNTRL, $80, $FE +sSFXMoveEnd:: SECTION "SFX Variables", HRAM @@ -762,7 +766,7 @@ SFXEnqueue:: ret : cp a, SFX_BELL - ret nz + jr nz, :+ ld a, LOW(sSFXBell) ldh [hPlayhead], a ld a, HIGH(sSFXBell) @@ -770,6 +774,15 @@ SFXEnqueue:: call SFXPlay ret +: cp a, SFX_MOVE + ret nz + ld a, LOW(sSFXMove) + ldh [hPlayhead], a + ld a, HIGH(sSFXMove) + ldh [hPlayhead+1], a + call SFXPlay + ret + ; This play routine must be called every frame. SFXPlay:: diff --git a/src/state_gameplay.asm b/src/state_gameplay.asm index 6f6aa93..e4a864e 100644 --- a/src/state_gameplay.asm +++ b/src/state_gameplay.asm @@ -160,6 +160,32 @@ fetchPieceMode: spawnPieceMode: ; todo + ld a, [hUpState] + cp a, 1 + jr nz, :+ + ld a, MODE_FETCH_PIECE + ld [wMode], a + jp drawStaticInfo + +: ld a, [hLeftState] + cp a, 1 + jr z, :++ + cp a, 12 + jr nc, :+ + ld a, [hRightState] + cp a, 1 + jr z, :++ + cp a, 12 + jr nc, :+ + jp drawStaticInfo +: ldh a, [hFrameCtr] + and %00000111 + cp 4 + jp nz, drawStaticInfo +: ld a, SFX_MOVE + call SFXEnqueue + jp drawStaticInfo + ; Always draw the score, level, next piece, and held piece. drawStaticInfo: diff --git a/src/time.asm b/src/time.asm index 99e4dd6..b2754d9 100644 --- a/src/time.asm +++ b/src/time.asm @@ -6,6 +6,7 @@ INCLUDE "globals.asm" SECTION "Time Variables", HRAM +hFrameCtr:: ds 1 hEvenFrame:: ds 1 @@ -13,11 +14,13 @@ SECTION "Time Functions", ROM0 TimeInit:: xor a, a ldh [hEvenFrame], a + ldh [hFrameCtr], a ret HandleTimers:: - ldh a, [hEvenFrame] + ldh a, [hFrameCtr] inc a + ldh [hFrameCtr], a and 1 ldh [hEvenFrame], a ret diff --git a/tools/Emulicious.ini b/tools/Emulicious.ini index 42e7213..fbc3259 100644 --- a/tools/Emulicious.ini +++ b/tools/Emulicious.ini @@ -1,5 +1,5 @@ #Emulicious settings file -#Tue Oct 17 07:32:01 CEST 2023 +#Tue Oct 17 07:59:30 CEST 2023 WindowEventViewerWindowHeight=861 WindowEventViewerWindowDivider=309 WindowMemoryTracerWindowY=631