31/10/2011

Prince of Persia sur C64 ...

 

Prenez un succès incontournable du jeu vidéo des années '90 (allez, 1989): Prince of Persia. Prenez un briscard de la programmation sur une machine mythique et merveilleuse: MrSid et son C64. Arriva ce qui devait arriver: après la SNES, le PC, l'Amiga, les téléphones Java et l'iPod et la calculatrice HP48, le titre à succès de l'Apple II arrive sur Commodore 64.

Au départ, je pense à une ancienne version qui aurait refait surface, mais non: MrSid refait bel et bien le jeu entre 2008 et 2011 -- chacun son hobby. L'Apple II et le C64 tournent avec le même processeur, le MOS 6502. C'est énorme. Ca signifie qu'en prenant simplement le "binaire" de PoP sur Apple II, une partie du jeu "tournerait" directement sur C64 ... toute la "logique" du jeu, en fait. Les mécanismes graphiques et sonores des deux machines sont totalement différentes, en revanche. Et à relire pour la 3eme fois le peu d'information que je trouve sur le graphisme de l'Apple II, j'aime autant dire que cette différence est importante. La machine de Steve Wozniak travaille essentiellement avec un gros 'framebuffer' (une image bitmap unique, remise à jour à chaque étape du jeu) alors que le C64 a un hardware inspiré des consoles et machine d'arcade de l'époque: caractères reprogrammables et sprites hardware. Le moteur de rendu devra donc être intégralement refait.

La tâche à laquelle MrSid s'attelle donc, c'est de reprendre le binaire de la version Apple II, le désassembler et le cartographier. Il s'est évidemment mis en chasse du code source d'origine, qui a été perdu corps et bien ... eh oui, on travaillait sur floppy à l'époque >_&lt. Ce qui a survécu, en revanche, et que MrSid exploite au maximum, c'est la "documentation" du jeu. Quelques schémas qui expliquent les grandes lignes du moteur graphique, la liste des animations, l'organisation en mémoire des objets, leur position, les animations, et tout ça. Ca fait toute la différence! Au milieu de l'inconnu, il y a maintenant des points de repère qui permettent de comprendre le code parfois curieux de Jordan Mechner. Code-trampoline, liste d'instructions ... Si tout ça vous parle, ne vous en tenez pas à ce que je vous raconte: allez lire le blog dans lequel MrSid raconte en détail sa réalisation étape par étape... vidéos à l'appui.

Au fait, MrSid, c'était aussi le portage de Giana Sister (version C64) et International Karate sur DS. ^_^

00:05 Écrit par PypeBros | Lien permanent | Commentaires (6) |  Facebook | | |  del.icio.us | | Digg! Digg

Commentaires

Un boulot de dingue !
Je suis admiratif car ayant chipoté au plus bas niveau avec des émulateurs, de l'assembleur etc je peux
dire qu'il a dû trimer pour arriver à ce résultat-là.
Superbe conversion.

Écrit par : Steph | 01/11/2011

Ca, c'est pour moi la toute grande classe en informatique. Pour le peu que j'ai travaillé en assembleur dans les années 80, c'est parfois avec une migraine canon qu'on en sortait. Mais avec les outils actuels qui permettent de programmer en assembleur 6502, ils doivent prendre leur pied malgré tout.
C= rules !

Écrit par : Max | 01/11/2011

y'en a un d'entre vous qui nous le fait tourner en live sur son C64 ?

Écrit par : cyborgjeff | 02/11/2011

Moi, dans les adaptations de vieux jeux, j'adore la version DS de LEMMINGS, je trouve qu'elle est presque mieux que l'originale, C'etait quand même un grand jeu LEMMINGS, beaucoup de reflexion, j'aime beaucoup....

Écrit par : c64 | 03/11/2011

Hé, j'ai jamais réussi à la faire tourner la version DS de Lemmings :(

Écrit par : cyborgjeff | 03/11/2011

J'ai eu des difficultés à l'adapter aussi, si je me souviens bien , j'ai du le "patcher" avec DLDI PATCH ou un truc comme ça que j'avais chargé sur le net... Ca vaut la peine d'essayer de l'adapter à ton Linker, parce quil est vraiment bien fait...

Écrit par : c64 | 05/11/2011

Les commentaires sont fermés.