Quest escribió:No obstante acabo de hacer alguna prueba más, y parece que puede tener que ver con la ROM utilizada. No suelo usar la del +3 (que es la que se suele usar por defecto), y usándola ahora veo que no me ha fallado el reset en un buen rato. Sin embargo usando otras ROMs, como la del 128k español, +2 gris o SE Basic IV Anya, los cuelgues y cosas raras son muy muy frecuentes.
Vale: ya sé qué te pasa. No tiene que ver con el comportamiento del reset en sí, sino en la forma en la que Antonio organiza las ROM's que no son de 64K. Yo en el firmware que compilo lo cambio, pero no sé si él lo ha hecho en el repositorio.
Basicamente esto es lo que se debe hacer: TODAS las ROMs, sean del tamaño que sean, deben ocupar los 4 bloques de RAM, del bloque 8 al 11. La BIOS, si detecta una ROM más pequeña que 64K (o sea, que es de 16K o de 32K) la repetirá en memoria, y ese es el comportamiento que queremos.
Cuando se hace un reset, los registros de paginación también se resetean, por lo que la ROM la busca en la página 8, y no en ningún otro sitio. Si tienes configurada la BIOS para que cargue, por ejemplo, la ROM del 48K en la página 11, en cuanto hagas un reset, la hemos liado.
Si estás usando la BIOS 0.227, copia y pega esta versión del fichero aa000.bin . Modifícalo según tu selección de ROMs, y graba la SPI con él. Si te fijas, ahora en todas las macros se especifica que la ROM comienza en la página 8 de RAM y ocupa las 4 páginas.
Código: Seleccionar todo
output aa000.bin
define Issue2 $00
define Issue3 $10
define Tim48 $00
define Tim128 $08
define NonContended $00
define Contended $04
define DisableDiv $00
define EnableDiv $02
define DisableNMI $00
define EnableNMI $01
macro Generic slot, crc1, crc2, cadena, par1, par2, par3, par4, par5, par6
defb slot, par1, par2, par3, par4, par5, par6, $ff
defb crc1>>24&255, crc1>>16&255, crc1>>8&255, crc1&255, crc2>>24&255, crc2>>16&255, crc2>>8&255, crc2&255
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defm cadena
block 64-($ & 63), $20
endm
macro Cart slot, crc, cadena
Generic slot, (crc<<16 | $ffff), $ffffffff, cadena, 1, $08, 4, $04, $30, Issue3 | Tim48 | Contended | DisableDiv | DisableNMI
endm
macro R32K slot, crc, cadena
Generic slot, crc, $ffffffff, cadena, 2, $08, 4, $04, 0, Issue3 | Tim128 | Contended | DisableDiv | DisableNMI
endm
macro OPENSE slot, crc, cadena
Generic slot, crc, $ffffffff, cadena, 2, $08, 4, $04, 0, Issue3 | Tim128 | Contended | EnableDiv | DisableNMI
endm
macro R64K slot, crc1, crc2, cadena
Generic slot, crc1, crc2, cadena, 4, $08, 4, 0, 0, Issue3 | Tim128 | Contended | DisableDiv | DisableNMI
endm
macro R32KDIV slot, crc, cadena
Generic slot, crc, $ffffffff, cadena, 2, $08, 4, $04, 0, Issue3 | Tim128 | Contended | EnableDiv | EnableNMI
endm
macro R64KDIV slot, crc1, crc2, cadena
Generic slot, crc1, crc2, cadena, 4, $08, 4, 0, 0, Issue3 | Tim128 | Contended | EnableDiv | EnableNMI
endm
l0aa0 Generic 0, $1bfeffff, $ffffffff, 'ZX Spectrum 48K', 1, 8, 4, 0, 0, Issue3 | Tim48 | Contended | EnableDiv | EnableNMI
R32KDIV 1, $A2394D6A, 'ZX 128K +2 grey EN'
R64K 3, $5E9092D5, $BCAD774D, 'ZX +3e DivMMC'
OPENSE 7, $bfd5c9e8, 'SE Basic IV 4.0 Anya'
Cart 9, $1039, 'ZX Spectrum 48K Cargando Leches'
Cart 10, $b818, 'Manic Miner (1983)'
Cart 11, $15e7, 'Jet Set Willy (1984)'
Cart 12, $7d63, 'Deathchase (1983)'
Cart 13, $aafc, 'Planetoids (1982)'
Cart 14, $7a69, 'Space Raiders (1982)'
Cart 15, $4d5b, 'Misco Jones (2013)'
Cart 16, $D573, 'Jet Pac (1983)'
Cart 17, $5F6B, 'PSSST (1983)'
Cart 18, $2318, 'Cookie (1983)'
block $1000-$
; 00-3f: index to entries
; 40: active entry
; 41: fast boot 0: Disable, 1: Enable
; 42: Check CRC 0: Disable, 1: Enable
; 43: DivMMC 0: Disable, 1: Enable
; 44: NMI-DivMMC 0: Disable, 1: Enable
; 45: Issue 0: Issue 2, 1: Issue 3
l0ab0 defb $00, $01, $02, $03, $04, $05, $06, $07
defb $08, $09, $0a, $0b, $0c, $0d, $0e, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
defb $00 ; active
defb $00 ; quiet
defb $01 ; checkcrc
defb $02 ; Issue
defb $02 ; Timing
defb $02 ; Contended
defb $02 ; DivMMC
defb $02 ; NMI-DivMMC
defb 0 ; para que not implemented sea 0
; 64 entradas
; 00: slot offset
; 01: B= slot size
; 02: RAM offset
; 03: B= ROM SRAM size
; 04: port 1ffd
; 05: port 7ffd
; ...
; 10-1f: CRCs
; 20-3f: Name
block $2000-$
Quest escribió:Excelente, lo probaré![]()
Tampoco había comentado nada a pesar de ir viendo cambios en el SVN porque imaginaba que estabas aún en ello. Simplemente quería comentarlo por lo de ir pensando en cómo ponerlo en la BIOS, de cara al usuario y demás.
Y más cosas que aún no he contado

Esto me recuerda algo: ¿veis conveniente añadir a la lista de protocolos el "protocolo" OPQAM? Es decir, que el josytick mapee a esas archiconocidas teclas. Dicho de otra forma, ¿hay algún juego que sólo soporte teclado, y que además la combinación que soporta sea esa y ninguna otra?