Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » CGDoom pour Graph 90+E : série Doom et autres jeux 3D
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

CGDoom pour Graph 90+E : série Doom et autres jeux 3D

Posté le 26/07/2021 18:34

CGDoom est un port du moteur DOOM créé par Id Software (1993) et qui permet de jouer à un grand nombre de jeux en 3D, avec non seulement la série Doom, mais aussi beaucoup de dérivés, titres indépendants, et même homebrew.

Le moteur est issue de nDoom (port TI-Nspire) et est passé entre pas mal de mains. La première version de CGDoom est de Martin Poupe, et cette version Graph 90+E est de Computer_Freak_2004 et moi. Il y a tout un topic sur Cemetech.


Visualisation d'un démo de E1M1 en 1:08 par Lephe (*)

Téléchargement


Pour jouer, il vous faut à la fois l'add-in et un jeu Doom (sous la forme d'un fichier .wad). Les WADs font plusieurs Mo, pour les plus gros la copie sur la calculatrice prend 10-15 minutes, soyez patients !

Ultimate Doom (4 épisodes, 36 niveaux)

Doom II: Hell on Earth (32 niveaux)

Autres jeux
Pas mal d'autres jeux sont susceptibles de marcher, n'hésitez pas à lancer les WADs et voir ce qui se passe ! Il y a plein de titres en attente de test que je rajouterai au fur et à mesure.

Lancement et options

Le menu principal cherche automatiquement les WADs dans la mémoire de stockage, pour jouer sélectionnez l'une des options "Play ..." en haut de l'écran. Vous pouvez commencer directement sur un épisode/niveau choisi, ou bien lancer le jeu par le menu principal et commencer du tout début.


L'option Use experimental RAM est assez importante. La Graph 90+E a une puce de 8 Mo de RAM, alors que l'OS n'en utilise en général que 2 Mo (comme sur la Prizm). Si vous activez cette option, CGDoom utilisera une partie jugée safe des 6 Mo restants (même si on ne sait pas vraiment), ce qui fait une très grosse différence en jeu (et est nécessaire pour les plus gros jeux comme Doom II).

Le sous-menu Customize controls... permet de modifier les contrôles. Il y a plusieurs configurations par défaut, dont Thumbs only qui se joue avec deux pouces, et Full hands qui se joue avec les deux mains à plat sur le clavier.


Les options et les contrôles sont sauvegardés automatiquement dans CGDoom.cfg dans la mémoire de stockage donc ils restent d'une partie à l'autre !

Contrôles principaux

Le menu principal en jeu s'ouvre avec [MENU], et on valide dedans avec [EXE] ; chosissez Quit Game pour sortir.

Dans le mode Thumbs only :
  • Déplacement avant/arrière avec les touches directionnelles, déplacement latéral avec [X,θ,T] et [log]. Pour courir, [tan].
  • Tourner vers la gauche/droite avec les touches directionnelles.
  • [ALPHA] pour tirer, [x²] pour interagir avec les portes/boutons/etc.
  • Les 7 armes sont sur les touches [F1]...[F6] et [7].

Dans le mode Full hands :
  • Déplacement avec le pavé directionnel formé de [OPTN], [ALPHA], [x²] et [^] (main gauche). Pour courir, [cos].
  • Tourner vers la gauche/droite avec [F5]/[F6] (main droite).
  • [DEL] pour tirer, [×] pour interagir avec les portes/boutons/etc (main droite).
  • Les 7 armes sont sur les touches [1]...[7].

Toute la rangée de la touche de fraction à [→] contient des paramètres d'ajustement/debugging, dont un ajustement de luminosité sur [Frac], un compteur de FPS sur [(], une touche pour tricher sur [,] et une autre pour passer à travers les murs (noclip) sur [→].

Sauvegardes et démos

CGDoom supporte la sauvegarde des parties. En jeu, ouvrez le menu principal avec MENU puis choisissez Save Game. Vous pourrez alors entrer le nom de la partie. Il y a 6 emplacements de sauvegarde pour chaque WAD, chacun correspondant à un fichier comme doom_0.dsg. Les fichiers sont enregistrés dans la mémoire de stockage quand vous quittez l'add-in, pour des raisons techniques.


Plus tard, vous pouvez relancer le même WAD et charger la partie avec Load Game.

CGDoom supporte aussi l'enregistrement de démos, qui sont des fichiers contenant toutes vos actions clavier et qui permet de rejouer les parties après coup (c'est ce qui a été utilisé pour faire la vidéo en haut de ce topic).

Pour enregistrer un démo, indiquez un nombre dans l'option Record on demo slot sur le menu principal. Un fichier dans le genre doom_demo01.lmp sera créé. Toutes les actions du moment où vous entrez en jeu (après le menu principal) jusqu'au moment où vous quittez (en utilisant l'option Quit Game du menu) sont enregistrées. Comme les sauvegardes, le fichier démo est créé quand vous quittez l'add-in.

Vous pouvez ensuite rejouer votre propre démo, ou les démos des autres (celui en haut du topic est ici), en utilisant le sous-menu Replay demo.... Bien sûr, il faut que vous ayez le WAD du jeu correspondant, puisque la démo ne contient pas le jeu (que les entrées saisies).

Leaderboard de speedruns

Vous n'imagineriez pas jouer à Doom et ne pas partager quelques démos de speedruns quand même !

Ultimate Doom E1M1 (Ultra-Violence max)
  1. 1:08 par Lephe (démo ; overclock, frameskip 0, Full hands)
  2. 1:23 par Computer_Freak_2004 (démo ; overclock, frameskip 0, Thumbs only)
  3. 2:00 par Lephe (démo ; pas d'overclock, frameskip 1, Full hands)

Amusez-vous bien avec cette gemme unique de la Graph 90+E.

(*) La partie a été entièrement jouée sur la calculatrice, avec overclock, et le démo est visualisé sur PC uniquement pour la capture vidéo. La calculatrice maintient 30-35 FPS tout le long, seul le chargement initial est invisible sur la vidéo.


Potter360 En ligne Rédacteur Points: 1218 Défis: 2 Message

Citer : Posté le 30/07/2021 11:13 | #


Wow, je n'y croyais plus trop et hier je réinstalle la nouvelle version et... ça marche !
C'est juste TROP bien !!!!!!
J'ai une erreur de Z_MALOC quelque part, je vais essayer de la reproduire et j'envoie ca !
En tout cas, bravissimo, c'est génial !
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 30/07/2021 11:33 | #


Parfait ! Ça fait donc 4 calculatrices où le programme marche (sur le WAD shareware en tous cas).

L'erreur sur Z_Malloc est un peu dommage, mais ça montre qu'il faut plus de mémoire. J'essaierai d'ajouter d'autres zones pour voir si ça aide.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Potter360 En ligne Rédacteur Points: 1218 Défis: 2 Message

Citer : Posté le 30/07/2021 11:43 | #


Ah oui et : quand je passe un niveau il ya bien le texte de recapitulation des points mais le fond est buggué, de pleins de pixels de couleurs...
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 30/07/2021 11:59 | #


Aha mais oui lol ! Tu verras que le dernier G3A date d'il y a un moment, il y a 5 commits depuis : https://gitea.planet-casio.com/Lephenixnoir/CGDOOM-Graph90/commits/branch/master

Je vais en pousser un autre, ça te donnera l'image et ça devrait résoudre le problème de Z_Malloc

Edit : C'est fait !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Potter360 En ligne Rédacteur Points: 1218 Défis: 2 Message

Citer : Posté le 30/07/2021 12:03 | #


Ahah ok, je dois donc telecharger ce G3A là : https://gitea.planet-casio.com/Lephenixnoir/CGDOOM-Graph90/commit/b6291e524f6952287942567b802499776ebaef24 ?
Globalement, coder. Mal, mais coder.
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 30/07/2021 14:40 | #


Merci.

J'ai un Z_Malloc failure + freeze à la fin de la 2ème carte de l'épisode 1, sur le .wad d'Ultimate Doom, soit relativement vite.
J'ignore pour le moment si c'est reproduisible ou aléatoire.

Déjà pas mal d'être arrivé jusque-là sans problème, juste de rares textures manquantes.

Accessoirement il serait bien pratique :
- de pouvoir sélectionner la carte à partir de laquelle on souhaite commencer
- de pouvoir régler le niveau de difficulté, qui n'est pas le plus simple par défaut
Cela faciliterait/accélérerait les tests.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 30/07/2021 14:59 | #



Le lien dans le post principal pointe toujours vers le dernier G3A (il prend dans la branche master, qui évolue de commit en commit). Tu peux toujours télécharger à partir de ce lien sans te poser de questions

J'ai un Z_Malloc failure + freeze à la fin de la 2ème carte de l'épisode 1, sur le .wad d'Ultimate Doom, soit relativement vite.
J'ignore pour le moment si c'est reproduisible ou aléatoire.

Merci, je testerai de mon côté.

Accessoirement il serait bien pratique :
- de pouvoir sélectionner la carte à partir de laquelle on souhaite commencer
- de pouvoir régler le niveau de difficulté, qui n'est pas le plus simple par défaut
Cela faciliterait/accélérerait les tests.

Je crois que certains écrans ont été désactivés. J'essaierai de remettre l'écran de sélection de difficulté qui est intégré. Pour les niveaux, s'il y en a un j'essaierai aussi, sinon je peux faire un input tout con.

Note que tu peux appuyer sur [^] pour un cheat et sur [→] pour passer à travers les murs, ce qui est utile (pour moi, indispensable ) pour finir les niveaux.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 30/07/2021 15:05 | #


Je viens juste de trouver le cheat oui, merci.

J'arrive à découper les .wad format doom1 par épisodes.
(pour le format doom2 non encore testé, il n'y a plus cette notion d'épisodes, donc le découpage serait arbitraire)

Est-ce que ça aide niveau mémoire à l'exécution selon toi ?
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 30/07/2021 16:34 | #


C'est une bonne question, et je ne connais pas assez bien le fonctionnement des données et du stockage de DOOM pour apporter une réponse définitive.

Cependant, chaque allocation faite par le Z_Malloc interne spécifie la durée de vie de la mémoire demandée (ie. le niveau, ou la durée de la musique, ou le programme entier) donc il semble clair que le code fait des efforts pour ne pas garder de données inutiles en mémoire trop longtemps.

Mon intuition donc ce serait que ça ne change pas grand-chose. Mais il faut tester pour avoir un résultat définitif, c'est sûr.

J'ai eu une petite idée pour gratter encore plus de mémoire pour Z_Malloc (165 ko ?), on va voir si ça aide.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 30/07/2021 16:37 | #


Ok, merci.

Par contre ça peut aider niveau stockage.
Parce que des fichier .wad tournant autour de 10-12 Mo, ce sera déjà difficile d'en faire rentrer un seul sans virer les applis officielles de Casio.
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 30/07/2021 16:54 | #


si la memoire est autant un probléme, j'avais vu passer miniwad j'ai l'impression que c'est pas tout a fais le format WAD classique, mais ça peut valoir de coup pour tester le reste sans attendre de pouvoir charger les WAD plus classique
Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 31/07/2021 13:19 | #


Salut !

J'ai testé le programme après 20 minutes de transfert sur ma calculatrice, et la version actuelle marche très bien. Les performances sont impressionnantes, franchement bravo :o
Le jeu est pas facile de base, j'ai pas réussi à terminer le niveau 1 sans utiliser de cheat, mais je pense que c'est aussi un problème d'ergonomie due à la calculatrice. C'est excellent o/
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 01/08/2021 09:07 | #


Concernant Doom 'shareware' et Ultimate Doom.

Dans les 2 cas, il manque des textures sur l'épisode 1 (testé uniquement sur les cartes 1 et 2 pour le moment). Elles ne sont juste pas remplacées par les mêmes teintes, ce qui se remarque donc plus ou moins bien. C'est normal puisque les cartes ne sont pas identiques entre ces deux éditions. Leur version Ultimate Doom est plus complète (davantage de passages secrets et donc éléments).

J'obtiens toujours assez facilement des erreurs zalloc une fois atteinte la 2ème carte de l'épisode 1.


Doom a le défaut d'avoir des maps bien souvent très sombres. Dans le jeu original, il me semble me souvenir que l'on pouvait régler la luminosité du rendu. Il serait bien pratique je trouve de permettre cela quelque part. Parce que je rappelle que de toutes les calculatrices couleur, la Graph 90+E est hélas celle qui a l'écran couleur le moins lumineux. Certaines zones de maps sont bien douloureuses à passer, on n'y voit quasiment rien.


Sinon, il serait correct je trouve de créditer également les développeurs TI-Nspire, MPoupe tout aussi génial soit-il, n'étant pas parti de rien : https://gitea.planet-casio.com/Lephenixnoir/CGDOOM-Graph90/
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 01/08/2021 12:48 | #


Merci pour ces remarques supplémentaires. Comme tu as pu le voir sur Cemetech Computer_Freak_2004 a fait quelques remarques à ce sujet, et m'a incité à tester DOOM sur PC, ce que j'ai fait par l'intermédiaire de GZDOOM. Avec un peu d'expérience je comprends déjà mieux l'objectif et le fonctionnement du jeu !

Il apparaît que certaines des textures corrompues le sont directement dans le WAD et pas en résultat d'un chargement raté. Il faudra que je cherche exactement lesquelles, mais effectivement un WAD intact serait désirable. Avec un autre WAD, Computer_Freak_2004 a réussi à jouer à l'intégralité de Knee Deep in the Dead sur la fx-CG 50.

Pour les maps sombres, tu as bien raison. Je ne sais pas trop comment contrôler la luminosité de l'écran sur la Graph 90+E, mais je vais regarder. Il y a aussi une fonctionnalité de correction gamma implémentée dans DOOM, on peut peut-être la manipuler (en remplaçant les tables) pour éclaircir au passage, si jamais c'est acceptable en termes de performances.

Sinon, il serait correct je trouve de créditer également les développeurs TI-Nspire, MPoupe tout aussi génial soit-il, n'étant pas parti de rien : https://gitea.planet-casio.com/Lephenixnoir/CGDOOM-Graph90/

Et j'en suis bien d'avis ! Je n'ai simplement pas pris le temps de chercher qui est responsable. Est-ce que tu peux me pointer vers un topic, ou si tu les connais me glisser les noms qui vont bien ? Ma connaissance de la communauté TI laisse grandement à désirer.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 01/08/2021 13:11 | #


Pour les développeurs de nDoom, c'est ultra simple, il n'y a que 2 développeurs : Mrakoplaz en 2011 (port initial pour TI-Nspire monochrome à partir du code de la version MS-DOS publié par Id Software) qui a rapidement disparu de la communauté pour entrer dans l'armée, puis moi depuis 2012 (compatibilité TI-Nspire CX avec la gestion de l'écran couleur, du pavé tactile, des IWAD autres que celui de Doom1, des IWAD format Doom2, ainsi que des patchs PWAD, et plus récemment la compatibilité TI-Nspire CX II)

Pour les textures corrompues c'est très curieux. Car de mémoire, les mêmes fichiers .wad joués sur TI-Nspire n'ont strictement aucun problème de texture.

Pour les erreurs zalloc, je précise que je joue sur le .wad d'Ultimate Doom. J'ignore si elles se produisent également sur le .wad shareware, moins complet comme déjà dit.
Pour les textures mal affichées, on peut citer les 4 piliers entourant le bassin dès le départ. La couleur diffère, mais l'affichage est mauvais aussi bien avec l'édition shareware que l'édition complète.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 01/08/2021 13:27 | #


Merci beaucoup, j'ai mis à jour le dépôt avec le crédit approprié. Au passage j'ai poussé l'activation du menu : [X,θ,T] pour ouvrir le menu, [log] pour valider (c'est bourrin mais je pense qu'il faudra refaire les contrôles dans tous les cas). Ça permet de changer la difficulté.

Pour les piliers autour du bassin, Computer_Freak_2004 a aussi mentionné ça. J'ai le problème sur le WAD d'Ultimate DOOM mais pas le shareware, c'est curieux ; je regarderai. Pour une texture qui est corrompue dans le WAD, tu peux regarder au-dessus de l'acide dans le niveau 2, ça fait des bandes blanches bizarres, et j'ai ça aussi sur GZDOOM.

Le shareware étant plus léger c'est probablement tout aussi simple de chasser les bugs dessus, donc je m'y concentre pour l'instant ; je pense que c'est le même bug pour les deux de toute façon donc on verra bien. Merci à toi de tester sur Ultimate DOOM, ça complète une couverture des options.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 01/08/2021 13:57 | #


Merci.

Pour les 4 piliers de départ, j'ai :
- des lignes horizontales dans les tons de brun/rouge avec l'IWAD Ultimate Doom, très voyant
- des lignes horizontales dans les tons de gris avec l'IWAD du shareware, bien plus discret

Voici une photo de ce dernier point :


Ajouté le 01/08/2021 à 14:38 :
Histoire d'être sûr, j'ai retéléchargé le .wad shareware du 1er post. Même problème de texture des piliers dès le départ sur Graph 90+E.

Par contre j'ai lancé exactement le même fichier .wad sur TI-Nspire CX II. L'affichage des piliers du début est correct.

Le problème ne semble donc pas venir du .wad.

Ajouté le 02/08/2021 à 10:05 :
Autre remarque pendant que j'y pense. Le code source de Doom Linux/MS-DOS avec ou sans altérations constitue une bonne partie de CGDoom et nDoom.

Ce code source avait été sorti par Id Software sous licence GPL, il me semble à l'origine pour Linux uniquement à cause de problèmes de licences justement, et le support MS-DOS avait été recodé et rajouté par la suite de façon non officielle.
https://doom.fandom.com/wiki/Doom_Source_License
https://doom.fandom.com/wiki/Doom_source_code

Il serait correct que le repo indique cette licence quelque part, il me semble que pour l'instant il n'en précise aucune.

nDoom indique depuis le début GPLv2.
Il est possible que CGDoom ou certains de ses hébergements n'aient pas précisé la licence, et dans ce cas il n'est pas trop tard pour s'y conformer.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 02/08/2021 22:13 | # | Fichier joint


Merci à toi. J'ai ajouté la licence, c'était évidemment la bonne chose à faire. J'espère que ça aidera (avec l'historique Git) à affiner le suivi du projet par rapport à la version originale de CGDOOM (qui était un peu obscure par chez nous).

Je viens de pousser une mise à jour du G3A qui inclut le menu de pause, le sous-menu d'options, et un écran principal où on peut choisir le WAD à lancer avec diverses options, voir ci-dessous (renommer ça va bien deux minutes...). J'en ai profité pour passer quelques options de la compilation à l'exécution, et j'ai réactivé sprintf (même si je n'ai pas été remodifier là où Martin Poupe avait remplacé les appels par des fonctions maison).


J'ai fini par vérifier avec GZDOOM et la texture des piliers est effectivement incorrecte sur ma calculatrice aussi. Sauf que moi j'ai une texture marron pas délirante donc je m'en suis jamais rendu compte même quand je cherchais. xD

J'ai remarqué que la texture est aussi utilisée pour d'autres murs, comme par exemple le bâtiment dans la cour extérieure visible par la fenêtre de droite au tout début de Hangar.

Le problème se pose aussi quand je charge avec Bfile, donc ce n'est pas le chargement le problème. Du coup c'est tout de suite plus compliqué. Je vais voir s'il y a pas une arnaque dans la façon dont le nom du lump est obtenu (?). Est-ce que tu saurais s'il y a un moyen de connaître le nom de la texture ? Jusqu'ici j'ai utilisé un petit explorateur de WAD pour visualiser les images, mais je serais content si je pouvais éviter de parcourir les 700 images à chaque texture qui ne marche pas.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2568 Défis: 18 Message

Citer : Posté le 03/08/2021 11:29 | #


Merci pour les retours, belles améliorations.
Même si à la taille des fichiers WAD je doute que l'on ait souvent plus de 1 WAD simultanément sur la calculatrice, c'est quand même bien de ne plus avoir à s'embêter avec du renommage sans arrêt côté ordinateur.

Pour avoir testé la map n°2, ainsi que des WAD lançant les épisodes n°2-3-4 d'Ultimate Doom, je peux hélas te confirmer que les quelques textures mal affichées ne concernent pas toujours de petits éléments que l'on peut ne pas remarquer comme ici les piliers de départ. Ce sont parfois de grands et longs murs.

Sinon désolé, je n'ai pas rencontré ce genre de problème lors du développement côté TI-Nspire, et n'ai donc pas eu à développer de technique pour identifier rapidement un lump.
Peut-être peux-tu faire défiler les aperçus de lumps de textures dans un éditeur WAD, et identifier le bon en te référant aux captures d'écran du jeu Doom PC, surtout que c'est ici l'emblématique salle de départ de Doom 1, cela ne doit pas être bien difficile à trouver comme captures d'écran.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 03/08/2021 14:30 | #


Oui, il y a peu de WADs à considérer, sauf si comme tu le dis on découpe les épisodes en morceaux. Ça pourrait être rentable, surtout que c'est très long à transférer - à voir plus tard.

Pour les textures, Computer_Freak_2004 m'a pointé dans la bonne direction, et c'est un peu un euphémisme parce qu'il a trouvé dans le topic original de CGDOOM sur Omnimaga la référence au problème exact. Il y a tout un paquet de textures composites qui sont créées à l'exécution par une combinaison d'autres textures. Pour économiser de la mémoire, CGDOOM remplaçait toutes celles de plus de 8 kio par une texture fixe choisie à l'avance.

En modifiant ou supprimant cette limite on a les bonnes textures, au prix d'une consommation mémoire plus élevée, ce qui va demander encore un peu de travail.

(Entre-temps j'ai cherché manuellement la texture quand même, ce n'est pas aussi long que je le croyais parce qu'il y a beaucoup de sprites pour les polices et les ennemis.)

Ajouté le 03/08/2021 à 15:20 :
J'ai remarqué que les performances diminuent significativement (du genre 20%) si le fichier a beaucoup de fragments (du genre 200 au lieu de 100) ; et pour l'instant je ne sais pas comment réduire le nombre de fragments. Optimiser la mémoire de stockage n'aide pas vraiment, je ne vois que supprimer et retransférer.

Il y a des bouts d'algorithmes qui sont assez moches (du genre linéaires en le nombre de fragments), je vais voir si je peux nettoyer/optimiser ça, ça me froisserait de perdre autant de performances pour un facteur qu'on ne peut pas trop contrôler.

Edit : C'est pas extrêmement significatif mais j'ai réussi à gagner un peu.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 04/08/2021 11:59 | #


J'ai quelques bonnes nouvelles ! D'une part j'ai poussé tout un tas d'améliorations de la GUI (pas encore de G3A mais ça vient), d'autre part j'ai en partie identifié le problème qui fait crasher le Doom Shareware au niveau 4 ou 5 (selon les cas).

En termes d'UI :
  • J'ai ajouté la luminosité : appuyer sur la touche fraction.
  • J'ai restauré la totalité des menus, excepté [Options » Graphic detail] qui est remplacé par les touches [+] et [-] (qui sont de toute façon plus fines), où j'ai mis un message d'indication ; et le chargement/sauvegarde des parties, qui sera à voir plus tard, pour lequel j'ai mis un message temporaire.
  • J'ai ajouté une option du menu principal pour commencer à un niveau choisi. On peut changer la valeur avec les flèches gauche/droite, ajouter un chiffre en le tapant, et remettre à 0 avec AC/ON (c'est cru mais ça devrait suffire pour l'instant).

Pour le crash, j'ai fini par trouver que certain lumps sont mal alignés. C'est le cas notamment du lump 0x29 (LINEDEFS) du niveau 4 qui est sur une adresse impaire alors que les données sont une structure qui a besoin d'être 2-alignée. Je soupçonne que c'est à cause d'une optimisation pourtant très utile, qui consiste à renvoyer directement l'adresse en Flash du lump s'il est en un seul morceau. Doom table peut-être sur le fait que les données sont copiées dans un buffer Z_Malloc toujours très aligné, et on casse cette hypothèse. Ça expliquerait le côté un peu aléatoire (crash au niveau 4 ou 5) selon le découpage en mémoire de stockage.

Je modifierai le chargement si c'est bien ça, mais ça coûtera un peu de performances. Idéalement, si on peut modifier les WADs à la main pour aligner tous les lumps à 4 octets on gagnerait en performances (même si ça ne sacrifiera pas le support des WADs originaux). Critor, est-ce que tu penses que c'est possible de faire ça ?

Edit : C'était bien ça, beaucoup plus de niveaux marchent maintenant.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 92 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd