
Iniciado por
Seleuco
Aqui tienes un regalito. Carga un .tap y disfruta

. No olvides de disfrutarlo en fullscreen

.
¡Joder, que máquina! Buen trabajo. Confío en que la velocidad real/acelerada se convierta en otro parámetro seleccionable en el menú, y que a su debido tiempo extiendas el soporte a los archivos .tzx (incluyendo los turbos y otros bloques más extraños), y tengamos un selector de bloques.

Iniciado por
Metalbrain

Iniciado por
Tbrazil
Hay una cantidad de juegos, pocos en realidad, que hacen uso del disco RAM del +2A para ejecutarse ¿podria añadirse la emulación de este modelo el +2a en proximas betas?
Creo que lo que es la emulación ya está, lo que no hay es reset a ese modelo, pero cargando un snapshot debería funcionar.
Por partes... en modo +3 en realidad no funciona porque el juego no es compatible, así que falla en todos los emuladores.
Añadir el reset en +2A es muy sencillo, basta con cambiar unas poquitas líneas y añadir otro par, y haciendolo así carga bien.
Concretamente, se sustituye en main.c, esto:
Código:
if(menu_mode==1)
{
//fill_mask(4*8,9*8,32*8,11*8);
if(redrawmask)
{
memset(&mask_keyb[0],0,32*8*11*8);
COLORFONDO=254;
mask_putcad(7,12,254,"SELECT SPECTRUM EMULATION");
if(sub_men==0) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(6,14,255,"48K ");
if(sub_men==1) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"128K ");
if(sub_men==2) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"PLUS2 ");
if(sub_men==3) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"PLUS2A ");
if(sub_men==4) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"PLUS3");
redrawmask=0;
}// redraw
mask_out(4*8,9*8);
if(new_key & GP2X_LEFT) {redrawmask=1;sub_men--;if(sub_men<0) sub_men=4;}
if(new_key & GP2X_RIGHT) {redrawmask=1;sub_men++;if(sub_men>4) sub_men=0;}
if(new_key & GP2X_Y) {redrawmask=1;menu_mode=0;}
if(new_key & (GP2X_X | GP2X_PUSH))
{redrawmask=1;
switch(sub_men)
{
case 1:ZX_Reset(ZX_128);break;
case 2:ZX_Reset(ZX_PLUS2);break;
case 3:ZX_Reset(ZX_PLUS2A);break;
case 4:ZX_Reset(ZX_PLUS3);dsk_load((void *) DSK);break;
default:ZX_Reset(ZX_48);break;
}
menu_mode=0;
}
return -1;
}
por esto otro:
Código:
if(menu_mode==1)
{
//fill_mask(4*8,9*8,32*8,11*8);
if(redrawmask)
{
memset(&mask_keyb[0],0,32*8*11*8);
COLORFONDO=254;
mask_putcad(7,12,254,"SELECT SPECTRUM EMULATION");
if(sub_men==0) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(6,14,255,"48K ");
if(sub_men==1) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"128K ");
if(sub_men==2) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"PLUS2 ");
if(sub_men==3) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"PLUS2A ");
if(sub_men==4) COLORFONDO=252; else COLORFONDO=255;
mask_putcad(lastx,14,255,"PLUS3");
redrawmask=0;
}// redraw
mask_out(4*8,9*8);
if(new_key & GP2X_LEFT) {redrawmask=1;sub_men--;if(sub_men<0) sub_men=4;}
if(new_key & GP2X_RIGHT) {redrawmask=1;sub_men++;if(sub_men>4) sub_men=0;}
if(new_key & GP2X_Y) {redrawmask=1;menu_mode=0;}
if(new_key & (GP2X_X | GP2X_PUSH))
{redrawmask=1;
switch(sub_men)
{
case 1:ZX_Reset(ZX_128);break;
case 2:ZX_Reset(ZX_PLUS2);break;
case 3:ZX_Reset(ZX_PLUS2A);break;
case 4:ZX_Reset(ZX_PLUS3);dsk_load((void *) DSK);break;
default:ZX_Reset(ZX_48);break;
}
menu_mode=0;
}
return -1;
}
Por último, el snapshot debería funcionar pero NO funciona. He buscado el bug y resulta que es que no selecciona bien la paginación de la ROM en los snapshots de +2A/+3, porque no carga el último byte de la cabecera donde se indica el OUT que hay que hacer al puerto 0x1ffd.
La corrección es muy sencilla, basta con cambiar en la línea 713 de snaps.c, en la función LoadZ80:
Código:
memcpy(buffer, source, 86);
por
Código:
memcpy(buffer, source, 87);
ya que necesitamos los 87 bytes que van del 0 al 86.

Iniciado por
Metalbrain
A ver si te mando esta tarde un paquete de juegos y demos que necesiten más optimización.
Al final no he hecho ningún paquete, pero estuve buscando juegos o demos que se relentizasen tanto como el Moggy al sacar el teclado virtual y no fue nada fácil, aunque al final vi que el Galaxians (ingame) iguala esa lentitud y el Equinox (en la música del menú) la supera.
Marcadores