Proyecto Atari-DMD

Para comentar los proyectos de hardware presentados en la web.

Proyecto Atari-DMD

Notapor ZZT el Lun Ene 20, 2014 6:13 am

Welcome to my latest project: Atari DMD

http://www.retrogames.cl/dmd.html

Que m....a es un DMD? DMD es el acrónimo de Dot Matrix Display, o display de matriz de puntos.
Es una pantalla que permite mostrar texto, imágenes o animaciones simples de una manera económica y con poca sofisticación. Es usada en muchísimas aplicaciones como radios de auto, microondas... etc. Todo lo que use una pantalla que no necesite una tipo LCD o LED. Por supuesto que el uso que más me interesa es para los flippers. Como saben, ya hize un flipper controlado con un Atari, usando unos simples displays LED de siete segmentos. Ahora, tengo en mente fabricar otro con un aire más "moderno", que tenga una DMD para mostrar texto y puntaje. Por eso me puse en campaña a fabricar mi propia pantalla DMD, por supuesto controlada con un Atari.

Voy a usar 6 displays de puntos matriz de 8 x 8, una plaquita perforada, un cartridge en desuso y harto cable. :-D
Imagen

Imagen

Imagen

Imagen
En este caso estoy usando la línea CCTL del cartridge para controlar la exploración de las columnas y las filas con los puertos de los joysticks.
Bueno, ya está listo el hardware, y comienza el tema del software.

Imagen
Acá hice una prueba simple, solo para testear funcionamiento.

Este tipo de displays se exploran por columnas en forma secuencial, lo cual significa que por cada columna se debe enviar el estado de cada uno de los 8 leds. Y eso tiene que hacerse lo suficientemente rápido como para que el ojo no distinga el "parpadeo". :-D

Tiempo atrás hice un intento con solo tres displays (24 columnas) y en basic andubo bien. Sin embargo ahora la exploración es de 48 columnas y creo que no se podrá, por lo tanto estoy tipeando algo en assambler. A ver que tal me va. :-D
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor Poltergeist el Lun Ene 20, 2014 4:14 pm

Interesante... sería un lindo proyecto. Se podrìa aplicar a letreros para precios supongo también.
Avatar de Usuario
Poltergeist
expert
expert
 
Mensajes: 1346
Registrado: Lun Jul 14, 2008 11:36 pm

Re: Proyecto Atari-DMD

Notapor ZZT el Mar Ene 21, 2014 12:45 am

Poltergeist escribió:Interesante... sería un lindo proyecto. Se podrìa aplicar a letreros para precios supongo también.

Como diría Don Tatan "Por supoto". Esa predunta ni se predunta. :-D
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor ZZT el Mar Ene 21, 2014 9:41 am

jo jo jo
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor Poltergeist el Mar Ene 21, 2014 7:50 pm

Buenaaaaa... avanzaste super rápido... se ve la raja el Retrogames ahi con el Atari... :P
Avatar de Usuario
Poltergeist
expert
expert
 
Mensajes: 1346
Registrado: Lun Jul 14, 2008 11:36 pm

Re: Proyecto Atari-DMD

Notapor ZZT el Mar Ene 21, 2014 9:00 pm

Poltergeist escribió:Buenaaaaa... avanzaste super rápido... se ve la raja el Retrogames ahi con el Atari... :P

yes! y con la velocidad del assambler, creo que podría poner más displays. Osea, que la pantalla muestre más caracteres o que las letras sean más grandes. Lo malo, es que no tengo más displays rojos. ;,(
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor Toledo el Mar Ene 21, 2014 9:01 pm

quedo bakan,,, se lo implementaras al flipper Centigrade?
Avatar de Usuario
Toledo
expert
expert
 
Mensajes: 1007
Registrado: Vie Feb 24, 2012 7:13 pm

Re: Proyecto Atari-DMD

Notapor ZZT el Mar Ene 21, 2014 9:40 pm

Toledo escribió:quedo bakan,,, se lo implementaras al flipper Centigrade?

Nup, a otro que voy a hacer más adelante. El Centigrade quedo muy bien, tal como está. ;)
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor WillySoft el Mié Ene 22, 2014 2:26 am

Muy interesante el proyecto. Me recuerda al display que realizó Turbo Software, pero con la diferencia de que ese display tenía un microprocesador interno que "hacía la pega" del barrido, efectos y esas cosas. Lo que se hacía desde el Atari eran sólo enviarle instrucciones.

Lucho, ¿servirá instalar unos latch para cada línea de barrido a fin de mejorar la persistencia de las luces? Así ahorrarías ciclos de máquina en el Atari para otras tareas.

Saludos.
Avatar de Usuario
WillySoft
expert
expert
 
Mensajes: 635
Registrado: Mié Nov 08, 2006 1:02 am

Re: Proyecto Atari-DMD

Notapor ZZT el Mié Ene 22, 2014 5:48 pm

WillySoft escribió:Muy interesante el proyecto. Me recuerda al display que realizó Turbo Software, pero con la diferencia de que ese display tenía un microprocesador interno que "hacía la pega" del barrido, efectos y esas cosas. Lo que se hacía desde el Atari eran sólo enviarle instrucciones.

Lucho, ¿servirá instalar unos latch para cada línea de barrido a fin de mejorar la persistencia de las luces? Así ahorrarías ciclos de máquina en el Atari para otras tareas.

Saludos.

Wena Willy, estas alive! :-D Bueno, sí, en este caso Don Atari hace todo, nada de procesadores intermedios. Además todo el diseño software/hardware es mio. Eso me lleeeena de orgullo. :-D

Sobre el latch... bueno, el circuito ya tienen latch y sin embargo se ve como se ve. Quizás si le hechas un vistazo al software me puedas ayudar. En más de algo puedo estar fallando, ya que en assambler yo programo "de oído". :-X

Código: Seleccionar todo
*=$4000

; ajustes basicos

inicio
   lda #43
   sta 54018      ; pone puerto del joy en modo escritura
   ldx #255       ; carga primer número a enviar (0)
   stx 54016      ; envía número al puerto del joy

; ajustes a posicion de partida

setups

;reset
   lda #0
   sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
   lda #0
   sta 54602      ; activando el ck del latch
   lda #1
   sta 54604      ; end reset

;output_enable
   lda #0
   sta 54601      ; OE debe ser 0

;exploracion
   lda #48
   sta 6001       ; exploración columnas (48 veces)

;joy_port
   lda #0
   sta 54016      ; envía un 0 al joy (8 datos X columna)

;serial_data
   lda #1
   sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)

inicio1
; comienza ciclo de exploración para activar una columna

columnas
   lda #1
   sta 54603       ; activa ck
   lda #0
   sta 54603       ; desactiva ck
   lda #1
   sta 54602       ; activa latch
   lda #0
   sta 54602       ; desactiva latch
   lda #0
   sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso de la exploración (si no pone 0 todas las columnas se activarían)


; lee un dato de la tabla (bytes) y lo manda a la columna activada

leetabla
   lda tabla,x      ; toma un dato de la tabla
   sta 54016        ; y lo envia al puerto del joystick
   ldx 6005
   dex
   stx 6005

   jsr tiempo      ; subrutina de tiempo (para variar velocidad lee paddle como variable)

veces
; controla la exploración (cantidad de veces=48 columnas)
   
   ldx 6001        ; 6001 esta definida en setups con valor 48
   dex             ; decrementa
   stx 6001        ; almacena
   lda 6001        ; carga accA
   cmp #0          ; ve si llego a cero
   bne inicio1     ; si no a llegado a cero vuelve a aumentar otro paso

; fin ciclo de exploración para activar una columna
   
   jmp setups       ; al pasar las 48 columnas vuelve al principio

; sub rutina de tiempo para poder variar la velocidad de muestreo

tiempo
; rutina de tiempo   
   lda #5
   sta 6002
paddle   
   lda 624         ; dirección paddle(0) 624
   sta 6000
loop
   ldx 6000
   dex
   stx 6000
   lda 6000
   cmp #0
   bne loop

loop2
   ldx 6002
   dex
   stx 6002
   lda 6002
   cmp #0
   bne paddle
; fin rutina de tiempo
   rts

      ; datos palabra RETROGAMES

tabla
   .byte 155,109,109,179,255   ; S
   .byte 189,181,181,129,255   ; E
   .byte 129,251,251,129,255   ; M
   .byte 131,221,221,131,255   ; A
   .byte 139,173,189,195,255   ; G
   .byte 195,189,189,195,255   ; O
   .byte 147,237,237,129,255   ; R
   .byte 253,129,253,255       ; T
   .byte 189,181,181,129,255   ; E
   .byte 147,237,237,129       ; R

   *=$02E0
   .word inicio
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor WillySoft el Jue Ene 23, 2014 12:33 am

Prueba esto:

Código: Seleccionar todo
   *=$4000

porta =$d300
setvbv =$e45c
xitvbv =$e462
clock = $14

columnas = 48   ;¿pueden ser más?

vbd
   jsr borra.pantalla
   jsr despliega.pantalla
   jmp xitvbv

init.vbd
   ldy #<vbd
   ldx #>vbd
   lda #$07
   jsr setvbv

borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.

;reset
   lda #0
   sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
   lda #0
   sta 54602      ; activando el ck del latch
   lda #1
   sta 54604      ; end reset

;output_enable
   lda #0
   sta 54601      ; OE debe ser 0
;joy_port
   lda #0
   sta porta      ; envía un 0 al joy (8 datos X columna)

;serial_data
   lda #1
   sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
   rts


despliega.pantalla
   ldx #columnas-1
despliega.pantalla.loop1
   jsr inicia.pantalla
   lda display,x
   jsr imprime.columna
   dex
   bpl despliega.pantalla.loop1
   rts

inicia.pantalla
   lda #1
   sta 54603       ; activa ck
   lda #0
   sta 54603       ; desactiva ck
   lda #1
   sta 54602       ; activa latch
   lda #0
   sta 54602       ; desactiva latch
   lda #0
   sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
         ; de la exploracion (si no pone 0 todas las columnas se activarían)
   rts

imprime.columna
   eor #$ff
   sta porta
   rts

display
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0

;La tabla "display" contiene los datos a dibujar,
;los cuales estan definidos de izquierda a derecha,
;tomando cada bit como "0" en apagado y "1" como prendido.
;La lógica del display de ZZT es inversa, es decir,
;"1" para led apagado y "0" para led prendido, ante lo cual
;se realiza un eor #$FF para invertir los bits.

;Además, el barrido es de derecha a izquierda,
;por lo que el índice x comienza desde el último dato
;y termina con el primero.
;Con ello llevamos al estándar de encendido/apagado
;y el barrido de izquierda a derecha.

tabla.datos

   .byte 126,18,18,108,0   ;R
   .byte 126,74,74,66,0   ;E
   .byte 2,126,2,0      ;T
   .byte 126,18,18,108,0   ;R
   .byte 60,66,66,60,0   ;O
   .byte 60,66,82,116,0   ;G
   .byte 124,34,34,124,0   ;A
   .byte 126,4,4,126,0   ;M
   .byte 126,74,74,66,0   ;E
   .byte 76,146,146,100   ;S


;   .byte 155,109,109,179,255   ; S
;   .byte 189,181,181,129,255   ; E
;   .byte 129,251,251,129,255   ; M
;   .byte 131,221,221,131,255   ; A
;   .byte 139,173,189,195,255   ; G
;   .byte 195,189,189,195,255   ; O
;   .byte 147,237,237,129,255   ; R
;   .byte 253,129,253,255       ; T
;   .byte 189,181,181,129,255   ; E
;   .byte 147,237,237,129       ; R
;
; Fórmula para convertir los datos: 255 - dato original.


inicio
   ldx #columnas-1
inicio.loop1
   lda tabla.datos,x
   sta display,x
   dex
   bpl inicio.loop1

   jsr init.vbd

loop.principal.paso1
   ldx contador
   ldy #0

loop.principal.paso2
   lda tabla.datos,x
   sta display,y
   inx
   cpx #columnas
   bne loop.principal.paso3
   ldx #0
loop.principal.paso3
   iny
   cpy #columnas
   bne loop.principal.paso2
   inc contador
   lda contador
   cmp #columnas
   bne loop.principal.paso4
   lda #$0
loop.principal.paso4
   sta contador
   jsr wait
   jsr wait
   jsr wait
   jmp loop.principal.paso1

wait
   lda clock
wait.loop
   cmp clock
   beq wait.loop
   rts

contador
   .byte 0

   *=$2e0
   .word inicio

Avatar de Usuario
WillySoft
expert
expert
 
Mensajes: 635
Registrado: Mié Nov 08, 2006 1:02 am

Re: Proyecto Atari-DMD

Notapor ZZT el Jue Ene 23, 2014 8:51 pm

Willy, probé tu programa y se enciende la columna 1 y de ahí no se mueve. :eno:
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor WillySoft el Vie Ene 24, 2014 1:56 am

ZZT escribió:Willy, probé tu programa y se enciende la columna 1 y de ahí no se mueve. :eno:


Después de ensayo y error, tenemos esta fuente:

Código: Seleccionar todo
   *=$4000

porta =$d300   ; 54016
pactl =$d302   
setvbv =$e45c
xitvbv =$e462
clock = $14

columnas = 48   ;¿pueden ser más?

vbd
   jsr borra.pantalla
   jsr despliega.pantalla
   jmp xitvbv

init.vbd
   lda #$2B
   sta pactl
   lda #$FF
   sta porta
   ldy #<vbd
   ldx #>vbd
   lda #$07
   jsr setvbv

borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.

;reset
   lda #0
   sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
   lda #0
   sta 54602      ; activando el ck del latch
   lda #1
   sta 54604      ; end reset

;output_enable
   lda #0
   sta 54601      ; OE debe ser 0
;joy_port
   lda #0
   sta porta      ; envía un 0 al joy (8 datos X columna)

;serial_data
   lda #1
   sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
   rts


despliega.pantalla
   ldx #columnas-1
despliega.pantalla.loop1
   jsr inicia.pantalla
   lda display,x
   jsr imprime.columna
   dex
   bpl despliega.pantalla.loop1
   rts

inicia.pantalla
   lda #1
   sta 54603       ; activa ck
   lda #0
   sta 54603       ; desactiva ck
   lda #1
   sta 54602       ; activa latch
   lda #0
   sta 54602       ; desactiva latch
   lda #0
   sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
         ; de la exploracion (si no pone 0 todas las columnas se activarían)
   rts

imprime.columna
   eor #$ff
   sta porta
   rts

display
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0
   .byte 0,0,0,0,0,0,0,0

;La tabla "display" contiene los datos a dibujar,
;los cuales estan definidos de izquierda a derecha,
;tomando cada bit como "0" en apagado y "1" como prendido.
;La lógica del display de ZZT es inversa, es decir,
;"1" para led apagado y "0" para led prendido, ante lo cual
;se realiza un eor #$FF para invertir los bits.

;Además, el barrido es de derecha a izquierda,
;por lo que el índice x comienza desde el último dato
;y termina con el primero.
;Con ello llevamos al estándar de encendido/apagado
;y el barrido de izquierda a derecha.

tabla.datos

   .byte 126,18,18,108,0   ;R
   .byte 126,74,74,66,0   ;E
   .byte 2,126,2,0      ;T
   .byte 126,18,18,108,0   ;R
   .byte 60,66,66,60,0   ;O
   .byte 60,66,82,116,0   ;G
   .byte 124,34,34,124,0   ;A
   .byte 126,4,4,126,0   ;M
   .byte 126,74,74,66,0   ;E
   .byte 76,146,146,100   ;S


;   .byte 155,109,109,179,255   ; S
;   .byte 189,181,181,129,255   ; E
;   .byte 129,251,251,129,255   ; M
;   .byte 131,221,221,131,255   ; A
;   .byte 139,173,189,195,255   ; G
;   .byte 195,189,189,195,255   ; O
;   .byte 147,237,237,129,255   ; R
;   .byte 253,129,253,255       ; T
;   .byte 189,181,181,129,255   ; E
;   .byte 147,237,237,129       ; R
;
; Fórmula para convertir los datos: 255 - dato original.


inicio
   ldx #columnas-1
inicio.loop1
   lda tabla.datos,x
   sta display,x
   dex
   bpl inicio.loop1

   jsr init.vbd

eterno
   jmp eterno

loop.principal.paso1
   ldx contador
   ldy #0

loop.principal.paso2
   lda tabla.datos,x
   sta display,y
   inx
   cpx #columnas
   bne loop.principal.paso3
   ldx #0
loop.principal.paso3
   iny
   cpy #columnas
   bne loop.principal.paso2
   inc contador
   lda contador
   cmp #columnas
   bne loop.principal.paso4
   lda #$0
loop.principal.paso4
   sta contador
   jsr wait
   jsr wait
   jsr wait
   jmp loop.principal.paso1

wait
   lda clock
wait.loop
   cmp clock
   beq wait.loop
   rts

contador
   .byte 0

   *=$2e0
   .word inicio

Avatar de Usuario
WillySoft
expert
expert
 
Mensajes: 635
Registrado: Mié Nov 08, 2006 1:02 am

Re: Proyecto Atari-DMD

Notapor ZZT el Vie Ene 24, 2014 5:55 am

jo jo jo dos. :-D


Hace AÑOS que quería hacer esta cuestión de desplazar texto. Por fin lo he logrado. El código que hace la magia es bastante simplón. El de Willy hace casi lo mismo, pero con más sofisticación. Ya veremos que otras cosas podemos hacere. :-D

Código: Seleccionar todo
   *=$4000

inicio
   lda #43
   sta 54018   ; pone puerto del joy en modo escritura
   ldx #255   ; carga primer número a enviar (0)
   stx 54016   ; envía número al puerto del joy

setups
   lda #0
   sta 54604   ; reset debe ser 0 y 1
   lda #0
   sta 54602   ; activando el ck del latch
   lda #1
   sta 54604   ; reset end

   lda #0
   sta 54601   ; OE debe ser 0
   
   lda #1
   sta 54600   ; data 1
   
   ldx #140   
   stx 6005   ; dirección clock 1 menos que leetabla

inicio1
   lda #255
   sta 54016
   lda #1
   sta 54603
   lda #0
   sta 54603
   lda #1
   sta 54602
   lda #0
   sta 54602
   lda #0
   sta 54600
leetabla
   ldx 6005
   lda retrogames,x
   sta 54016
   ldx 6005
   dex
   stx 6005
   cpx #0
   bne t1
   
   ldx #141   
   stx 6005
t1
   jsr tiempo
veces
   ldx 6004
   dex
   stx 6004
   lda 6004
   cmp #0
   bne t2
   
   lda #140   
   sta 6004
   lda #1
   sta 54600
t2
   jmp inicio1
   
   
tiempo
; rutina de tiempo   
   lda #5
   sta 6002
paddle   
   lda 624      
   sta 6000
loop
   ldx 6000
   dex
   stx 6000
   lda 6000
   cmp #0
   bne loop

loop2
   ldx 6002
   dex
   stx 6002
   lda 6002
   cmp #0
   bne paddle
; fin rutina de tiempo
   rts

retrogames

   .byte 255,1,237,237,19      ; R
   .byte 255,1,109,109,125      ; E
   .byte 255,253,1,253      ; T
   .byte 255,1,237,237,19      ; R
   .byte 255,131,125,125,131   ; O
   .byte 255,131,109,109,139   ; G
   .byte 255,3,221,221,3      ; A
   .byte 255,1,251,247,251,1   ; M
   .byte 255,1,109,109,125      ; E
   .byte 255,179,109,109,155   ; S
   .byte 255,255,255,255,255   ; espacio
   .byte 255,127,191,192,255   ; logo Atari
   .byte 0,255,192,191,127      ; logo Atari
   .byte 255,255,255      ; espacio
   .byte 255,3,221,221,3      ; A
   .byte 255,253,1,253      ; T
   .byte 255,3,221,221,3      ; A
   .byte 255,1,237,237,19      ; R
   .byte 255,255,1,255      ; I
   .byte 255,255,255      ; espacio
   .byte 255,127,191,192,255   ; logo Atari
   .byte 0,255,192,191,127      ; logo Atari
   .byte 255,255,255,255,255   ; espacio
   .byte 255,57,93,109,117,57   ; Z
   .byte 255,57,93,109,117,57   ; Z
   .byte 255,249,253,1,253,249   ; T
   .byte 255,131,125,125,131   ; O
   .byte 255,1,237,237,243      ; P
   .byte 255,255,255,255,255   ; espacio
   
   *=$02E0
   .word inicio   
Avatar de Usuario
ZZT
Site Admin
Site Admin
 
Mensajes: 10887
Registrado: Mar Nov 07, 2006 5:45 pm
Ubicación: La Florida-Santiago-Chile

Re: Proyecto Atari-DMD

Notapor WillySoft el Vie Ene 24, 2014 10:16 am

¡Buena!

Oye, acá te mando la rutina que rota en 90 grados el font del atari, a fin de que quede compatible con el display, que incluye una rutina que demuestra el efecto. Enjoy!

Código: Seleccionar todo
   *=$4000

font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD

caracteres = 128

prepara.font
   lda #>font
   sta pt.1+1
   lda #<font
   sta pt.1
   lda #>font2
   sta pt.2+1
   lda #<font2
   sta pt.2

   lda #caracteres   ; caracteres a transferir
   sta prepara.font.contador

prepara.font.loop1
   ldy #$7      ;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
   lda (pt.1),y
   sta prepara.font.buffer,y
   lda #$00
   sta prepara.font.buffer2,y
   dey
   bpl prepara.font.loop2

; Ahora vamos a transponer los datos
   ldx #$00
prepara.font.loop3
   asl prepara.font.buffer
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 1
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 2
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 3
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 4
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 5
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 6
   rol prepara.font.buffer2,x
   asl prepara.font.buffer + 7
   rol prepara.font.buffer2,x
   inx
   cpx #8
   bne prepara.font.loop3

; y ahora a copiar al font2
   ldy #$7
prepara.font.loop4
   lda prepara.font.buffer2,y
   sta (pt.2),y
   dey
   bpl prepara.font.loop4

   lda pt.1
   clc
   adc #$08
   sta pt.1
   lda pt.1+1
   adc #$00
   sta pt.1+1
   lda pt.2
   clc
   adc #$08
   sta pt.2
   lda pt.2+1
   adc #$00
   sta pt.2+1

   dec prepara.font.contador
   bne prepara.font.loop1
   rts

prepara.font.buffer
   .byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
   .byte 0,0,0,0,0,0,0,0
prepara.font.contador
   .byte 0

inicio
   ldy #[tabla.retrogames.fin - tabla.retrogames]
inicio.loop1
   lda tabla.retrogames,y
   sta (88),y
   dey
   bpl inicio.loop1

   jsr prepara.font

   lda #>font2
   sta 756
eterno
   jmp eterno

tabla.retrogames
   .sbyte "RETROGAMES"
tabla.retrogames.fin

   *=$2e0
   .word inicio
Avatar de Usuario
WillySoft
expert
expert
 
Mensajes: 635
Registrado: Mié Nov 08, 2006 1:02 am

Siguiente

Volver a PROYECTOS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado