Nebulus

Je pense que peu de personnes connaissent ce petit jeu. L'idée de porter Nebulus sur TI68K me trottait dans la tête bien avant Arkanoid Revenge of DOH mais je n'avais pas encore un niveau suffisant pour espérer coder ce jeu.
Petite histoire sur le jeu:
Nebulus est entièrement conçu et réalisé (sur 8-bits en 1987 puis 16-bits en 1988) par un jeune Anglais de 24 ans, John M.Phillips (qui avait déjà à son actif les jeux Impossaball et Nutcracka sur BBC et C64), fait partie des épures lumineuses et imparfaites apparues sur ST et Amiga (les deux versions qui mettent le mieux en avant ses qualités).
A sa sortie, Nebulus a été unanimement salué comme le jeu le mieux réalisé du moment. Le « scrolling rotatif » programmé par John M.Phillips fit forte impression, et la presse spécialisée, qui avait encore à l’époque les idées larges, fut subjuguée par ce jeu magnifique et novateur. Tilt lui remit même le Tilt d’or du meilleur jeu d’action en 1989, tandis qu’au Royaume Uni la cérémonie des Golden Joystick Awards devait consacrer le jeu deux ans de suite, en 1988 (meilleur jeu original) et en 1989 (meilleur programmeur). De même, le succès commercial du jeu en Angleterre fut plutôt satisfaisant au point que Atari UK se montre intéressé par une conversion sur Atari 800/XE/XL et Atari 7800, sous le titre Tower Toppler.

John M.Philips
Le jeu a été porté sur plusieurs machines comme la version C64, Spectrum, CPC-464...


Versions C64 et Spectrum

Version CPC-464
Le jeu a subit un énorme succès sur les versions ATARI ST et AMIGA, il a révolutionné le monde des jeux vidéos en faisant découvrir de nouvelles techniques de programmation qui seront reprises dans les jeux actuels. Un niveau de Rayman II rend hommage à Nebulus avec la fameuse tour. A noté que pour l'époque programmer un tel jeu par une seule et unique personne qui plus est en assembleur était déjà une prouesse!
Je me suis interessé aux versions Atari ST et Amiga car niveau graphisme, elles me paraissent plus impressionnante et plus agréable à porter.
Plus de détails sur le jeu:

Ecran titre

Début niveau n°1
La grosse trouvaille du jeu, la voici : l’action est représentée comme si la caméra était en permanence axée sur le héros. On ne voit jamais celui ci se déplacer sur le plan horizontal, et c’est donc la tour qui tourne. Ce mouvement rotatif (accompagné d'un scrolling différentiel du décor vu à l'horizon), non content d’être fantastiquement représenté par une fausse 3d jamais vue en dehors des salles d’arcade au moment de la sortie du jeu, est un élément de gameplay plein de possibilités que l’auteur du jeu a parfaitement su exploiter pour diversifier l’action, mais aussi pour rendre fou le joueur.
Au début de chaque niveau, le héros arrive à bord d’un sous marin au pied la tour, et monte sur une plate-forme qui n’est que le début d’une série de moyens divers permettant d’atteindre le sommet. Escaliers, plate-formes mouvantes, ressorts et ascenseurs sont au programme, ainsi que des couloirs traversant la tour de part en part, qui entraînent, quand on les emprunte, une variation de l’angle de vue de 180°, c’est à dire une rotation apparente de la tour du même angle, et à l’issue de laquelle on retrouve le héros de l’autre côté dans un environnement qui étaient totalement invisible avant qu’on exécute la manœuvre, et qui réserve le plus souvent de mauvaises surprises. Car bien entendu, de nombreux ennemis peuplent le parcours, qui ne sont pas très dangereux en eux mêmes, mais plutôt à cause du fait qu’on y est souvent confronté par surprise.
Certaines plate-formes sont glissantes et interdisent qu’on s’y arrête, et comme tout mouvement entraîne l’apparition d’un côté ou de l’autre d’un nouveau danger, le risque d’être touché est permanent. Par ailleurs, le temps est compté, donc il ne s'agit pas de trop traîner en route.


Arrivée au sommet : le niveau se termine. Ensuite, en route pour un petit shoot à bord du sous-marin
En cas de contact avec un ennemi ou d’échec dans l’enchaînement des diverses combinaisons de mouvement imposées, le héros n’est pas tué. Il tombe à l’étage inférieur, cette chute pouvant entraîner d’autres chutes. S’il tombe dans l’eau, il meurt (ce qui est étonnant pour un être qui vit dans un monde aquatique et cherche à détruire les seuls édifices secs de sa planète, mais bon, c’est comme ça). Evidemment, plus on est haut sur la tour, plus le risque qu’une erreur se solde par une série de chutes jusqu’en bas est faible. Il en résulte que c’est au début des niveaux, et donc au début du jeu lui même que le joueur est le plus mis sous pression. C’est une erreur de conception qui, couplée à la difficulté exagérée du premier niveau, aurait pu être une marque d’originalité mais n’est au final rien d’autre que la principale cause du phénomène de rejet que ce jeu a entraîné sur beaucoup de monde.
Il faut juste beaucoup de patience et d'entrainement ainsi que de reflexion pour terminer Nebulus.
Pour en revenir aux TI68K plus précisément.
J'ai commencé ce projet il y a environ 4 jours voir un peu plus. A partir seulement des screens de la version ATARI ST j'ai décidé de tout reprogrammer en langage C avec de l'ASM68K pour les fonctions graphiques.
Voici des screens du jeu, pas ordre d'évolution:
http://perso.wanadoo.fr/tisofts/divers/screen0.gif
http://perso.wanadoo.fr/tisofts/divers/screen1.gif
http://perso.wanadoo.fr/tisofts/divers/screen3.gif
http://perso.wanadoo.fr/tisofts/divers/screen4.gif
http://perso.wanadoo.fr/tisofts/divers/screen5.gif
http://perso.wanadoo.fr/tisofts/nebulus/screen/screen6.gif Nouveau screen
Le jeu n'est pas encore jouable, il reste énormément à faire, surtout que de coder le scrolling rotatif a été plutôt assez difficile pour moi.
Historiques:
08/05/04:
---------
-Début de programmation de Nebulus, création de la tour.
-Etude de la map est début d'intégration des objets (Plateforme).
09/05/04:
---------
-Ajout complet de tous les objets fixes.
-Ecriture de routines graphiques.
-Optimisation du code.
-Mise en fichiers externes des maps et des sprites.
10/05/04:
---------
-Programmation des portes.
-Codage des routines de fontes de 8x8.
-Intégration du compteur de frames.
11/05/04:
---------
-Modification aspect de la tour.
-Gain de swap.w dans GraySprite8.
-Début codage routines affichage background.
12/05/04:
---------
-Affichage background linéaire.
-Affichage dome tour.
-Modification du fichier externe neb_gfx.
13/05/04:
---------
-Affichage background eau et ciel.
14/05/04:
---------
-Affichage des étoiles.
17/05/04:
---------
-Ajout table tiles_portes_back et gestion de la profondeur des portes.
18/05/04:
---------
-Ajout gestion interruption n°1 sur HW1 et HW2.
-Changement aspect étoiles avec interruption.
-Changement aspect TopTower avec interruption.
-Modification de neb_gfx.
19/05/04:
---------
-Ajout sprites player dans neb_gfx.
-Début codage player.
-Début animation player_turn.
20/05/04 BIRDTHDAY:
-------------------
-Codage routine GraySprite32_FLIPV avec buffer.
-Codage animation player_idle.
-Codage animation player_jump.
-Codage animation player_tombe.
-Codage animation player_tunnel.
-Codage animation player_ascenseur.
-Codage animation player_heurte.
-Codage animation player_coule.
-Codage animation player_endlevel.
-Codage animation player_subway.
-Gestion collision avec joueur.
-Désactivation collision avec Block.
-Gestion des piliers pour ascenseur.
-Modification du fichier neb_gfx avec ajout sous-marin.
-Animation sous-marin début et fin de niveau.
21/05/04:
---------
-Correction bug "Memory violation" avec initialisation reset_piliers.
22/05/04:
---------
-Bloquage du framerate à 25 Hz.
-Correction d'un bug dans GraySprite32_FLIPV.
-Codage de CopyScreenBufferToScreen2, routine de dézoom 240x128->160x100.
-Codage de CopyScreenBufferToScreen3, routine coupe zone de jeu en 160x100.
23/05/04:
---------
-Ajout de commentaires dans les sources.
-Rejouer niveau après une mort.
-Passage niveau suivant automatiquement.
-Ajout masque et modification des sprites TopTower dans fichier neb_gfx.
-Modification de la routine DrawTopTower acceptant masque et coordonnée y0.
-Correction bug d'affichage, TopTower, destruction d'une tour.
-Création de neb_gfx2.
-Ajout de l'écran titre avec modification de contraste.
-Choix niveau avec touche 1 à 8.
-Correction bug avec changement de contraste dans l'écran titre.
24/05/04:
---------
-Création du fichier neb_snd et ajout musqiue écran titre.
-Création de routines audio.
-Correction bug d'affichage, décor espace manquant.
-Affichage titre.
-Affichage podium et gestion rotation joueur 1 & 2.
-Modification du fichier neb_gfx2.
25/05/04:
---------
-Modification sprites, playermove, titre.
-Début de codage des monstres et tire missile.
26/05/04:
---------
-Codage complet des monstres.
-Ajout clipping suivant x, recodage de toutes les routines graphiques.
-Bug dans DrawTopTower et dans aff_flying_nmi;
27/05/04:
---------
-Correction bug d'affichage TopTower.
-Coorection bug dépassement capacité, liste ennemis.
28/05/04:
---------
-Correction bug, plantage sortie de jeu.
-Recodage des routines graphiques.
-Correction bug avec nombres signées, remplacement lsx par asx.
-Collisions complètent monstres et joueur.
-Gestion des tirs finie.
-Recodage des routines graphiques pour TI89.
Version pour TI89/TI92+/V200 hardwares confondus, fonctionne sous Pedrom
Touches:
-LEFT = Déplacement à gauche
-RIGHT = Déplacement à droite
-F1 + Move = Saut
-F1 = Tir
-UP = Passage tunnel ou monter avec ascenseur
-DOWN = Descendre avec ascenseur
-PLUS = Contraste +
-MINUS = Contraste -
Je ne suis en aucun cas responsable de pertes de données.