Publicado un MOD del clásico Atic Atac de Ultimate (ZX Spectrum)
Sin necesidad de traducción, publico el texto íntegro de los detalles de esta modificación, escrito por su autor:
“Ok, here’s how I did it. I will hopefully work this up into a https://spectrumforeveryone.com tutorial, eventually.
I pressed pause in Spectaculator first, then loaded up a z80 snapshot (perhaps it would have been better to start with the original .tap, but I didn’t).
Then (still paused) I made a note of all the registers in the emulator debugger and dumped memory from $4000-$FFFF (the entire 48K RAM) to a .bin file. Then I found some free space filled with zeroes at $E000 (only potentially free at this point, although that turned out to hold true).
Zeus lets you inject code into it’s integrated emulator instantaneously at assembly time without having to load from virtual tape, so I loaded in my .bin file at $4000 using the import_bin directive. Then wrote a small asm entrypoint program at $E000, that sets the SP, registers and alt registers to the original values, and jumps to the original PC.
This worked, making me feel pretty pleased with myself! Clicking Assemble Then Emulate ran the original, as yet unmodified game, in the Zeus emulator.
Now Zeus has a built in disassembled called Diana, but it requires some effort to set up for a game-sized project – mostly identifying the parts that are data rather than opcodes. I didn’t need to disassemble the whole game, so I took a shortcut.
Somebody on WoS had already said there were only a handful of IN instructions to read the keyboard. The SpecEmu emulator has a debugger that lets you break on IN and OUT, and also reads or writes to a specific addresses. So I used that to find the key handler routines: one each for move/fire, pickup/drop and pause.
I copied those very short routines into Zeus by hand (in the original.asm source file), and used the ORG directive to place them at the correct addresses. Because Zeus is brill, you can put breakpoints in the asm source file routines, and step through the source code while emulating in Zeus.
This works because Zeus assembles in order from the top to bottom of the first file, following all the includes as it goes. There’s nothing to stop you assembling different code to the same address twice (or in this case importing a binary then overlaying code afterwards). The last byte to get planted at an address always wins.”
La actualización que ha realizado Robin (Sevenfff) Verhagen, se limita a un par de añadidos: por un lado, incorporar al menú la opción de poder definir nosotros mismos los controles del juego desde el teclado, y de esta manera, evitarnos los auténticos quebraderos de cabeza con los predefinidos originalmente, con la configuración QWERT (izquierda, derecha, abajo, arriba, fuego – respectivamente). Se añaden otras tres funciones definibles más: recogida y suelta de objetos, pausa y abortar partida (interesante ésta última, por si queremos parar el juego en cualquier momento y empezar de nuevo desde el principio). Esta corrección ha podido ser posible con ayuda de ZEUS, un ensamblador cruzado de Z-80 para Windows.
Por el otro, la optimización del código completo para que el mismo videojuego pueda funcionar sin problemas en modo 128K, en los modelos superiores de ZX Spectrum, según palabras de su autor que había anunciado su MOD desde un grupo de usuarios del ZX Spectrum en Facebook.
Este MOD o actualización realizada sobre Atic Atac, pese a que sobre los juegos originales de Ultimate Play The Game (actualmente Rare Ltd.) para los ocho bits existe una expresa prohibición sobre su software original de ser distribuido libremente a través de la red, su autor asegura que lo publica en su página web sin ninguna clara intención de lucro por su parte. Y esperemos, por nuesta parte, hacer lo propio.