Ingeniería de ports nativos para PC

G-Diffuser

Un port de código fuente no es una envoltura sobre un emulador. El juego decompilado, un runtime de abstracción de hardware, dos renderizadores y el sistema de disco del 64DD deben coordinarse en un solo producto coherente.

N64 + 64DDhardware portado
D3D11/GLbackends de renderizado
16:9widescreen real

Problema

F-Zero X nunca salió del N64, y su 64DD Expansion Kit nunca salió de Japón. Ejecutar la experiencia completa de forma nativa en PC, con expectativas modernas de pantalla, entrada y modding, requiere ingeniería muy superior a la precisión de emulación.

Enfoque de ingeniería

  • Construir sobre la decompilación matching de inspectredc/fzerox y el runtime libultraship, el motor detrás de Ship of Harkinian, apuntando a Direct3D 11 en Windows y OpenGL en Linux desde una sola base de código.
  • Cargar el disco traducido del 64DD Expansion Kit y la ROM IPL para desbloquear el editor de pistas Course Edit y las copas DD, registrando las escrituras de disco en un archivo sidecar para nunca modificar la imagen original.
  • Implementar renderizado widescreen 16:9 real con HUD anclado al formato, más un menú de mejoras con ImGui que cubre gráficos, audio, gameplay, práctica, ghosts y workshop.
  • Agregar una biblioteca de ghosts en el host con importación/exportación .gdg y ventana de exploración, y modding de paquetes de texturas con recarga en caliente y herramientas de extracción de assets.

Resultado

  • La experiencia completa del Expansion Kit, incluido Course Edit, corre de forma nativa en Windows y Linux a partir de dumps provistos por el usuario; el repositorio no distribuye assets del juego.
  • El port convierte un exclusivo de consola en una plataforma de PC modificable, con un formato documentado de paquetes de texturas y guardado durable para un periférico de disco diseñado para ser reescrito.

El problema más difícil

El desafío

Permitir que Course Edit y las copas DD guarden durante años sin tocar jamás la imagen de disco 64DD original del jugador.

La restricción

El Expansion Kit fue diseñado alrededor de un periférico de disco reescribible, así que el juego espera escribir en cualquier parte del disco en cualquier momento, pero la imagen .ndd es un artefacto irreemplazable que una mala escritura corrompe.

La salida

Interceptar las escrituras de disco en la capa del 64DD y registrarlas en un archivo sidecar; las lecturas consultan primero el journal, así que la imagen original permanece idéntica byte a byte para siempre.

Cómo lo resolví

La respuesta ingenua es copy-on-write: duplicar la imagen de disco de ~65 MB y dejar que el juego escriba en la copia. Eso multiplica el uso de disco por instalación, confunde a los jugadores sobre cuál archivo es el canónico y aún deja una imagen escribible a un bug de distancia de la corrupción. El journaling invierte la relación: el original se vuelve verdad de solo lectura, y cada escritura que emite el juego se agrega a un sidecar pequeño con la estructura suficiente para repetir o reiniciar.

La misma disciplina moldeó el resto del port. Las funciones nuevas van al menú ImGui del host; el contenido que el 64DD ya renderiza, pistas del workshop, máquinas, ghosts, permanece en los menús del propio juego a través del Expansion Kit. Dos capas de UI con una regla: extender alrededor del juego, nunca en su lugar.

Tecnologías

  • C
  • libultraship
  • Fast3D
  • Direct3D 11
  • OpenGL
  • SDL2
  • Dear ImGui
  • CMake
  • N64 decompilation

Siguiente caso de estudio

FalcomBGMInfo

Una familia de mods en C++ que incorpora metadatos musicales contextuales a cerca de veinte juegos de Falcom a través de varias generaciones de motores.