Proyecto de ingeniería inversa del juego DOS F-15 Strike Eagle II busca pilotos de prueba para DOS
(neuviemeporte.github.io)- 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
egameyend, 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ón451.03y 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.03del 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.comoriginal para evitar que se ejecute en lugar del nuevof15.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
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-*.zipincluye un ejecutable alternativo para el juego de DOS¡La Fuerza Aérea te necesita!
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
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
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?
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
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
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
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
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
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
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
En algunos casos incluso puede entender directamente flujos de control muy ofuscados sin usar herramientas
Esta historia ya llegó a YouTube: https://youtu.be/aIPKkOpIiF8
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
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