Friday, August 29, 2008

montre moi ta VRAM et je te dirai qui tu es ...

Sans doute juste une curiosité pour vous, mais de plus en plus important pour moi : voici le contenu de la mémoire vidéo de mon SpriteEditor, vu sur un plan "16 couleurs" (1KB par ligne) à gauche et sur un plan "256 couleurs" (2KB par ligne) à droite.
Du temps du DOS, j'avais refais et plastifié sur un carton de 16x16 centimètres la table ASCII pour mes programmes en BASIC et en assembleur. J'ai d'ailleurs eu droit à du "oh! great! Can i borrow you your mouse pad ? please ?" en pleine démoparty parce qu'un gars qui passait par là avait bigrement besoin de ces infos pour continuer son intro 4K.

Les vieux de la vieille reconnaîtront pas mal de ce jeu de caractères, d'ailleurs, même si j'ai remplacé les symboles "coeur, pique, trèfle, carreau" par une animation de pacman qui me sert de 'scrobber' et que vous reconnaitrez à partir de la 4eme ligne quelques éléments de l'interface de SEDS (accessibles à l'aide de YOUR_CHARSET(0), et programmés à grand coups de codes hexa ... ça rappelle des souvenirs de CPC, ça, hein ;)

Version 256 couleurs, évidemment, ça ressemble furieusement à ma palette, puisque -- souvenez-vous -- j'avais reprogrammé un caractère par couleur pour pouvoir redessiner facilement ma grille ...

Il y a des curieux qui se demandent ce que peuvent bien être ces 8K de n'importe quoi entre les caractères et les couleurs ?

Allez, je vous aide: il y a quatres plans sur un écran DS et chaque écran peut contenir 32x32 caractères encodés sur 16 bits ...

2 comments:

PypeBros said...

0-E : colors ; F-1F : cursors
20-7f: ASCII ; 80-ff : extra (see SprWidgets)
100-1ff: vram
200+ : 256-color charset.

Sliders use YOUR_CHARSET(64) .. YOUR_CHARSET(78)
Palette preview and rasters use the 16-color plain tiles plus palette no. (PaletteWindows.cpp)

PALETTE_TILE (SUB_BG + 0x4000) is only available on the SUB screen. (SprWidgets.cpp)

PypeBros said...

with later releases of libnds, the whole 256 characters of the IBM extended ascii charset are present, but only 128 first are copied to the VRAM.

defaultConsole.font.numChars=256;

reverts to the DKP-R21-compatible behaviour.