From 9ab1595624270fef2c6dc5f91105d1f0013e5c2d Mon Sep 17 00:00:00 2001 From: Christian Johannesen Date: Fri, 16 Oct 2026 12:30:59 +0200 Subject: [PATCH] Fix Neon Rift scroller and raster timing --- neon-rift/neon-rift.asm | 16 +++++++++++++++- neon-rift/neon-rift.prg | Bin 1981 -> 1993 bytes 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/neon-rift/neon-rift.asm b/neon-rift/neon-rift.asm index 399c5da..a51a5c1 100644 --- a/neon-rift/neon-rift.asm +++ b/neon-rift/neon-rift.asm @@ -341,6 +341,16 @@ scroll_shift_loop: sty scroll_position lda scroll_message insert_scroll_char: + ; The message is stored as portable ASCII. The VIC-II character screen + ; uses screen codes, where uppercase A-Z are 1-26 rather than 65-90. + ; Convert explicitly instead of relying on the assembler's active + ; conversion table. + cmp #65 + bcc store_scroll_char + cmp #91 + bcs store_scroll_char + and #$1f +store_scroll_char: sta $07e7 inc scroll_position lda palette @@ -434,6 +444,9 @@ silence_sid: rts draw_raster_frame: + ; Keep the KERNAL IRQ from interrupting a color change halfway through a + ; raster line. It is enabled again before returning to the main loop. + sei lda #45 jsr wait_raster lda old_d016 @@ -469,6 +482,7 @@ raster_band_loop: and #$f8 ora scroll_fine sta $d016 + cli rts wait_raster: @@ -626,7 +640,7 @@ bass_notes: !byte 0,0,0,0,3,3,3,3,5,5,5,5,3,3,1,1 drum_steps: !byte 1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0 scroll_message: -!scr " NEON RIFT RASTER LIGHT MEETS EIGHT ORBITING SPRITES AND THREE VOICES OF SID GREETINGS FROM C64.P20.DEV " +!text " NEON RIFT RASTER LIGHT MEETS EIGHT ORBITING SPRITES AND THREE VOICES OF SID GREETINGS FROM C64.P20.DEV " !byte 0 star_positions_lo: diff --git a/neon-rift/neon-rift.prg b/neon-rift/neon-rift.prg index 1c2c77774813dacd266ea440d177666da8f46d66..872874ef221c5dd8a86cb30d77d92dfd69ce8bcc 100644 GIT binary patch delta 898 zcmY*YO=uHQ5Z<)4Nq6ghQE81o=oV>f4j#1h;7LRfl&S|s1fj%>pdffMQERtNO{=jJ zBL%_3`gdu!_*z9TMHbYP0hK`(FQViiHK!PqLNtQTQ}E}q%$x7~=FK;6Hb4o*weAbc zpK@ORaHeDaH|MG4q}$XuYRv;xOXa|p^QBE)1UEZ%(>ZMoY>Fv|X#%Q?=@L{2(`Bem zraaVorYlh0Op{POOav8YD&VdW80=j|r5xuaIrOr33qd{VO-m}qu}_*1dh^%rboQh{ z8PE_Y2f7Fv2f3h8P!==>zlqMmkJ8AscN;o(+g>kgea(4hI(=qJstiuWBimb}$TfmZ zQwJjb?l@AVU2Io}poWlamcj#{+e-VmQylGy$PL^oYRNgrER8t4PCN^ujceCi{)4x2 z%x{q%G)rE3VYAUW4)Wxe2 zs1YQ^5K2)Qa8{croI~C;&BQ4!n+LDc8j+FY4tZkOD_iFIO@*j6bOfki+WI!yPTd%|8JeS%T#N delta 868 zcmY*XO-NKx6n^8FGrouKn+&JPB%VatEL@bhs7+LxG9!>cXc4m#@~6!IznnDMNJq3; zg*+%-osb?2eNcVKmdqX$v=8t5 zq56>&L&!#Cz*E}9%uP(2rkUv0vSt5a1>M4m&Mm21cx3SJcn?q9h-u2kU&`A*96gyA zr}R)>N8GhYK3C7%&jzqMZFBUo@n8UI+NQ6Of&@J>4jfu z3%b&a=|uN!EUi}CRLgSJesf-4FsW9{B2N}8`XL2U>y^wqa%}CSybGBR;duKy%lWb^ zpZ!CeS~8+VxJHoA9pY_u2UMli`sFmJhSgorF;nSZ2xR&8_BjLDM1LM` UQN|qQO*IB`SdBlwR5}s<1^uvV`~Uy|