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

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #15 en: Julio 17, 2015, 22:38:27 »
Riq, a buen profesional le preguntas  ;D ;D ;D

Buscaba una rutina comprensible y simple, sin paja y polvo para destriparla. Venia con un cargador en basic, abri el monitor del VICE y copié la rutina.

Como digo, no lo comprendo del todo y sigo dandole palos para ver por y para que es todo.

Esta rutina hace lo que comentas, pero si puedo hacerla mas simple mejor.

LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #16 en: Julio 17, 2015, 22:41:27 »
  Pues fijate para un Carnicero,...en cualquier caso lo importante es EL HIERRO!!! y luchar y luchar y aunque perezcamos en la batalla moriremos combatiendo!!,...ja,j,aj,aj,ja

  Tengo que probar todas estas rutinas,..buff se me acumula el trabajo, como siempre!!

   saludos.

Me pasa igual. Solo tengo las noches para trastear y aprender. Por desgracia (o no), ser autodidacta consiste en encontrar las 1000 maneras diferentes de hacerlo mal para saber hacerlo bién.  ;)

Por eso creé el hilo de rutinas mas o menos útiles. Con rutinas sencillas se aprende y yo las necesito muuuuuy simples  ::)
« última modificación: Julio 17, 2015, 22:42:59 por Maniako »
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 #17 en: Julio 19, 2015, 05:57:48 »
La importancia de no saltar de página

La documentación del 6502/6510 dice que LDA $FFFF,x y STA $FFFF,x tardan 4 ciclos... salvo que se salta de página, y ahí tarda 5 ciclos.
( http://unusedino.de/ec64/technical/aay/c64/blda.htm )

La verdad que nunca le presté atención a ese detalle hasta hace unos días atras cuando noté que por alguna razón la "raster bar" no estaba sincronizada.

No entendia bien porque, hasta que me di cuenta que estaba haciendo el "salto de página" cuando accedia a esa memoria. Asi que lo único que tuve que hacer es poner los colores en la direccion para que haya salto de página.
El salto de página es algo así como:

Código: [Seleccionar]

*=$0800
    ldx #00
loop:
    lda colores,x
    sta $d800,x
    inx
    cpx #16
    bne loop

*=$5f8
colores:  .byte 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

El color 8, salta de página... va la página $0500 a las $0600, y eso hace que esa operación tarde un ciclo más.

Respecto a esto, algo que aprendí a querer, son los segmentos del ca65... al principio me parecian que agregaban complejidad innecesaria, pero ahora que el proyecto se agrando, puedo mapear los segmentos a los lugares que necesito sin tener que cambiar el código. Asi es como se ven mis segmentos ahora, donde tengo en memoria 2 partes del juego: la pantalla del menu principal, y la pantalla del about
Código: [Seleccionar]
SEGMENTS {
    SIDMUSIC: load = RAM,      type = rw,  start = $1000, optional = yes, define = yes;

    #
    # About:
    #    GFX     $2000 - $2710 (Koala)
    #    CHARSET $4800 - $4fff
    #
    ABOUT_GFX:      load = RAM, type = rw,  start = $2000, optional = yes, define = yes;
    ABOUT_CHARSET:  load = RAM, type = rw,  start = $4800, optional = yes, define = yes;
    ABOUT_CODE:     load = RAM, type = rw,  start = $5000, optional = yes, define = yes;
    ABOUT_DATA:     load = RAM, type = rw,  start = $6000, optional = yes, define = yes;

    #
    # Main Screen:
    #    SCREEN  $8400 - $87FE
    #    CHARSET $8800 - $8FFF
    #
    MAIN_CODE:      load = RAM, type = rw,  start = $7000, optional = yes, define = yes;
    MAIN_SCREEN:    load = RAM, type = rw,  start = $8400, optional = yes, define = yes;
    MAIN_CHARSET:   load = RAM, type = rw,  start = $8800, optional = yes, define = yes;
}

de esta manera, si quiero cambiar la posición de algunos segmentos porque necesito usar la memoria de una manera diferente, solo tengo que editar un solo archivo en vez de editar varios.
« última modificación: Julio 19, 2015, 06:17:54 por riq »

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #18 en: Julio 26, 2015, 18:16:58 »
Conversores de imagenes

Estuve usando Timanthes para convertir imágenes a formato Koala. Si bien el resultado estaba bien, Project One v0.5 es muy superior.
Project One no lo pude hacer andar en un Windows 8.1, pero me anduvo muy bien en una Mac con Wine instalado. El único truco es que hay que instalar gdiplus usando winetricks.
Y yo mucho más contento usando Wine que Windows ya que mi computadora principal es una Mac.

Asi me quedó el grafico luego de haberlo convertido con Project One:


Project One tiene muchicismas más opciones para convertir imagenes y la el resultado es mucho mejor!

Downloads:
« última modificación: Julio 26, 2015, 18:19:24 por riq »

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #19 en: Julio 27, 2015, 00:21:50 »
Comparandola con la otra si, se ve mucho mejor. Mas colorida y ahora se ve el monociclo.

Tengo un block de notas que no deja de crecer con recomendaciones.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #20 en: Julio 27, 2015, 03:39:38 »
La imagen mejoró muchísimo! quizás tiene demasiado gris de fondo.

A ver que tal ese Project One
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Mode 2

  • Commodorista
  • ***
  • Mensajes: 97
    • Ver Perfil
    • brick Fabrik
Re:Assembler - Cosas que voy aprediendo
« Respuesta #21 en: Julio 27, 2015, 10:40:02 »
Muchas gracias Riq por tan interesante aporte, soy cepecero (diría más bien que multisistemas en la actualidad) aunque me gustaría hacer algo para el C64 en un futuro.
https://brickfabrik.webador.es/

BUSCO: VideoPac+, Jaguar, Saturn, Micromanía 1, Amstrad Semanal, MicroHobby, juegos especialmente CPC y Vectrex, Aquarius, Sam Copé, 520 ST, Everdrive SNES, manual +3, manual CPC664.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #22 en: Julio 29, 2015, 19:01:12 »
Bancos de memoria: $1000 y $9000

Esto que voy a decir esta documentado en varios lados, pero yo por alguna razón me lo había prestado suficiente atención.

Como sabrán la C64 tiene 64k de RAM, pero el chip VIC solo puede ver 16k a la vez. Entonces para decirle al VIC que uso cierta parte de la memoria uno simplemente cambia el banco:

Por ejemplo, para usar el banco de $8000 - $BFFF se hace esto:

Código: [Seleccionar]
; Vic bank 2: $8000-$BFFF
lda $dd00
and #$fc
ora #1
sta $dd00

y eso hace que la pantalla, sprites y demas, que normalmente estan en el banco 0, ahora esten en el banco 2.

Pero si uno usa los bancos 0, 2 ($0000-$3FFFF y $8000-$BFFF) no se pueden usar la direcciones que estan entre $1000-$1FFF  y $9000-$9FFFF para poner sprites, graficos y charsets. Cuando le dicen al VIC que use esas direcciones, los lee de la ROM en vez de la RAM.

El jueguito va tomando forma... aún no hay jueguito, pero al menos ahora tiene un menu principal y un "choose rider".
https://www.dropbox.com/s/x2grp14do6w4jyb/therace.prg?dl=0

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #23 en: Julio 29, 2015, 20:33:22 »
Va tomando forma.

Me suena a Boulder Dash esa tipografía, ¿puede ser??

Sobre los bancos y lo de leer la ROM, ¿puede ser que haya algun truco para usar alguno de esos espacios? me suena algo el tema...
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #24 en: Julio 29, 2015, 20:43:52 »
Si, bien ahí. Son los fonts del Boulderdash... estoy tratando de darle un look muy retro al jueguito. Lo que quiero hacer es un juego que se parezca a los juegos del '82 / '83.
Quiero poner graficos y efectos muy muy básicos... Estoy un poco cansado de los jueguitos del iPhone / Android que dicen ser retros... entonces lo que quiero hacer es un juego "retro retro"... es decir, hacer un juego en una plataforma retro (la c64), y que el juego en si mismo sea retro para esa plataforma.

Entonces cuando alguien me diga "mira el super jueguito retro que tengo para el iPhone"... yo les voy a decir "Y mira el jueguito retro retro que hice yo para la c-64" :-)

Si, esos espacios se usan para poner código, o música... de hecho el espacio $1000 generalmente se usa para música... pero no los uses para poner nada que requiera que VIC los lea.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #25 en: Julio 30, 2015, 14:30:55 »
Vaya motivos para hacer un juego!! :D :P
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #26 en: Julio 30, 2015, 14:32:14 »
Si, bien ahí. Son los fonts del Boulderdash...
Es que soy un gran fan de ese juego.


estoy tratando de darle un look muy retro al jueguito. Lo que quiero hacer es un juego que se parezca a los juegos del '82 / '83.
A ver si lo consigues, los juegos de esa época tienen un sabor distinto.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Assembler - Cosas que voy aprediendo
« Respuesta #27 en: Julio 30, 2015, 15:59:02 »
... los juegos de esa época tienen un sabor distinto.

Ahora entiendo el porqué no conservais nada de esa época, OS LOS COMIAIS!!!  :o

« última modificación: Julio 30, 2015, 16:00:53 por Maniako »
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Assembler - Cosas que voy aprediendo
« Respuesta #28 en: Julio 30, 2015, 16:20:11 »
Capitán Literal al ataqueee! :-P
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Assembler - Cosas que voy aprediendo
« Respuesta #29 en: Julio 30, 2015, 16:42:32 »
Vaya motivos para hacer un juego!! :D :P

Ja. La idea del juego fue mutando mucho...  Desde hacer un juego de olimpiadas de monociclo par la PC, hasta a hacer el "muni race" en formato "retro retro" para la C64. Pero nada garantiza que es la idea final... quizas el mes que viene vuelva a cambiar de parecer :)