Hace 5 años | Por pandasucks a fabiensanglard.net
Publicado hace 5 años por pandasucks a fabiensanglard.net

El 17 de abril de 2012, Jordan Mechner lanzó el código fuente de Prince of Persia. A pesar de que es la versión de Apple II, escrita en lenguaje ensamblador del procesador 6502, fue una experiencia agradable sumergirse en el código de ese juego mítico: como de costumbre, había muchos fascinantes trucos de software por descubrir. El aparentemente deficiente entorno de Apple II para la programación de juegos fue la base para una innovación y creatividad inigualables: desde el código de auto-modificación, el gestor de arranque interno, etc.

Comentarios

mperdut

#4 De esos que dices, en proporción, ya no hay tantos como antes.

Atrydas

#7 Menéame estaba formado en buena parte por emigrados de Barrapunto, yo incluido. Me pregunto donde habrán ido, por seguirlos, si eso

Ormuzd

#24 Aqui otro que vino de /.

d

#4 El Rockwell 6502 es un procesador RISC de 8 bits de bus de datos y 16 bits de bus de direcciones, 1 MHz de frecuencia de reloj, un ciclo máquina de un ciclo de reloj y con instrucciones que van de un ciclo máquina a tres ciclos (STA $XXXX) ; 56 instrucciones. Memoria plana de 64 KBytes de bancos conmutables (hardware), tecnología NMOS, 40 pines DiL. (de memoria lo escribo).
Los microcontroladores hasta este siglo tenían una estructura parecida; este procesador es la base sobre la que se creó ARM, también de estructura RISC.
El Príncipe de Persia fue un innovador juego con movimientos y gráficos "realistas" de los 80's. Aún tengo una versión que corre en ubuntu hoy. Es un logro hacer funcionar un juego como ese en un sistema tan parco como un 6502, o en un Motorola 6807 o en un Zilog z80...
Ese código, para gente que programa en ensamblador o incluso en C para microcontroladores puede ser muy muy interesante y el código ASM de 6502 es muy fácil/rápido de coger y por ello de trasponer a otros procesadores.
/.....

S

#12 El Príncipe de Persia no salio originariamente para el Spectrum. Si que salio para el SAM Coupé, pero es tenia una CPU Z80 a 6 MHz...

https://elblogdemanu.com/chips-que-han-hecho-historia-zilog-z80/

Posteriormente, en 1995 si que salio para un clon ruso:

http://www.worldofspectrum.org/infoseekid.cgi?id=0013014

Y en 2012 para los Spectrum de 128KB aunque el juego ocupa 600KB, (multicarga) en cinta te ries. (posteriormente reducido a la mitad):

https://programbytes48k.wordpress.com/2012/04/19/nueva-version-del-archivo-tap-del-prince-of-persia-de-nicodim/

d

#15 Muchas gracias por la info y los links.
Tuve mucho más contacto con 6502 (6510 C64) que con z80 (Spectrum) pero también mola.

slepo

#1 gracias!

mperdut

Prince of Persia.... siempre se ha dicho que, teniendo en cuenta las limitaciones de la epoca, fue la mejor programación en un juego de toda la historia.

S

#6 Que yo recuerde, lo que se decía del Prince of Persia era que tenia las animaciones más "curradas".

La mejor programación de un videojuego... lee Obsequium: Un relato cultural, tecnológico y emocional de La Abadía del Crimen:

https://www.amazon.es/Obsequium-relato-cultural-tecnol%C3%B3gico-emocional-ebook/dp/B00K1M5HM8

Cuenta algunos de los trucos de programación. Para ahorrar memoria los personajes se reutilizaban para otros una vez muertos, (cambiaba la "personalidad" del personaje)

mperdut

#8 Con aquellas limitaciones tan grandes hubo juegazos y programas impresionantes.... ciertamente ese que dices es otro de ellos.

JanSmite

#0 Corregida la traducción de la entradilla, para que sea más fiel al original, espero que no te importe.

p

#11 al revés, agradecido

d

Muchas gracias por la info y las aportaciones.
Rockwell 6502#
jmp $1987-94

Peachembela

Prince of Persia y Karateka

MEV

Prince of Persia y Karateka, mis primeros videojuegos en casa, qué de recuerdos!
Mi padre fue uno de los primeros usuarios de Apple en España y tuve la suerte de disfrutar de auténticas joyas :').
Qué viejo me siento...

Am_Shaegar

Me salta el F-Secure a bloquear la página.

frankiegth

#2. Pues desinstala el F-Secure. No sería la primera vez 'reparo' un Windows desinstalándose el antivirus. La seguridad en los PCs de escritorio y portátiles es cada día más una cuestión de uso basado en la experiencia por parte del usuario.

En sistemas tipo Android la seguridad no existe, instalar antivirus gratuitos en Adroid y similars es directamente un suicidio. La poca que haya en sistemas Android queda en manos exclusivas de la propia Google o del frabricante de tontófonos.

Luigi003

#9 El antivirus nunca se ha encargado de hacer que el PC sea impenetrable, si el usuario quiere se lo va a cargar. Pero está ahí por si acaso el usuario tiene un descuido(y un usuario medio suele tener descuidos cada 2x3).

A mi personalmente me ha salvado sólo un par de veces en mi vida, pero sinceramente, a no ser que tengas un antivirus de hace 10 años el impacto sobre el sistema es hasta difícil de medir, así que yo no me subiría al tren del hate por los AV.

Respecto a Android, podría darte una lista bien larga de conceptos de seguridad que tiene muy pero que muy bien implementados aunque en Android no suela haber antivirus al uso.
De hecho junto a iOS lo consideraría de los sistemas Operativos más seguros hoy en día. Es seguro por diseño, no a base de parches como GNU/Linux - Windows

frankiegth

#10. Android no es 'seguro' por diseño, es 'seguro' porque es un sistema operativo cerrado a cal canto y por tanto impenetrable por parte del usuario medio. No se puede comparar con un PC con Gnu/Linux de ningún modo.

Pero es que ademas, como ya comento en #9 si siquiera ese diseño 'seguro' de Android le ha garantizado a Android la ausencia de fallos de seguridad graves que acaban en los telediarios.
(CC #2)

Luigi003

#13 "Estar cerrado a cal y canto"(que en realidad es sólo no tener acceso root) es parte de ser seguro. Encaja con la filosofía de Principle of least privilege https://en.wikipedia.org/wiki/Principle_of_least_privilege .

Pero es que además tiene muchas más medidas de seguridad que respetan ese principio, no sólo no estar rooteado.
- Las aplicaciones tienen una carpeta a la que sólo ellas pueden acceder para guardar sus datos. Esto hace que cosas tan básicas como Guardar las contraseñas de las paginas en el navegador sean algo viable. Guardar las contraseñas en un distro Linux de escritorio es un suicidio en seguridad porque todo el mundo/apps pueden acceder a esa carpeta. Además le asegura a la aplicación que sus archivos no van a ser manipulados por un atacante malintencionado. Que aunque los devs deberían comprobar los archivos antes de leerlo la historia está llena de ataques por buffer overflow al leer de fichero(aún así en el último punto aclaro que este tipo de ataques son difíciles de entrada en Android)

- Las aplicaciones tienen un sistema de permisos. Las aplicaciones no pueden tener acceso a servicios de Android sin tener el correspondiente permiso. Por lo que si yo me instaló una aplicación de linterna de mierda no tiene por que acceder a mis archivos o a mis llamadas. Y aunque históricamente se ha abusado de estos derechos lo cierto es que desde que cambiaron el sistema en Android 6 las apps han empezado a pedir derechos lógicos y entendibles. Esto es, de nuevo, una aplicación del principio de mínimo privilegio.
Además. aunque la aplicación no sea maligna, en caso de que la aplicación sea corrompida el atacante sólo podrá hacer aquello para lo que la aplicación tenga permiso, y asumiendo que la aplicación no tiene permisos de administrador porque está capado, eso limíta mucho el daño que puede hacer

- La gestión de memoria manual está restringida al montarse casi todo el sistema sobre una maquina virtual. Esto provoca que sea prácticamente imposible encontrar vulnerabilidades por corrupción de memoria(stack overflow.. etc) en apps(aunque se ha dado el caso, en especial en navegadores que suelen ejecutar su propio código nativo).

Todos los puntos me parecen importante pero es que sólo el primero ya convierte a Android en un sistema mucho más robusto que el resto.

Que no digo que Linux sea inseguro por defecto. Tiene sus sistema de premisos y gestión de usuarios. Pero no tiene medidas de aislamiento tan concretas como Android y además en Linux(al igual que en Windows) existe mucha cultura de "si no funciona, lo ejecutas con sudo". Lo cual es evidentemente incorrecto, pero es culpa de las propias distribuciones, porque lo que no es normal, es que excepto Ubuntu y dos más, el usuario tenga que ser root para instalar una misera app.

XrV

Mas viejo que Jordi urtado