Pacman ist hier: https://github.com/vossi1/pm500
Fort läuft auch im Rasterinterrupt.
Das Spiel ist übrigens, wie auch Pacman, vom Atari 800 portiert worden.
Auf den Ataris läuft es deutlich besser, da man das Antic-Programm nur ändern muss um den passenden Ausschnitt aus der map auszuwählen. Der Antic erledigt das also quasi in Hardware.
Auf dem C64 muss kontinuierlich Map-Ausschnitt in den Bildschirmspeicher kopiert werden. Das geht nur durch selbstmodifizierten code in akzeptabler Zeit. Allerdings zuckt das Bild deshalb immer noch gelegentlich.
dmdcalc:
ldx #16 ; playfield lines to calc
ldy #1 ; lda map... address parameter offset
clc
dmclclp:
lda adr1_i
sta dmmadr,y
lda adr1_i+1
sta dmmadr+1,y
tya
adc #6 ; calc next lda instr
tay
inc adr1_i+1
dex
bne dmclclp
; copy screen
ldx #39
dmmadr:
lda map+$000,x ; only dummy address - will be calculated in game!
sta play_scrn+3*40,x
lda map+$100,x
sta play_scrn+4*40,x
lda map+$200,x
sta play_scrn+5*40,x
lda map+$300,x
sta play_scrn+6*40,x
lda map+$400,x
sta play_scrn+7*40,x
lda map+$500,x
sta play_scrn+8*40,x
lda map+$600,x
sta play_scrn+9*40,x
lda map+$700,x
sta play_scrn+10*40,x
lda map+$800,x
sta play_scrn+11*40,x
lda map+$900,x
sta play_scrn+12*40,x
lda map+$a00,x
sta play_scrn+13*40,x
lda map+$b00,x
sta play_scrn+14*40,x
lda map+$c00,x
sta play_scrn+15*40,x
lda map+$d00,x
sta play_scrn+16*40,x
lda map+$e00,x
sta play_scrn+17*40,x
lda map+$f00,x
sta play_scrn+18*40,x
dex
bpl dmmadr