Genial, fuerza para tu proyecto.
Aprovecho para preguntar varias dudas que tengo. He resuelto el tema del timming y joystick pero no estoy seguro de que sea la mejor manera. Agradezco commentarios

Sobre el joystick, al principio hice un simple test del registro ($DC00), pero quiero mover una especie de cursor casilla a casilla, y eso hacia que mueva mas de una casilla ya que es muy facil que detecte mas de una pulsacion. Para arreglarlo puse un delay, pero el comportamiento es extraño. Quiero solucionarlo haciendo una deteccion de KEY_UP en lugar de KEY_DOWN.
Ademas en el joystick, mi juego va a requerir dos botones... no estoy seguro de si lo mejor es mover el segundo boton al teclado, o si hacer alguna cosa dejando pulsado el joystick... como echo en falta dos botones en la norma atari

Sobre el timming del bucle de juego hago algo asi:
while(RASTER_LINE_LOCATION == 0xF8);
while (RASTER_LINE_LOCATION != 0xF8);Siguiendo lo que pone aqui
https://www.gamedev.net/blogs/entry/2249793-first-step-explained-in-detail/ en asm:
WaitFrame
lda $d012
cmp #$F8
beq WaitFrame
;wait for the raster to reach line $f8 (should be closer to the start of this line this way)
.WaitStep2
lda $d012
cmp #$F8
bne .WaitStep2
rts