ZX Spectrum: escribir en pantalla con POKE

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 585
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: 13 veces
Gracias recibidas: 19 veces

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor Bubu » 23 Ago 2018, 17:03

No, AjAJAJAJ, para nada loco, haces bien en decirlo, pero ese RANDOMIZE te podría servir para muchas cosas a la vez: dibujar sprites 16x16 a color p.ej.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

Avatar de Usuario
explorer
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 240
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 recibidas: 49 veces
Contactar:

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor explorer » 23 Ago 2018, 18:01

Hummm... teniendo soluciones como el ZXBasic comentado antes, yo creo que ya no tiene sentido hacer programas en el BASIC del Spectrum. Simplemente, haces el programa en ZXBasic, lo compilas y ya tienes el programa ejecutable. Casi ni necesitas hacer nada en el ensamblador. Y si lo necesitas, trae los comandos ASM .. END ASM que permiten escribir ensamblador, así que al final lo tienes todo para hacer programas interesantes.

Código: Seleccionar todo

FUNCTION FASTCALL whatLetter (A AS UBYTE) AS UBYTE
   ASM
             JP START
   DATA:     DEFB "A Man, A Plan, A Canal, Panama"
   START:    LD HL,DATA
             LD E, A
             LD D, 0
             ADD HL, DE
             LD A, (HL)
   END ASM
END FUNCTION


Desde luego, el BASIC no permite hacer las diabluras que tienen otros lenguajes, como el C++, el más utilizado para hacer juegos, pero su curva de aprendizaje es mucho más amable.
Última edición por explorer el 23 Ago 2018, 18:05, editado 1 vez en total.

Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 585
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: 13 veces
Gracias recibidas: 19 veces

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor Bubu » 23 Ago 2018, 18:04

Yo debo estar como una cabra, porque pogramo direstamente en ensamblador, una a una las instrucciones, AjJAjAjAJA. Me gustaría un día catar el Z88DK ese, pero es que me temo que el resultado no va a ser de mi agrado... ya iré viendo.

Ah, se me olvida decir, que él no quiere usar compiladores ni cosas raras, porque lo quiere pogramar direstamente en el ordeñador, no en un PC. Por eso tié que usar BASIC sí o sí (aunque haya otras soluciones, como cargar otro intérprete, pero esto ya es demasiado exótico)
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

BlackHole
Amiga 1200
Amiga 1200
Mensajes: 1234
Registrado: 07 Nov 2009, 11:38
Ubicación: Madrid
Gracias dadas: 3 veces
Gracias recibidas: 96 veces

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor BlackHole » 23 Ago 2018, 18:33

La rutina de PRINT de la ROM no es que sea la más optimizada del mundo, porque tiene que ver muchas variables: el stream a pintar (0 pantalla superior, 1 pantalla inferior, 4 impresora, etc.) tiene que comprobar las coordenadas y traducirlas al particular sistema de video-RAM del Spectrum, tiene que comprobar la variable del sistema de la tinta y del papel en curso que tenemos por defecto, tiene que comprobar si está activado el modo OVER para hacer un OR con los pixeles previos, en fin... mil y una cosas.

También hay que tener en cuenta que imprimir 2000 números no es una buena prueba de la rapidez de un código compilado, porque hay 22 líneas (24 si se dibuja en toda la pantalla) y entonces tendría que hacer scroll 1976 veces. Pero es que el scroll mueve TODA la pantalla, casi 7k de datos cada vez. No es la prueba más adecuada para ello, en mi humilde opinión.

Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 585
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: 13 veces
Gracias recibidas: 19 veces

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor Bubu » 23 Ago 2018, 19:18

Pero sí sería una buena prueba de velocidad si hace el PRINT AT siempre en las mismas coordenadas.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

Avatar de Usuario
explorer
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 240
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 recibidas: 49 veces
Contactar:

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor explorer » 23 Ago 2018, 20:22

Bubu escribió:Yo debo estar como una cabra, porque pogramo direstamente en ensamblador, una a una las instrucciones, AjJAjAjAJA. Me gustaría un día catar el Z88DK ese, pero es que me temo que el resultado no va a ser de mi agrado... ya iré viendo.
Puedes hacer también una cosa híbrida: haces el juego en C, lo compilas, y miras el listado en ensamblador generado, y lo conviertes a programar ensamblador y lo dejas a tu gusto, pero lo más rollo, que es la inteligencia del programa, los menús, las pantallas iniciales, ya la tienes hecho.

Yo solía hacer algo parecido: escribía el programa en C o C++. Miraba el resultado, y buscaba aquellas partes más lentas, y las reescribía en ensamblador, con inline __asm() dentro del propio programa, o como archivo .asm y luego usaba el enlazador para unir todas las partes.

Pero todo esto... ya es tecnología antigua...

Lo más molón es poder escribir/programar directamente en la memoria de la máquina virtual del emulador, mientras está funcionando, para ver los cambios de forma instantánea.

Pero hay muy pocos emuladores que permitan hacerlo. Creo que solo conozco al Vice del C64.

oscarbraindead
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 143
Registrado: 05 Oct 2012, 17:42
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy
Primera consola: Atari 2600
Gracias dadas: 7 veces
Gracias recibidas: 1 vez

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor oscarbraindead » 23 Ago 2018, 20:38

La idea era usar el zxuno go+ directamente, de ahí lo de usar basic. Aunque después de las pruebas usaré el compilador hisoft basic, que lo puedo usar en el zxuno sin problema. No es eficiente ni práctico comparado con usar z88dk o el compilador de boriel en un pc... pero es por dar uso al cacharro.
Para la prueba de "rendimiento" compilado/interpretado usé print at, para ahorrar el scroll y ambos usando, como es lógico, el mismo código... casi un 40% de mejora en la prueba. He probado también el código de berzerk que comencé, movimiento básico del jugador con kempstom, y la diferencia es importante. Técnicamente se puede hacer, a ver si yo soy capaz :)

Gracias a todos por las ideas y conocimientos vertidos!

Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 585
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: 13 veces
Gracias recibidas: 19 veces

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor Bubu » 23 Ago 2018, 22:32

Pues nada y... ¡¡me encantaría un pantallazo cuando se pueda ver algo!!
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

Avatar de Usuario
explorer
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 240
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 recibidas: 49 veces
Contactar:

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor explorer » 23 Ago 2018, 23:14

explorer escribió:Lo más molón es poder escribir/programar directamente en la memoria de la máquina virtual del emulador, mientras está funcionando, para ver los cambios de forma instantánea.

Pero hay muy pocos emuladores que permitan hacerlo. Creo que solo conozco al Vice del C64.

Vaya... acabo de encontrar uno para la Sega Genesis. Lo interesante empieza en el momento 07:54



Avatar de Usuario
Bubu
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 585
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: 13 veces
Gracias recibidas: 19 veces

Re: ZX Spectrum: escribir en pantalla con POKE

Mensajepor Bubu » 23 Ago 2018, 23:49

JAjAjAjAjAJA ¡qué bueno! Estas cosas las hacía yo en Spectrum, pero tenía que poner un punto de ruptura, modificar el pograma, y continuar con la ejecución. Pero es más, con el emulador pausado en el punto de ruptura, podía hacer p.ej.

LD A, 255
LD (16384), A

y efestivamente salía una rayita negra arriba. Esto ayuda lo más grande, lo que no recuerdo es con qué emulador era, quizás EmuZWin.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: Yomes y 6 invitados