Page 1 of 1

CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 19 Sep 2021, 19:28
by critor
Pour l'été 1992, Id Software te sortait Wolfenstein 3D, initialement pour ordinateurs PC sur système MS-DOS. Ce jeu vidéo de tir à la première personne utilisait un moteur d'affichage 3D, basé sur la technique du raycasting.
Bien que techniquement impressionnant à l'époque avec sa 3D texturée temps réel, le jeu a assez mal vieilli. Sa 3D ne consistait en fait en pratique qu'en un simple affichage en relief de cartes 2D entièrement planes, une illusion de 3D quoi. La durée de vie du jeu n'était alors augmentée qu'en réalisant des cartes enchaînant de plus en plus de corridors, et le nombre très restreint de textures n'aidait pas à se repérer. Wolfenstein 3D donnait l'impression d'être enfermé en permanence dans des labyrinthes de plus en plus étendus, entièrement couverts du même plafond gris de plus, un jeu difficile mais surtout hélas rapidement assez monotone et donc potentiellement ennuyant.

Mais malgré les apparences, ID Software tenait un bon filon. Dès Noël 1993 l'éditeur nous revenait avec le titre successeur qui allait marquer l'histoire, Doom.

Le moteur d'affichage était toujours de type raycasting, mais ses capacités avaient été grandement étendues :
  • les cartes restaient en 2D (pas possible d'avoir plusieurs étages à un même endroit) mais n'étaient plus planes : les différentes zones de carte avaient désormais une altitude, et le jeu te permettait enfin de te déplacer dans la 3ème dimension, te donnant ainsi l'illusion de visiter des caves, souterrains, étages, balcons ou corniches ! :favorite:
  • les cartes n'étaient plus conçues selon un pavage en carrés tous identiques mais en triangles : finis les murs se croisant toujours à angles droits, un grand pas en avant dans le réalisme des environnements rendus ! :bj:
  • en plus des murs, sols et plafonds pouvaient enfin à leur tour être habillés de textures ! :bj:
  • et enfin tu pouvais avoir des zones de cartes à ciel ouvert (sans plafond), cassant fort agréablement le sentiment d'enfermement du titre précédent ! :favorite:

Un véritable monument du jeu vidéo qui réussit sur tous les tableaux :
  • sur le plan commercial avec nombre de suites (Ultimate Doom, Doom II, ...), extensions (Final Doom, ...) ou encore réutilisation de son moteur sous licence par des éditeurs concurrents (Heretic, Chex Quest...)
  • chez les joueurs avec nombre de fans concevant leurs propres cartes au format WAD
  • chez les développeurs, Doom ayant eu le privilège depuis d'être porté ou adapté sur quasiment n'importe quel appareil muni d'un écran

Nos calculatrices n'y ont pas échappé. On peut citer nDoom sorti en 2011 par Mrakoplaz pour TI-Nspire munies de Ndless, calculatrices monochromes à l'époque.

Avec le code basé sur la publication par Id Software du code source de la version Linux pour Noël 1997, il s'agissait du tout premier portage de Doom sur calculatrices, pour la première fois de l'histoire tu pouvais retrouver le jeu Doom à l'identique sur ta calculatrice ! :D
Une prouesse technique qui souffrait toutefois dans cette première version de quelques limitations :
  • pas de support de la nouvelle structure de fichiers WAD rapidement introduite pour Doom II et réutilisée par la plupart des jeux commerciaux dérivés ; ces fichiers WAD pouvaient être lancés mais seule la 1ère carte était jouable
  • et concernant les fichiers WAD utilisant la structure initiale de Doom, seul le fichier WAD de la version de Doom distribuée en shareware était géré ; les fichiers WAD des versions complètes de Doom pouvaient être lancés mais seul le 1er épisode (9 premières cartes) était jouable, soit pas davantage qu'avec la version shareware
  • de plus, l'écran TI-Nspire n'était absolument pas adapté à ce genre de chose avec un temps de rémanence d'une bonne fraction de seconde, donnant une véritable bouillie de pixels lors de tes déplacements ; bon courage pour survivre sans rien y voir...

Mrakoplaz nous ayant hélas rapidement quittés pour l'armée, nous avons repris le projet dès 2012 dans le cadre de la sortie de Ndless pour les nouvelles TI-Nspire CX couleur.

Les améliorations proposées par nDoom 2 dès 2012 étaient très significatives :
  • gestion complète des fichiers WAD utilisant la structure initiale de Doom ; enfin possible de jouer aux cartes des épisodes 2 et suivants
  • gestion des fichiers WAD utilisant la nouvelle structure Doom II ; enfin possible de jouer aux 2ème cartes et suivantes
  • rien qu'avec ces deux points, compatibilité avec la totalité des jeux commerciaux utilisant un moteur Doom non modifié (Doom, Ultimate Doom, Doom II, Final Doom : TNT, Final Doom : Plutonia, Chex Quest, ...)
  • possibilité de charger des patchs WAD à chaud (remplacements de cartes ou textures)
  • possibilité de choisir la difficulté
  • possibilité de choisir la carte à partir de laquelle démarrer le jeu
  • possibilité de sauvegarder et recharger l'état du jeu
  • gestion de l'écran couleur offrant cette fois enfin un temps de rémanence correct
  • gestion du pavé tactile ayant remplacé les touches directionnelles, et pour ceux qui préfèrent possibilité de jouer avec les touches numériques
  • ...


Le développement continue encore aujourd'hui, avec récemment une mise à jour rajoutant la compatibilité TI-Nspire CX II aux performances absolument extraordinaires, le processeur ARM9 ARMv5 passant en effet de 132 ou 156 MHz à pas moins de 396 MHz ! :#tritop#:

Mais en 2012, Casio venait pour sa part de sortir ses premières calculatrices couleur à écran 16 bits (216=65536 couleurs), les :
  • fx-CG10 pour l'Amérique du Nord (2011)
  • fx-CG20CN pour la Chine (2013)
  • fx-CG20AU pour l'Australie (2016)
  • fx-CG20 pour le reste du monde (2011)
Des machines ici directement ouvertes aux développements tiers, pas besoin d'installer Ndless ou ce genre de chose. ;)

Il n'en fallait pas davantage, Martin Poupe, grand magicien des calculatrices Casio, s'empressa de reprendre le code source de nDoom 2 et de le porter pour les fx-CG10 et fx-CG20, sous le nom de CGDoom. :D

Petit clin d'oeil spécifiquement ajouté sur cette édition, les cheat codes iddqd (iddad sur clavier Azerty) et idkfa/idkfq sont reproduits par la touche
^
. ;)

Ecueil principal toutefois, ici le processeur n'était qu'un SH4 cadencé d'origine à 58,98 MHz, et avec cette configuration le jeu était quasiment injouable. :(

On ne commençait à obtenir quelque chose d'acceptable qu'à la condition d'installer et utiliser de quoi overclocker sa machine, un doublement de la fréquence y suffisant largement. Toutefois ces manipulations supplémentaires bien techniques et bien souvent présentées comme dangereuses décourageaient encore davantage les rares utilisateurs. :'(


Ce n'était pas le seul problème :
  • seulement 2 Mio de mémoire RAM sur les fx-CG10 et fx-CG20 et, bien que théoriquement gérés par le code, beaucoup de fichiers WAD ne démarraient pas, affichaient mal certaines textures, ou encore plantaient en cours de partie
  • pas de choix de la carte de démarrage, ce qui avec le point précédent rendait en gros les dernières cartes inatteignables
  • pas de choix de la difficulté qui par défaut n'est pas la plus simple
  • pas d'explorateur de fichiers, le WAD à lancer devait obligatoirement s'appeler doom.wad et être placé directement dans le dossier racine de la calculatrice, sachant que cette dernière n'a pas de menu permettant de renommer/déplacer les fichiers - impossible donc de changer de jeu sans repasser par un ordinateur
  • seulement 16 Mio de capacité d'espace de stockage sur les les fx-CG10, fx-CG20CN et fx-CG20, quand une bonne partie des fichiers WAD commerciaux tournent autour des 12 à 15 Mo ; certains fichiers WAD ne pouvaient même pas rentrer
  • et ton espace de stockage n'est pas vide par défaut, tu devais parfois littéralement vider ta calculatrice de toutes ses applications Casio fort utiles afin de pouvoir faire rentrer 1 fichier WAD, sans doute inacceptable pour les utilisateurs les plus scolaires, surtout qu'après avoir fini de jouer il ne fallait surtout pas oublier de remettre sa calculatrice en état pour la prochaine évaluation
  • pire, le modèle australien fx-CG20AU n'avait que 4,5 Mo de capacité de stockage ; impossible de penser ici pouvoir jouer à autre chose que la version shareware
  • enfin les niveaux Doom ont le défaut d'être assez sombres - ce n'était pas un problème sur TI-Nspire CX, mais comme nous avons vu, avec la luminosité réglée au maximum les calculatrices Casio fx-CG ont de loin l'écran couleur le moins lumineux toute concurrence confondue ; on n'y voit pas grand chose à nombre d'endroits des cartes
Des contraintes toutefois liées au matériel de la calculatrice ; ce n'était en rien la faute de Martin.

78058264Et puis à compter de la rentrée 2017, Casio nous a sorti les modèles successeurs :
  • Graph 90+E pour la France (2017)
  • fx-CG50AU pour l'Australie (2018)
  • fx-CG50 pour le reste du monde (2017)

Des modèles offrant une évolution matérielle significative :
  • passage de la RAM à la technologie SDRAM :bj:
  • extension de la capacité RAM de 2 Mio à 8 Mio :D
  • accélération du processeur SH4 dont le cadencement passe de 58,98 MHz à 117,96 MHz exactement comme sur le haut de gamme fx-CP400, soit exactement le doublement qu'il nous fallait ! :favorite:

Pas d'amélioration toutefois de l'espace de stockage (y compris sur le modèle australien fx-CG50), ni de la luminosité de l'écran.

Il n'empêche que le reste des améliorations matérielles traitaient bien d'écueils majeurs des modèles précédents, et que l'on pouvait donc s'attendre à une véritable renaissance de CGDoom sur Graph 90+E et fx-CG50...

Ce qui ne fut malheureusement pas le cas, les changements matériels étant tellement significatifs que CGDoom ne fonctionnait pas sur les nouveaux modèles, et jusqu'à aujourd'hui personne n'avait réussi à corriger son code justement grandement dépendant du matériel. :'(

1439114390Jusqu'à aujourd'hui en effet. Car Lephe après de formidables efforts et l'aide de Computer_Freak_2004 vient enfin de réussir à adapter le code au nouveau matériel des Graph 90+E et fx-CG50 ! :D

Ce n'est certes pas la puissance d'une TI-Nspire CX II, mais le code taillé ici sur mesures pour le nouveau matériel permet déjà d'atteindre quelque chose de parfaitement fluide, soit des performances nettement supérieures à ce que l'on a vu plus haut et cette fois-ci sans aucun besoin d'overclocking, félicitations ! :bj:


Précisons que la luminosité du rendu est ici enfin corrigeable, et ce à tout moment sur 5 niveaux à l'aide de la touche quotient. Ceci compense largement la faible luminosité de l'écran. Tout juste peut-on regretter que le jeu démarre par défaut sans cette correction activée.

14443CGDoom dans sa version Graph 90+E et fx-CG50, te permet enfin de choisir le fichier WAD à lancer, plus besoin que ce dernier soit nommé doom.wad. Donc plus besoin d'avoir un ordinateur sous la main pour renommer tes fichiers, même si en pratique la taille des fichiers WAD fait que tu n'en auras pas souvent plusieurs dans la calculatrice.

Tu as de plus la possibilité de démarrer le jeu avec la carte de ton choix. Mais attention car ce sera alors avec l'arme par défaut, et donc sans les bonus des cartes précédentes que tu n'auras donc pas jouées. Un petit coup de
^
pourra t'être bien utile. ;)

1445214451Belle amélioration par rapport à tous les portages précédents, le menu du jeu a été reproduit et est activable à tout moment via la touche
MENU
. Si tu joues sur un WAD commercial de Doom, lancer une nouvelle partie via le menu de Doom te permettra de choisir l'épisode. :favorite:

D'autres améliorations exclusives incluent les écrans titres et séquences de démonstrations.

144541445314388Contrairement aux menus du jeu, le menu de lancement de CGDoom te permet de choisir librement la carte avec laquelle tu souhaites démarrer ta partie. Le jeu étant découpé en épisodes de 9 cartes, choisir les épisodes 2 ou 3 de Doom ou encore 4 d'Ultimate Doom revient à choisir au lancement de CGDoom entre les cartes de numéro 1, 10, 19 et 28.

Attention toutefois, tu démarreras le jeu sans aucun bonus, exactement comme avec la carte n°1. Cela pourrait être difficile sur certaines cartes.

14455Contrairement au CGDoom pour fx-CG10/20, il y a un intérêt bien pratique à avoir le menu de Doom fonctionnel. Tu pourras ici choisir la difficulté, qui par défaut n'était pas la plus simple. ;)

144601445914458Le menu te permet également de sauvegarder et recharger ta partie. Les écrans de crédits et aide y sont également fonctionnels, mais précisons toutefois qu'ils sont affichés dans leur version originale, et que les touches indiquées ne correspondent donc pas à celles de la calculatrice.

Le menu de Doom te permet également de quitter le jeu, avec la reproduction fidèle des messages tentant de t'en dissuader, fidèlement reproduits : ;)
14461144621446314464

1446714466L'espace de stockage étant un gros problème sur Casio Graph 90+E et fx-CG50, nous te publions ci-après des fichiers WAD dans des versions tout spécialement allégées pour ta calculatrice (ressources audio retirées, vu que non gérées pour le moment).

Par exemple le WAD avec les 36 cartes d'Ultimate Doom a été réduit très significativement de 11,8 Mio à seulement 9,82 Mio, tu as des chances de réussir à le faire rentrer sans avoir à effacer d'abord toutes les applications utiles de Casio !

Encore trop gros pour toi ? Nous ne mettons également le WAD de Doom, ne comportant que les 27 premières cartes.

Toujours trop gros pour toi ? Les cartes de Doom sont réparties par épisodes de 9 cartes. Ce qui fait donc 3 épisodes pour Doom et 4 épisodes pour Ultimate Doom. Pour économiser encore plus de place, nous t'avons scindé les fichiers et te proposons donc 4 WAD séparés, un par épisode.

1438514437La mémoire RAM bien plus imposante permet désormais de lancer d'autres fichiers WAD. Par exemple, Doom II : Hell on Earth marche, également disponible ci-après dans sa version tout spécialement allégée ! :D


1443914441La gestion du menu est visiblement très bien codée, la version française officielle de Doom II également disponible ci-après est parfaitement fonctionnelle, aussi bien niveau menu que barre d'état.

Pour ceux qui préfèrent (chacun ses goûts), nous t'incluons également les édition BFG des WADs de Doom, Ultimate Doom et Doom II. Il s'agit des versions censurées distribuées avec le jeu Doom 3 BFG Edition.

Pour les différences, on peut citer le retrait du symbole de la Croix-Rouge des kits de premiers soins, pour être remplacé par une pilule de médicament.

Egalement, dans Doom II, la carte n°30 Icon of Sin comporte 2 sorties cachées donnant accès aux cartes secrètes n°31 Wolfenstein et 32 Grosse, superbe référence te replongeant dans l'univers du jeu précédent Wolfenstein. L'édition BFG censure très lourdement ces cartes :
  • en les renommant Idkfa et Keen
  • en supprimant toute référence au nazisme (croix gammées, soldats SS, portraits d'Hitler, ...)

1444514447Nous t'incluons également quelques autres fichiers WAD créés par des fans, déjà optimisés et fonctionnels. Il est à noter que la quasi totalité de ces fichiers reprennent la structure WAD de Doom II, qui ne répartit plus les cartes par épisodes. Une scission serait donc ici arbitraire.

Parmi eux, citons Heretic : Shadow of the Serpent Riders, non pas le WAD officiel car conçu par RavenSoft pour sa version modifiée du moteur d'Id Software et donc incompatible avec CGDoom, mais une réadaptation intégrale libre très fidèle à l'esprit du jeu.

Après le blocage par Texas Instruments des programmes en langage machine dits ASM sur ses TI-83 Premium CE et TI-84 Plus CE (certes contournable mais faut-il encore s'en donner la peine) et le récent revirement extrémiste de NumWorks dans le verrouillage et la fermeture, les calculatrices graphique Casio et particulièrement les modèles couleur Graph 90+E et fx-CG50 nous apparaissent être de loin les meilleures machines scolaires pour le développement en langage assembleur ou C. Ici pas de verrouillage excessif (c'est-à-dire en dehors du mode examen).

De formidables qualités et possibilités encore redémontrées aujourd'hui, avec l'avantage d'être exploitables de façon sereine sans avoir à craindre de blocage à chaque mise à jour comme chez la concurrence ! :bj:



Téléchargements :

Référence : https://www.planet-casio.com/Fr/forums/ ... s-217.html

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 19 Sep 2021, 19:40
by redgl0w
Très propre. Je me demandais si ça serait portable sur numworks via magie noire. Lephe, si tu passes par là, tu aurais une idée de la consommation en RAM de l'application ?

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 19 Sep 2021, 19:42
by Lephe
Yo, merci ! Pour la RAM j'ai des idées hyper précises t'imagines pas. J'ai passé des heures à grind tout ce que je pouvais en regardant les stats pour faire rentrer ça dans la mémoire standard ! :funny:

La question est un peu subtile parce qu'il y a plein de données du WAD qui peuvent se retrouver en mémoire. sur Graph 90+E, on passe beaucoup d'efforts à accéder au fichier directement en ROM pour éviter de copier les objets en RAM. C'est rendu difficile par la fragmentation du système de fichiers, mais ça représente une grosse économie, donc selon la façon dont les fichiers sont stockés sur Numworks vous allez vous poser les mêmes questions.

Avec cette optimisation en tête, avec de l'ordre de 400 ko on peut jouer à Hangar sur le Doom shareware, et ensuite il faut pousser pour maximiser la compatibilité. L'allocateur de Doom est un next fit ce qui est très mauvais pour la fragmentation, donc ce problème peut se poser aussi. Dans CGDoom j'ai modifié l'allocateur pour pouvoir prendre plusieurs zones de RAM, et par défaut j'ai environ 880 ko plus des bouts de mémoire complètement exotiques (accès 32-bit uniquement) pour un total approchant 1 Mo, avec ça on peut jouer à peu près tout Ultimate Doom sans problème et des bons morceaux de Doom II. En utilisant environ 3 Mo en plus piqués dans la taille plus grande de la puce RAM de la Graph 90+E (une optimisation toute récente), je pense qu'on peut jouer à peu près n'importe quoi pourvu qu'il n'y ait pas de bug ailleurs.

TL;DR : Pour CGDoom où on peut référencer les parties non-fragmentées du WAD directement dans la ROM, 400 ko pour jouer à Hangar, 800 ko pour jouer à tout Ultimate Doom, et plus sera toujours mieux.

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 19 Sep 2021, 19:58
by Lephe
Pour revenir sur l'article : merci beaucoup Critor d'avoir pris le temps d'écrire tout ça, on voit que tu l'avais en réserve depuis un moment. :favorite:

Il y a eu des mises à jour depuis ce qui est écrit dans l'article, donc les touches on pu changer, il y a des options en plus... des détails comme ça. La sauvegarde de parties est effectivement gérée, toute fraîchement d'hier !

Je n'ai pas tout à fait fini avec ce port (je pense qu'on peut notamment améliorer les contrôles, qui sont assez ingrats par rapport à la version PC), mais ça ne changera plus trop maintenant.

Un seul ajout vraiment important : Computer_Freak_2004 sur Cemetech a énormément contribué par ses tests et ses retours d'expérience, je pense qu'il est impératif de le nommer aussi quand tu introduis CGDoom, s'il te plaît. :)

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 19 Sep 2021, 20:13
by critor
Aucun problème, je viens de rajouter une mention de Computer_Freak_2004, merci pour ce retour.

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 19 Sep 2021, 20:49
by DoOmnimaga
Superbe! Il faudrait d'ailleurs que je réessaie CGDoom pour ma vieille fx-CG10. J'avais essayé il y a des années avec POVER, mais comme cet outil était présenté comme pas fiable par la suite, je n'ai pas pris de chance, donc il faudrait que j'essaie avec Ptunes2

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 02 Oct 2021, 22:24
by Lephe
J'ai atteint la liste de fonctionnalités que je voulais pour une première publication, je suppose qu'on peut dire CGDoom 1.0 maintenant. :)

Je ne vais pas faire doublon (les détails sont sur le topic Planète Casio, mais essentiellement :

  • Des améliorations de performances (15-20 FPS de base, 30-35 FPS avec overclock, cap à 35)
  • Les démos sont supportés, donc on peut enregistrer des parties et même rejouer celle des autres directement sur la calo
  • Plusieurs configurations clavier dont un mode avec les deux mains à plat sur le clavier, qui rend le jeu vraiment jouable à mon goût

Critor, j'avais promis de publier les WADs réduits des épisodes individuels d'Ultimate Doom, tu peux les trouver sur mon dépôt de WADs. Essentiellement ce que j'ai fait pour gagner de la place c'est supprimer les écrans d'intermission et de finale des épisodes non considérés avec SLADE, plus une passe de suppressions des textures/patchs superflus.

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 03 Oct 2021, 09:53
by critor
Merci. Les WADs des épisodes Ultimate Doom sont à jour et crédités correctement.

Peut-être pourrais-tu documenter plus précisément la méthode d'optimisation des épisodes séparés, vu qu'il y a quelques pièges ?
Cela pourrait ainsi être appliqué à d'autres WADs utilisant cette organisation, même si ce n'est pas la majorité.

Re: CGDoom : Doom enfin compatible Casio Graph 90+E fx-CG50

Unread postPosted: 15 Oct 2021, 12:38
by Lephe
Oui tout à fait. La séparation en épisodes n'est pas très difficile, il suffit dans l'ensemble de supprimer les maps non utilisées, ce qui réduit pas mal la place prise. Note que ça demande aussi de modifier le moteur sinon E1M1 n'est plus le premier épisode et ça casse les noms des maps et deux/trois autres choses qui sont hardcodées.

Des optimisations que j'ai faites en plus, il y a d'abord la suppression des images plein écran inutiles. Les écrans d'aide (HELP1, HELP2, CREDITS) ne sont pas tous nécessaires selon les WADs. Les écrans d'intermission (WIMAP0, WIMAP1, WIMAP2 et INTERPIC) n'ont pas besoin d'être tous là, un suffit. Les écrans de victoire (VICTORY2, PFUB1/PFUB2, ENDPIC pour les épisodes 2/3/4) non plus. Et les textures du ciel (SKY1, SKY2, SKY3, SKY4) non plus.

Ensuite, c'est l'affaire de faire tourner les scripts de SLADE (ci-dessous) ; Removed Unused Flats, Removed Unused Textures, et ensuite seulement Remove Unused Patches.

Avec les textures il faut faire très attention : il y a un risque de supprimer (1) les textures d'état activé des boutons, qui ne sont pas référencées par les maps mais quand même par le code, (2) les textures du ciel, et (3) dans certains cas rares d'autres textures harcodées (un peu de trial-and-error est nécessaire).

Image