376 meneos
4646 clics

El código fuente de Prince of Persia se publica en Github

Hace unos meses Jordan Mechner publicaba que había encontrado los discos que contenían el código fuente de Prince of Persia para Apple II. Pues bien, el código fuente realizado en ensamblador ya está disponible en github. Relacionada: www.meneame.net/story/creador-prince-of-persia-encuentra-codigo-fuente
etiquetas: prince of persia, codigo fuente, github
usuarios: 207   anónimos: 169   negativos: 1  
75comentarios mnm karma: 647
Comentarios destacados:                 
#36   Madre mía, me parecen increibles los comentarios que leo.
No entiendo cómo tanta gente se puede sorprender de que el juego estuviera programado en ensamblador. Lo que hubiera sido realmente sorprendente en esa época sería que lo programara en C desperdiciando ciclos del 6502 a 1mhz.

Hay miles de programas y juegos realizados en ensamblador. De hecho diría que el 95% de los juegos para Spectrum, Amstrad, MSX, Commodore, Amiga, Atari ST, Megadrive, Snes, Neogeo, y GameBoy están realizados en ensamblador, y dudo que sus programadores fueran "idiotas" por usarlo en vez de usar C.

Era justo todo lo contrario. La escasez de recursos agudizaba el ingenio y hacía que realmente hiciera falta programadores que supieran optimizar y lo que estaban haciendo.

Por contra, hoy en día si un programa va lento, ¿qué se hace?...simplemente subir las especificaciones mínimas y pa'lante.

Pero vamos, sigo alucinado con los comentarios. Pase que no hayáis conocido esa época...pero lo que no pasa es que "critiqueis" al programador de un juego que marcó un auténtico hito en la historia de los videojuegos simplemente por desconocimiento. ¿Así enseñan ahora en las facultades de informática?.
votos: 9    karma: 95
#2   ostias, es verdad que esta escrito 100% en ensamblador. He ido a echarle un ojo porque ya estaba pensando "estos no saben lo que dicen, seguro que es una pequeña parte en ensamblador pero la mayoria sera en C...". Si si, los cojones, ensamblador puro y duro.
Tenia que ser una locura programar un juego 100% en ensamblador por esos tiempo xD
votos: 37    karma: 298
 *   jr6 jr6
#10   #2
Pues como gran cantidad de juegos para microordenadores con Z80. O ensamblador o BASIC para juegos cutres.

El C, C++ y sus compiladores eran para grandes computadores, como UNIX.
votos: 15    karma: 133
#17   #10 Yo no soy de esa epoca, pero si he tenido entre mis manos spectrum 48k de mis hermanos e incluso tengo algunos fasciculos de la revista microhobby con algunos tutoriales de programacion de la epoca, y en efecto eran en BASIC.
Como me ha entrado la curiosidad me he puesto a mirar en la wikipedia y segun dicen el apple II tenga un compilador de BASIC, Fortran y Pascal, pero que carajo, antes que hacerlo en ensamblador lo hago en Pascal aunque sea, y si me pones hasta en BASIC, pero vamos que…   » ver todo el comentario
votos: 4    karma: 33
 *   jr6 jr6
#25   #17 El msx tenia sprites por hardware. El spectrum creo que no. La vga (y anteriores) no tenian sprites por hardware. El apple II ni idea.

Programar en ensamblador era el único recurso para sacarle el máximo rendimiento en aquellos tiempos. Y en realidad no es mas complicado que C, solo mas laborioso.
votos: 8    karma: 75
#40   Lol ya quisiera verles la cara a todos los que dicen "Yo lo hubiera hecho en BASIC" al ver que su juego fuera a tirones en los equipos de aquellos tiempos :-D

#17 disculpame por votar negativo pero se me fue al hacer scroll, te voté positivo en el siguiente comentario.
votos: 2    karma: 18
 *   JAVH
#52   #10 Qué tendrá que ver la arquitectura (véase Z80, etc) con el sistema operativo (UNIX) que comentas.
votos: 0    karma: 6
#26   #12 Efectivamente, RollerCoaster Tycoon 1 y 2 están desarrollados íntegramente en ensamblador. Hay que estar un poco pallá, yo me puse a aprender ensamblador con manuales y por gusto propio... y acabe mandándolo a la mierda, es... una locura.
votos: 2    karma: 22
#46   #12 Que desfase de programador. Yo que me volví loco antes de llegar a Hola mundo en ensamblador.. pero al RCT buenos vicios.
votos: 2    karma: 31
#47   #46 Pues ya sabes, descarga OpenTTD, que es libre y encima es como 20 veces mayor que Transport Tycoon. Sobre el de las montañas rusas, creo que se está implementando un motor.
votos: 0    karma: 11
 *   Ander_ Ander_
#54   #12 Chris Sawyer = Uno de mis pequeños dioses particulares :-P

Por cierto, de Transport Tycoon hay una implementación totalmente libre en C++: OpenTTD
votos: 2    karma: 27
msx msx
#29   #16 programador java? :troll:
votos: 2    karma: 25
#35   #2 Esos eran buenos programadores, y no los chapuceros becarios de hoy en dia que lo hacen todo en visual java, con motores prefabricados y que no pierden ni un segundo en la optimización porque estan muy ocupados haciendo 2 mapas para venderlos como DLC y por eso en cada generacion se piden más requisitos para juegos que objetivamente no dan la calidad que deberian para los requisitos desorbitados.
Larga vida a los programadores de verdad.
votos: 8    karma: 70
#56   #35 Tampoco tienen la calidad técnica que tienen ahora. Ya que me gano el pan escribiendo código (entre otras cosas) te puedo decir que muchos estamos hartos del "antes nos lo hacíamos todo nosotros", "vosotros ahora teneis 1000 frameworks que os lo hacen todo", "yo me lo picaba todo en C/ASM/loquesea". No es cierto que antes fuera más difícil escribir programas. Si lo hicieron en ASM y no en Java, o en Ruby, es porque: 1) aún no existían Java, Ruby ni otros…   » ver todo el comentario
votos: 8    karma: 70
#57   #35 Si siguieramos programando en ensamblador no tendriamos las aplicaciones y videojuegos que tenemos actualmente.
Hemos encapsulado el código y lo hemos elevado a alto nivel para agilizar y conseguir en el mismo tiempo de desarrollo el triple o cuadriple que si lo hicieramos en ensamblador.
La falta de optimización se ha solucionado con unos pepinos de ordenador que hace 25 años no tenían.

Anda que si hubieran tenido hace 25 años la capacidad de procesamiento actual habría alguien programando en ensamblador. Si, si.
votos: 2    karma: 23
GuL GuL
#67   #2 yo también estoy alucinando con que todo fuera en ensamblador.

#35 tienes razón. Para programar no había que hacer un cursillo de Java, había que conocer cómo funcionaba la máquina, había que ser informático (hacer un curso de Java no es ser informático, dedicarse a desatascar impresoras no es ser informático, si tu trabajo es configurar el Windows no eres informático...).
votos: 1    karma: 17
#3   Pero ... como se le ocurrió programarlo en ensamblador !!! ¿puede que lo publique en ensamblador y realmente lo programara en otro lenguaje?
votos: 0    karma: 6
 *   ivax2544
#4   #3 a mi me parece es una locura si realmente lo hicieron en su momento en ensamblador, pero segun dice en el readme parece que fue asi, y no le veo sentido. Por esa epoca desde luego que C estaba mas que a la orden del dia y no se si incluso C++ ya tendria cierta fama o no, pero vamos, que C segurisimo.
votos: 1    karma: 17
 *   jr6 jr6
#6   #4 #3 Yo creo que subestimais lo frikis que eran los programadores de aquella xD xD xD xD
votos: 15    karma: 141
#7   #6 opino como #4 ¿Que necesidad tenia de programarlo en ensamblador? Estamos hablando de un juego de 1989, puede que algunas rutinas para el movimiento de los personajes si que requieran código en ensamblador, pero no todo el juego. Puedes programar la lógica del juego en C tranquilamente y en ensamblador algunas partes, pero no todo.
votos: 1    karma: 17
#20   #7 Sí, pero al programarlo en ensamblador Jordan Mechner obtuvo +20 en frikismo y alcanzó de golpe el grado de "Master Friki Eremita". A cambio perdió todos los puntos relacionados con tiradas sociales y conocimiento del mundo exterior.
votos: 5    karma: 55
#22   #3 #4 #7 no os extrañeis tanto, que existiera C en aquella época no significa nada. Hoy en día C ocupa el primer puesto en el ranking de lenguajes utilizados y sin embargo nadie dice "Uau, ¿por qué no programaron el programa X en java o .net?"
votos: 3    karma: 39
#66   #4 Teniendo en cuenta que ese mismo año se aprobó el primer estándar lo dudo muchísimo. El estándar de C++ vino 10 años más tarde.

Algunos debéis creer que internet existe desde el principio de los tiempos, y que si alguien creaba un lenguaje en los 70 automáticamente el mundo entero tenía acceso a dicha información.
votos: 1    karma: 16
#5   Me gustaría que esto también se hiciera para todos los juegos antiguos que las compañías ya no utilizan para nada. Digamos... ¿fifa 98? ¿Windows 3.1?
¿Por qué las puñeteras patentes duran hasta el infinito y más allá?
votos: 6    karma: 57
#23   #5 Hombre, no veo lógico forzar mediante leyes a una compañía a liberar sus productos cuando estos han sido fruto de una gran inversión y esfuerzo. Supongo que por el método "fans" será más fácil, reuniendo unas cuantas firmas y mandándosela a una empresa junto una foto de tu gatito.

De todas formas en mi ignorancia no me imagino qué se puede hacer con el código viejo de un juego salvo revivir viejas glorias que quizás darían menos trabajo hacerlas desde cero con la tecnología actual.
votos: 4    karma: 4
#63   #27 Cierto, confusión mía.
#23 El punto es, si no te puede dar más beneficios (¿cuántas ventas más va a dar un juego como, digamos, el Mario Kart de SNES?), ¿por qué no liberarlo y que si alguien quiere, cree un derivado?
Y no estoy hablando de ceder los derechos de autor sobre los personajes, sino el motor del juego.
votos: 0    karma: 7
#27   #5 dos cosas:
1 - las patentes no duran hasta el infinito y más allá
2 - el código fuente cerrado no tiene nada que ver con patentes
votos: 6    karma: 68
#55   #5 Por la presión del loby que todos sabemos... De todas formas, aquí no son patentes sino copyright.
votos: 0    karma: 10
#8   Estamos hablando de un Apple II, un ordenador de 8 bits. En esos ordenadores se hacía todo en ensamblador directamente. Era lo normal. No había compiladores de C suficientemente decentes como para trabajar en serio en equipos tan pequeños.
votos: 27    karma: 230
#9   Hombre habia un proyecto que la reimplementacion de prince of persia en licencia GPL y supongo que sera mas comprensible que este en ensamblador.Desconozco su estado, pero su codigo se puede encontrar aqui:
sourceforge.net/projects/princed/
votos: 0    karma: 12
sid sid
#51   #9 Eso es un editor de niveles, no el propio juego.
votos: 0    karma: 6
#64   #51 Por la descripcion de sourceforge diria que no :The development of an open source Prince Of Persia Level editor for PC, a new game engine and complementary tools.
Pero no he podido mirar la web del proyecto ya que la han hackeado
votos: 0    karma: 12
sid sid
#11   La monarquía, de nuevo al descubierto
votos: 8    karma: 48
vet vet
#13   Cuando jovencito informático hay por aquí... Aquellos ordenadores se programaban o bien el interprete de Basic que traían o en ensamblador. ¡No había otra cosa!
votos: 14    karma: 127
#14   Menos mal que el Visir no se lo habia cepillado!!!
votos: 1    karma: 16
#15   Yo jugaba al prince of persia en un 286 con un emulador según recuerdo... había que acabarlo antes de una hora sino todo se perdía :-(
votos: 1    karma: 16
#19   #15 Pero luego el Prince of Persia salió para PC, porque yo lo jugaba nativo.
votos: 5    karma: 53
#31   #19 Para PC estaba seguro. Recuerdo levemente haberlo jugado o haberlo visto jugar a mis hermanos cuando yo tenia en torno a los 5 años y teniamos en casa un todo podersoso 486 con win 3.1 (el unico windows original que tengo xD)
El juego ejecutandolo desde DOS iba.

De hecho tengo una par de cajas con disketes de mi padre y mis hermanos y apuesto que el juego incluso tendria que estar por ahi. Tambien creo que tengo que tener aun el 486 en el cementerio de ordenadores antiguos.
No me pincheis mucho que aun me pongo a montarlo y me busco el juego para ponerlo xD
votos: 3    karma: 30
 *   jr6 jr6
#18   Uff, en ASM como los hombres. No le tuvo que dar trabajo ni nada.
votos: 2    karma: 26
#21   Like a boss
votos: 3    karma: 29
#24   Es curiosa la diferencia entre destacar algo ("¡Caramba! ¡En ensamblador!") y criticar arbitrariamente. Yo tenía entendido que este juego revolucionó conceptos, era genial, divertido...

En lugar de eso, tenemos que leer cosas como "yo lo hubiera hecho en BASIC". Estos niños...
votos: 8    karma: 72
#28   video que compila las tomas de las que luego salieron las animaciones, una joya si has sido friki del juego
www.youtube.com/watch?v=wKgLfqOVHco

tambien recomendable el link que aparece en el video, es un diario bastante detallado de como fue el desarrollo del juego

y el juego que hizo antes y que sirvio para que le contrataran para hacer principe de persia, ya reunia varios elementos www.youtube.com/watch?v=qkq-L-S9b-M#
votos: 4    karma: 41
 *   drudru
#30   Notición importantísimo, no sé como he podido pasar el día sin saber esto !!!!!!
votos: 12    karma: -76
#61   #30 Si comentas noticias que no te interesan es obvio que se te presenta otro día de mierda, comiendo patatas delante de la pantalla leyendo chorradas, con un par de descansos para hacerte unas pajillas, y a seguir trolleando con las manos llenas de semen y de grasa de las patatas. Que gran plan.
votos: 0    karma: 6
 *   sobrator sobrator
#69   #61 Que descripción más gráfica, es tan buena y tan dellada que es posible que pueda ser una autodescripción, sobre todo en el apartado de las manos llenas de grasa y semen a mí nunca se me habría ocurrido algo así.
votos: 0    karma: 6
#70   #69 Es lo que me viene a la cabeza cuando trato de imaginar la clase de vida cavernaria de una persona que a falta de más motivaciones en la vida entra a comentar noticias que no le interesan.
votos: 0    karma: 6
#71   #70 Si te viene a la cabeza de un modo tan claro y rápido es porque lo has vivido.
votos: 0    karma: 6
#72   #71 Noto un desesperado intento por encontrar un alma gemela que te comprenda y te acepte, pero lamentablemente no es mi caso. No pierdas la paciencia porque si algo abunda por menéame son las fotos de gatitos y los inadaptados.
votos: 0    karma: 6
#32   Este fue el juego más cañero que tuve en el 8086
votos: 0    karma: 6
#34   #32 no jugaste al Barbarian?????? ¬¬ o al Budokan??? ains....
votos: 3    karma: 28
 *   miwosin
#33   Me quede "to loco" cuando al traspasar el espejo salio mi sombra en direccion contraria....

... y pantallas mas tarde tuve que enfrentarme a ella!!!
votos: 1    karma: 12
#36   Madre mía, me parecen increibles los comentarios que leo.
No entiendo cómo tanta gente se puede sorprender de que el juego estuviera programado en ensamblador. Lo que hubiera sido realmente sorprendente en esa época sería que lo programara en C desperdiciando ciclos del 6502 a 1mhz.

Hay miles de programas y juegos realizados en ensamblador. De hecho diría que el 95% de los juegos para Spectrum, Amstrad, MSX, Commodore, Amiga, Atari ST, Megadrive, Snes, Neogeo, y GameBoy están realizados en…   » ver todo el comentario
votos: 34    karma: 276
 *   amt8
#37   #36 porque el tío del juego les a roto el corazón: la mayoría llega a C, pero ensamblador nos manda directamente a la mierda jejeje
votos: 3    karma: 37
#38   #36 Hay juegos de GameBoy hechos con un subconjunto de C. Yo hice una pequeña prueba y funcionaba. Tengo un cartucho grabable para GB, le puedo meter todas las ROMs que quiera.
votos: 1    karma: 21
 *   Ander_ Ander_
#39   Creo que no entendeis el concepto, habia (hay) gente que se sabia la rom del spectrum de memoria
de verdad, no teneis ni idea de lo que se hacia en 48 KB, ahora veo un sprite de GOW y pienso "este sprite ocupa mas que toda mi colección de juegos de spectrum"
votos: 3    karma: 37
#48   #39 Hay, hay, hola, qué tal :-D

(Aún tengo por ahí el Complete ROM Dissassembly. A ver quien se compra hoy en día un libro así)
votos: 0    karma: 6
 *   Ivaneck Ivaneck
#41   Del readme : "As the author and copyright holder of this source code, I personally have no problem with anyone studying it, modifying it, attempting to run it, etc"

a que no hay cojones?
votos: 2    karma: 21
#44   #41 A mí cojones me sobran, lo que no tengo es un Apple ][ a mano :-)
votos: 0    karma: 12
#45   #44 Emuladores :-)
votos: 1    karma: 19
 *   Ander_ Ander_
#42   Ya me imagino dentro de unos 50 años al ver el código de un Assassins Creed o cualquier juego: "¡Yo lo hubiera hecho mejor en un framework como Java o .NET!" :-D :-D
votos: 0    karma: 6
 *   JAVH
#43   Ya que hablamos del tema, aquí tenéis una lista de motores libres para jugar a esos juegos antiguos sin emuladores.

osgameclones.com/

Imprescindibles Scummvm Y Residual, con éste ultimo puedes jugar y completar el Grim Fandango.

residualvm.org/downloads/

Ah, y el Open Morrowind, que permite jugar al Morrowind COMPLETO. Hace falta el juego original como en el Residual eso sí.

openmw.org/en/ code.google.com/p/openmw/downloads/list
votos: 0    karma: 11
 *   Ander_ Ander_
#49   yo prefería que publicara su dirección para ponerle una trampa de baldosas "con poca estabilidad" y que se ensartara en un mar de cuchillas de muerte. Bueno, me voy a jugar al supermario.....
votos: 0    karma: 6
#50   Ensamblador ? Bah. En mis tiempos usábamos válvulas termoiónicas de base octal. Y encima estábamos rodeados de mujeres. :troll:
votos: 1    karma: 16
#53   Prácticamente la casi totalidad de los juegos o aplicaciones de escritorio (no hablo de servidores, que de ahí no sé cómo era la cosa) se programaba directamente en ensamblador, por distintas razones:

- Memoria: Hoy puedes escribir un programa en un lenguage X, compilarlo y obtener un ejecutable en código máquina en un fichero en tu disco duro. Normalmente el programa fuente ocupa más que la versión compilada, debido a que el programa en forma de lenguage entendible por humanos…   » ver todo el comentario
votos: 12    karma: 88
 *   Azrapse Azrapse
#58   Uyyy, cuando maricón de la programación veo por aquí... en los ordenadores de 8 bits se programaban los juegos al 99% en ensamblador, y el resto en Basic. Y en Amiga, Atari y PCs de la época, era también ensamblador si era un juego. En C "no se conseguia velocidad".

Y lo dice uno que lo hizo, o sea, que sé de lo que hablo.

C... buah, mariquitas.
votos: 2    karma: 21
#59   Ojalá todos los programadores de hoy día hubiesen programado alguna vez en ensamblador: al menos habrían aprendido que sin comentarios es IMPOSIBLE mantener código un par de meses después de haberlo escrito, aunque sea tu propio código (y sobre todo si en Perl, cagontó).

En la universidad programábamos en Módula-2 y C, antes de aprender Java como ejemplo de lenguaje OO... pero en arquitectura de computadores tuvimos que hacer un Tetris en ensamblador.... y sin usar las interrupciones de…   » ver todo el comentario
votos: 0    karma: 6
 *   pawer13 pawer13
#60   Para el que esté viendo un poco el fuente, el 6502 sólo tenía 3 registros (o variables), X, Y y A. LDA, LDX o LDY son "let a=valor", JMP es "goto", JSR es "gosub", BEQ es "salto si la comparacion anterior es cierta", CMP es "compara A y valor", DEC es "valor-1", RTS es "return".

El ensamblador es muy sencillo de entender y muy lineal (y más en 6502...). El único problema es que hay que hacer todas las rutinas.
votos: 0    karma: 9
#62   He aquí un PDF con la documentación técnica del proyecto, es muy interesante compararlo con los documentos que tenemos que presentar los arquitectos/desarrolladores hoy en día:
jordanmechner.com/wp-content/uploads/1989/10/popsource009.pdf

Respecto al tema del assembler, recuerdo que una de mis primeras incursiones con el assembler fue a los 6 o 7 años (ahora tengo 30) con mi padre, que -por hobby- escribía código para el Z80 de la Spectrum sabiéndose de memoria el código máquina para…

  » ver todo el comentario
votos: 3    karma: 30
#73   #62 "aprendí a crackear programas de Mac (escritos en RISC del 68000)"

El 68000 RISC ?
Vaya, yo estaba convencido de que era CISC.
votos: 0    karma: 6
#75   #73 :palm: gracias por la corrección... se me escapó totalmente... venía pensando en el MIPS R3000 y en ARM (ambos RISC) con los que trasteé, aunque bastante mas adelante...
votos: 0    karma: 8
 *   barni barni
#65   Yo he estado buscando el truco ese de megahit, pero no lo he encontrado
votos: 0    karma: 9
#74   Juventud, divino tesoro.

Os animo a cualquiera de vosotros a que intentéis hacer un juego medio decente en C o Pascal para Commodore 64 o Apple II. Estoy dispuesto a pagar cenas, cubatas o metálico.

Tened en cuenta que el hardware de esas máquinas era bastante simple y por tanto también lo era el ensamblador. Algunas operaciones son muy engorrosas (no existe multiplicación por ejemplo) pero se tiraba de tablas y todo tipo de ingenios. En el caso del C64 lo crucial era programar las interrupciones para hacer las virguerías (multiplexación de sprites, scroll y música).
votos: 0    karma: 6
comentarios cerrados

menéame