Primeros pasos para pogramar un emulador

Foro dedicado a la emulación de sistemas clásicos en el PC o en otros sistemas.
ZX-81
Commodore 128
Commodore 128
Mensajes: 123
Registrado: 04 Ene 2013, 16:43
Sistema Favorito: Spectrum +2
primer_sistema: ZX81
consola_favorita: Nintendo DS/3DS
Primera consola: Sega Genesis/Megadrive
Ubicación: La orilla del mar Mediterráneo
Gracias dadas: 15 veces
Gracias recibidas: 24 veces
Contactar:

Re: Primeros pasos para pogramar un emulador

Mensajepor ZX-81 » 09 Sep 2021, 15:49

ZX81 escribió:
ZX-81 escribió:
ZX81 escribió:Hola,
Ahora estoy mirando como hacer el tema de los sonidos (BEEP) en el emulador, la verdad que no tengo ni idea como implemantarlos. :? Imagino que será ir guardando los todos OUTs en un array y cuando se cumplan los 69888 T-States enviarlos a alguna clase que gestione el tema de los sonidos. :? No sé si existe alguna clase de java estandard con la que se pueda hacer.
También me queda otra cosa pendiente, es el tema del BORDER, me explico, por ejemplo cuando hago un SAVE no se ven las típicas líneas que salen en la pantalla del Spectrum cuando está grabando, sólo se ven flases. Ni idea como solucionarlo. :(

Saludos.


Solo te digo que lo del BEEP es una de las cosas más xungas a las que me he enfrentado nunca, y cuando escribí JSpeccy llevaba más de 20 años viviendo de programar. Cada uno se imagina su manera de hacerlo, hay quien cuenta ciclos e intenta saber qué frecuencia debería generar para emularla. La mayor pega es que todo lo demás es emulado y puede pasar, pero el sonido es lo único que es tiempo real y como se te vacíe el buffer de sonido, para lo que Java tiene clases preparadas, enseguida empiezas a escuchar cosas que no deberían estar ahí.

Lo de los flashes del borde es porque estás debiendo actualizar la pantalla una vez por cuadro (error, por ejemplo, en el Arkanoid no verás la bola nunca) y durante la carga se cambia el color del borde múltiples veces. Ejecuta esto y mira qué pasa:

10 BORDER 2: BORDER 5: PAUSE 1: GOTO 10

Deberías ver como un tercio de la pantalla con borde rojo y luego azul, y si pulsas una tecla la frontera entre los colores cambia ligeramente. Si eso no lo emulas bien, no verás correctamente los juegos que hacen efectos con el borde, como Aquaplane o Beach Head II por poner dos ejemplos.

Y todavía te queda meterte con la memoria en contienda, el bus flotante,.... como escarpias se me ponen los pelos, oiga!. <XX


Cuando llegue a casa, probaré lo del borde que comentas. La memoria en contienda puede ser que sea cuando la ULA y el Z80 intentan acceder a la vez a la memoria??? bus flotante, esto qué es??? :jumper:

Saludos.


Sí, la memoria en contienda es cuando la ULA deja tiesecita de los pies a la CPU quitándole el reloj. Y el bus flotante los valores que lees de los puertos pares cuando la ULA va leyendo la pantalla, algunos juegos los necesitan, como Arkanoid, Sidewize, Cobra...
Todo espacio de dimensión finita distinta de cero con producto interno tiene una base ortonormal. Tiene sentido, cuando no piensas sobre ello.
Profesor de Matemáticas U.C. Berkeley

Empieza a jugar sin tener que compilar: JSpeccy
Emulador bare-metal para la Raspberry PI 2/3: ZXBaremulator

Avatar de Usuario
Bubu
Atari 1040 STf
Atari 1040 STf
Mensajes: 846
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: 44 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Bubu » 09 Sep 2021, 19:10

Yo siempre he creído que un bus flotante era esto:

Imagen
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

Avatar de Usuario
Namek
Atari 1040 STf
Atari 1040 STf
Mensajes: 814
Registrado: 11 Jul 2011, 13:13
Gracias dadas: 18 veces
Gracias recibidas: 51 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Namek » 09 Sep 2021, 19:40

Bubu escribió:Yo siempre he creído que un bus flotante era esto:

https://bashny.net/uploads/images/00/00 ... 6d418b.jpg

Pues no se si sera eso o no porque no se ve la imagen... [-X pero espero que no sea una foto de un autobus que flota... :mrgreen:

Imagen

El BUS flotante lo usan algunos juegos para sincronizarse con el barrido vertical y poder evitar de esta forma el "tearing", aunque la mayoría lo hace con las interrupciones hay unos pocos que usan esta característica que por cierto no existe en el Inves+, ni en el +2A ni en el +3, por lo que esos juegos no funcionan en esas maquinas, por suerte los aficionados han creado versiones modificadas que si funcionan.

Puedes decir que tu emulador emula un Inves+ y así no tendrías que emular el BUS flotante... :roll:

Avatar de Usuario
Bubu
Atari 1040 STf
Atari 1040 STf
Mensajes: 846
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: 44 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor Bubu » 09 Sep 2021, 21:04

Namek escribió:Pues no se si sera eso o no porque no se ve la imagen... [-X pero espero que no sea una foto de un autobus que flota... :mrgreen:


Pues sí, era una chorrada así lo que puse, pero qué raro que no veas tú el afoto, porque está cogida del intenné público sin login ni ná...
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!

ZX81
MSX Turbo R
MSX Turbo R
Mensajes: 470
Registrado: 20 Abr 2005, 19:18
Gracias dadas: 3 veces

Re: Primeros pasos para pogramar un emulador

Mensajepor ZX81 » 10 Sep 2021, 22:09

Jeje! Muy bueno lo del bus flotante. XD
10 REM ESTA LINEA NO HACE NADA


Volver a “Emuladores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados