1

Salut,

J'ai entrepris de réécrire les sources C de la série Développer sous GEM (ST Mag) pour pouvoir les compiler sous gcc et je me retrouve avec des bugs d'affichage (devgem.png).
Dans le premier cas, c'est l'inversion vidéo de la trame qui marche pas, dans le deuxième cas c'est la hauteur de la zone de travail de la fenêtre qui n'est pas bonne.
Cela pourrait venir de quoi ? de la gemlib ou de XaAES ou d'autre chose encore ?
avatar
Mes pages personnelles : https://www.xdelatour.fr (auto-hébergement)

2

Yop'

Très bonne initiative top
C'était l'un de mes projet il y a très longtemps cheeky

Sans le code source, difficile de savoir où ce situe le problème.

Pour le second cas, peut-être que cela peut t'aider (taille et occupation de la fonte système):
https://freemint.github.io/tos.hyp/en/graf.html#graf_handle

D'une résolution à l'autre, d'un AES à l'autre, les Objets AES n'auront pas la même taille / apparence, il faut interroger l'AES/VDI pour leur dimensionnement.


Bon courage
avatar

3

Merci beaucoup,

Le problème vient effectivement des objets de l'AES : après comparaison des deux images, les fenêtres font bien les mêmes dimensions dans les deux cas (80x32), mais la barre de titre est bien plus grosse sous XaAES. Les dimensions des cellules de caractères sont utilisées pour calculer la taille totale de la fenêtre, pas la taille de sa zone de travail. C'était défini par 2 x hauteur cellule ce qui marche avec l'AES original. En faisant 3 x hauteur ça marche nickel sous XaAES, par contre ça sera trop grand sous l'AES original. J'ai été mauvaise langue en accusant gemlib et XaAES alors que c'est le programme qui aurait dû déterminer les dimensions totales de la fenêtre en fonction des dimensions de la zone de travail.

Pour graf_handle, ça renvoie 19x19 pour l'AES d'EmuTOS et 10x18 pour XaAES pour les dimensions de cellules. Pour les caractères eux-mêmes, c'est 8x16 dans les deux cas. Finalement ces valeurs ne sont pas utilisées dans le code, c'est vst_height qui est appelé et les valeurs sont identiques avec les deux AES.
avatar
Mes pages personnelles : https://www.xdelatour.fr (auto-hébergement)

4

Intéressant !

5

xavier (./3) :
[...]
c'est le programme qui aurait dû déterminer les dimensions totales de la fenêtre en fonction des dimensions de la zone de travail.
Tout à fait, on doit demander à l'AES de nous calculer les dimensions totales de la fenêtre (wind_calc)
avatar

6

Bonsoir,

Ça marche effectivement beaucoup après avoir ajouté un appel à wind_calc. Pour le problème d'inversion vidéo j'ai pas encore trouvé.

Quelqu'un saurait-il comment contacter l'auteur des articles et codes sources pour savoir s'il autoriserait leurs publications et modifications ?
avatar
Mes pages personnelles : https://www.xdelatour.fr (auto-hébergement)

7

Dans quels numéros de STMAG sont ces articles ?
Tu as son nom? Tu as essayé les pages blanches ? Facebook ? linkedin ? viadeo, copain d'avant ?
C'était il y a 30 ans, pas sur qu'il soit encore dans le coup...

8

Il était intervenu sur Yaronet, il y a fort longtemps:

topics/169505-compaison-des-librairies-gem#post-7

Tu peux tenter le message privé (mini message, clic sur le pseudo)
avatar

9

Merci Vin67, rien trouvé sur LinkedIn ni les pages blanches. J'ai fermé mon compte Copains d'avant il y a peu et jamais été sur Facebook (je suis devenu allergique aux GAFAM dès 1997 après avoir dû remplacer mon ST par un PC sous Windows 95, je suis passé directement à Linux)

Daroou, Je viens de lui envoyer un message privé, en attendant je vais continuer ma formation au GEM et j'en profite pour ressortir mes vieux ST Mags livre
avatar
Mes pages personnelles : https://www.xdelatour.fr (auto-hébergement)

10

Tu peux tenter le message privé (mini message, clic sur le pseudo)

Toujours pas de réponse.

J'ai quand même commencé, je ne sais pas ce que ça vaut mais je mets le lien au cas où.
avatar
Mes pages personnelles : https://www.xdelatour.fr (auto-hébergement)

11

xavier (./10) :
Tu peux tenter le message privé (mini message, clic sur le pseudo)

Toujours pas de réponse.

J'ai quand même commencé, je ne sais pas ce que ça vaut mais je mets le lien au cas où.

Toujours ton problème avec la trame de gauche ? Si oui cela sent le problème d'initialisation de la VDI. Gemlib n'y est pour rien, le formulaire est dessiné par ton application ou par l'AES, si c'est ton appli c'est que par défaut il y a un truc dans la VDI mal initialisé est ce que dans les 2 cas la VDI est identique ? On peut avoir des initialisations par défaut différent. Si cela passe par le objc_draw() curieux c'est qu'un des 2 aes à faux! Si tu peux essayer avec le TOS, Magic, NAES ... C'est quand même curieux

Si on veut porter une appli gem de purec vers gcc, dans ton cas c'est la lib AES, si on a PureC le mieux c'est d'utiliser gemlib sous PureC pour tester et quand cela marche passer à gcc, enfin c'est mon avis.

Les noms de constantes ont été redéfinies mais gemlib supporte les anciens avec l'option:
#define __GEMLIB_OLDNAMES 1
Si il y a des userdef une autre option est recommandée mais j'ai un trou de mémoire

Olivier

12

xavier (./10) :
J'ai quand même commencé, je ne sais pas ce que ça vaut mais je mets le lien au cas où.

Pas mal, j'aime bien la présentation top

Dommage qu'il manque les articles, peut-être que tu peux mettre les liens vers abandonware-magazines.org en attendant.

T'as dû en passer du temps à modifier et tester tous les sources crash

Courage pour la suite.




Quelques remarque:

http://xdelatour2.ddns.net/devgem/devgem1.html

Le bouton Confirme du formulaire en fenêtre ne fonctionne pas
Il fonctionne bien, sauf qu'il devrait se nommer Appliquer, il modifie l'affichage des autres fenêtres (visible si les fenêtres sont ouvertes), il n'a pas pour but de fermer la fenêtre devil

La trame sélectionnée est affichée avec un rectangle blanc au lieu d'être en inversion vidéo
C'est un bug d'affichage XaAES.
Sous MyAES, sous EmuTOS (Hatari), sous TOS 1.04 (Hatari), l'affichage est correct.



http://xdelatour2.ddns.net/devgem/devgem2.html
Deuxième point, dans le même genre que le premier, la position initiale de la fenêtre n'est pas assez éloignée du haut de l'écran. Cette fois-ci, dans certaines configurations, c'est la barre de menus qui recouvre la fenêtre de l'accessoire.
Comme pour l'espace de travail des fenêtres, il faut demander à l'AES, les dimensions du bureau avec wind_get(0, WF_WORKXYWH, &x_desktop, &y_desktop, &w_desktop, &h_desktop);
y_desktop commence sous la barre de Menu.



http://xdelatour2.ddns.net/devgem/initgem3.html
Il n'est donc plus possible d'utiliser wind_set() dans tous les cas. La solution proposée par la bibliothèque GEM est d'offrir plusieurs fonctions wind_set(), wind_set_ptr(), wind_set_int(), wind_set_ptr_int(), wind_set_grect() et wind_set_str() pour répondre aux différents besoins.
La fonction wind_set() est toujours possible, c'est la fonction officielle wink
https://freemint.github.io/tos.hyp/en/wind.html#wind_set

Sauf qu'apparement sous PureC, elle a un nombre de paramètre variables
wind_set (hwind[index], WF_HSLIDE, 0); (initgem 3)

sous GEMLIB elle a le format officiel:
wind_set (hwind[index], WF_HSLIDE, 0,0,0,0);

Les fonctions sont dépendante de la Lib GEM:

GEMLIB supporte les fonctions officielles et ajoute des fonctions optimisées, wind_set_str/int/ptr()
(xxx_int et xxx_ptr sont nouvelles, elles n'existent pas sur ma config - GEMlib 0.44)

wind_set_int (hwind[index], WF_HSLIDE, 0);


http://xdelatour2.ddns.net/devgem/devgem4.html
fonctionne sous Myaes sauf la partie VDI (le formulaire disparait)
fonctionne sous EmuTOS, TOS 4.04
avatar

13

Daroou (./12) :
xavier (./10) :
...
http://xdelatour2.ddns.net/devgem/initgem3.html
[quote]Il n'est donc plus possible d'utiliser wind_set() dans tous les cas. La solution proposée par la bibliothèque GEM est d'offrir plusieurs fonctions wind_set(), wind_set_ptr(), wind_set_int(), wind_set_ptr_int(), wind_set_grect() et wind_set_str() pour répondre aux différents besoins.
La fonction wind_set() est toujours possible, c'est la fonction officielle wink
https://freemint.github.io/tos.hyp/en/wind.html#wind_set

Sauf qu'apparement sous PureC, elle a un nombre de paramètre variables
wind_set (hwind[index], WF_HSLIDE, 0); (initgem 3)

sous GEMLIB elle a le format officiel:
wind_set (hwind[index], WF_HSLIDE, 0,0,0,0);

Les fonctions sont dépendante de la Lib GEM:

GEMLIB supporte les fonctions officielles et ajoute des fonctions optimisées, wind_set_str/int/ptr()
(xxx_int et xxx_ptr sont nouvelles, elles n'existent pas sur ma config - GEMlib 0.44)

wind_set_int (hwind[index], WF_HSLIDE, 0);


http://xdelatour2.ddns.net/devgem/devgem4.html
fonctionne sous Myaes sauf la partie VDI (le formulaire disparait)
fonctionne sous EmuTOS, TOS 4.04

Oui wind_set est toujours valide, faut pas s'en priver, ces fonctions c'est juste pour simplifier et optimiser

Et zut pour MyAES va falloir que je regarde!

14

Merci pour tous ces retours !

Je vais m'y replonger dès que possible mais je manque de temps ces derniers jours. Et je viens de voir que mon site n'est plus accessible angry

Ajouter les liens vers abandonware-magazines est une très bonne idée, je le note top
avatar
Mes pages personnelles : https://www.xdelatour.fr (auto-hébergement)