Grayscale sur HP48

View previous topic View next topic Go down

Grayscale sur HP48

Post  Yann on Sun 11 May - 19:57

Après avoir passé du temps sur les mécanismes internes du jeu (phase qui n'est d'ailleurs pas terminée), je vais m'intéresser un peu plus au contenu.

Dans ce contexte, l'un des objectifs est d'augmenter sensiblement la quantité et qualité des graphismes inclus dans le jeux. Ca ne sera pas très bon pour la taille du programme, mais bon, on fera attention. Pour l'instant, je gagne environ 1Ko à chaque nouvelle version, donc bon, j'espère pouvoir ré-employer l'espace pour du contenu, sans trop augmenter le budget, d'environ 70Ko.

Malheureusement, je ne suis pas très doué en graphismes (c'est peu de le dire), et particulièrement en graphismes noirs et blancs purs, de faible résolution qui plus est.
Aussi, pour m'en sortir un peu mieux, me suis-je intéressé aux graphismes en niveau de gris, qui ne sont pas disponibles de base sur une HP48.
En effet, il faut des programmes spéciaux pour jouer sur une alternance d'images et de niveaux de contraste, qui permet d'émuler des niveaux de gris.

Le résultat n'est pas toujours franchement réussi. On peut d'ailleurs se poser des questions sur l'impact de ces techniques sur les batteries et l'écran LCD.
Mais là n'est pas le seul problème. Comme il s'agit de méthodes "Zarbi", elles sont très mal rendues par les émulateurs, notamment Emu48. Ce qui donne un résultat désastreux sur PC.

Le grand standard de la représentation en Greyscale semble être GG2 (Version améliorée de Grayscal de Randy, par PHX, un Toulousain). C'est le plus fréquemment cité et intégré aux multiples démos en niveaux de gris disponibles sur le Net. Il permet d'utiliser des formats compressés (BZ ou RF) avec jusqu'à 8 niveaux de gris. Des caractéristiques tout à fait excellentes pour l'époque. Malheureusement le résultat sur Emu48 est calamiteux, avec des effets désagréables de pompage.
Un autre développement plus récent est GRS64, par Samuel Roussel et Lilian Pigallio, encore deux français. Là ce n'est pas moins de 64 niveaux de gris qui sont annoncés. Une sacré prouesse technologique, d'autant plus que l'usage processeur est réduit. Malheureusement, le résultat sur Emu48 est encore pire.

Toutefois, j'étais totalement certain de la possibilité de disposer de niveaux de gris fonctionnel sur Emu48 pour avoir testé CRAZY CAR de Titus Software, un jeux de voiture en niveaux de gris dynamique tout à fait impressionnant pour une calculatrice.


Partant de cette certitude, je suis parti en chasse d'un programme permettant d'afficher avec fiabilité des niveaux de gris sur calculatrice et sur Emu48.
J'en ai trouvé deux.
Le premier (Jane) n'est pas très intéressant, car il intègre l'image dans le code et utilise des entrées non supportées, donc probablement incompatibles avec certaines HP48.
Le second (Joe, par Guilherme Aguiar) est beaucoup plus prometteur. Une fois la librairie déconstruite et le bon morceau de code décompilé, on se rend compte qu'il prend pour argument une image de largeur de 128 pixels (hé non, pas 131), et une hauteur d'un multiple de 112 pixels.
En fait, il ne supporte exclusivement que le mode Page-flipping limité à 4 niveaux de gris. Oui, mais le résultat est excellent.


Pas de tearing ni d'artefact, l'affichage est impeccable comme s'il avait toujours été en 4 niveaux de gris. Voilà un résultat impressionnant. De plus, il gère l'animation (la démo se comporte comme un Gif animé de 7 images) et le scrolling de texte sur la ligne du menu. Tout ceci en seulement 538 octets, c'est du bon travail.

M'essayant à ce nouveau système, je suis parvenu à concevoir ce graphisme :


Pas de quoi changer la face de l'art, mais le résultat est utilisable. Une version en noir et blanc seulement aurait été illisible.


Voilà qui ouvre des perspectives intéressantes. Il faut toutefois ajouter que ce type de graphisme coûte un maximum en mémoire. L'image ci-dessus consomme 1802 octets, et surtout se compresse très mal, à seulement 1673 octets, soit un gain ridicule de 7% en utilisant TNT de Damien Harper, le meilleur compresseur disponible sur HP48. Voilà qui risque de peser lourdement sur le budget ressources.

Toutefois, avant d'aller plus loin, il va falloir ré-écrire le code de Joe.
En effet, j'ai absolument besoin de la ligne des menus, que je ne souhaite pas voir effacée par un message déroulant. Dans d'autres cas, comme pour les villes par exemple, j'ai besoin de deux lignes supplémentaires pour afficher des informations, donc il faut pouvoir jouer sur la hauteur et l'emplacement des graphismes.

Bref, ce n'est pas gagné, et mes connaissances en assembleur sont des plus limitées. Je peux à la rigueur lire un code décompilé, et en saisir quelques instructions, mais pas le comprendre au point de pouvoir le modifier.
Donc, pour aller plus loin, il va me falloir passer par une étape très lourde, la compréhension de l'assembleur Saturn.

Ce n'est donc pas demain la veille que des graphismes en niveaux de gris seront présents dans le jeux. Je note toutefois que l'histoire ne s'arrête pas là. En effet, certains graphismes à 4 niveaux de gris passent également très bien avec GG2, ce qui laisse supposer que c'est la méthode générique du "2-page flipping" qui est suffisamment légère pour être affichée sans difficulté par la calculatrice et l'émulateur. Auquel cas, il y aura peut-être moyen de s'inspirer d'autres code que Joe, comme celui de GG2. Malheureusement, ce dernier est à peine mieux distribué qu'un binaire décompilé, sans la moindre trace de commentaire.

Bref, une piste intéressante, mais pour le long termes...


Yann
Admin

Number of posts : 174
Registration date : 2008-05-01

http://phantasie.tonempire.net

Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum