- Back to Home »
- Cartmod , Tutorial Emulação »
- Reprodução de Cartucho Snes Tutorial
Fonte:http://www.elotrolado.net/hilo_tutorial-2014-reproducciones-de-snes_1633607
Bien, antes de nada deciros que si bien el proceso es relativamente sencillo, el coste que nos puede suponer para una sola reproducción es algo exagerado (programador, memorias, cartucho donante) y también dependiendo del juego que queramos realizar por usar una o más memorias.
Gracias a todos los que vais manteniendo el hilo vivo, a vtec16, FFantasy6, azulantares y sobre todo a magno por su apoyo contínuo...
Prólogo
Recopilando datos.
Antes de nada, hay que saber los datos de la ROM que queremos:
- Tipo de ROM; LoRom o HiRom.
- Tipo de save, el tamaño de la SRAM en kb.
- Tamaño de la ROM en Mbits.
- Uso o no de chips de apoyo especiales como el SuperFX o el DSP.
EPROM Type | Year | Size — bits | Size — bytes | Length (hex) | Last address (hex) |
---|---|---|---|---|---|
1702, 1702A | 1971 | 2 Kbit | 256 | 100 | FF |
2704 | 1975 | 4 Kbit | 512 | 200 | 1FF |
2708 | 1975 | 8 Kbit | 1 KB | 400 | 3FF |
2716, 27C16, TMS2716, 2516 | 1977 | 16 Kbit | 2 KB | 800 | 7FF |
2732, 27C32, 2532 | 1979 | 32 Kbit | 4 KB | 1000 | FFF |
2764, 27C64, 2564 | 64 Kbit | 8 KB | 2000 | 1FFF | |
27128, 27C128 | 128 Kbit | 16 KB | 4000 | 3FFF | |
27256, 27C256 | 256 Kbit | 32 KB | 8000 | 7FFF | |
27512, 27C512 | 512 Kbit | 64 KB | 10000 | FFFF | |
27C010, 27C100 | 1 Mbit | 128 KB | 20000 | 1FFFF | |
27C020 | 2 Mbit | 256 KB | 40000 | 3FFFF | |
27C040, 27C400 | 4 Mbit | 512 KB | 80000 | 7FFFF | |
27C080 | 8 Mbit | 1 MB | 100000 | FFFFF | |
27C160 | 16 Mbit | 2 MB | 200000 | 1FFFFF | |
27C320, 27C322 | 32 Mbit | 4 MB | 400000 | 3FFFFF |
¿Cómo saberlo? La manera más fácil es ejecutarla en un emulador y ver la info en pantalla (snes 9x es muy útil).
NOTA: en http://www.snescentral.com tenéis una amplia lista de PCB con sus características y los juegos que las montan.
Bien, ahora el tamaño... ¿Quién dijo que el tamaño no importa? Importa y mucho.
Sabemos, o al menos deberíamos saber, que los MEGAS que nos vendían en la época de SNES y MegaDrive eran Megabits, es decir, una octava parte de un MegaByte (los MEGAS que nosotros conocemos).
Partiendo de eso, una ROM como Zelda ocupa 1MB = 8Mb así que necesitaremos un almacenamiento de 8Mb para nuestra ROM.
Lo tenemos fácil, las EPROM más usadas en este ámbito son las 27c080 o 27c801 (son equivalentes) que poseen memoria de 8Mb, ideal para este juego. En juegos con más tamaño, se usan varias EPROM concatenadas, pero eso lo dejaremos para más adelante.
Las memorias
Como ya he dicho, las más utilizadas son las EPROM 27c801 100F porque concuerdan en casi todo el patillaje con la MASKROM (ROM original).
Fijáos bien en el último parámetro 100F, que define el tiempo de respuesta de la EPROM en nanosegundos. Esto es crucial porque si bien con 120F una ROM FastRom de un sólo integrado funciona, cuando usamos varias EPROM, el tiempo de respuesta aumenta y 120 NO SIRVE (gracias a magno por el aviso).
Para grabarlas, un programador Willem a pelo (no hacen falta adaptadores).
Para borrarlas, es necesario un borrador ultravioleta ya que son EPROM y no EEPROM.
¿Es necesario borrador? Bueno, las EPROM no suelen ser nuevas, así que a veces no vienen borradas correctamente... si no están bien borradas, no se graban.
Existen alternativas como las Flash 29F032 de bus de 8 bits y capacidad 4MB.
Hay también juegos específicos como el MarioRPG que necesitan una EPROM de 16bit de bus y 4MB como la 27C322 por llevar un chip de apoyo llamado SA-1
Primer nivel
The legend of Zelda - A link to the past
Manipulando la ROM
Software:
WindHEX 32
BankSwap de magno
Empezamos consiguiendo la ROM a grabar/modificar en formato *.smc y el correspondiente parche (si procede).
El parche de Pablito´s para traducir el Zelda lo tenéis AQUÍ
Abrir WindHex32, abrir el fichero a modificar, en este caso el SMC.
Ahora es necesario saber si el parche está creado para usar CON o SIN header SMC... El orden de los dos pasos siguientes varían si el parche debe aplicarse antes o después de borrar la cabecera SMC.
¡OJO! Para el Zelda es necesario aplicar el parche ANTES de borrar el header.
Aplicar parches
Tan solo con F6 o en "Tools" -> "Patch current file", el programa nos preguntará si deseamos guardar la rom antes de seguir y ya sí nos dará a elegir el ips a aplicar.
Recordad salvar después de la operación.
Borrar header
Tan simple como ir a "Edit" y marcar "Remove SNES Header", esto borrará el header SMC que nos está estorbando.
De nuevo hay que salvar.
Reparar Checks
En el mismo apartado "Tools" elegimos la opción "Repair SNES Checksum", tras una serie de avisos, arregla el check de la ROM (este paso no es obligado, pero vamos a hacer bien las cosas).
¡No olvidéis salvar el archivo antes de cerrar WindHEX!
Nota: esto está bien para además modificar el header real de la rom, con lo que podemos conseguir algo así:
Ahora el truco del almendruco, usar el programa de magno para swapear parte de la ROM y así evitar casi todos los cables a soldar.
Este esquema representa el pinout de una MaskROM y una EPROM 27c801antes y después de pasarla por BankSwap, como veis sólo cambian dos patillas entre ambas al finalizar el proceso:
Simplemente arrastrando el *.SMC sobre BankSwap.exe, nos dará un archivo resultante *_0.bin que debe ocupar exactamente 1.048.576 bytes = 1MB = 8Mb
Bien, ya está vuestra ROM preparada para grabar.
OJO: el orden del proceso es bastante irrelevante, se puede calcular el checksum y luego borrar la cabecera o al revés, el resultado es el mismo. Lo que no se puede hacer lógicamente es calcular el checksum y luego parchear.
Grabación de la EPROM.
Para grabar yo uso un Willem que compré por eBay por unos 18 euros (envío incluido), no es la última PCB pero para las 27c801 va sobrado. Eso sí, necesitamos puerto paralelo LPT (DB25) en nuestro equipo.
Yo puedo grabar perfectamente tanto en modo EPP como SPP, pero es recomendable tener el EPP activado en la bios de vuetro PC.
Bien, primero bajamos el software que nos subió socram8888 y lo instalamos:
hilo_programa-para-grabar-eeproms_1606706
Ahora toca configurar el Willem para 27c080/27c801 si tenéis uno viejuno como el mío:
Detalle:
Si es de los nuevos los jumpers son casi automáticos.
Abrimos EPROM3 y tras hacer el test de hardware:
Si todo va bien:
Seleccionamos el dispositivo en Device:
Comprobamos que el chip esté BIEN vacío con :
MEEEECCCCC, lógico, era una EPROM grabada
Pues nada nada, a la lavadora unos tres minutitos:
En pleno proceso:
Ahora sí:
Tapamos la ventanita de la EPROM con cinta aislante negra.
Abrimos nuestro bin y al turrón
(esto le cuesta un ratito, además luego verifica).
Constuyendo el cartucho
vtec16 se ha currado un buen videotutorial que no os podéis perder:
http://www.youtube.com/watch?v=tnaya6ignwc
Bueno bueno... ya tenemos caaasi la faena hecha.
Bien, como he puesto antes, para el Zelda necesitaremos un donante compatible, esto es:
LoROM 64kb Sram
Con lo que podemos usar uno de estos sin problemas
CÓDIGO: SELECCIONAR TODOLOROM CARTS - single sided solder + 8KB SRAM:
FIFA Soccer 96
FIFA 97
FIFA 98
NBA LIVE 95 (two ROMS)
NBA LIVE 96
NBA LIVE 97
NBA LIVE 98
90 Minutes European Prime Goal
Super Mario Allstars & Super Mario World
Super Metroid
Super Punch-Out!!
fuente: http://nintendoallstars.w.interia.pl/ro ... _types.htm
Esta lista es muy concurrida por la red, pero no deja de ser válida, además las maskrom son soldadas por una cara, lo que facilita su extracción.
Recordad 64kb=8KB
Vale, localizando cartucho donante:
Lo abrimos y vemos que tipo de placa usa:
Localizamos la MaskRom, la SRAM, la pila, el CIC y el decodificador de direcciones MAD-1.
Nota: no todos los cartucho tienen decodificador, sólo aquellos que usen más de un integrado (sin contar el CIC) deben usarlo porque la SNES es muy tonta y no sabe distinguir un acceso de otro.
Bien, desoldamos la MaskROM usando un desoldador preferiblemente, sale muy muy bien.
Si no tenéis, yo he probado este de ebay y va de cine:
Bueno, bonito y barato HOYGAN!
Ahora destacar que las MaskROM de SNES suelen tener 36 patillas en contra de las EPROM que cuentan con 32. Esto no es relevante puesto que si os fijáis en el pinout que colgué antes hay cuatro patillas que son "desechables", al menos por ahora.
Presentamos las herramientas:
Fijaos que la EPROM ya está puesta (no soldada) y sobran 4 pines por la parte derecha del cartucho.
Levantamos las patillas 24 y 31 de la EPROM:
Soldamos un cablecito en los huecos correspondientes a dichas patillas:
En la PCB son, contando desde la derecha, el hueco 4 y 11.
Y ya sí, soldamos todo en placa y los cables a las patillas contrarias:
Detalle:
Y... ya está, a probar:
Segundo nivel
Soul Blazer
Juegos de más de 8mb / Partir archivos con BankSawp
Usar dos EPROM para construir un juego de más de 8mb.
Bien, aprovechando que estoy preparando la trilogía "Heaven and Earth Saga" (La saga del cielo y la Tierra), compuesta por Soul Blazer, Illusion of Time y Terranigma, me doy cuenta (como muchos) que uno de los tres juegos nunca llegó en castellano, de hecho no recuerdo haber visto una versión ESP nunca... me refiero como no, al primero de la saga: Soul Blazer (en japón "Soul Blader" ソウルブレイダー, Sōru Bureidā).
La reproducción de este juego comparte elementos comunes con el ZELDA ya que el original ocupa lo mismo y es del mismo tipo:
Peeeeeeero, está en inglish pitinglish... y sería una lástima tener la trilogía tan multilingüe ¿verdad?
Gracias a HeXPLuS (Fortaleza Romhack) y (una vez más) a magno podemos disfrutar de un parche para traducir el juego:
http://fortaleza.romhackhispano.org/proyectos.html
Y ahora viene lo peliagudo, el parche transforma la ROM de 8mb en una preciosa ROM de 12mb... así que toca usar dos EPROM o pedir un parche con menos añadidos (como se ve, los checksum están ya corregidos en el parche así que no hace falta usar windhex como en el Zelda).
Como no estamos pa pedir y menos a gente que nos ofrece su trabajo desinteresadamente, nos jorobamos y usaremos dos EPROM 27c801.
¿Cómo partir la ROM?
Bien voy a aprovechar u matar dos pájaros de un tiro. BankSwap parte las ROMs de forma automática (recordad tenerla sin header) peeeero está diseñado para trabajar con ROMS enteras múltiplos de 8mb [1MB] como 8, 16, 24, 32, 40, y como vemos la ROM resultante tras aplicar el IPS es de 12mb (1.5MB).
Se puede ampliar el tamaño de ROM con windhex pero para facilitar la tarea he preparado un BAT que hace TODO el proceso solito.
Usando los archivos de este RAR el proceso es tan simple como:
- extraer el contenido del rar junto a la ROM
- renombrar la ROM ya parcheada a IN.SMC
- ejecutar BankSwap.bat (el bat, no el exe)
El resultado serán dos bin preparados ya para grabar con el willem:
Para grabar este juego, lo ideal es un NBA Live 95 porque ya posee el hueco para dos maskrom/eprom
Montando el cartucho.
El NBA Live 95 es ideal en este caso, LoRom y con hueco para dos maskrom.
Como se puede ver, esta vez son DIP32 con lo que ajusta perfectamente con nuestras EPROM.
Así pues basta con intercambiar los pines que bankswap no es capaz de cambiar en ambas eprom y listo. Cuidado con los pines levantados de la EPROM de arriba (#2) ya que si no los dejamos cortitos tocarán con la EPROM de abajo (#1).
Probamos el juego:
Metemos etiqueta:
¡Y listo!
Ya tenemos la trilogía en castellano .
Tercer nivel
Secret of Mana
Tipo HiRom, con dos EPROM
El parche para este juego lo podéis encontrar AQUÍ
Bueno, a raíz de los problemillas que sacamos con este juego, me he decidido a documentar el proceso.
Como la placa que voy a usar es una como la del Illusion of Time (en este caso el donante es Super Momotarou Dentetsu DX JAP), el MAD está preparado para trabajar con una ROM de 2Mb de tamaño... Las EPROM a usar siguen siendo las 27C801 y éstas son de 1Mb así que necesitamos recablear el MAD para que soporte EPROMs de 1Mb.
Bien, según las indicaciones de magno y mirando este apartado de ROMLab:
http://nintendoallstars.w.interia.pl/romlab/mads.htm
Vemos que nos dice claramente que la patilla 13 del MAD ha de ir conectada a A20 para usar 1Mb.
Seguiremos este esquema para el MAD:
Pinout de una MASKROM:
Pues nada, tras mirar continuidades con un polímetro, se ve que esto en el cartucho usado no se cumple, así que desoldamos el MAD y sacamos la patilla en cuestión:
OJO, sacad sólo la de la derecha (PIN 13).
El proceso se resume en montar la segunda EPROM en el hueco de la MASKROM y la primera en la parte de abajo, uniendo las patillas con estaño.
Aquí ya está el recablado hecho... se ve el cable que va desde la segunda patilla contando desde la derecha hacia el hueco A16 de la placa y el cable que sale del OE hacia el MAD.
Por la cara de arriba, hacemos lo propio con la EPROM #2 y además, conectamos 13 del MAD con A20.
Y listo:
Ahora sí, GRABANDO.
Cuarto nivel
Secret of Mana 2
Usando 4 EPROM 27C801 y 1 74LS139/74HC139
El parche para este juego lo podéis encontrar AQUÍ
El punto OE usado en el MAD verá la totalidad de la memoria asignada, así que no hay que recablear. La gestión de las EPROMs las va a realizar el LS (HC o LS sirven igual).
Nota: Perdonad que no me alargue mucho con este apartado.
Antes de nada, tener la rom SIN header y pasarla por BankSwap, que nos dará como resultado 4 archivos bin a grabar en 4 EPROMs. Recordad marcar bien cuál es cuál.
Bien, ahora nos vamos a regir por el siguiente esquema:
Lo explico un poco, TODAS las EPROM han de compartir TODOS los puntos MENOS el OE que será el que haga activarse una u otra dependiendo de la zona que el juego necesite. Para ello los OE de las EPROM ha de conectarse al 74xx139 (el 138 creo que sirve igual) siguiendo el esquema anterior.
Dependiendo de la placa donante, podemos encontrarnos con estos montajes:
Placa HiRom con hueco para dos MASKROM
Este montaje (cortesía de magno) utiliza los dos huecos de las maskrom para evitar recablear los puntos de unas EPROM a otras... como véis, los OE están al aire (van al LS) y las EPROM están concatenadas por las dos caras y las de la parte alta del PCB a su vez con las de la parte baja.
¡OJO! RECORDAD QUE HAY UN PUNTO DE LA EPROM QUE NO CONCUERDA CON EL DE LA PLACA
Detalles:
Placa HiRom con hueco para una MASKROM
Foto cortesía de kogami (un compañero francés). Aquí se usa el hueco para la maskrom y luego se recablea hacia TRESEPROMs apiladas.
El resto de fotos de este apartado las he sacado de romlab:
http://nintendoallstars.w.interia.pl/romlab/sneslab.htm
Usando una Flash de 32 Mb en lugar de cuatro EPROM
El parche para este juego lo podéis encontrar AQUÍ
De nuevo usamos la placa del Illusion of Time, el MAD está preparado para trabajar con una ROM de 2Mb de tamaño... pero en este caso, el punto OE usado en el MAD verá la totalidad de la memoria asignada, así que no hay que recablear.
Las memorias flash 29F032 tiene la ventaja de que son más duraderas y, por lo menos en las que yo tengo el tiempo de respuesta nunca es mayor de 90ns con lo que nos aseguramos que va a funcionar para SNES siempre.
Bien, tras haber grabado convenientemente una memoria flash 29F032 con la rom parcheada (hace falta el adaptador TSOP40b para willem), ojo, SIN APLICAR BANKSWAP la montamos en un adaptador universal para facilitar la tarea y simplemente cableamos hacia los puntos del PCB donante:
Pinout de una MASKROM:
Como veis, el A22 no se usa, hay cuatro puntos que van a +5v (Vcc) y dos puntos que van a masa (GND, Vss)
Pues nada, tras hacer la faenita, nos quedará algo así:
Y listo, a probar:
De nuevo comprobamos si graba partida.
Lo dejamos molón:
Y a otra cosa mariposa
Se ha usado el SOM2 pero este proceso es ideal para juegos de 3 o 4 MB como el FinalFantasy VI, Chrono Trigger o similares...
Quinto nivel
Tales of Phantasia
64 Mb de cartucho con dos TSOP, casi ná
El parche para este juego lo podéis encontrar AQUÍ
Esta parte es como la anterior, tan solo difiere en que se van a usar dos TSOP, con lo que hay que recablear el MAD para que admita dos partes de 32Mb.
Antes de nada, parchear la ROM, ampliarla a 64 Mb con WindHEX, partirla en dos y grabar las TSOP correspondientes.
Presentamos el material
Juntamos las TSOP.
Como soy un perrete he soldado tods los pines y luego cortado los de OE, WE y NC... para evitar contactos entre OE he dejado los adaptadores un poco separados, lo malo es que de esta forma el cartucho cierra muuuuuuy ajustado aún rebajando el plástico interior.
Si pegamos más las tsop el cartucho cierra perfectamente, así que ya sabéis.
El procedimiento es parecido al que hicimos en el SOM, levantando la patilla 13 del MAD y llevándola esta vez al pin 48 del slot.
En el donante usado que es de nuevo la placa SHVC-1J3M-20 (esta vez proveniente de un Super Momotaro Dentetsu 3), este pin está comunicado con A22 así que basta con unir el pin13 del MAD con el A22.
Y cableamos como antes, ojo con dejar espacio para el pivote de plástico del cartucho (yo lo marco con un rotulador).
Tan solo cuidadito al conectar los OE antes al MAD.
Probado y el guardado funciona perfectamente
Ale, ya me he quedao agusto...
Sexto nivel
StarFox 2
¿Chip FX2? Pa qué....
Bueno, aquí se pueden grabar varias roms, lamentablemente, el parche a español añade una imágen al inicio que aumenta la rom a más de 8mb.
PARCHE ESPAÑOL (SEMI): http://www.mediafire.com/?aiucaschfk54hd6
Voy a usar una rom con el parche retail a inglés, que además de traducirla le quita las opciones debug que lleva la rom liberada. Vamos, queda como un juego original.
Primero grabamos la rom en una 27C801, yo he pasado bankswap para no tener que cambiar tantos pines a la hora de cablear (el pinout de la maskrom, pese a ser SMD, coincide con el formato DIP). Se puede hacer sin bankswap ya que esta vez toca meter cables sí o sí.
Preparamos la EPROM doblando las patillas hacia arriba:
Ahora ya, a por el cartucho......
Partimos del juego Stunt Race FX donde localizamos y quitamos la maskrom:
Antes de cablear, he quitado la pila para ponerla en el lado contrario con tal de que no estorbe en nuestra labor... cableamos:
Vamos juntando cables con pines de la EPROM:
Dejamos el pin 24 y el 31 al aire ya que esos hay que intercambiarlos:
Probamos, et voilà:
El tema es que leyendo por ahí hay forma de overclockear el juego cambiando el XTAL por un de 24Hz en lugar del de 21 que lleva. El problema es que según comentan sólo funciona con juegos SuperFX2 y yo he usado el Stunt Race FX (SuperFX1).
Ya tenemos un UNRELEASED en nuestra SNES.
Séptimo nivel
The Legend of Zelda: Ancient Stone Tablets
¡Cartuchos multi-rom!
http://www.youtube.com/watch?v=0I5g598O39I
http://www.youtube.com/watch?v=bEqFc1nfa8o
http://www.youtube.com/watch?v=lnkYbHVPNis
Con un PIC 12F629 y las roms de 2mb en 2x29F032
NOTA: NC es NC, no conectéis nada ahí que en realidad son patillas de salida para control de sram, pero en el AST NO SE USAN.
https://www.mediafire.com/?9bhkcfvbcioxog1
Con un PIC 12F629 y las roms de 2mb en 2x29F032, AVANZADO.
Seguramente sea mi último aporte en el tema del Zelda AST.
Este selector lleva implementado el cambio de juego con un reset superior a 2 segundos, es decir:
Reset -> reinicia la consola
Reset +2seg -> cambia de juego y reinicia la consola
Como añadido, guarda el estado del último juego, pero no es cíclico: detrás del 4 no vuelve al 1... si queréis volver al primer juego, hay que volver a grabar el PIC, con lo que es recomendable usar un zócalo para su instalación.
La única pega es que los que tengan supercic deben tener el hex que se modificó para hacerlo compatible con el powerpak... donde un doble click de reset genera una señal de 7 segundos de duración, suficiente para cambiar de juego.
Octavo nivel
The Legend of Zelda: Ancient Stone Tablets: Master Quest
¡Cartuchos multi-rom (BIS)!
Contador binario, decodificador y roms de 4mb en 4x29F032
elnaib escribió:Hola,
Os voy a comentar cómo se haría un multijuego de 4 juegos diferentes de 4mb y una sram de 256kb, con un 74HC393 y un 74LS139 por si alguien no quiere utilizar un pic
CÓDIGO: SELECCIONAR TODO74LS139
MAD-1 #4 |01 \/ 16| +5V
74HC393 #3 |02 15| NC
74HC393 #4 |03 14| NC
TSOP 1 (/OE) |04 13| NC
TSOP 2 (/OE) |05 12| NC
TSOP 3 (/OE) |06 11| NC
TSOP 4 (/OE) |07 10| NC
GND |08 09| NC
CÓDIGO: SELECCIONAR TODO74HC393
RESET (MAD-1 #9) |01\/14| +5V
GND |02 13| 393 PIN#1
74LS139 #2 |03 12| 393 PIN#2
74LS139 #3 |04 11| A13 (SRAM #26)
NC |05 10| A14 (SRAM #1)
NC |06 09| NC
GND |07 08| NC
Para que funcione el segundo contador, el que controla la sram, hay que conectar el pin 12 al pin 2 y el 1 al 13 del 393.
Para que no haya problemas con el arranque del juego haremos un circuito RC con un delay de 1/10 de segundo, eso se consigue haciendo que el valor del condensador en faradios multiplicado por el valor de la resistencia en ohmios debe valer 0.1, y se conectaría de la siguiente forma
CÓDIGO: SELECCIONAR TODO5V—condensador—393 pin 2—resistencia—ground
Como consejo todas las patillas que no están conectadas (NC) es mejor dejarlas conectadas a masa.
El sistema está probado en el multijuegos de shooters que hice y que se puede ver en el video de la primera página, comentar que no lo he probado con 4 TSOP de 4 mb, pero lo haré pronto pues me tiene que llegar el material.
Bueno pues ya sabéis como se hace un multijuego de 4 juegos diferentes de 4 mb, a ver si alguien postea su experiencia.
Un saludo
PIC 12F629 y roms de 4mb en 4x29F032
MASTER QUEST, son 4x32mb, o cualquier multi con 4 juegos en 4 memorias. Sin gestión de sram, me faltan pines para ello (tendría que usar un 16F630):
NOTA: los /OE de TODAS las EPROM/FLASH han de ir unidos, sacados de la PCB y direccionados a MAD#4
Cambio de juego manteniendo reset 2 segundos:
CÓDIGO: SELECCIONAR TODO:020000040000FA
:100000000000000000008312073099008B01831666
:100010002830850081019B011C141A088312850079
:100020008C01851D11288B014B20051C3028851C57
:100030003328051D36283928851D1F281C284B20EC
:1000400085191C284B2085191C284B2085191C2834
:100050004B2085191C282C28300885003C201128AD
:100060001530B0001C281330B0001C280730B00039
:100070001C281630B0001C28300883169A0038302F
:100080009B081C1555309D00AA309D009C141C1126
:1000900083128C0108000330B1001830B200023026
:1000A000B300B10B5428B20B5628B30B5128582873
:0200B000080046
:0400B20000340034E2
:02400E00543F1D
:1042000016006A006F0073006500740065002000EE
:00000001FF
Cambio de juego con reset:
CÓDIGO: SELECCIONAR TODO:020000040000FA
:100000000000000000008312073099008B01831666
:100010002830850081019B011C141A088312850079
:100020008C01851D11288B014B20051C3028851C57
:100030003328051D36283928851D2C281C284B20DF
:1000400085191C284B2085191C284B2085191C2834
:100050004B2085191C282C28300885003C201128AD
:100060001530B0001C281330B0001C280730B00039
:100070001C281630B0001C28300883169A0038302F
:100080009B081C1555309D00AA309D009C141C1126
:1000900083128C0108000330B1001830B200023026
:1000A000B300B10B5428B20B5628B30B5128582873
:0200B000080046
:0400B20000340034E2
:02400E00543F1D
:1042000016006A006F0073006500740065002000EE
:00000001FF
ANEXO 1
¿Donante NTSC o PAL? No pifiarla antes de grabar.
Probando la rom en un emulador
Los emuladores no tienen región, adaptan el funcionamiento y la emulación a los datos contenidos en la cabecera de la rom. Así pues una rom con región JAP establecida en su cabecera, el emulador será ejecutada como si de una cartucho japonés en una Super Famicom japonesa se tratara, en cambio, si la región de la cabecera está establecida en Europa, el emulador se convierte en una SNES PAL a todos los efectos, 50Hz y restricciones PAL.
Para saber si una rom NTSC va a funcionar en un donante PAL o viceversa, nos podemos valer de un truquito basado en la modificación de la cabecera REAL de la rom. Cambiando el dato de región para que, aún siendo una rom NTSC, el emulador la ejecute en modo SNES PAL y veamos si funciona, tiene cuelgues o fallos.
Este paso se puede hacer sin arreglar el checksum y también sin borrar el header smc de la rom (el que borramos para grabar en una EPROM), es sólo a fines de testeo antes de elegir donante
En el ejemplo, voy a cambiarle la región al Dragon Ball Z Super Butouden 3, el cual lleva protección por software en su versión japonesa. Por contra, la versión PAL llamada "Ultime Menace" NO lleva protección.
Para llegar a ello, basta con:
Abrir la rom en el emulador y anotar o simplemente recordar el nombre INTERNO de la rom, en este caso "SFX SUPERBUTOUDEN3"
Podéis ver la región de la rom en el dato más bajo, "Japan" y el tipo de salida en "Output: NTSC 60Hz".
El emulador ahora se comporta como una Super Famicom japonesa.
Bien, abrid WindHex32 y abrid la rom en cuestion, pulsáis Ctrl+F o vais a Text Search:
Escribid parte del nombre interno de la rom (marcad la casilla "Ignore Case" para que no distinga mayúsculas y minúsculas)
Buscad el byte que os marco en la imagen:
Como podéis ver, es un 00 y como dato, corresponde a Japón (NTSC).
Activamos el editor de WindHex32:
Y acto seguido cambiamos el byte 00 por 02
Guardamos la rom y probamos de nuevo en emulador, que ahora actuará como una SNES PAL como indica en "Output":
Ojo, la rom sigue siendo JAP, tan solo hemos engañado al emulador para que se convierta en una SNES PAL.
¡Vaya qué lástima, esta rom está protegida por software!
Bueno, ya lo sabíamos.
ANEXO 2
SuperCIC en la consola
O cómo hacer tu SNES multirregión.
Gracias a magno..
Hilo sobre el SuperCIC
Nada más, grabar un PIC 16F630 con el último HEX y seguir el esquema que os propongo.
Esquema:
Los pines (¿o se dice pins?) de las PPU (ambos) han de levantarse y el CIC de la consola mejor extraerlo.
Resultado:
Características y funcionamiento:
El funcionamiento es simple, con el reset de la consola pasamos de PAL-forzado, NTSC-forzado y modo AUTO (detecta la región del cartucho).
Compatible con el 100% de los cartuchos. Funcionan tanto Super MArio RPG como Star Ocean y cartuchos normales.
Si metemos un juego NTSC y tenemos el forzado PAL, el juego arranca en NTSC y cambia automáticamente a los 9 segundos. Esto permite saltarse algunas comprobaciones al arrancar el juego. O sea, arranca en el modo del cartucho y luego establece el modo que le ponemos. Esto es siguiendo el esquema que os propongo.
Se puede cambiar de modo en caliente, o sea, en cualquier momento.
Haciendo doble reset se envia una señal reset de 7 segundos. Útil para los poseedores del powerpack, ya que es necesario presionar reset 7 segundos para transferir la SRMA a la tarjeta de memoria (CF)... o sea, en lugar de 7 segundos, basta con pulsar doble el reset (como hacer doble click en el ratón).
Saludos.
ANEXO 3
SuperCIC KEY
O cómo hacer tus cartuchos multirregión.
Bueno, me enteré gracias a magno (una vez más) y su hilo sobre el SuperCIC de que podemos disfrutar de una consola multirregión automática....
¿Sólo la consola?
NOOOOOO...
El creador del código del SuperCIC ikari_01 nos ha brindado además con código para sustituir el CIC de los cartuchos, dándonos la oportunidad de hacer nuestros cartuchos REGION-Free.
OJO, esto hace el cartucho libre de región, pero si el juego lleva protección por software, el resultado será nulo igualmente.
Bien, en el paquete del SuperCIC tenemos dos archivos *.hex que corresponden al código a grabar en nuestros IC.
Para sustituir el CIC de la consola se usa el archivo LOCK (cerradura) grabado en un PIC 16F630 (ver hilo de magno para más info).
El archivo que nos interesa es el KEY (llave), que va a ir grabado en un PIC 12F629.
Os dejo el esquema e iré ampliando la info de grabación del PIC y montaje en unos días.
Resultado:
Pequeño inciso sobre la grabación de estos PICs.
Yo suelo usar WinPIC800 pero por algún motivo inexplicable, la remesa que tengo de chips 12F629 dan error contínuo con WinPIC así que me toca usar de nuevo el acalamado ICProg.
Para programar tengo un TE-20
Bien, para cumplir los valores de oscilación (timing) del fabricante, estos chips vienen calibrados de fábrica así que usan los últimos bits para ello... además el bandgap ha de mantenerse como vino de fábrica también.
Si abrimos el ICProg y leemos el dispositivo, veremos al bit final algo así (343C):
Anotamos el valor porque es propenso a borrarse.
Cargamos el hex, fijáos que el valor Oscilador ha cambiado del valor que tenga a EC (externo):
Y al darle a programar nos dará esto:
El uso que le vamos a dar actualmente (superCIC_key) prescinde del oscilador interno y lo coge del CLK de la consola, así que es totalmente innecesario que mantengamos el valor de calibración... aun así, lo ideal es darle al NO porque así mantendremos la calibración de fábrica por si quisieramos en un futuro darle un uso alternativo (que lo dudo).
Si nos preguntase por cambiar el bandgap y usar el del archivo, le decimos que no.
¿Qué pasa si ya la hemos liado? ¿Si ya hemos borrado el OSCCAL y no sabemos cuál es?
Pues, estamos de suerte, no pasa NADA (en el caso que nos ocupa, claro) ya que como he dicho el valor CLK lo cogemos de la consola, podemos darle al Sí como al No...
OJITO, tal vez de valor ausente porque no detecte el chip o esté defectuoso... en ese caso fallaría la verificación seguro.
Al final:
Felicidades, ya tienes tu SuperCIC_key grabado y funcional.
ANEXO 4
Usando dos tipos de adaptadores TSOP-DIP
La facilidad de no cablear
No me extiendo...
Existen varios adaptadores de TSOP a formato DIP, no es difícil encontrar en la red fotolitos para poder meter nuestras tsop en un cartucho de snes sin tener que cablear nada.
Por ejemplo el de romlab:
Este en concreto lo tengo comprobado y funcionando, mirad:
Bien, hay otros tipos. Este por ejemplo:
Este en especial, nos dio problemillas a FFantasy6 y a mi porque tiene una pista mal y los A20 y A21 están intercambiados. Podéis bien pasar esos puntos con cables o simplemente manipular la rom para que A20 y A21 estén permutados.
¿Cómo?
-Ampliando la rom a 4Mb (si no lo está ya).
-Partirla en 4 partes.
-Cambiar el orden de las dos partes centrales (la dos por la tres y viceversa).
-Volver a unir.
La rom resultante NO funcionará en ningún emulador, únicamente en el adaptador "malo".
Debéis puentear R1 y R3.