Empezar

Solo leer

Los listados de src/*.asm están comentados y no hace falta compilar nada para leerlos. Por dónde entrar, según lo que te interese:

quiero ver...mira
Cómo arranca el juegoalehop_game_nucleo.asm, en 0xC000
El motor: física, colisión, scrollalehop_game_extra.asm
El reproductor de músicaalehop_game_sonido.asm
El cargador turbo de cintaalehop_slots.asm
Los mapas y los gráficosalehop_game_datos.asm

Reconstruirlo

make

Eso extrae la cinta, traza el código, regenera los cinco listados del juego más los otros tres módulos, y los verifica. En verde significa cuatro cosas:

  1. Cada listado vuelve a ensamblar al binario original byte a byte.
  2. Los cinco trozos del juego, concatenados en orden de carga, dan el bloque turbo entero.
  3. Ninguna zona de datos se ha colado como código.
  4. No queda ni un byte sin explicar de los 42645.

Y luego pasan los 36 tests.

Hace falta:

**La cinta .tsx no se distribuye** con el repositorio. Sin ella, make avisa de lo que no puede hacer en vez de fingir que ha ido bien.

Las imágenes

make imagenes

Dibuja los seis niveles a partir de los datos del juego: la tira completa de cada uno (2048x64) y una pantalla de verdad con sus tres bandas. No son capturas: se generan descomprimiendo los gráficos y montando los mapas, que es la mejor prueba de que el formato está bien entendido.

El emulador

ALEHOP_TSX="$PWD/alehop.tsx" ALEHOP_OUT="$PWD/dump" \
  openmsx -machine Philips_VG_8020-20 -script tools/omsx_load.tcl

Carga la cinta original usando el propio cargador del juego como decodificador y vuelca la RAM en cada etapa. Es lo que produce dump/full_recolocado.bin, la imagen de 64 KB sobre la que se traza el código: las direcciones solo significan algo cuando el juego ya está recolocado en memoria.

Para verlo jugar y hacer capturas:

ALEHOP_TSX="$PWD/build/alehop_rebuild.tsx" ALEHOP_OUT="$PWD/build/capturas" \
  openmsx -machine Philips_VG_8020-20 -script tools/omsx_juega.tcl

Tarda unos siete minutos de tiempo emulado en cargar, igual que en 1988.

Modificar el juego

El sitio por donde empezar es src/*.notes: los comentarios viven ahí, anclados a dirección, y sobreviven a que se vuelva a trazar todo. Los .asm se regeneran, así que no hay que editarlos a mano.

Para tocar el código, edita el .asm correspondiente, y luego:

python3 tools/build_tape.py build build/mi_alehop.tsx

Eso ensambla, reconstruye los bloques con sus cabeceras y checksums, y produce una cinta cargable. Mientras make siga en verde antes de tocar nada, cualquier cambio de comportamiento se puede atribuir a lo que hayas cambiado y no a un error de lectura del binario.