Sus cuento cómo va el tema: tengo emulado muy bien el Z80, al menos lo suficiente como para ejecutar la rutina NEW de la ROM del Spectrum. Resulta que inicializa toda la RAM con el valor 2. Esto en pantalla debería verse como fondo negro y rayas finas verticales de color rojo. Y ahora es donde me tengo que pensar muy bien cómo hacer que se muestre esa pantalla. Nu sé cómo hacerlo.
La cosa es así:
- Leo la ROM
- Ejecuto el código Z80 (modifico los flags y cuento ciclos de reloj)
- Vuelvo a empezar
¿Aonde pongo que pinte la pantalla? Si hago así:
- Leo la ROM
- Ejecuto el código Z80 (modifico los flags y cuento ciclos de reloj)
- Pinto la pantalla
- Vuelvo a empezar
Va a funcionar, pero sería lentísimo, pues en un Spectrum real la pantalla no se pinta cada vez que se ejecuta una instrucción Z80. ¿Sería algo como esto?
- Leo la ROM
- Ejecuto el código Z80 (modifico los flags y cuento ciclos de reloj)
- Si el número de ciclos acumulados es mayor que 100 (p.ej.) pinto la pantalla
- Vuelvo a empezar
¿cuánto debería ser ese número 100? ¿O se hace de otra forma?
Primeros pasos para pogramar un emulador
- Namek
- Atari 1040 STf
- Mensajes: 840
- Registrado: 11 Jul 2011, 13:13
- Gracias dadas: 18 veces
- Gracias recibidas: 63 veces
Re: Primeros pasos para pogramar un emulador
Te lo dijo este señor algunos post anteriores...
Por tanto debes lanzar las interrupciones y pintar la pantalla cada 69888 ciclos...chernandezba escribió:Tu sabes que un Z80 del spectrum 48k ejecuta 69888 ciclos cada 1/50 segundos?

- PabloMarmol
- Amstrad PCW 8256
- Mensajes: 171
- Registrado: 03 Sep 2012, 17:32
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- Primera consola: Nintendo NES/Clónica
- Ubicación: León, España
- Gracias dadas: 18 veces
- Gracias recibidas: 18 veces
Re: Primeros pasos para pogramar un emulador
(la verdad... es que el z80 del 48k no ejecuta 69888 ciclos en 1/50 de segundo)
Pero si, bubu, tu repinta la pantalla cada 69888.
Pero si, bubu, tu repinta la pantalla cada 69888.
- Bubu
- Atari 1040 STf
- Mensajes: 895
- 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: 21 veces
- Gracias recibidas: 67 veces
Re: Primeros pasos para pogramar un emulador
Ok, así haré. Esta noche me pongo. Gracias muchas!
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Bubu
- Atari 1040 STf
- Mensajes: 895
- 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: 21 veces
- Gracias recibidas: 67 veces
Re: Primeros pasos para pogramar un emulador
No he podido esperar, jiji, y mientras esperaba a que se calentara el aceite pa hacer la comida, he pogramado esta subrutina pa mostrar la pantalla:
Al lanzar la ROM del Spectrum 48KB, resulta que se muestra esto:
Joooop, casi. Resulta que salen 24 píxeles en diagonal, y me deberían salir rayas verticales... No me va a dar tiempo a más, esta noche lo miro.
Código: Seleccionar todo
SUB VRAM
DIM b AS _UNSIGNED _BYTE
X = 0: Y = 0
FOR N = 16384 TO 16384 + 6144
b = mem(N)
IF b AND 128 THEN PSET (X + 0, Y)
IF b AND 64 THEN PSET (X + 1, Y)
IF b AND 32 THEN PSET (X + 2, Y)
IF b AND 16 THEN PSET (X + 3, Y)
IF b AND 8 THEN PSET (X + 4, Y)
IF b AND 4 THEN PSET (X + 5, Y)
IF b AND 2 THEN PSET (X + 6, Y)
IF b AND 1 THEN PSET (X + 7, Y)
X = X + 8
IF X = 256 THEN
X = 0: Y = Y + 1
END IF
NEXT
END SUB
Al lanzar la ROM del Spectrum 48KB, resulta que se muestra esto:
Joooop, casi. Resulta que salen 24 píxeles en diagonal, y me deberían salir rayas verticales... No me va a dar tiempo a más, esta noche lo miro.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Namek
- Atari 1040 STf
- Mensajes: 840
- Registrado: 11 Jul 2011, 13:13
- Gracias dadas: 18 veces
- Gracias recibidas: 63 veces
- Bubu
- Atari 1040 STf
- Mensajes: 895
- 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: 21 veces
- Gracias recibidas: 67 veces
Re: Primeros pasos para pogramar un emulador
Ala, pero si ya casi lo tienes... ¿haces FULLSCREEN y todo?
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Namek
- Atari 1040 STf
- Mensajes: 840
- Registrado: 11 Jul 2011, 13:13
- Gracias dadas: 18 veces
- Gracias recibidas: 63 veces
Re: Primeros pasos para pogramar un emulador
En Windows XP si, en Win7 y Win10 no...Bubu escribió:Ala, pero si ya casi lo tienes... ¿haces FULLSCREEN y todo?

- Bubu
- Atari 1040 STf
- Mensajes: 895
- 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: 21 veces
- Gracias recibidas: 67 veces
Re: Primeros pasos para pogramar un emulador
Vaya, torpedo, qué mala suerte. Es que nu sé por qué las cosas que funcionan en XP no lo hacen en 7, y viceversa. A ver si va a ser lo de los 32-64 bits... Ya que tienes XP, te agradecería si pudieras catar el EXE que puse hace unos días. Está compilado en W7 y se pone a pantalla completa pulsando ALT + ENTER.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
- Bubu
- Atari 1040 STf
- Mensajes: 895
- 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: 21 veces
- Gracias recibidas: 67 veces
Re: Primeros pasos para pogramar un emulador
Bueno, me olvido entonces de lo de XP. A ver si consigo instalarlo en algún ordeñador que tenga por aquí y lo pruebo.
Ahora otra cosa: ¿cómo pinta y colorea la ULA? Me refiero, ¿en qué orden? ¿Primero lee los datos de 16384 a 22527 y pone píxeles, y luego lee los datos de 22528 a 23295 y los re-colorea, o primero colorea y aluego pone los píxeles, o cómo va esto?
Ahora otra cosa: ¿cómo pinta y colorea la ULA? Me refiero, ¿en qué orden? ¿Primero lee los datos de 16384 a 22527 y pone píxeles, y luego lee los datos de 22528 a 23295 y los re-colorea, o primero colorea y aluego pone los píxeles, o cómo va esto?
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados