Hace 11 años | Por levante_star a bitelia.com
Publicado hace 11 años por levante_star a bitelia.com

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: El creador de Prince of Persia encuentra el código fuente 23 años después
Hace 11 años | Por Ricardo_Amador_... a geektopia.es
Publicado hace 11 años por Ricardo_Amador_Pérez
a geektopia.es

Jordan Mechner el creador de Prince of Persia, daba ya por perdido el código fuente del juego del qu [...]

Comentarios

jr6

#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 digo yo que sabran ellos un poquito mas de la materia que yo (pero solo un poquito, eh? lol).

Ademas en el readme el tio explica que lo que ha puesto para descarga es el paquete que el hizo con el codigo para pasarlo a los que se encargaban de hacer el port para las diferentes plataformas, que segun dice eran PC, Amiga, sega genesis y el Apple II obviamente. Tenia que ser una locura por esos tiempos portar todo en ensamblador de una plataforma a otra. Mis respetos para ellos lol

Pues parece una tonteria #16 pero yo he pensado exactamente lo mismo . Yo con lo mas antiguo que he trabajado ha sido con gameboy advance (bueno con esta en particular, no he trabajado, he leido algun libro que es distinto) y con SDL y allegro en C, pero vamos, en la epoca del spectrum no creo que hubieran sprites como ahora, de hecho en un libro que lei sobre allegro como introduccion aparecia un par de paginas sobre tiempos antiguos y decian que para graficos utilizaban utilidades que el mismo programador creaba y que era tan rudimentario como poner 10 pixeles contados, y desde luego que no creo que hubieran sprites sheets, seria un formato poco mas que un array con la informacion de esos pixeles.

odolgose

#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.

J

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

#17 disculpame por votar negativo pero se me fue al hacer scroll, te voté positivo en el siguiente comentario.

D

#10 Qué tendrá que ver la arquitectura (véase Z80, etc) con el sistema operativo (UNIX) que comentas.

D

#2: Pues dicen que el Transport Tycoon, RCT, RCT2, Locomotion... (juegos de Chris Sawyer) están programados en ensamblador. Son juegos un tanto complejos.

No quiero imaginarme el trabajo que será programar el RCT (Rollercoaster Tycoon) casi en binario.

arkains

#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.

j

#12 Que desfase de programador. Yo que me volví loco antes de llegar a Hola mundo en ensamblador.. pero al RCT buenos vicios.

D

#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.

amstrad

#12 Chris Sawyer = Uno de mis pequeños dioses particulares

Por cierto, de Transport Tycoon hay una implementación totalmente libre en C++: OpenTTD

D

#2 Y los sprites del juego donde estan?
Los escenarios estan creados a codigo o cada uno tiene algun archivo?

c

#16 programador java?

n

#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.

GuL

#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.

Shotokax

#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...).

a

#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

D

#36 y #37: Es que además, hay C y C. Osea, puedes hacer C poco optimizado, o puedes optimizarlo más. Un ejemplo típico es el dibujado de píxeles en pantalla, que si haces dos bucles FOR anidados y dentro metes algo así "screen[i][j]" tendrás menos rendimiento que si lo que haces es calcular sólo el primer píxel y ir calculando después el resto mediante sumas y restas. Incluso he leído que es mejor contar "hacia atrás" que "hacia adelante" en los bucles for, porque creo que comparar con 0 es más rápido que comparar con otro número, y un bucle for que vaya hacia atrás, tendría que hacer comparaciones con cero.

D

#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.

danibishop

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...

D

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á?

Nickair

#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.

D

#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.

D

#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

takamura

#5 Por la presión del loby que todos sabemos... De todas formas, aquí no son patentes sino copyright.

D

#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.

vet

La monarquía, de nuevo al descubierto

D

video que compila las tomas de las que luego salieron las animaciones, una joya si has sido friki del juego



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

g

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"

D

#39 Hay, hay, hola, qué tal

(Aún tengo por ahí el Complete ROM Dissassembly. A ver quien se compra hoy en día un libro así)

barni

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:
http://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 la mayoría de los opcodes (!!!!). Me "desafió" a llenar la pantalla punto por punto, y lo hice con mis rudimentarios conocimientos de BASIC, usando dos FORs anidados y la instrucción "PLOT x, y". Obviamente iba a pedales. Mientras tanto, él escribió una rutina en código máquina con un bucle que llenaba directamente las posiciones de memoria mapeadas directamente al chip de video. Eran muy poquitos comandos, que ejecutaban "a la velocidad de la luz" en comparación con mi código. Me explicó que así se hacían los juegos, porque los programadores no podían permitirse hacer rutinas gigantescas en BASIC.

Años mas tarde -y mucho antes de tener formación académica en sistemas- aprendí a crackear programas de Mac (escritos en RISC del 68000) gracias a lo que había aprendido con mi padre.

Hoy con este post he recordado todo eso
Qué epocas!!

pusilanime_hedonista

#62 "aprendí a crackear programas de Mac (escritos en RISC del 68000)"

El 68000 RISC ?
Vaya, yo estaba convencido de que era CISC.

barni

#73 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...

d

Like a boss

Ingenioso_Hidalgo

Uff, en ASM como los hombres. No le tuvo que dar trabajo ni nada.

ampos

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.

g

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?

D

#41 A mí cojones me sobran, lo que no tengo es un Apple ][ a mano

D

#44 Emuladores

R

Ensamblador ? Bah. En mis tiempos usábamos válvulas termoiónicas de base octal. Y encima estábamos rodeados de mujeres.

s

Menos mal que el Visir no se lo habia cepillado!!!

s

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

llorencs

#15 Pero luego el Prince of Persia salió para PC, porque yo lo jugaba nativo.

jr6

#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 lol)
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 lol

m

Me quede "to loco" cuando al traspasar el espejo salio mi sombra en direccion contraria....

... y pantallas mas tarde tuve que enfrentarme a ella!!!

sid

#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

sid

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:
http://sourceforge.net/projects/princed/

D

#9 Eso es un editor de niveles, no el propio juego.

D

Ya que hablamos del tema, aquí tenéis una lista de motores libres para jugar a esos juegos antiguos sin emuladores.

http://osgameclones.com/

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

http://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í.

http://openmw.org/en/ http://code.google.com/p/openmw/downloads/list

ampos

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.

Sadoc

Yo he estado buscando el truco ese de megahit, pero no lo he encontrado

m

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.....

pawer13

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 MS-DOS, teníamos que currarnos absolutamente todo a pelo. Entonces (1998) ya nadie usaba ensamblador para estas cosas (el mismo programa en C lo hacías en un día o dos), así que no le cogí el gusto a programar así, pero aprendí mucho esos días: lo importante que es poner comentarios a cada sub-rutina, lo cabrón que es el ensamblador del 8086 y lo rápido que un PC ejecuta instrucciones (recuerdo que me sorprendía escribir míl líneas, con varios bucles para comprobar las líneas hechas por las piezas, pensando que eran un montón de cálculos y lo mismo iba a ir lento.... jejeje)

J

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!"

S

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).

D

#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.

m

Pero ... como se le ocurrió programarlo en ensamblador !!! ¿puede que lo publique en ensamblador y realmente lo programara en otro lenguaje?

jr6

#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.

m

#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.

r

#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?"

D

#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.

D

Este fue el juego más cañero que tuve en el 8086

m

#32 no jugaste al Barbarian?????? o al Budokan??? ains....

PAMPUM

Notición importantísimo, no sé como he podido pasar el día sin saber esto !!!!!!

D

#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.

PAMPUM

#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í.

D

#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.

PAMPUM

#70 Si te viene a la cabeza de un modo tan claro y rápido es porque lo has vivido.