Autor Tema: Tutorial para comenzar a programar C en C64  (Leído 57641 veces)

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 233
    • Ver Perfil
Re:Tutorial para comenzar a programar C en C64
« Respuesta #75 en: Diciembre 28, 2017, 18:23:57 »
De nada @HyLian :)

Eso de la basura es fácil de explicar, es que en las posiciones $1000 a $2000 el VIC-II mira a la rom de caracteres y no a la ram.
« última modificación: Diciembre 28, 2017, 19:00:49 por Wood »

HyLian

  • Commodorero
  • **
  • Mensajes: 25
  • SYS 0
    • Ver Perfil
Re:Tutorial para comenzar a programar C en C64
« Respuesta #76 en: Diciembre 29, 2017, 10:00:42 »
De nada @HyLian :)

Eso de la basura es fácil de explicar, es que en las posiciones $1000 a $2000 el VIC-II mira a la rom de caracteres y no a la ram.

Justo era eso, movi los sprites al $3000 y ya lo tengo dando vueltas por pantalla. Gracias por la ayuda :)

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 233
    • Ver Perfil
Re:Tutorial para comenzar a programar C en C64
« Respuesta #77 en: Diciembre 29, 2017, 10:19:12 »
Justo era eso, movi los sprites al $3000 y ya lo tengo dando vueltas por pantalla. Gracias por la ayuda :)
Genial, fuerza para tu proyecto.

HyLian

  • Commodorero
  • **
  • Mensajes: 25
  • SYS 0
    • Ver Perfil
Re:Tutorial para comenzar a programar C en C64
« Respuesta #78 en: Diciembre 29, 2017, 12:41:28 »
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:

Código: [Seleccionar]
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:

Código: [Seleccionar]
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

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 233
    • Ver Perfil
Re:Tutorial para comenzar a programar C en C64
« Respuesta #79 en: Diciembre 29, 2017, 13:07:28 »
yo uso una variable para el estado anterior para no haber repetición dentro de un determinado tiempo

mi rutina es esta y la llamo desde mi rutina de interrupción IRQ:

Código: [Seleccionar]
;---------------------------------------------
;void read_joystick(void);
;---------------------------------------------

.export _read_joystick

_read_joystick:
                        lda #$ff
sta $dc00
lda _joystick
sta _joyPrevio
lda $dc00
eor #$ff
sta _joystick
rts