Del Frogger sí te puedo hablar mucho, pues lo coñozco internamente bastante, me estudié en su momento el código fuente de la placa base. Resulta que en ella, el hardware que trae te hace todo el trabajo de scroll de gráficos en carretera y río: simplemente dibujas los gráficos, y ahora en una cierta dirección de memoria le pones el offset con el que quieres que se dibuje, y el hardware te lo desplaza hasta allí.
Por tanto los coches y los troncos son tratados como background, no así las ranas, serpientes y nutria, que son tratados como sprites propiamente dichos. Por eso con simplemente una CPU Z80 a 3MHz va sobrada, porque realmente no es la CPU la que hace los scrolls.
Yo ya tengo hecho el Frogger en Spectrum usando la tésnica del buffer y los pre-desplazamientos, y va muy bien, aunque es una obra de ingeniería el motor gráfico que creé. Pero me quedó por hacer los sprites de la rana rosa, las serpientes y la nutria. Además, había una dificultad añadida, y es que las tortugas mientras van por el río van moviendo las patitas como nadando, y los cocodrilos abren y cierran la boca... En fins, este juego es una paranoia si el hardware del sistema no ayuda, como es el caso del Spectrumñ
Bueno, de toas formas esto sólo era por darle otro enfoque al tema y estudiar una rutina de desplazamiento "in situ", jiji, cosa sobradamente conseguida
Cómo hacer scroll de una fila completa en Zx Spectrum
- Bubu
- Atari 1040 STf
- Mensajes: 886
- Registrado: 04 Abr 2018, 23:10
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Atari 2600
- Primera consola: Nintendo GameBoy
- Gracias dadas: 20 veces
- Gracias recibidas: 60 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- explorer
- MSX Turbo R
- Mensajes: 400
- Registrado: 11 May 2014, 17:10
- Sistema Favorito: Atari ST
- primer_sistema: Atari 800XL/600XL
- consola_favorita: Atari 2600
- Primera consola: Atari 2600
- Ubicación: Valladolid, España
- Gracias dadas: 2 veces
- Gracias recibidas: 138 veces
- Contactar:
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Bubu escribió:Del Frogger sí te puedo hablar mucho, pues lo coñozco internamente bastante, me estudié en su momento el código fuente de la placa base.
¿Le tienes a mano?
Te cuento que estos días estaba viendo el código (está disponible) del remake del Donkey Kong para la Atari 2600, y es impresionante ver el análisis previo que hace el programador. Hizo capturas de imagen, cuadro a cuadro, de la versión arcade, y apuntó en un papel, píxel a píxel, cómo se mueven los barriles, los fuegos, el salto de Mario, etc., para luego llevarlo de forma idéntica a la Atari.
Versión original del juego:
Versión mejorada:
- Bubu
- Atari 1040 STf
- Mensajes: 886
- Registrado: 04 Abr 2018, 23:10
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Atari 2600
- Primera consola: Nintendo GameBoy
- Gracias dadas: 20 veces
- Gracias recibidas: 60 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
El desensamblado del Frogger para placas (año 81) sí lo tengo por ahí, en algún disco duro. Te lo busco y te lo envío.
Esto lo hice para el Spectrum en el año 2009,hace casi 10 años, pero es que desde el año 2004 estoy con este juego, lo porté a la GBA. Pero en el caso de la GBA me hice un emulador de Z80 y cargando la rom del Frogger se podía juegar (sin sonido). Para el Spectrum, como tiene un Z80 y el Frogger tamién lo tiene, pensé que sólo tenía que hacer correr la propoia rom del Frogger en el Spectrum, si acaso con algún cambio menor en la parte gráfica y sonora, pero nada más lejos. El hardware de la placa Frogger lo es todo en este juego.
Al final tuve que optar en Spectrum por hacer el juego desde 0, y para los gráficos puse el MAME, le di a F4, vi el mapeado gráfico, lo exporté al Paint, y ahí lo ajusté a 2 colores por cuadro, pues la placa del Frogger usa 4 colores por cuadro.
En fin, esto de la programación en 8 bits es absolutamente emocionante.
Bueno, cuando encuentre lo del listado te lo paso
Esto lo hice para el Spectrum en el año 2009,hace casi 10 años, pero es que desde el año 2004 estoy con este juego, lo porté a la GBA. Pero en el caso de la GBA me hice un emulador de Z80 y cargando la rom del Frogger se podía juegar (sin sonido). Para el Spectrum, como tiene un Z80 y el Frogger tamién lo tiene, pensé que sólo tenía que hacer correr la propoia rom del Frogger en el Spectrum, si acaso con algún cambio menor en la parte gráfica y sonora, pero nada más lejos. El hardware de la placa Frogger lo es todo en este juego.
Al final tuve que optar en Spectrum por hacer el juego desde 0, y para los gráficos puse el MAME, le di a F4, vi el mapeado gráfico, lo exporté al Paint, y ahí lo ajusté a 2 colores por cuadro, pues la placa del Frogger usa 4 colores por cuadro.
En fin, esto de la programación en 8 bits es absolutamente emocionante.
Bueno, cuando encuentre lo del listado te lo paso
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Namek
- Atari 1040 STf
- Mensajes: 838
- Registrado: 11 Jul 2011, 13:13
- Gracias dadas: 18 veces
- Gracias recibidas: 63 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Bubu escribió:Bueno, he estado adaptando la pantalla original del Frogger a la resolución (256x192) y colores (8 colores, sin clash attribute) del Spectrum:
Ya sólo habría que escribir la rutina que rote a la izquierda, y aplicársela a esta pantalla. Concretamente tiene que mover 10 filas: 5 en el río y 5 en la carretera, jiji.
Sin animo de menospreciar tu adaptación me he permitido hacer la mia:
Faltan los marcadores que logicamente irian a la izquierda y en vertical...
- Bubu
- Atari 1040 STf
- Mensajes: 886
- Registrado: 04 Abr 2018, 23:10
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Atari 2600
- Primera consola: Nintendo GameBoy
- Gracias dadas: 20 veces
- Gracias recibidas: 60 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Queda chulísima, Namek, el poblema es que con esa configuración tienes que mover no 10, sino 20 filas, y eso ya creo que haría echar humo al Spectrum, AaJajaJA. La solución que usé en su momento fue dividir el juego en 2: primero salía la carretera sola, y cuando la rana llegaba al medio, hacía scroll hacia abajo y aparecía el río. Con esto sólo tenía que hacer scroll de 10 filas.
A ver si subo un vidrio al YT con la adaptación del Frogger
PD: Te comento algunas inconveniencias con poner los marcadores en vertical a ambos lados:
- Cuando llegues a la fase 11 p.ej., no caben las ranitas de número de fases.
- El scroll continuum hace que necesites los bordes verticales para imprimir ahí troncos y coches pero con papel y tinta negros pa que no se vean
Pero la verdad es que la idea de aprovechas las filas intermedias para dibujar las ruedas de otro color y los bajos de los troncos, es genial. ¡¡Enhorabuena!!
Si traslado esto al Frogger en 2 partes, yo creo que quedaría espectacular.
A ver si subo un vidrio al YT con la adaptación del Frogger
PD: Te comento algunas inconveniencias con poner los marcadores en vertical a ambos lados:
- Cuando llegues a la fase 11 p.ej., no caben las ranitas de número de fases.
- El scroll continuum hace que necesites los bordes verticales para imprimir ahí troncos y coches pero con papel y tinta negros pa que no se vean
Pero la verdad es que la idea de aprovechas las filas intermedias para dibujar las ruedas de otro color y los bajos de los troncos, es genial. ¡¡Enhorabuena!!
Si traslado esto al Frogger en 2 partes, yo creo que quedaría espectacular.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Bubu
- Atari 1040 STf
- Mensajes: 886
- Registrado: 04 Abr 2018, 23:10
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Atari 2600
- Primera consola: Nintendo GameBoy
- Gracias dadas: 20 veces
- Gracias recibidas: 60 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Aquí está el vidrio:
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Bubu
- Atari 1040 STf
- Mensajes: 886
- Registrado: 04 Abr 2018, 23:10
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Atari 2600
- Primera consola: Nintendo GameBoy
- Gracias dadas: 20 veces
- Gracias recibidas: 60 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
explorer escribió:¿Le tienes a mano?
explorer, nu lo encuentro, torpedo, tengo 2 ó 3 discos duros de hace 15 años, de cuando me puse con ello, pero no lo veo. De toas formas lo que hice fue sencillo: descárgate la rom del Frogger, descomprímela, y métesela al ODA:
https://onlinedisassembler.com
Ahí verás el código fuente del Frogger:
Código: Seleccionar todo
.data:00000000 3a 00 40 ld a,(0x4000)
.data:00000003 fe 55 cp 0x55
.data:00000005 ca 01 40 jp z,0x4001
.data:00000008 3a 00 88 ld a,(0x8800)
.data:0000000b 31 00 88 ld sp,0x8800
.data:0000000e c3 a3 02 jp 0x02a3
.data:00000011 ff rst 0x38
.data:00000012 ff rst 0x38
.data:00000013 ff rst 0x38
.data:00000014 ff rst 0x38
.data:00000015 ff rst 0x38
.data:00000016 ff rst 0x38
.data:00000017 ff rst 0x38
.data:00000018 4f ld c,a
.data:00000019 3a fe 83 ld a,(0x83fe)
.data:0000001c b7 or a
.data:0000001d c8 ret z
.data:0000001e e5 push hl
.data:0000001f 21 00 83 ld hl,0x8300
.data:00000022 34 inc (hl)
.data:00000023 7e ld a,(hl)
.data:00000024 6f ld l,a
.data:00000025 71 ld (hl),c
.data:00000026 e1 pop hl
.data:00000027 c9 ret
Sorry
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- explorer
- MSX Turbo R
- Mensajes: 400
- Registrado: 11 May 2014, 17:10
- Sistema Favorito: Atari ST
- primer_sistema: Atari 800XL/600XL
- consola_favorita: Atari 2600
- Primera consola: Atari 2600
- Ubicación: Valladolid, España
- Gracias dadas: 2 veces
- Gracias recibidas: 138 veces
- Contactar:
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Pensaba que estaba comentado... Vamos, ingeniería inversa, ya sabes.
Habría que hacerla un IDA para pasarlo a código, pero la licencia de ese maldito programa cuesta lo mismo que el testículo izquierdo
¿Conocéis alguna otra herramienta para hacer ingeniería inversa? El Radare2 está bien, pero con z80 se cuelga, y aún le falta mucho para servir para ingeniería inversa de un proyecto entero.
Habría que hacerla un IDA para pasarlo a código, pero la licencia de ese maldito programa cuesta lo mismo que el testículo izquierdo
¿Conocéis alguna otra herramienta para hacer ingeniería inversa? El Radare2 está bien, pero con z80 se cuelga, y aún le falta mucho para servir para ingeniería inversa de un proyecto entero.
- Bubu
- Atari 1040 STf
- Mensajes: 886
- Registrado: 04 Abr 2018, 23:10
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Atari 2600
- Primera consola: Nintendo GameBoy
- Gracias dadas: 20 veces
- Gracias recibidas: 60 veces
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Efestivamente yo lo tenía desensamblado con mis comentarios:
; Rutina para recalcular velocidades
; Rutina para la demo
RAM_INI EQU 0x4000
etc
peeeero es que nu sé andandará...
¿A qué llamas tú ingeniería inversa? ¿Cómo sería un ejemplo de listado con la ingeniería inversa?
; Rutina para recalcular velocidades
; Rutina para la demo
RAM_INI EQU 0x4000
etc
peeeero es que nu sé andandará...
¿A qué llamas tú ingeniería inversa? ¿Cómo sería un ejemplo de listado con la ingeniería inversa?
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- explorer
- MSX Turbo R
- Mensajes: 400
- Registrado: 11 May 2014, 17:10
- Sistema Favorito: Atari ST
- primer_sistema: Atari 800XL/600XL
- consola_favorita: Atari 2600
- Primera consola: Atari 2600
- Ubicación: Valladolid, España
- Gracias dadas: 2 veces
- Gracias recibidas: 138 veces
- Contactar:
Re: Cómo hacer scroll de una fila completa en Zx Spectrum
Pues... hay muchos, aunque se trata de una actividad nada legal.
Por ejemplo, está el desensamblado del juego ET para la Atari 2600: https://pastebin.com/AaSYZTHt
Yo mismo hice ya unos años el del Pengo (versión Arcade).
Se trata de justamente lo que has dicho: desensamblar, comentar y explicar cómo funciona el código, con el ánimo de aprender, modificar, ampliar o aplicar a otros sistemas.
Digo que no es muy legal (mejor dicho, no es nada legal), porque el código es propiedad de sus autores. La ingeniería inversa solo se permite si es para adaptar el funcionamiento del programa a un sistema y no queda más remedio que hacerlo de esa manera.
Por ejemplo, está el desensamblado del juego ET para la Atari 2600: https://pastebin.com/AaSYZTHt
Yo mismo hice ya unos años el del Pengo (versión Arcade).
Se trata de justamente lo que has dicho: desensamblar, comentar y explicar cómo funciona el código, con el ánimo de aprender, modificar, ampliar o aplicar a otros sistemas.
Digo que no es muy legal (mejor dicho, no es nada legal), porque el código es propiedad de sus autores. La ingeniería inversa solo se permite si es para adaptar el funcionamiento del programa a un sistema y no queda más remedio que hacerlo de esa manera.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados