Matteo Basei

Una collezione di piccoli programmi realizzati a scopo didattico.

Demo.exe uno dei miei primi esperimenti con la CG

Sotto l'originale nome di "demo.exe" ho ritrovato uno dei miei primi esperimenti con la computer graphics, fatti in C++ agli albori della mia attività di programmatore.

In questo e negli altri programmi che scrivevo all'epoca, per disegnare a schermo, per prima cosa si cambiava la modalità video ponendo 0x00 nel registro AH e chiamando l'interrupt 0x10 (il prefisso 0x indica che il numero è espresso in esadecimale). Ad esempio impostando preventivamente 0x13 nel registro AL si passava alla modalità VGA con risoluzione 320×200 a 256 colori (chiamata per questo mode 13h). A quel punto si aveva il controllo completo dello schermo: all'indirizzo di memoria 0xA0000000 il sistema dava accesso diretto alla memoria video. Tutto il resto dovevi gestirtelo tu "a manina", in tutti i dettagli, dal calcolare quali pixel toccare per disegnare una linea fino alla manipolazione delle coordinate tridimensionali per effettuare una proiezione prospettica.

Demo 1
Una schermata del programma che ora può essere eseguito solo su un apposito emulatore come DOSBox.

Il programma in questione fa molto poco: non c'è nessuna interazione con l'utente e tutto quello che fa è mostrare a schermo un robot che ruota su se stesso. A vederlo ora fa sorridere, con la pixellosità dovuta alla bassa risoluzione e il ridottissimo numero di poligoni. Ma mi ricorda l'emozione di quei momenti, in cui ogni piccolo passo, che ora mi sembra banale, mi apriva un nuovo mondo di possibilità. Ricordo ancora il tempo speso a calcolare e scrivere a mano, con carta e penna, le coordinate di ogni vertice del mio prezioso robot...