Obligement - L'Amiga au maximum

Lundi 18 janvier 2021 - 09:19  

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


Twitter

Suivez-nous sur Twitter




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

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Point of view: A trip down memory lane - icon borders
(Article written by Kamel Biskri - December 2020)


Hello, I'm going to spoke about a little utility that I wrote around 1993, but only released in 1996 in Aminet.

First I'm gonna present myself a bit. A trip down memory lane...

My name is Kamel Biskri and like many of you of my age I experienced games before computers. Back in the day it started with the pocket electronics games like Tandy Cosmic 1000 Fire Away, Puckman, Donkey Kong to name a few.

Fire Away Donkey King Puckman
Fire Away, Donkey Kong and Puckman

Of course, we were also playing consoles games of that era. The best thing though was going to the arcades. The first game I saw was Space Invaders, it was in black & white and I was not very good at it. We often go to the arcades with friends but we didn't had a lot of money, luckily we learned how to cheats to play for free. I'm sure you remember them too :). Let's not forget programmable pocket calculators (TI-57 anyone?).

This was my first introduction to games and I loved it. Later on, I went the usual route. My friends father bought a Sinclair ZX81, we play with it, typed programs, modified them and before we realized we were hooked, maybe addicted is a better word to describe that feeling. Then in 1983 I beg my parents to buy an Oric One because it won the Videor price in 1983 instead of a ZX Spectrum and they did (thanks Dad). The C64 was out of reach. Three years later, I got a ZX Spectrum+ for my birthday (thanks Mom).

Oric-1 ZX Spectrum+

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

One day the 16-bit machines came out, we first learned about them by reading magazines and we were dreaming about having one. The choice was quite simple: Atari ST or the Amiga. I choose the Amiga over the Atari ST that I played with at a friend house because I saw Marble Madness on Tilt magazine, then in real life Defender Of The Crown and I was blown away, I needed to buy one.

Defender Of The Crown
Defender Of The Crown

The Amiga 1000 was out of reach (too costly) and I had to wait for the A500 to came out to be able to afford an Amiga. When it came out, I bought it with the money I got from university, it was in 1988. I was really enjoying the Amiga, the games and demos first, then, I did a bit of programming and start enjoying the operating system more (while still playing games and watching demos).

Graphic interface, icons and borders

When AmigaOS 2.0 came out in 1990, I was thrilled like many amigans I guess. I was a fan of the Next GUI. I heard later on, in a speech given by Peter Cherna at the Amiga 30th Anniversary that indeed the look of AmigaOS 2.0 was inspired by the Next Operating System GUI.

Workbench 2.0
Workbench 2.0

Next
Next GUI

One thing I disliked though was that the icons had borders. So, one day I was sitting in front of my beloved Amiga 500 and was wondering how the system was drawing those "ugly" borders. I told to myself that the borders were around icons so it has to be the icon.library.

Then, maybe it is a call to the graphics.library as the borders were a call to RectFill() and Draw() functions (that was my guess). Maybe then it could be the workbench.library as the icons are handled by it. I had to try all those options to be able to avoid the borders to be drawn. Remember that any library could call functions of any others.

I disliked the borders but I also disliked the overhead added to the icons drawing. I thought that the icons display was slow. It was logical that avoiding the borders to be drawn will also increase the performance even if it's a little. The Blitter had more important things to do!

I was searching for a tool to help me locating who was doing the border drawing around the icons. I found a tool by Carolyn Scheppner called Wedge. "Wedge allows you to monitor the library function calls of system and application tasks. This is useful for both debugging and the optimization of software. Wedge reports the name and address of the task calling the function".

I played with the Workbench to make it draw the icons and Wedge gave me an output of results. IIRC it was not sufficient, what Wedge was reporting didn't told me who was the culprit. So my quest for another tool to help me started.

I found another tool, this time written by Michael Sinz of Enforcer fame among others things called SegTracker. What interested me was this part: "When SegTracker is installed, it will scan the ROM for ROM modules and add their locations to the tracking list such that addresses within those modules can be identified. Note that the offsets from the module is based on the location of the module's ROMTAG. The NOROM option will prevent this feature from being installed."

Those tools helped me and I was able to point out the culprit, it's famous name is the Workbench. It was the culprit that I was looking for. It seems obvious but it has to be proved! It could have been the icon.library I guess.

Delete the borders

Now I was asking to myself the question how can I avoid this to happens? How could I stop the drawing of the borders around the icons? I needed to investigate more. At the time my setup was an A500 with an A590 lend by a friend (Éric Laffont). This time around I decided to do it at a lower level. I unplugged the A590 and attached my trusty Action Replay III to my beloved A500. I booted into the Workbench put a breakpoint to the Draw() and RectFill() functions.

When the icons were drawn it triggered the Action Replay monitor and I started to trace the ROM. Unfortunately the calls to the functions that draw the borders were not at a location where I could patch them in the workbench.library using a call to SetFunction() of Exec (I didn't knew first about it, remember that documentation back then were hard to get, and so I wrote my own patching routine prior to that). I needed to find another way of doing it. It was obvious now that I should patch the Draw() and RectFill() functions of the graphics.library but the problem is that everybody is using those calls so I cannot simply avoid the functions calls for everybody. It should be only when it is the workench.library calling and only when it draws the borders around the icons.

I didn't find any better solution back then but while tracing the calls to Draw() and RectFill() functions I looked at the stack frame. After some investigations I came to the conclusion that when the borders were drawn around the icons the value #$00000008 was always located at the same place in the stack, if the value I was looking for was there I checked if it was the Workbench who was calling and if it was the case I skipped the calls to Draw() and RectFill() if not I let the normal flow continue.

My solution was not perfect as I noted some bizarre artefacts when using some icons with the Nofill patch. I can't recall if they were standard icons or not.

That was it, I was with a solution that fit my needs and I was the only one using it for years. One day though another friend of mine (Jérôme Chesnot) looked at my Workbench setup and say something along the line "why does your Workbench didn't have any borders around the icons?" He told me that he found that the look was better without them and I was a bit surprised as I wrote the patch only for my own needs and wasn't expecting any interest by others. I told him that I wrote the patchs and he told me that I should upload it to Aminet. I answered saying I was too lazy to do so but that I could give him the pathchs and let him upload them himself.

So, the 25th of July 1996, two days after the 11th Amiga anniversary, the first program to remove the borders around Amiga icons was available for everybody to try.

NoFillNoDraw
Avec et sans NoFillNoDraw

A bit later tools started to pop-up with options to do the same functionality even some improving upon my solution but make no mistakes all of them used my technique. Some asked permission and gave me credits but the big of them all Newicons didn't even dare to give me credits, not even answering my email.

Jérôme Chesnot asked what I wanted for it and I said how about cardware? (it could have been him that suggested the cardware, remember it was 24 years ago). I received some cards with nice words in them from many parts of the world and I remember that I felt proud, knowing that other amigans could enjoy my small tools was quite a nice feeling.

You can find below the examples that Jérôme Chesnot uploaded with the patchs.

NoFillNoDraw
NoFillNoDraw in a personalized Workbench

AmigaOS 3.5 was the first official OS release to remove the border around the icons, easy to do when you've the source code :).

Conclusion

In the end, if you have an idea of a patch don't hesitate to ping me, I've an account on AmigaImpact, EAB, Amiga.org and AmigaWorld.net under the nick "Kamelito".

One more thing, I made a patch for Lucas Janin back then because I wanted to use the 3D application Imagine at higher resolution than the one provided by the program. I wrote a little patch call PatchImagine for him. This gave me the idea to extend this patch to all programs, work started in this regard, but one day a guy uploaded NewMode into Aminet and it was the end of it.

Links

Original patchs:
Patchs based on my work were I'm mentioned:
Tool without credits:


[Back to the top] / [Back to the articles' menu]


Support the author's work