Autor Tema: Assembler - Cosas que voy aprediendo  (Leído 34824 veces)

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1013
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #60 en: Enero 04, 2016, 01:30:04 »
Si modificáis Xcar0 de 0 a 39 (eje X), el coche aparecerá justo encima de ese carácter.
 
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 12972
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #61 en: Enero 04, 2016, 01:50:04 »

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1013
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #62 en: Enero 04, 2016, 02:01:05 »
Casi. Este se mueve como un comecocos, el Head On arcade  se desplaza lateralmente hasta 2 o 3 carriles.
Ese va a "saltos" de 8 pixeles, por eso quiero usar un sprite para que se mueva suave.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 923
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #63 en: Enero 04, 2016, 22:15:16 »
  GUAU!!!!

   Animo Maniako,...super espectante me quedo!!,....es toda una alegria para mi ver como te lo curras!!!, me has dejado alucinado!!

   Un saludazo!!


riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #64 en: Marzo 22, 2016, 08:20:39 »
ahora que le agregué un editorcito de mapas al vchar64, pude recién seguir con el jueguito este que estoy haciendo. pero el juego es completamente distinto... creo que rescribí el 80% del código ya que decidí hacer un juego distinto al que pensé originalmente.

- este va a tener sprites super simplificados (extremadamente simplificados)
- no va a tener graficos bitmap
- no va a redifinir caracteres. todo va a ser petscii + sprites
- va a ser multijugador
- tiene nueva pantalla de inicio, nueva pantalla de scores, nueva pantalla para jugar
- saque el "about"... lo tengo que reemplazar por otro cosa
- no se llama más "the muni race", ahora se llama "the uni games".
- la idea es que tenga un look super super pedorro... cuanto más pedorro mejor... nada de efectitos copados ni nada de eso... bien pedorro.... un look bien "retro retro".
- y la idea es que se tenga que jugar con un monociclo de verdad (el uni-stick)... jugar con un joystick va a ser posible (es asi como lo estoy testeando), pero la posta es jugarlo con monociclo de verdad. más sobre esto en el futuro...

va a tener 3 o 4 eventos:

- saltar escaleras hacia arriba (boton del joy, ó saltar con el monociclo)
- 100 metros carrera llana  (izq-der del joy, ó idling en el monociclo)
- 2k metros carrera llana  (izq-der del joy, ó idling en el monociclo)
- 2k cross-country con obstaculos (izq-der + boton del joy, ó idling + saltar con el monociclo)


aca esta el último binario:
https://github.com/ricardoquesada/c64-the-muni-race/raw/master/bin/therace.prg

y 2 screenshots pedorros del código actual:


riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #65 en: Marzo 22, 2016, 08:38:50 »
pero en definitiva... ¿qué aprendí de nuevo estos meses?

Básicamente que si uno quiere velocidad, hay que usar tablas para tooooodo.
es como si un programase "off-line". Se hacen todos los calculos pesados en una o varias tablas, y luego se usan con algún indice.

Las tablas (con ayuda de macros) se pueden usar en cálculos sencillos, como multiplicar. Si uno sabe que va a multiplicar por 15 ciertos números, lo mejor es tener una tabla con ese precalculado. ej:
Código: [Seleccionar]
mult15:
.repeat 10,I
    .byte 15*I
.endrepeat

lda mult15,8      ; multiplicar 8 * 15

hice estos dos toolcitos para generar distintos tipos de tablas:
- https://github.com/ricardoquesada/c64-misc/blob/master/tools/easing_table_generator.py
- https://github.com/ricardoquesada/c64-misc/blob/master/tools/mult_table_generator.py

y ademas fui descubriendo el poder de las macros del cc65. Muy poderoso, aunque supongo que los demas ensambladores son similares. ejemplo de macro que estoy usando:

Código: [Seleccionar]
ADDRESS0 = SCREEN_BASE+15*40        ; left eye
ADDRESS1 = SCREEN_BASE+15*40+2      ; right eye
ADDRESS2 = SCREEN_BASE+17*40        ; left arm
ADDRESS3 = SCREEN_BASE+17*40+2      ; right arm
ADDRESS4 = SCREEN_BASE+21*40+1      ; hub

ADDRESS5 = SCREEN_BASE+15*40+37     ; left eye
ADDRESS6 = SCREEN_BASE+15*40+39     ; right eye
ADDRESS7 = SCREEN_BASE+17*40+37     ; left arm
ADDRESS8 = SCREEN_BASE+17*40+39     ; right arm
ADDRESS9 = SCREEN_BASE+21*40+38     ; hub

addresses_lo:
.repeat 10,YY
        .byte <.IDENT(.CONCAT("ADDRESS", .STRING(YY)))
.endrepeat
addresses_hi:
.repeat 10,YY
        .byte >.IDENT(.CONCAT("ADDRESS", .STRING(YY)))
.endrepeat

basicamente esas macros me generan las direcciones "lo" y "hi" de las coordenadas que les paso... nada del otro mundo, pero me ahorran bastante tiempo.
creo que aprender las macros del ensablador es tan importante como aprender las instrucciones del 6502.
« última modificación: Marzo 22, 2016, 08:43:03 por riq »

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1013
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #66 en: Marzo 22, 2016, 08:45:38 »
Cambio radical ;)

Veo que es pantalla partida. Estupendo para dos jugadores.
¿Vas a conectar un monociclo real al commodore? :o

Encoders, contadores y todo eso?.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #67 en: Mayo 06, 2016, 01:27:39 »
voy avanzando poco a poco con el jueguito, pero creo que lo termino este año.

¿que aprendí ultimamente?

no mucho. pero hay dos que cosas que vale la pena mencionar:

- manejar el teclado de manera prolija es más complicado de lo que uno imagina.
- los sprites consumen "ciclos" en el rasterline... asi que cuando uno pone sprites, hay que hacer las cuentas nuevamente para tener un raster estable.


si alguien quiere probar el jueguito (version muy alpha aún, esta aca):
https://github.com/ricardoquesada/c64-the-uni-games/raw/master/bin/unigames.prg


josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 12972
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #68 en: Mayo 06, 2016, 02:08:34 »
Críticas:
- Cuando entras a SCORES (disparo) se tendría que poder volver con disparo.
- Jugarlo con las teclas en emulador es un poco complicado :D :D
- Los sprites de los protagonistas no son realistas
- En la pantalla de arriba, el barrido hace algunas cosas raras, supongo que a eso te referias con los ciclos.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #69 en: Mayo 06, 2016, 02:29:15 »
gracias!

- Jugarlo con las teclas en emulador es un poco complicado :D :D

¿cómo? ¿no tenes un unijoysticle para jugarlo?

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 12972
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #70 en: Mayo 06, 2016, 02:42:00 »
Vaya, ya he quedado obsoleto... :D
« última modificación: Mayo 06, 2016, 03:34:57 por josepzin »

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #71 en: Julio 08, 2016, 20:17:26 »
otra cosita útil:
Para no tener que cargar cosas de disquete, es útil tener las distintas escenas del juego comprimidos en memoria (en caso que uno tenga varias escenas).
uno reserva un pedazo de memoria para una escena... digamos de $2400 a $8000, y luego todas la esceneas que esten comprimidas de $8000 a $fff0.
comprimo todo con exomizer, y la descompresión la hago con el descrompresor de exomizer.
todo el código esta aca: https://github.com/ricardoquesada/c64-the-uni-games


es es lo que estoy haciendo en la última versión del "uni games" (adjuntada).

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1013
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #72 en: Julio 09, 2016, 00:09:23 »
Eh!! El personaje es de Grog Revenge XD.

¿Es cosa mia o el salto se retrasa unos pocos milisegundos?, Cuando intento saltar alguno de los obstáculos, tarda en reaccionar y me la pego.

La velocidad en doble scroll es muy buena!!.

Le echaré un ojo al código a ver qué aprendo.  :)
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #73 en: Julio 09, 2016, 01:26:10 »
Eh!! El personaje es de Grog Revenge XD.

¿Es cosa mia o el salto se retrasa unos pocos milisegundos?, Cuando intento saltar alguno de los obstáculos, tarda en reaccionar y me la pego.

La velocidad en doble scroll es muy buena!!.

Le echaré un ojo al código a ver qué aprendo.  :)

Si, en particular es el personaje de BC's Quest For Tires, que esta basado en el comic B.C.
Y existe un tipo de monociclo llamado la "rueda BC" que esta inspirado en eso.
El jueguito es un poco un homenaje a eso. En el About cuento un poco eso.

Respecto al salto debería ser inmediato, sino es un bug. pero tené en cuenta que no se puede saltar ni bien aterrizas. En el nivel "Cyclo Cross" debería saltar inmediatamente casi siempre.