Un articolo di Jeremy Reimer comparso ieri su ArsTechnica rievoca – con il contributo di molti sviluppatori dell’epoca – i bei tempi dello sviluppo su piattaforma Amiga, ricordando le gesta degli intrepidi coder della prima ora e rievocando il clima di grande entusiasmo che, alla metà degli anni ’80, ruotava attorno alla creatura di Jay Miner.
Con le potenzialità hardware di Amiga ancora ignote ai più, la sperimentazione era all’ordine del giorno e, come sottolinea l’articolo, la probabilità che due sviluppatori risolvessero lo stesso problema nello stesso modo era piuttosto bassa: per nulla esisteva una via maestra e per uno sviluppatore di talento la questione era semplicemente quella di spingere in avanti lo stato dell’arte.
Il caso del nostro Cesare Di Mauro, ripreso da Ars rende bene l’idea:
Consider the task of Cesare Di Mauro, developer of USA Racing. He wanted a target of 50 frames per second to retain a smooth experience, but this, combined with RAM constraints, meant that it was impossible to use double-buffering (a technique where a second screen with the next frame of action is stored behind the scenes in memory). Using a single screen saved execution time and memory, but made the task of scrolling the background and updating the BOBs (blitter objects, similar to sprites) much more difficult.
His solution consisted of a 352 x 272 virtual screen, with only 320 x 240 pixels viewable at any time. The area was divided into two vertical slices, combined to show a single view. The background consisted of 32 x 32 pixel tiles, arranged in a large map of 4096 x 65536 pixels (coders everywhere will recognize those numbers).
Juggling the number of tiles, the BOBs displayed on top, the music and sound effects, and collision detection with walls and other cars was a huge challenge. Cesare ended up writing a tool in assembly language that handled all of these at 50 frames per second, sorting drawable objects into a display list to maximize performance. The program would first display all BOBs in-order on the list, then update hidden areas to handle scrolling (horizontal scrolling was handled by the graphics chipset by setting a scroll register value, while vertical scrolling was similar but more complicated), then waited for the monitor’s display beam to reach the bottom position of each BOB to restore the background they had “stained.” He wrote custom routines for sound and even disk access to maximize speed and minimize RAM usage.
This sort of careful balancing was typical of game programmers who wanted to push the envelope. Many of the concepts they came up with would be recreated as part of industry standard libraries much later—display lists, for example, are a crucial element of Direct3D.
[…]
Concludo questa pillola con una domanda: dopo che il nostro esperto di coding ha avuto l’onore della citazione su ArsTechnica, sarà il caso che lo “spremiamo” un po’ di più sui temi dello sviluppo Amiga anche in AD? :-)
Complimenti a Cesare. Non è da tutti essere citati da un sito come Ars.
Allora da oggi si dovrà dire: Ave Cesare!
Beh, non serviva un articolo di Ars Technica. Che il nostro Cesare sia “the best” riguardo Amiga e m68k, lo dimostrano i suoi sempre ottimi articoli tecnici :-)
Grazie a tutti. Il prossimo articolo per pura casualità risponderà alla domanda posta alla fine di quest’articolo. ;)
yep! complienti Cesare
Voto anch’io a favore della “spremitura” :)
Complimenti a Cesare!
domanda ingenua e da non conoscitore dell’architettura: non potendo utilizzare il double buffering non avevi problemi di flickering?
Aspettava il Vblank per disegnare.. ;)
Wow… Congratulazionisiime. E’ certamente una soddisfazione grande essere citati da un sito prestigioso quale Ars Technica!
INVIDIAAA! ;-)
complimenti visissimi e meritati :) oltretutto quella serie sull’amiga è stato uno dei motivi che mi ha indotto ad abbonarmi ad arstechnica :)
Mi aggiungo ai complimenti a Cesare! E all’invidia riposta in molti lettori (che lo ammettano o no! :P)
Grande Cesare! Ora, però..dovremo spremerti per bene, eh sì!! :)
Tanto di cappello, Cesare. ;)
Caspita Cesare, davvero complimenti! Keep up the good work!
Mi unisco al coro di complimenti ed attendo con impazienza un’altro articolo del grande Cesare.
Ah, che tristezza se penso che invece nel settore dove lavoro io l’unica cosa importante è scrivere in fretta qualcosa che sembri funzionare…
Poi ovviamente i clienti si lamenta che è lento e buggato e si rivolge ad altri che chiedono ancora di meno, sembra non si rendano conto che il problema è proprio che spendono troppo poco.
Complimenti! :)
Complimenti!
Con tutto il rispetto per ArsTechnica, penso che AD l’abbia passato da tempo in quanto a qualità di articoli e autori ;)
Stavo leggendo anche io l’articolo in questione, da vecchio e fedele amighista, ma quando ho letto il nome di Cesare ho strabuzzato gli occhi dallo stupore! :) … il suo nome che appare su ArsTecnica… wooow! Stavo per inviargli un’e-mail di congratulazioni quando ho letto la notizia anche su Appunti Digitali… ;) … Grande Cesare! :)