1 puntos por GN⁺ 4 시간 전 | 1 comentarios | Compartir por WhatsApp
  • El proyecto de hacer ingeniería inversa del binario original de F-15 Strike Eagle II, un juego de 1989, para reconstruir su código fuente en C ha entrado en una etapa de pruebas de juego reales
  • Todo el código y los datos de los ejecutables, incluidos egame y end, fueron trasladados a C, y la mayor parte del código exclusivo de ensamblador ya cuenta con una implementación alternativa en C
  • La versión más reciente, v0.9.1, permite probar reemplazando los ejecutables originales del juego original versión 451.03 y de la expansión Desert Storm
  • El nuevo ejecutable omite la pantalla de configuración y asume MCGA/VGA, sin sonido y sin joystick, pero el briefing de misión, el vuelo y el debriefing deberían funcionar
  • Como el objetivo es una reconstrucción bug-for-bug que preserve incluso los mismos errores del original, los comportamientos que también existen en el juego original quedan fuera de los reportes de bugs por ahora

Estado del proyecto de reconstrucción en C

  • La reconstrucción de F-15 Strike Eagle II es un proyecto hobby que busca recrear el código fuente en C del juego de 1989 mediante ingeniería inversa del binario original
  • Hasta hace poco más de un mes, parecía que trasladar a C el segundo ejecutable, egame, iba a tomar varios años más, y todavía quedaba el tercer ejecutable, end
  • Ahora el proyecto ha avanzado hasta lo siguiente
    • Se completó la reconstrucción del código en C de todos los ejecutables
    • Todos los datos fueron movidos de ensamblador a C
    • Se escribieron implementaciones alternativas en C funcionalmente equivalentes para la mayor parte del código exclusivo de ensamblador
    • La mayoría de las rutinas y estructuras de datos ya tienen nombres significativos
    • En el corto plazo se evaluará crear una bifurcación del repositorio para un proyecto de portabilidad
  • Las herramientas verifican si los opcodes reconstruidos son fieles al original, pero no logran detectar todos los bugs relacionados con el layout de datos
  • Ahora ya no basta con confirmar que los opcodes coincidan; también hace falta mantener un juego que realmente corra, así que se necesitan pruebas externas

Cómo probarlo y qué problemas reportar

  • La versión a probar es la más reciente, v0.9.1
  • Solo hay que colocar los nuevos ejecutables en la carpeta del juego que tenga la versión 451.03 del juego original y la expansión Desert Storm para reemplazar los ejecutables originales
    • Es necesario hacer un respaldo antes de reemplazarlos
    • Puede ser necesario eliminar el f15.com original para evitar que se ejecute en lugar del nuevo f15.exe
  • El nuevo ejecutable no entra a la pantalla de configuración
    • Asume una pantalla MCGA/VGA
    • Sin sonido
    • Sin joystick
  • Si encuentras problemas durante las pruebas, puedes reportarlos en GitHub Issues
    • Cierres inesperados
    • Glitches gráficos
    • Fallas en la entrada de teclado
    • Si hace falta, adjunta capturas tomadas en dosbox con Ctrl+F5
    • Indicar qué acciones realizaste antes de que apareciera el problema ayuda a reproducirlo y corregirlo
  • Este proyecto busca una reconstrucción bug-for-bug, así que los comportamientos que también están en el juego original deben conservarse
    • El original tiene problemas como desaparición de objetos 3D o que el avión caiga hacia el cielo cuando se queda sin combustible estando invertido
    • Conviene verificar si el mismo problema también ocurre en el original antes de reportarlo

1 comentarios

 
GN⁺ 4 시간 전
Comentarios en Hacker News
  • Hay una versión para DOS jugable
    La primera etapa fue hacer ingeniería inversa completa a ensamblador, y la segunda fue reemplazar ese ensamblador por código C compilado e idéntico al binario. La idea es seguir con ese trabajo sobre DOS hasta que no quede código ensamblador, y después empezar los ports a Linux y Windows
    La ingeniería inversa tiende a introducir bugs nuevos, y no es fácil encontrar todos los bugs en código reversado tan antiguo, pero hasta ahora parece que todo funciona
    Si tienes la versión 451.03 de F-15 y Dosbox o DOS real, por favor busca bugs abiertos
    La versión más reciente para DOS se puede descargar aquí: https://github.com/neuviemeporte/f15se2-re/releases
    El archivo f15_se2-*.zip incluye un ejecutable alternativo para el juego de DOS
    ¡La Fuerza Aérea te necesita!

    • Soy veterano de la USAF. Crecí jugando F-15 Strike Eagle II y, lamentablemente, mi copia dejó de funcionar hace mucho tiempo. Me da muchísimo gusto ver este proyecto
      Solo tengo un detalle muy pequeño y personal que hará que las demás ramas militares saquen a relucir cuánto amo las sillas
      Air Force son dos palabras
    • Muy bien hecho
      No parece necesario ponerse demasiada presión con el port a Linux. El soporte de emuladores es tan bueno y tan usado que, si corre ahí, ya puede considerarse un éxito
      Yo uso Lutris(https://lutris.net/) porque me resulta cómodo
      Pero pareces ser de los que disfrutan el bajo nivel, así que quizá esto sea una misión en sí misma más que solo jugar un gran juego retro
    • Yo también estoy haciendo ingeniería inversa de algunos juegos ahora mismo. Estos días es bastante más fácil gracias a la IA
      Pero me preocupa si esto, en general, está bien legalmente. Me gustaría saber qué piensan al respecto
  • Pregunta de principiante. Espero que no suene negativa
    Está genial dedicar tiempo a hacer que juegos viejos funcionen, pero me da curiosidad por qué decompilar un juego que ya se puede emular con algo como DOSbox. Si es un juego tan viejo, ¿no debería correr bien incluso en hardware de muy bajos recursos?

    • El punto no es ejecutar el juego, sino abrirlo para poder modificarlo. Parchear un juego en forma binaria es ridículamente difícil, y hacer algo más allá de arreglos simples de bugs es casi imposible
      Si tienes el código fuente, puedes agregar funciones completas, portarlo a Windows 10, implementar 4K HDR, texturas, modelos nuevos e incluso misiones nuevas. Los límites prácticamente desaparecen
      Además, analizar un juego viendo solo instrucciones ensamblador con offsets de datos hardcodeados es realmente difícil. En C, en cambio, puedes leer directamente lo que hace o insertar código de instrumentación y depuración para entenderlo
    • Cuando intenté hacer ingeniería inversa de juegos de la era DOS hace algunos años, tenía varias razones
      Quería documentar formatos de archivo, revisar los datos para encontrar contenido no usado, identificar y corregir bugs graves, hacer herramientas de modding y entender con qué técnicas se había construido algo que recordaba de mi infancia
      También quería reducir la fricción para ejecutarlos en sistemas modernos y habilitar mejoras opcionales, como mayor resolución o reemplazo de texturas
      Al final no tuve la paciencia para terminar, pero ahora siento que quizá sí podría
    • Muchos juegos basados en disquete tienen patrones de protección anticopia de disco que aprovechaban comportamientos no documentados de las disqueteras de la época. Por eso se necesitan herramientas como Greaseweazle para reconstruir el mapa completo de flujo magnético de un disquete archivado
      Además, estos juegos solían hacerse para correr en una variedad de hardware gráfico y de sonido, así que en la práctica los drivers venían compilados dentro del juego
      [0] https://github.com/keirf/greaseweazle
  • Un juego al que jugué muchísimo de niño. También jugué F-19 Stealth Fighter y F-117A Nighthawk Stealth Fighter, y hasta hoy me enteré de que esos dos salieron antes y después de este juego. También jugué un poco F-14 Tomcat
    Si entendí bien, para ejecutar esto parece que hacen falta los archivos originales del juego. Así que probablemente me dedique más a leer el diario de desarrollo que a volver a pilotear este avión

    • F-19 es un juegazo y uno de mis títulos favoritos de Sid Meier
      Recuerdo haberlo comprado en Electronics Boutique a fines de los 80 y jugarlo en la Packard Bell 286 de mi casa. La protección anticopia consistía en buscar e identificar aeronaves en el manual, y como resultado terminé memorizando todos los aviones que aparecían en el juego
      Incluso me compré un joystick Gravis Analog para jugarlo, y todavía conservo la plantilla del teclado
      De verdad me encantaría ver un reboot moderno de este juego
    • ¿Era este el juego que se podía jugar en cooperativo con un amigo, uno como piloto delantero y otro como copiloto atrás, o era el III?
      Recuerdo pasar un montón de tiempo al teléfono fijo con mi amigo ajustando la configuración del módem, luego pedirle que volviera a llamar, iniciar el juego, que se cortara otra vez y volver a llamarnos para ver qué había pasado, una y otra vez
      Cuando por fin funcionó, jugamos tanto y tan seguido que la mamá de mi amigo prohibió jugar por módem porque ocupábamos la única línea telefónica durante horas
      Me gustaría encontrar multijugador parecido en otros simuladores de vuelo o espaciales, y también volver a hacer funcionar este juego para tentar a mi amigo con la nostalgia
    • El blog de desarrollo está entre los mejores diarios de ingeniería inversa retro que he leído. Se disfruta mucho
    • ¿No están registrados como marca esos nombres? Uno pensaría que Lockheed podría vender esos derechos como ingreso adicional
  • En estos días portar juegos se volvió absurdamente fácil
    https://robin.tooclever.org tomó menos de un día en tiempo de API

    • Qué genial. ¿Hay algún índice de juegos porteados así o de ports open source?
  • Me pregunto si la IA encaja bien para inferir la estructura de proyectos decompilados cuando no hay nombres de símbolos
    No es mi área, pero me sorprendió ver que la IA capta bastante bien la intención de la estructura en JavaScript sin source maps

    • La IA es sobrehumana para leer y entender ensamblador. No le importa demasiado si está decompilado o si tiene símbolos; sin ellos solo va un poco más lenta
      En algunos casos incluso puede entender directamente flujos de control muy ofuscados sin usar herramientas
    • Sí, ayuda muchísimo
  • Esta historia ya llegó a YouTube: https://youtu.be/aIPKkOpIiF8

    • El video está bueno, pero la narración con IA molesta
  • Tengo un amigo que piloteó F15, así que se lo mandé

  • Estas comunidades de juegos viejos hacen cosas impresionantes para asegurar las cuatro libertades sobre los títulos que aman, y de verdad inspiran

  • Nunca jugué este, pero sí jugué Jane's F/A-18, y era un gran juego

    • ¡Y también estaba Jane's USAF!
  • Pasé mucho tiempo construyendo el mapa Doppler en pleno vuelo para usarlo en lanzamientos de SLAM
    Junto con Tornado de Digital Integrations, era un simulador excelente, y Tornado de verdad necesita un reboot