[Mundo Viejuno] Wolfenstein 3D en un PC/XT
por
- 10/11/2007 a las 19:03 (4700 Visitas)
Wolfenstein 3d en un PC/XT
Como ya comentaba en el proyecto del Overcloking de un PC/XT , la mayoria de PC/XT estaban basados en el Intel 8088, y yo, de siempre habia querido tener un 8086, ya que la diferencia de rendimiento es mas que notable.
La cuestion no era tener 8086 para hacer funcionar juegos CGA, ya que no es necesario, cualquier 8088 a 4,77 o a 8mhz puede hacer funcionar estos juegos fluidamente de sobra. La cuestion era tirar a la EGA, y por que no, a la VGA directamente.
Siendo la VGA un adaptador que salio alla por el 1987, epoca en que los PC/XT ya empezaban a estar de capa caida, dando paso a sus sucesores, los 286, no es tan comun encontrarse con un XT con VGA, y mucho menos que este pueda hacer funcionar fluidamente los juegos.
En un principio estuve planteandome hackear la placa de un Amstrad pc1512, uno de los PC's XT con mas exito de todos los tiempos. El inconveniente es que lleva una CGA integrada en placa y que no se puede inhabilitar. Mas tarde estuve probando con una placa de un pc1640, el sucesor de este, que lleva en su modelo superior, una EGA integrada en placa, la cual es desactivable, para que pudieramos pinchar algo superior en las ranuras ISA. Desgraciadamente mi placa 1640 debia de estar defectuosa, o ser incompatible con mis VGA ISA 8 bit, pq no consegui hacerlo funcionar nunca, pese a que la tarjeta integrada estaba desactivada.
La cuestion era tirar a los ultimos modelos que Amstrad saco basandose en el XT, la serie X086. Esta, concretamente el modelo 2086, viene con un 8086 a 8mhz, 640kb de ram, VGA integrada y 4 bahias ISA libres. Una gozada para el cacharreo. Concretamente el mio lo tengo con una controladora MFM para el disco duro, una Sound Blaster 1, una tarjeta de red AUI y una hercules, para el monitor secundario. El procesador principal lo reemplace con el Nec V30, una version mucho mas rapida que el 8086 y de postre, le puse el coprocesador 8087 Lo que es tenerlo a tope, vaya xD
Bueno, pues ya tenemos un XT 'cargadito', ¿que hacer ahora con el?
Estuve planteandome el hacer algun tipo de demo vectorial con sonido soundblaster por aquello de usar el 8087 tambien, pero, tras ver que el wolf3d, un juego que pensaba que funcionaria de manera nativa, si habia suficiente ram libre, no funcionaba, decidi portarlo a esta plataforma.
Cachis...
Me hice con el codigo fuente del juego, junto con la version del compilador para hacerlo funcionar aqui , y me puse a ver si eso compilaria para el V30 directamente, ya que este chip es compatible con el juego de instrucciones 80186, el cual es identico al del 80286, quitando el tema de la multitarea, modo protegido y el modo de direccionamiento de memoria plana.
No es un V30 cualquiera, es el que tiene mi Amstrad 2086!
Pues no, no funcionaba, al parecer habia mas diferencias. Una de ellas eran las instrucciones de desplazamiento logico de bits. En 286 y superiores podias ejecutar
Y eso te desplazaba los bits de AX 12 posiciones a la izquierda. En 186 e inferiores habia que hacerselo a mano, ya que solo se permitia un desplazamiento por instruccion:Código:SLL AX,12
Asi, cambiando estas, y otras instrucciones del estilo que no existian en el juego del 80186 (y v20 y v30), y traduciendolas por otras que hicieran lo mismo y si fueran reconocidas, compile una version para esta plataforma, aprovechando tambien el 8087 y quitando la emulacion FPU por software.Código:SLL AX
Et voila! Wolf3d en un PC/XT!
Obviamente el rendimiento no es nada del otro mundo, pero ver un juego tan 'moderno' en un ordenador tan antiguo ya es suficientemente interesante
Como nota curiosa decir que entre el codigo fuente se veian notas de John Carmack quejandose de lo inutil que era programando.. si este hombre es inutil no se que sere yo..., y tambien un motor que al final no fue usado, no se porque, para reproducir las voces digitalizadas a traves del pc speaker. Supongo que decidieron no usarlo y dejar el sonido digital solo para soundblaster por el tema del rendimiento.
En fin, espero que os guste el video
[YTB]aX0cs7SR_n0[/YTB]
-- Articulo original en http://www.mundoviejuno.com