Portando de DOS a Windows

Ayer leía en Slashdot sobre la historia del Port de Death Rally, un juego desarrollado por una empresa ya difunta llamada Apogee y del cual los derechos son ahora de la Finlandesa Remedy Edit: Resulta que la Finlandesa Remedy desarrolló el Juego y Apogee fue solamente el Publisher.

Extraído del artículo:

“La plataforma original era DOS, Watcom C, y un extensor de DOS estilo DOS4GW. El extensor básicamente significaba que podías utilizar más de 640k de memoria, y no necesitarías código extraño para datos mayores a 64k.

El juego desplegaba en los modos gráficos VESA 640×480 y MCGA 320×200, todos con paletas de 8 bits; No había color real en ninguna parte. También habían algunos trucos de cambios de paleta cada cuadro con los cuales los emuladores tienen problemas.

El código fuente era mayoritariamente C puro, con un par de docenas de funciones assembly embebidas. Un par de subsistemas se encontraban faltantes, específicamente audio y red, los cuales tendrían que ser reemplazados completamente de todos modos, al igual que un archivo para el cual el código fuente se había perdido y solo un objeto compilado estaba disponible.”

La historia cuenta los detalles del port; En general tiene mucho que ver con los problemas que uno suele encontrarse cuando desea adaptar una aplicación DOS a Windows. Uno de los problemas más comunes es que en DOS, uno podía programar a muy bajo nivel, haciendo a un lado al Sistema Operativo y trabajando directamente sobre el Hardware.

Una solución que me llamó la atención consistió en como resolver el problema de que para dibujar en la pantalla, el programa escribía en memoria de video directamente (en la dirección 0xa000). La solución fue, en vez de rehacer todo este código, crear una array del tamaño apropiado, almacenar un puntero global (llamado g0xa000) y reemplazar las escrituras.

Pueden seguir leyendo los detalles del port en el artículo original y también pueden descargar el Death Rally gratis para Windows (XP, Vista, 7) desde la página de Remedy.

This entry was posted in Programacion, Video Juegos. Bookmark the permalink.