From 7e59a596ffd40a2bb17075ede0d4ba309fb08c69 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sun, 2 Mar 2025 10:45:31 +0100 Subject: [PATCH] Synchro - NTSC flicker fix --- art/animations.asm | 232 ++++++++++++++++++++++----------------------- lumber.asm | 17 +++- lumber.xex | Bin 19856 -> 19517 bytes 3 files changed, 130 insertions(+), 119 deletions(-) diff --git a/art/animations.asm b/art/animations.asm index bc1b5c7..5a02205 100644 --- a/art/animations.asm +++ b/art/animations.asm @@ -97,31 +97,31 @@ mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p2 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p3 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p4 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_r_ph3p1 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p2 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p3 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p4 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p5 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph1p1 animation_addr mva #1 LumberjackDir ; right side rts @@ -133,31 +133,31 @@ AnimationR2 = AnimationR1 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p2 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p3 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p4 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_l_ph3p1 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p2 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p3 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p4 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p5 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph1p1 animation_addr mva #2 LumberjackDir ; left side rts @@ -169,31 +169,31 @@ AnimationL2 = AnimationL1 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p6 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p7 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p8 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_r_ph3p6 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p2 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p3 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p4 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p5 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph1p1 animation_addr mva #1 LumberjackDir ; right side rts @@ -204,31 +204,31 @@ AnimationL2 = AnimationL1 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p6 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p7 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p8 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_l_ph3p6 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p2 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p3 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p4 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p5 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph1p1 animation_addr mva #2 LumberjackDir ; left side rts @@ -239,28 +239,28 @@ AnimationL2 = AnimationL1 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p2 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p3 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p4 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_r_ph3p1 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p11 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p12 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p13 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p14 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph1p1 animation_addr mva #1 LumberjackDir ; right side (kill) @@ -273,28 +273,28 @@ AnimationR5 = AnimationR4 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p2 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p3 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p4 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_l_ph3p1 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p11 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p12 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p13 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p14 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph1p1 animation_addr mva #2 LumberjackDir ; left side (kill) @@ -307,28 +307,28 @@ AnimationL5 = AnimationL4 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p6 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p7 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p8 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_r_ph3p6 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p11 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p12 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p13 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p14 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph1p1 animation_addr mva #1 LumberjackDir ; right side (kill) @@ -340,28 +340,28 @@ AnimationL5 = AnimationL4 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p6 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p7 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p8 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_l_ph3p6 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p11 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p12 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p13 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p14 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph1p1 animation_addr mva #2 LumberjackDir ; left side (kill) @@ -373,31 +373,31 @@ AnimationL5 = AnimationL4 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p2 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p3 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p4 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_r_ph3p1 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p7 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p8 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p9 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p10 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph1p2 animation_addr mva #1 LumberjackDir ; right side rts @@ -409,31 +409,31 @@ AnimationR8 = AnimationR7 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p1 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p2 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p3 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p4 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_l_ph3p1 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p7 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p8 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p9 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p10 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph1p2 animation_addr mva #2 LumberjackDir ; left side rts @@ -445,31 +445,31 @@ AnimationL8 = AnimationL7 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p6 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p7 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph2p8 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_r_ph3p6 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p7 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p8 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p9 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph3p10 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_r_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph1p2 animation_addr mva #1 LumberjackDir ; right side rts @@ -480,31 +480,31 @@ AnimationL8 = AnimationL7 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p6 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p7 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph2p8 animation_addr jsr RestoreRedBar - waitRTC + WaitForSync mwa #gamescreen_l_ph3p6 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p7 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p8 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p9 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph3p10 animation_addr - waitRTC + WaitForSync jsr branches_go_down mwa #gamescreen_l_ph2p5 animation_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph1p2 animation_addr mva #2 LumberjackDir ; left side rts diff --git a/lumber.asm b/lumber.asm index 0dc665c..909f24b 100644 --- a/lumber.asm +++ b/lumber.asm @@ -9,7 +9,7 @@ ;--------------------------------------------------- .macro build - dta d"0.00" ; number of this build (4 bytes) + dta d"0.01" ; number of this build (4 bytes) .endm .macro RMTSong @@ -25,6 +25,7 @@ display = $a000 .zpvar temp .word = $80 .zpvar temp2 .word .zpvar tempbyte .byte + .zpvar SyncByte .byte .zpvar StateFlag .byte ; 0 - game, 1 - start screen, 2 game over screen, etc. .zpvar PowerValue .byte ; power: 0 - 48 .zpvar PowerTimer .byte @@ -172,6 +173,7 @@ DLI2 nop nop mva #$c6 COLBAK + inc SyncByte pla rti DLI3 @@ -314,7 +316,7 @@ right_pressed ; death by lower right branch mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr - waitRTC + WaitForSync mwa #gamescreen_r_ph1p1 animation_addr mva #1 LumberjackDir ; right side bne LevelDeath @@ -367,7 +369,7 @@ left_pressed ; death by lower left branch mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr - waitRTC + WaitForSync mwa #gamescreen_l_ph1p1 animation_addr mva #2 LumberjackDir ; left side bne LevelDeath @@ -1000,6 +1002,15 @@ KeyReleased rts .endp ;-------------------------------------------------- +.proc WaitForSync +;-------------------------------------------------- + lda SyncByte +@ cmp SyncByte + beq @- + rts +.endp +;-------------------------------------------------- + initial_branches_list .by 1,0,2,0,1,0 ; diff --git a/lumber.xex b/lumber.xex index 6622f7503eb3ea6a3ddf62c766d9738007d1ee51..4753907df28395c37e373813ffd1ab3bd5ce69e4 100644 GIT binary patch delta 3087 zcmcguTW=dh6prm&8WU1KfRqM_POGG9h+VlYg#v}R0YZ~FK)I9_dReEWjTvW!)F*gg zLz}e|HzTE9m4Z-2WXY<>@#fa2f-E6HqikOoq5c3KsEZl9lGzY88CsKq|-=e>hEo^>%p3ahbmX|^2WHrQniy~0w6TJa=H!m6mcP>P&BDx(y z&6t*Xf6(M=eOY)2CGyKh&yCvyJ`6c{wYh;RxCip>=W$orusfIm#VcMS(WR zgbtAgFZC-|0uM{*oJh+^y_Y^o9`l-DpA|gCK_fPm&lyT|sn75{V8hSb@C!EFV!;w$ zdaofcqU{C%^|~m~oscQjGbN2)L)mGy3|c{#6}-xUCF3^@rJ376Bq$T>F<;aq9z%VsaUJuD@a4fAr@@v*CU$=t8 zR`3P~mW+=YN;BgU$!l=D@0@5l+&{_6NZ^qN(YY_%Qf{;1S8Vu@1?!#re>Cd}%c8uJ zCk-r_yq&Tc2sXT){#?C1C8)loccFZW-y9c|JK zR%ftQ&zh)*%;3T_R;M|v2RMykXevx$b&5+ifn*97Cb2+0N!REkzUlc>NV;;9cyz&g z)3YF?;&ovUIqpkVDhRFsEMMMTKQQ*q7B%4xM6&n!xP5rMXlS!X_$ zifOw+=hsIXVK(L|hq;E2Hv(whxm}jx>)h@-w;L<_r=@0EW=fXrR#Wr` zhMhs^PwNRMA5LT;TE|lzpaZi9Y z0Z|qc6|3WzWU-pTWE`s$lMGhVm{1IZBFx2`^hf5GI7wrH57&44lpliIYeq!2Qyp*? pw;`XX{1t4f8kUE-Uh#G9+WfKjMH&zCD#|zH;$7u*SF^Jx^f&D%1s6uGj*1Xh6fK>e@;qK&$(kXC7h#1B6~777qnNGO0J!W|p0(;cfMC9$ma z-gEEVnX_l^&UOAh_n{BmpT1oy{ib~WZmp-4WOCH3nHn|&xe+>yKEmjevEHQEU3qAcl!@Dbo|5>eU1I)M)W84$12I%5Ldm|#Vc+bqZvh*T{-r~1w?oiR1Enl?h|rx&AyNvv zYbjQO+C|8@#5M>4Sx05o1cX?TkjlT-S!xp&?6%Bs0i&5 zp~plBmPjsm=3Nj2S^}YpLN=kTc7hV2Z4UcZhkYB^4n7@rNSO~||E18H3G@J83|X?{ z9<*0in)4xt{V>=LLXX=aWkPIa0ugJ$9$8(XM5t4Q zgo+{X4zPFF@=9i<74x*XjAv|!*iV0-joFYaLaSXN#JQuy5@Bm80O2oTTYzFota?RU zOaM~Z{;MFs$}4~fC0(Tgwu}4VZV}ocLidP}<1I?qW{CNphsa7R;)%+#Nco_AvVxVN zr$lJ42s!smH-s$z3?X*H(mVH(4iR?g0#)X>tKOl|#RYP*U+Eb_p!2D6h%8a4ti~D$ zXL``W0QA{1ln+3DtOl^|!>S+aUab1C?!l@T z>k?KyAj>rTAqf_LCVw1NB`ouQHPEpyT7OQshIYyNy6I-G8PG%1#-h1Ze^t`n>Ip_> q6thVmlB^AASkaF6GzSjSgM6fRu4hy58|A2kN22puG=77$Kk*MhmchdS