Obligement - L'Amiga au maximum

Dimanche 25 mai 2025 - 02:40  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Point de vue : Un voyage dans ma mémoire - les bordures d'icônes
(Article écrit par Kamel Biskri - décembre 2020)


Bonjour. Je vais vous parler d'un petit utilitaire que j'ai écrit vers 1993, mais qui n'est sorti qu'en 1996 sur Aminet.

Je vais d'abord me présenter un peu. Un voyage dans le temps...

Je m'appelle Kamel Biskri et comme beaucoup d'entre vous de mon âge, j'ai fait l'expérience des jeux vidéo avant les ordinateurs. À l'époque, cela a commencé avec les jeux électroniques de poche comme Tandy : Cosmic 1000 Fire Away, Puckman, Donkey Kong pour n'en citer que quelques-uns.

Fire Away Donkey King Puckman
Fire Away, Donkey Kong et Puckman

Bien sûr, nous jouions aussi à des jeux sur consoles de cette époque. Mais le mieux, c'était d'aller dans les salles d'arcade. Le premier jeu que j'ai vu fut Space Invaders, il était en noir et blanc et je n'étais pas très doué à ce jeu. Nous allions souvent dans les salles d'arcade entre amis, mais nous n'avions pas beaucoup d'argent, fort heureusement nous avions appris à tricher pour jouer gratuitement. Je suis sûr que vous vous souvenez aussi de ces astuces :). N'oublions pas les calculatrices de poche programmables (TI-57 ?).

Ce fut ma première introduction aux jeux vidéo et j'ai adoré. Plus tard, j'ai suivi la voie habituelle. Le père d'un ami a acheté un Sinclair ZX81. Nous avons joué avec, tapé des programmes, les avons modifiés et avant de réaliser nous étions devenus accros. En 1983, j'ai "supplié" mes parents d'acheter un Oric 1 parce qu'il avait gagné le prix Videor cette année (et ce au lieu d'un ZX Spectrum). Je me rappelle même avoir dit que cela nous servirait pour l'école et ils l'ont acheté (merci papa et maman). Le C64 était hors de portée vu son prix. Trois ans plus tard, j'ai reçu un ZX Spectrum+ pour mon anniversaire (merci maman).

Oric-1 ZX Spectrum+

Oric-1 ZX81
Oric 1, ZX Spectrum+ et ZX81

Un jour, les machines 16 bits sont sorties, nous avions d'abord appris à les connaître en lisant des magazines et nous rêvions d'en avoir une. Le choix était assez simple : l'Atari ST ou l'Amiga. J'ai choisi l'Amiga plutôt que l'Atari ST avec lequel j'ai joué chez un ami parce que j'ai vu Marble Madness dans le magazine Tilt, puis dans la vraie vie Defender Of The Crown et j'ai été époustouflé, il fallait que j'en achète un.

Defender Of The Crown
Defender Of The Crown

L'Amiga 1000 était hors de portée (trop coûteux) et j'ai dû attendre que l'A500 arrive pour pouvoir me permettre de m'offrir l'Amiga. Quand il est sorti, je l'ai acheté avec l'argent que j'ai reçu de l'université, c'était en 1988. J'aimais beaucoup l'Amiga, les jeux et les démos d'abord, puis j'ai fait un peu de programmation et j'ai commencé à apprécier davantage le système d'exploitation (tout en continuant à jouer aux jeux et à regarder les démos).

Interface graphique, icônes et bordures

Quand AmigaOS 2.0 est sorti en 1990, j'étais ravi comme beaucoup d'amigaïstes je suppose. J'étais un fan de l'interface graphique de l'ordinateur Next. J'ai entendu dire plus tard, dans un discours donné par Peter Cherna lors du 30e anniversaire de l'Amiga, que l'aspect d'AmigaOS 2.0 était en effet inspiré par l'interface graphique du Next.

Workbench 2.0
Workbench 2.0

Next
Interface graphique du Next

Une chose que je n'aimais pas, c'était que les icônes aient des bordures. Un jour, j'étais assis devant mon Amiga 500 bien-aimé et je me demandais comment le système dessinait ces "horribles" bordures. Je me suis dit que cela devait être l'icon.library.

Ensuite, j'ai pensé que les bords étaient des droites (plus un remplissage de surfaces, mis en évidence lors de mes tests). Cela voulait dire que la graphics.library était impliquée.

Les icônes font partie du Workbench alors ça devait être lui le coupable. J'ai dû essayer toutes ces options pour pouvoir valider mes hypothèses. N'oubliez pas que n'importe quelle *.library peut appeler les fonctions de n'importe quelle autre.

Je détestais les bordures autour des icônes, mais j'ai aussi détesté la perte de performance liée à l'affichage de ces dernières. Je trouvais que l'affichage des icônes était déjà lent. Il était donc logique qu'en évitant l'affichage des bordures, on augmenterait aussi la performance. Le Blitter a des choses plus importantes à faire !

Je cherchais un outil pour m'aider. J'ai trouvé un outil de Carolyn Scheppner appelé Wedge. Selon la documentation du programme : "Wedge vous permet de surveiller les appels de fonction des tâches du système et des applications. C'est utile à la fois pour le débogage et l'optimisation des logiciels. Wedge rapporte le nom et l'adresse de la tâche appelant la fonction".

J'ai joué avec le Workbench pour lui faire dessiner les icônes et Wedge m'a donné en sortie de résultats. Si je me souviens bien, ce n'était pas suffisant. Ce que Wedge rapportait ne me disait pas qui était le coupable. J'ai donc commencé à chercher un autre outil...

L'auteur de ce dernier n'était autre que Michael Sinz, connu pour Enforcer et son travail sur AmigaOS. Son nom, SegTracker. Ce qui m'a interpellé était cette partie : "Lorsque SegTracker est installé, il analyse la ROM à la recherche de modules de cette dernière et ajoute leurs emplacements à la liste de suivi de telle sorte que les adresses à l'intérieur de ces modules puissent être identifiées. Notez que les déplacements ("offsets") du module sont basés sur l'emplacement du module ROMTAG. L'option NOROM empêchera l'installation de cette fonctionnalité."

Ces outils m'ont aidé et j'ai pu désigner le coupable, son nom est célèbre : le Workbench ! C'était le coupable que je cherchais. Cela semble évident, mais il fallait le prouver !

Supprimer les bordures

Maintenant, je me demandais comment éviter que cela n'arrive... Comment pourrais-je empêcher le dessin des bordures autour des icônes ? Il fallait que j'enquête davantage. A l'époque, mon installation était un A500 avec un disque dur A590 prêté par un ami (Éric Laffont). Cette fois, je décidais de faire le travail à un niveau plus bas. J'ai débranché l'A590 et j'ai attaché ma fidèle cartouche Action Replay III à mon A500. J'ai démarré jusqu'au Workbench et j'ai mis un point d'arrêt aux fonctions Draw() et RectFill() de la graphics.library.

Lorsque les icônes ont été dessinées, cela a déclenché l'Action Replay et à l'aide de son moniteur, j'ai commencé à tracer la ROM. Malheureusement, les appels aux fonctions qui dessinent les bordures n'étaient pas à un endroit où je pouvais les modifier dans la workbench.library en utilisant un appel à la fonction SetFunction() d'Exec. J'avais besoin de trouver une autre façon de le faire... Il était maintenant évident que je devais modifier les fonctions Draw() et RectFill() de la graphics.library mais le problème est que tout le monde utilisait ces appels, je ne pouvais donc pas simplement éviter les appels à ces fonctions de manière globale. Cela ne devrait se faire que lorsqu'il s'agit d'un appel venant de la workench.library et seulement lorsque ce dernier dessine les bordures autour des icônes.

Je n'ai pas trouvé de meilleure solution à l'époque, mais en traçant les appels aux fonctions Draw() et RectFill(), j'ai regardé les informations contenues dans la pile (registre A7 du 68000). Après quelques recherches, je suis arrivé à la conclusion que lorsque les bords étaient tracés autour des icônes, la valeur #$00000008 était toujours située au même endroit dans cette dernière. Si la valeur que je cherchais était là, je vérifiais si c'était le Workbench qui appelait et si c'était le cas, je sautais les appels à Draw() et RectFill() ; sinon, je laissais le flux normal se poursuivre.

Ma solution n'était pas parfaite car j'ai noté quelques artefacts bizarres lors de l'utilisation de certaines icônes avec mon correctif, nommé Nofill. Je ne me souviens pas s'il s'agissait d'icônes standard ou pas...

C'est tout, j'avais une solution qui répondait à mes besoins et j'ai été le seul à l'utiliser pendant des années. Un jour, un autre de mes amis (Jérôme Chesnot) a regardé mon Workbench et a dit quelque chose du genre "pourquoi ton Workbench n'a-t-il pas de bordures autour des icônes ?" Il m'a dit qu'il trouvait que l'apparence était meilleure sans elles. J'ai été un peu surpris car j'avais écrit le correctif uniquement pour mes propres besoins, je ne m'attendais pas à ce que les autres s'y intéressent aussi... Je lui ai dit que j'avais écrit ces correctifs et il m'a dit que je devrais les téléverser sur Aminet. Je lui ai répondu que j'étais trop paresseux pour le faire mais que je pouvais lui donner les correctifs pour qu'il le fasse lui-même.

Ainsi, le 25 juillet 1996, deux jours après le 11e anniversaire de l'Amiga, le premier programme supprimant les bordures autour des icônes de l'Amiga était disponible pour que tout le monde puisse l'essayer.

NoFillNoDraw
Avec et sans NoFillNoDraw

Un peu plus tard, des outils ont commencé à apparaître avec des options permettant d'utiliser les mêmes fonctionnalités et même d'améliorer ma solution. Tous ont utilisé ma technique. Certains m'ont demandé la permission et m'ont cités dans leurs versions, d'autres pas comme les auteurs de NewIcons...

Jérôme Chesnot m'a demandé ce que je voulais en échange et j'ai dit : des cartes postales ? (c'est peut-être lui qui a suggéré cela, rappelez-vous que c'était il y a 24 ans). J'ai reçu des cartes postales avec des mots gentils de nombreuses régions du monde et je me souviens que j'étais fier, savoir que d'autres amigaïstes pouvaient profiter de mes petits outils était un sentiment assez agréable.

Vous trouverez ci-dessous les exemples que Jérôme Chesnot a mis en ligne avec les correctifs.

NoFillNoDraw
NoFillNoDraw dans un Workbench personnalisé

AmigaOS 3.5 a été la première version officielle du système d'exploitation à permettre la suppression les bordures autour des icônes, facile à faire quand on a le code source. :)

Conclusion

Au final, si vous avez une idée de correctif, n'hésitez pas à me contacter. J'ai un compte sur AmigaImpact, EAB, Amiga.org et AmigaWorld.net sous le pseudo "Kamelito".

Autre chose, j'ai réalisé un autre correctif pour un autre ami (Lucas Janin), il voulait utiliser le logiciel de rendu Imagine à une résolution plus élevée que celle fournie par le programme sur son Amiga 4000 en DBLPAL si je me rappelle bien. Du coup, j'ai écrit un petit correctif appelé "PatchImagine" pour lui. Cela m'a donné l'idée d'étendre ce correctif à tous les programmes. Le travail avait commencé à cet égard, mais un jour, Andreas Linnemann a téléversé NewMode sur Aminet et cela a signé la fin de cet outil embryonnaire.

Liens

Correctifs originaux :
Correctifs basés sur mon travail et où je suis mentionné :
Outil sans mention :


[Retour en haut] / [Retour aux articles]


Soutenez le travail de l'auteur