Este parche es un trabajo en curso y no está terminado. Se juega de principio a fin, pero mira Lo que falta antes de juzgarlo.
Un volcado del cartucho. Aquí no se distribuye ninguno: ni el original ni el traducido. Lo que se publica es un fichero de diferencias, que por sí solo no arranca.
El volcado tiene que ser exactamente éste:
| tamaño | 32.768 bytes |
| sha256 | 24cb5bda5f55dcd5ab1343fb61ebac67e8c292f9714ee7a492431e33188b9b40 |
Otro volcado del mismo juego probablemente funcione, pero aquí no se ha comprobado nada contra él, y make para antes de hacer nada.
Coge parche/mahjong_en.ips y aplícalo a tu volcado con cualquier herramienta de IPS. Ya está. Sale una ROM de 32.768 bytes para emulador o flashcart, con sha256 5613f6b450c78113f3ae31079e54be2e26b31023522b3b14807eae6b99772e07.
Si tu ROM sale con otro hash, el volcado del que partías no era el de arriba.
Merece la pena si quieres cambiar los textos, o simplemente para ver que el parche es lo que dice ser.
Hacen falta pasmo y Python 3. Para las capturas, además, openMSX y Pillow.
cp /donde/tengas/tu.rom mahjong.rom
make comprueba # ¿es este el volcado bueno?
make # listado, verify, sanity, el parche y los tests
make recorre la cadena entera y acaba en verde o no acaba:
ensamblado : 32768 bytes 24cb5bda...188b9b40
original : 32768 bytes 24cb5bda...188b9b40
OK: reproducible byte a byte
...
ROM modificada: 12103 bytes cambiados dentro de 46 bloques, 0 fuera
OK: fuera de los bloques sustituidos, la ROM es identica a la original
Fíjate en la línea de en medio. 0 fuera quiere decir que la construcción no ha cambiado ni un byte fuera de los 46 bloques que declaró que iba a cambiar. Ésa es la garantía de que un parche de traducción no ha movido nada más por el camino.
make parche # sólo construir work/mahjong_en.rom y el IPS
make juega_en # la ROM traducida en openMSX
make capturas # rehace todas las capturas de esta web
make capturas_jp # lo mismo con el cartucho original, para comparar
make pantallas # las dos, y comprueba que no se enciende ningún mueble
make test # los tests
make pantallas es el que se gana el sueldo — mira el hallazgo por el que existe. Necesita openMSX porque necesita ver corriendo los dos cartuchos.
src/mahjong.asm está aquí porque parchea.py empalma en una copia suya los bloques traducidos. El desensamblado comentado del que sale —los 32.768 bytes explicados, ninguno sin identificar— es otro repositorio: KonamisMahjongDojo-disassembly. Si lo que quieres es entender el cartucho y no el parche, empieza por ahí.