Las tripas del OPF

By pitpan

Prophet (3145)

pitpan's picture

07-03-2005, 14:15

Esta es una preguntilla para el amigo Gillian.

Recibi hace poco mi SCC+ ya actualizado a 128 KB y ahora estoy haciendo pruebas con mi propio software para crear automaticamente WAVs de megaROMs que carguen en el aparatito en cuestion.

Por supuesto, los juegos con mapper Konami SCC no necesitan modificacion alguna y funcionan perfectamente (por cierto, que consigo cargar megaROMs en menos de 2 minutos por el puerto de cassette).

Pero que hago con los otros tipos de mapeado? Solo he hecho algunas pruebas con juegos de Konami no SCC y mapper de 8 KB, y lo que hago es buscar los siguientes comandos:

LD [6000h],A
LD [8000h],A
LD [A000h],A

Y sustituirlos por

LD [7000h],A
LD [9000h],A
LD [B000h],A

Y, por supuesto, los juegos que he probado funcionan perfectamente. Pero tengo la impresion de que estoy parcheando partes que no deberia, quizas grafico o sonido. Me baso para decir esto en que en algunas de las ROMs el programa hace el cambio mas de 500 veces... Me parece mucho, pero quizas es lo adecuado.

Como me consta que el OPF esta muy bien programado, me gustaria saber como funciona, es decir, que cadenas busca y como las sustituye. Que otros mapeadores podria implementar sin problemas? Supongo que el ASCII 8 KB no tendra mayores dificultades, pero no se como funciona (desconozco las direcciones de cambio de pagina).

Un saludo y gracias. Me ha salido un mensaje un tanto tecnico, espero que la gente no se asuste! Si hay alguien mas con un SCC+ ampliado y que quiera probar WAVs vertiginosos, que me cuente!

Login or register to post comments

By Guillian

Prophet (3474)

Guillian's picture

07-03-2005, 15:18

Lo que haces para adaptar las ROMs de Konami4 (no SCC) a Konami5 (SCC) es correcto. Aunque te parezca exagerado el numero de veces que se cambia de página, es normal. Date cuenta que hay juegos que cambian a cada interrupcion algunos bancos.

Los mapper ASCII funcionan de manera similar, sólo que usando otro rango de direcciones:

 Mode			Memory Bank		Bank registers	
----------------------------------------------------------------------------------------

- 8KB Mode		4000-5FFFh		6000-67FFh
			6000-7FFFh		6800-6FFFh
			8000-9FFFh		7000-77FFh
			A000-BFFFh		7800-7FFFh

- 16KB Mode:		4000-7FFFh		6000-67FFh
			8000-BFFFh		7000-77FFh

Pero en el caso de los ASCII la cosa no será tan sencilla como con los Konamis, ya que en éstos últimos siempre se usan las mismas direcciones para cambiar de banco, a pesar de poder usar otras sin problemas dentro de su rango (por ejemplo #6034 en vez de #5000)

Así que en algunos casos te bastará con buscar cadenas del tipo: LD (#6800), A y similares. Pero también te puedes encontrar con ROMs que usan #68FF o cualquier otra válida. Y eso no es todo, como es lógico también se pueden hacer cosas como:
LD HL,#68FF
LD (HL), A

Fijo que no te vas a aburrir en una temporada ^^!

By pitpan

Prophet (3145)

pitpan's picture

08-03-2005, 17:24

Si, seguro que no me aburro ;-)

Gracias por la informacion, me quedo con la copla. Eso si, para el mapeado de paginas de 16 KB, que haces exactamente? Empotrar en la ROM una rutina que cambie dos paginas a la vez o poner algo asi en la RAM, para que conmute dos paginas consecutivas al mismo tiempo? Lo digo porque no veo ninguna solucion trivial para hacerlo...

By Guillian

Prophet (3474)

Guillian's picture

08-03-2005, 23:09

Lo que hice para las ROMs de 16K fue añadir hardware extra (con ayuda de Tsujikawa ^^!) para poder cambiar el modo de paginación en los modelos ASCII (estos mappers pueden funcionar en ambos modos). En los modelos SCC esto no es posible, ya que el SCC trabaja siempre con bancos de 8K. Así que la solución es la que tú apuntas: cambiar los LDs por CALLs a tus propias rutinas de mapeo. Algo así como:

                LD (#6000), A

cambiarlo por

                CALL BANK4
                .
                .
                .
BANK4:
                PUSH AF
                RLCA
                LD (#5000), A
                INC A
                LD (#7000), A
                POP AF
                RET

By usuario_msx2

Paladin (755)

usuario_msx2's picture

09-03-2005, 12:09

una pregunta que se sale de contexto Tongue

No tengo información sobre el SCC+, habría forma de añadir mas ram para ser usada en el scc+?

saludos

By pitpan

Prophet (3145)

pitpan's picture

09-03-2005, 23:00

El problema es que luego no se podria usar del mismo modo el registro de control. No creo que se pueda hacer "por las buenas". Aunque supongo que haciendo el bestia si que se podria. O usar un SCC+, como hizo aqui Gillian, para ponerle una memoria Flash y usarlo con el OPF (si no recuerdo mal, claro). Un SCC+ con 1 MByte (es decir, 8 Mbits) seria una autentica gozada para los sentidos.

El problema es que todavia no me he puesto con la info tecnica del chip flash, para hacer la version que funcione desde el puerto de cassette. Todo se andara!

By Guillian

Prophet (3474)

Guillian's picture

10-03-2005, 04:39

En esto no puedo ayudaros ya que no dispongo del "pinout" del SCC-I2312P001 (SCC+ para los colegas). Dependiendo de las señales que de se podría ampliar o no a más memoria. Pero me temo que no es posible pasar de 128KB. Como ya sabréis, dependiendo si el cartucho es del Snatcher o del SD-Snatcher, la RAM se encuentra en los bancos 0-7 o en los 8-15. Pero el banco 0 es el mismo que el #10, y el mismo que el #20 y así sucesivamente. Esto me hace pensar que no puede direccionar más de 128KB a priori. Podría ser que tenga algunos pins de configuración para indicar la RAM con la que tiene que trabajar, y lineas extra para las señales /CAS para direccionarlo. Pero me temo que no es así.