24/3/2001
- Agregué mucha de la funcionalidad faltante al reproductor de TZXs (moverse por los bloques, mover el puntero por la cinta, etc).
- Se agregó un símil del reproductor de TZX pero para TAPs.
- Implementadas opciones para explorar automáticamente las cintas al abrirlas, escuchar el sonido de carga y cargar a máxima velocidad.
- Se arregló un fallo enorme que hacía entre otras cosas que si con el emulador en marcha se cambiaba de modelo, cambiaba todo, pero se seguía ejecutando como si fuese el modelo anteriormente seleccionado.
- Ahora mediante el reproductor de TAPs podemos cambiar el puntero de la cinta (o sea que se puede "avanzar" y "retroceder" la cinta a la posición que uno quiera).
24/3/2001
- Hice un intento más por llevar las rutinas de display a un thread aparte y obtuve mejores resultados que las veces pasadas, pero como también implementé el modo de pantalla completa (se puede pasar de P/C a ventana sin que se cuelgue el emulador) estas dos cosas no estaban muy compatibles que digamos.
- Mejoré ampliamente el sonido! Estaba sampleando siempre a 22050 sin darme cuenta y eso hacía que la música de muchos juegos (beeper) no sonara muy bien comparado a otros emuladores.
- Esto último implicó corregir todas las rutinas de sonido por WaveMapper, y dejó en evidencia un error (o lo introduje ahora?) al switchear el Digisound.
24/3/2001
- El debugger se implementó como una ventana no modal, o sea que se puede tener el debugger funcionando a la vez que el emulador (antes eran excluyentes). Implicó reescribir el loop de la emulación, lo cual pudo haber introducido nuevos errores (muy probable).
- Arreglado un fallo en la instrucción SLL. Ahora, el GhostBusters 2, que usa protección Alkatraz para desencriptarse funciona correctamente. Tambien el Cyberbig funciona correctamente ahora.
- Solucionado el bug que hacía que dos rutinas concurrentes intentaran lockear a la vez la superficie secundaria DirectX.
- Solucionado un bug que hacía que si salía del emulador con el debugger funcionando, quedara activo el loop que el debugger estuviese ejecutando.
- Corregidas las instrucciones CPD, CPDR, CPI y CPIR. Calculaban mal el flag de acarreo y los flags 5 y 3. Ahora, el "Zone Trooper" funciona bien.
- Corregidas las instrucciones LDI, LDIR, LDD, LDDR, INI, INIR, IND e INDR. Las IN fueron implementadas recién. A las de LD se les corrigieron los flags.
- Implementadas instrucciones OUTI, OTIR, OUTD y OTDR. Si bien, alguna de ellas ya estaba hecha, lo estaba de muy mala manera.
22/3/2001
- Finalmente, tras días y días de luchar con el lector de TZX, puedo afirmar que mis rutinas de carga funcionan perfectamente. Todos los TZX que he probado hasta ahora funcionan, inclusive los que tienen carga Speedlock 7. ¡¡¡Por fín!!!
- Implementada carga y grabación de snapshots a memoria.
19/3/2001
- Resolví un problema de display en modo 128K. Dos juegos (Abadía del Crimen y Starglider) no se veían, pero no se colgaba el juego. Resultó ser que en ciertas situaciones, armaba al display en base a una página de RAM equivocada.
- Resolví un error en la lectura de puertos, que había hecho que Revolution, que una vez arreglé dejase nuevamente de funcionar. Ahora funciona correctamente.
- Desde hace 3 o 4 días estoy trabajando en un "visor y reproductor" para los archivos TZX, pero dado que tengo grandes problemas con dicho formato y muchos juegos no me cargan aún, quedó un poco postergado.
11/3/2001
- Saqué todas las referencias a MFC. Ahora el código es más independiente de Visual C++.
- Solucioné un bug que permitía que figuraran archivos inexistentes en la lsta de archivos usados recientemente.
- Solucioné un bug que hacía que si se ejecutaba dos veces el emulador, se colgaba (se llamaba un puntero a función que aún no había inicializado).
- Ahora se puede definir un directorio por defecto donde buscar los programas.
- Arreglé algunos pequeños bugs por acá y por allá.
- Limpiando el código y cambiando las cosas para poder aplicar las optimizaciones de VC++, pase de tener 66 FPS a 92 FPS!!!
- Cuando en el preview de archivos no se encuentra una pantalla de carga, aparece un cartel indicandolo.
- Pude probar las rutinas DirectX 24 bits (en el notebook) y vi que estaban completamente mal. Ahora no solo andan bien, sino que estan escritas gran parte en Assembler, así que aumentó la velocidad de las mismas.
2/3/2001
- Arreglé el modo de sonido Mono 16 bits. Ahora suena bien con Digisound, pero lento sin él. Arreglé algo los modos de 8 bits (pero faltan cosas por corregir) y aceleré un poco las rutinas de sonido eliminando algo de código repetitivo.
- Implementé una opción para elegir si el display (bajo DirectX) se crea usando memoria de video o memoria de sistema. Usualmente, la memoria de video suele ser más lenta, pero, como es mi caso, esto es al revés, así que es mejor que lo elija el usuario.