1

ATTENTION : NE FONCTIONNE QU'EN 60HZ
Pas testé en 50Hz mais les résultats risques d'être.... inattendues

Si vous obtenez un affichage avec 1 ligne sur 2, arrêtez et relancer jusqu'à ce que vous obteniez bien une image complète.

Bon, en ces temps de COVID où on se fait passablement chier, je me suis dit "bon.... et si je faisais mumuse avec le félin pour passer le temps..."
Bonne idée... après.... quelques 10aines d'années sans avoir touché une ligne de code...

Alors en ce début de we après avoir installé vite fait le kit de dev d'origine (version1995) et DOSBOX histoire de pouvoir compiler avec make....

Voilà le résultat. c'est crade, pas optimisé pour un sous (mais alors pas du tout), et en plus ça ne fonctionne pas à 100% du 1er coup.
Mais c'est rigolo

Alors qu'est ce que sexe ?
C'est donc la version d'exemple de fractal Mandelbrot du kit de dev que j'ai "légèrement" modifié.
Pour ceux qui ne savent pas la version d'origine s'affiche en 256*200p et le calcul fractal s'effectue en partie via le 68000 et l'autre partie (la plus "lourde") via le GPU

Les modifications apportées (quand ça fonctionne) :
La plus évidente c'est la résolution, qui passe en full 640*480i (oui, entrelacé, et c'est chiant l'entrelacé sur Jaguar !)
Et puis j'ai converti entièrement le calcul fractal en GPU. Par contre, c'est du brutal, optimisation 0 ou pas loin.
Autres petites modifications, j'ai raccourcis le temps d'attente du logo et cette version fonctionne entièrement en RAM. Donc si vous avez une SkunkBoard pas besoin d'attendre 3 heures que ça charge la flash.

Le gain par rapport à la version d'origine (mais en 640*480 quand même) est de 10 sec. 30sec au lieu de 40.
Et par rapport à la version d'origine 256*200... bah c'est quand même nettement plus beau !

Passons aux problèmes... Il y en a 2.
J'ai passé le plus de temps à essayer de faire fonctionner l'entrelacé qu'autre chose !
J'ai bien compris que visiblement il y avait un bug dans la gestion de l'entrelacé qui fait que le processeur objet n'incrémente pas correctement YPOS en mode entrelacé (1 ligne au lieu de 2) et qu'en plus il faut manuellement changer la valeur de VI à chaque VBL pour prendre en compte les trames paires et impaires.
Bug ou pas d'ailleurs car il n'y a quasi aucune information sur le mode entrelacé dans la documentation, il y a peut être une raison... Peut être y a t il un registre caché pour activer le bon fonctionnement ...

Bref, j'ai fais de multiples test dans tous les sens, je me suis basé sur les informations de zerosquare et de... je ne sais plus qui sur Jagware et..... et ben ça ne fonctionne jamais correctement.
En utilisant ma méthode, bourin, qui consiste juste à mettre la valeur 524 dans VP à la fin du code d'initialisation vidéo, ça fonctionne.... aléatoirement... mais c'est le meilleurs résultat que je peux obtenir !
Si j'essaie n'importe quelle autre méthode je n'obtient pas mieux voir 100% d'échecs. Même en utilisant le code d'initialisation complète de la vidéo de Zerosquare, là par exemple c'est 100% d'échecs.

Alors que ce passe t il exactement : et bien avec ma méthode bourin donc, environ... une fois sur.... 2 voir moins, en lançant depuis SkunkGUI vers la SkunkBoard, j'obtient une ligne sur 2 !
Une ligne sur 2, mais en entrelacé ! Après divers essais j'ai découvert qu'en fait quand il n'y a qu'une ligne sur 2 c'est parce que l'interruption sur les trames impaire ne se produit jamais !

Autre problème, pour l'image fractal seulement, si j'utilise la méthode "propre" de centrage de l'image du code d'origine ou même en essayant certaines valeurs absolues, les lignes paires et impaires se retrouvent inversées !
La encore pour contourner le problème j'ai du utiliser des valeurs spécifiques (0 en Y et 32 en X).

En attendant, ENJOY !

tromb Fichier joint : JAGMAND.COF
avatar

2

Merci pour le partage.
J'ai essaye de le lancer aussi sur Virtual Jaguar, ca donne juste un écran noir après le message "... Developer Kit..".

3

Bonne idée!
J'ai essayé sur ma Jaguar mais écran noir... Cependant j'utilise un convertisseur s-video->HDMI. Il aime probablement pas le mode entrelacé de la Jaguar.
Sur VJ2.1.0 ça fonctionne, en PAL et NTSC d'ailleurs! Mais y'a pas d'entrelacement dans le sens où les lignes sont doublées. J'avoue que je suis surpris que VJ arrive à afficher qqchose. Le mode entrelacé sur Jaguar c'est quand même particulier.
Allez hop, tu accélères ça (c'est déjà rapide) en utilisant le GPU et le DSP en parallèle!
avatar

4

ça ne m'étonne pas plus que ça que ça ne fonctionne pas correctement sur émulateur.
Il n'y a actuellement aucun émulateur qui émule correctement à100% (loin de là) la Jaguar et encore moins quand il s'agit de fonctionnalité "exotique" voir non documenté comme l'entrelacé par exemple.

Cependant, je viens de tester et...

1ère chose, dans tous, les cas il faut choisir la taille de l'écran *2 ou *3, en *1 la résolution reste en simili 320*240 et il manquera donc la moitié des pixels.

Sur Virtual Jaguar 2.1.2 (final) effectivement ça ne fonctionne pas correctement, jamais à priori. L'entrelacé n'est pas pris en compte il y a donc 1 ligne sur 2 (comme avec une vraie Jaguar quand ça déconne) et après l'écran d'intro il n'y a plus rien.
Sur Virtuel jaguar GIT 20150310 (2.1.3 Prerelease) surprise, ça fonctionne, des fois (bon en fait j'ai réussi à le faire fonctionner une seule fois...). L'entrelacé est bien pris en compte mais affiché en progressif sur PC et l'écran fractal s'affiche aussi... mais décalé et les lignes paires et impaires sont inversées.
J'ai fais une capture d'écran mais sur Yaronet pas évident de la mettre en commentaire...

Je n'ai pas essayé tous les émulateurs, mais depuis mon essai plus ou moins réussi, impossible de le refaire fonctionner.
Tous les Virtual Jaguar semblent partager le même endroit pour stocker les informations de configurations mais je ne sais pas où et j'ai un peu la flème de chercher. Il faudrait peut être les réinitialiser pour que ça refonctionne.
avatar

5

Tu t'es basé sur quelle version des sources pour le mode entrelacé ?

Tu serais OK pour que je regarde tes sources ? Ça m'intéresse de comprendre pourquoi ça ne marche pas correctement chez toi.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

Zerosquare (./5) :
Tu t'es basé sur quelle version des sources pour le mode entrelacé ?

Tu serais OK pour que je regarde tes sources ? Ça m'intéresse de comprendre pourquoi ça ne marche pas correctement chez toi.

au début je me suis juste borné à mettre la valeur 524 dans VP parce que je savais qu'il fallait mettre cette valeur en 60Hz, et je l'ai mise à la fin de l'init vidéo parce que... pourquoi pas, ça me semblait un bon endroit.
Voyant que l'entrelacé ne fonctionnait que de temps en temps, j'ai donc essayé ta méthode qui consiste à réinitialiser tous les registres vidéo avec les bonnes valeur. Version que j'ai reprise... ben en fait je ne sais plus où mais elle est encore dans le code source tu verras même si elle ne sert pas. Et là, 100% d'échec, l'interruption pour les trames impaires ne s'exécutent jamais.

Pour le code source aucun problème. Déjà à la base c'est celui du kit de dev alors bon.
Mais attention, c'est méga crade, il y a du caca partout et ça tache. J'ai fais ça juste pour passer le temps, mais j'avoue que coder me manque beaucoup...

Pour être sûr j'ai recompilé le code parce qu'entre temps j'ai refais des modifs pour tester et ça fonctionne sur une vraie Jaguar avec la SkunkBoard (mais toujours pas forcément du 1er coup)

Dans ma version il n'y a plus que 3 sources puisque la partie calcul fractal au 68000 n'existe plus.

tromb Fichier joint : STARTUP.S
tromb Fichier joint : JAGMAND.S
tromb Fichier joint : CALCMAND.S
tromb Fichier joint : MAKEFILE

Startup c'est le source de départ qui initialise 2-3 truc et affiche le logo kit dev
Jagmand c'est le source qui initialise le 2ème écran et qui lance la routine GPU
calcmand c'est la routine de calcul fractal au GPU
et le makefile qui avec le tas histoire de pouvoir compiler
avatar

7

@DEATH, Merci pour ces informations.
J'avais essayé uniquement avec ma version Rx de l'émulateur qui est base sur le 2.1.3. Je l'améliore au compte goute, en rajoutant principalement des fonctionnalités pour le débuggeur.

8

dilinger (./7) :
@DEATH, Merci pour ces informations.
J'avais essayé uniquement avec ma version Rx de l'émulateur qui est base sur le 2.1.3. Je l'améliore au compte goute, en rajoutant principalement des fonctionnalités pour le débuggeur.

J'ai trouvé ou se trouvait la configuration de virtual Jaguar, je l'ai effacé et retester... ça ne fonctionne plus sad j'ai vraiment dû avoir du bol le 1er coup.
avatar

9

DEATH (./8) :
dilinger (./7) :
@DEATH, Merci pour ces informations.
J'avais essayé uniquement avec ma version Rx de l'émulateur qui est base sur le 2.1.3. Je l'améliore au compte goute, en rajoutant principalement des fonctionnalités pour le débuggeur.

J'ai trouvé ou se trouvait la configuration de virtual Jaguar, je l'ai effacé et retester... ça ne fonctionne plus sad j'ai vraiment dû avoir du bol le 1er coup.
Apres les avoir effacer, je supposes que tu n'as pas modifier la configuration dans le menu de l'émulateur? Ou utiliser les paramètres en ligne de commande?

10

dilinger (./9) :

Apres les avoir effacer, je supposes que tu n'as pas modifier la configuration dans le menu de l'émulateur? Ou utiliser les paramètres en ligne de commande?

J'ai juste reparamétré le chemin d'accès au répertoire roms

J'ai également essayé avec virtualjaguar wDebugger x64 R4a et ça fait pareil, le logo devkit s'affiche bien et après plus rien.
avatar

11

Je me souviens où j'ai pris exemple du code pour l'entrelacé, c'est sur Jagware dans le fichier highrestest.zip de l'utilisateur Tyrant
https://www.jagware.org/index.php?/topic/352-high-res-graphics-on-the-jaguar/
avatar

12

DEATH (./11) :
Je me souviens où j'ai pris exemple du code pour l'entrelacé, c'est sur Jagware dans le fichier highrestest.zip de l'utilisateur Tyrant
https://www.jagware.org/index.php?/topic/352-high-res-graphics-on-the-jaguar/
Est-ce que s'est censé représenter cela?
mdkD

13

dilinger (./12) :
Est-ce que s'est censé représenter cela?

ça c'est effectivement le programme de Tyrant dans le fichier zip qui affiche une image en 640*480i et qui fonctionne très bien sur une vraie Jaguar à tous les coups.
avatar

14

Bon, il semble effectivement y avoir un bug dans le code Tyrant... tel quel ça fonctionne, mais dès qu'on fait quelques modifs ailleurs, ça ne marche plus.

Du coup j'ai remplacé toute la partie vidéo par un de mes vieux bouts de code (moche) que j'ai retrouvé, et ça semble marcher en 50 Hz comme en 60 Hz à tous les coups, du moins chez moi : tromb jagmand.zip

(y'a plus de startup.s, c'est normal, le makefile a changé)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

15

Oh y a tricherie là, ! Tu as enlevé la 1ère partie du code !

Bon sinon trêve de plaisanterie, ça fonctionne........... pas. Pas vraiment.

En fait, sur ma Jaguar, ça a fonctionné 4-5 fois. Je lançais, puis reset de la SkunkBoard, puis je relançais etc.
Et au bout de la 5ème ou 6ème fois, ça ne fonctionnait plus ! La synchro est toute bizarre un peu comme quand mon code déconne 1 fois sur 2, mais en pire.
En utilisant les menus de ma TV je vois bien que la synchro est vraiment étrange car la TV se cale évidemment sur ce qu'elle reçoit pour son propre affichage (c'est une CRT)
Non seulement l'image clignote, non seulement il y a une ligne sur 2, les menus de ma TV sont distordus, mais en plus, le fond vert de la SkunkBoard reste la où l'image fractal est noire. Il y a vraiment un truc qui cloche là.
De plus, maintenant impossible de réussir à le faire fonctionner correctement. J'ai même éteint la console, rien à faire, ça déconne. J'ai éteint ma TV puis rallumé, pareil.

Par contre le programme de Tyrant fonctionne toujours ! à tous les coups.

Mais ce n'est pas tout. Sur Virtualjaguar 2.1.2, ça fonctionne, mais les lignes sont doublées donc 640*240. Sur Virtualjaguar GIT20150310, ça fonctionne, c'est bien en 640*480.... mais les lignes sont inversées....
avatar

16

En y regardant de plus près, sur ma TV l'image n'est pas distordue, les lignes sont en fait inversées ET il y a une trame sur 2.
avatar

17

Là je viens de relancer ton code après avoir laissé éteint ma TV et la console pendant environ 1 heure, et ça refonctionne...

je reset la skunboard, je relance, reset... 2-3 fois comme ça, ça redéconne.

Mais osecours quoi
avatar

18

Bon, j'en ai eu trop marre. J'ai pris le code source de Tyrant, je l'ai recompiler et tester plusieurs fois sur Ma Jaguar et sur virtualjaguar histoire d'être sûr que cette version fonctionne vraiment bien partout, j'ai modifier son code en mettant cote à cote le sien et le mien (il n'y a quasi aucune différence !), j'ai même vérifié les différences avec WinMerge, j'ai compilé....

Et maintenant ça marche impec à tous les coups sur ma Jaguar !!

Par contre sur virtual Jaguar 2.1.2 ça ne prend pas en compte l'entrelacé (les lignes sont juste doublées) mais ça le fait aussi avec le code original de Tyrant (curieux... je ne me souviens pas que ça ne fonctionnait pas...) l'écran fractal a fonctionné une fois, mais complètement décalé en Y et depuis écran noir.
Sur virtualJaguar GIT ça fonctionne très bien sauf l'écran fractal (je crois que quelque chose plante car on a juste le temps de voir l'écran flasher)
avatar

19

Attends demain tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

20

YES !!! I DID IT !!

j'ai trouvé pourquoi sur l'écran fractal les lignes étaient inversées sur vraie Jaguar et pourquoi ça plantait sur virtualjaguar !

Dans le 2ème écran l'interruption VI du 68000 est changé à la volé pour prendre en compte la nouvelle adresse de la liste d'objet (le code est similaire mais les adresses sont différentes)
Hors pour l'entrelacé il faut modifier VI à chaque VBL pour prendre en compte les trames paire et impaire.
Pour ça la valeur VI est sauvegardé via le pointeur vi_line dans le 1er écran. Mais dans le 2ème écran, donc le 2ème source, ne maitrisant pas macmachin ALN et cie ce pointeur se trouvant dans le 1er source il était donc introuvable.
J'avais donc tout simplement créé un autre pointeur vi_line2 pour la nouvelle interruption VI dans le second source.... sauf que cette valeur, n'a jamais été initialisé... VI se retrouvait donc avec une valeur entre ... 0 et ... n'importe quoi se trouvant dans la mémoire à ce moment....
Pas étonnant que ça déconne "légèrement", surtout sur virtualjaguar qui ne semble pas initialiser la mémoire à zéro.

Bon ducoup j'ai tout simplement ajouter le symbole .extern vi_line au seconde source afin que le compilateur sache qu'il faut aller la chercher ailleurs et j'ai modifier le code pour utiliser uniquement cette valeur...

En lien, le résultat

tromb Fichier joint : JAGMAND.COF
avatar

21

Bien joué smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22

DEATH (./20) :
Pas étonnant que ça déconne "légèrement", surtout sur virtualjaguar qui ne semble pas initialiser la mémoire à zéro.
C'est cool.
Ofs1
Oui, la mémoire n'est pas initialiser, de ce que je comprends, la console n'initialise pas non plus sa mémoire au démarrage. Rajouter une option pour clearer la mémoire dans l'émulateur ne serait pas un soucis d'ailleurs.

23

La console n’as pas, mais électriquement la mémoire (dynamique) à toutes le chances d’être à zéro au boot

Initialiser la ram avec des valeures aléatoires est plus une technique de debuggage (ton code ne doit pas dépendre de la ram dans un état précis au boot)
Mais ça ne veux pas non plus dire qu’il ne faut pas initialiser la RAM au reset. Les cas ou elle risque de contenir quelque chose sont, par exemple, après un reset ou après un changement de jeu (avec un power off), de part sa nature le decay de la DRAM est lent et certains bits peuvent restera l’état haut pendant un long moment. La SRAM est moins permissive sur ce point.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

24

Godzil (./23) :
La console n’as pas, mais électriquement la mémoire (dynamique) à toutes le chances d’être à zéro au boot
Tu veux dire le contraire, non ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

25

la DRAM est basiquement un condensateur, si on en le rafraichis pas, le condo se décharge, donc tombe a "0" que je sache.

Je sais que c'est theorique et la réalitée est plus complexe, mais un bit de DRAM est en gros ceci:

5h8W
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

26

C'est vrai, mais ça se décharge moins vite qu'on pourrait le croire. J'ai déjà testé sur la Jaguar : on peut couper l'alim pendant plusieurs secondes, et le contenu de la RAM est en grande partie préservé (une image est facilement reconnaissable par exemple, bien qu'il y ait une proportion de bits qui ont changé d'état). D'autre part il n'est pas dit que l'état déchargé soit interprété comme un zéro, avec des sense amplifiers inverseurs ça donnerait un un.

Du coup, penser que la RAM est "naturellement" initialisée à zéro est risqué. Mais c'est intéressant comme question, il faudrait faire des essais smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

27

Tu n'a pas lu jusqu'au bout grin

Godzil (./23) :
Mais ça ne veux pas non plus dire qu’il ne faut pas initialiser la RAM au reset. Les cas ou elle risque de contenir quelque chose dont après un reset ou après un changement de jeu, de part sa nature le decay de la DRAM est lent et certains bit peuvent restera l’état haut pendant un long moment.

Ce que je voulais juste dire c'est que en dehors de faire un emulateur avec des options pour stresser un jeu, initialiser a random n'a pas de sens smile
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

28

Je me demande s'il n'y a pas des jeux qui utilisent le contenu initial de la RAM pour initialiser leur générateur de nombres aléatoires. Du coup ça peut permettre d'éviter de retomber toujours sur la même config.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

29

C'est généralement une tres mauvaise idée smile

Il vaut mieux utiliser des facteurs comme le temps avant que le joueur appuis sur start pour lancer le jeu, et d'autre facteurs du genre
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

30

Je dis pas le contraire, mais si les jeux respectaient toujours les bonnes pratiques, le boulot des développeurs d'émulateurs serait beaucoup plus facile tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo