Programmation de la Sega Master System
La page dédié à la programmation de la master system
Caractéristique de la Master System
Processeur : Zilog 80 (8/16bits) 4mhz
Ram de travaille : 8ko
Rom : 8ko
VRAM :16ko
Résolution :256*192px
256*224px (Avec le VDP type MS2)
256*240 (Seulement en Pal et avec le vdp type MS2)
Palette de Couleur : 64 Couleurs
Couleur Affichable : 2 palettes de 16 couleurs.
Sprite : Mode 4 : 64 sprites l'écran. 8 sprites (8*8) sur une même ligne sans procéder au clipping.
Mode 8x16 pour tous les sprites.
VDP de la master system

Le Video Display de la master system est la puce vidéo de la console. Elle posède 5 modes video. Les 4 modes vidéos de la "SG 1000" qui est identique au mxs et à la colecovision. Et le "mode 4" de la master System.

Le VDP possède sa propre ram de 16ko de mémoire. La Vram. (Video Ram)
Dans le mode 4, elle est découpé en plusieurs catégorie. En gros :
* Une partie avec des registres divers. (Pointeur de scrolling,mode vidéo,)
* La partie patterns, qui permet de mémoriser 512 motifs graphiques de 8x8 pixel. (Tiles). Cette partie est découpé en 2. (256). Seulement une partie peut être utilisé par les sprites, mais pour la tilemap, les deux parties peuvent être utilisé.
* Une partie Tilemap qui permet de mémoriser les tiles et ses attributs affichage à l'écran.
Une zone maximum de 32x32 tiles est reservés. (2 octets par tiles). Au niveau des tiles, il existe des options pour choisir la palettes de couleurs, la priorité d'affichage sur un sprite, et flipper horizontallement et verticalement le tiles.
* Une partie pour mémoriser les informations pour les sprites. (Position x,Position y, pattern utilisé)

NES vs Master System : Chose rigolot entre les deux systems, la Nes permet de faire du "flip" horizontal et Vertical sur un sprite mais pas sur un tiles (hors mappeur), mais la master system c'est l'inverse. Elle peut flipper les tiles mais pas les sprites.

Le Vlock du VDP, le point noire de la master system : Le VDP possède un gros soucie, C'est le Vlock (Terme utilisé par Upsilande), explication :
Sur Master system (et bien d'autre system), on peux faire du raster effect, c.a.d avec des interruption demander à scroller à une certaine ligne, ou changer la vitesse de scrolling à une certaine ligne voulu. Ce qui peut donner des scrolling paralaxe ou ne pas scroller le x tiles du haut pour faire et faire bouger après les tiles en dessous pour faire la zone de jeu, enfin plein de possibilité de ce niveau la. On peux faire du scrolling horizontal et vertical sur master system. Sauf qu'il y a un soucie majeur sur cette machine. Si on "block" par exemple les 2 tiles du haut, on peux seulement faire du scrolling horizontal. Idem, si on block les 2 collones de tiles de droite, on peux faire que du scrolling vertical. Ce qui pose des soucie par exemple dans des jeux de plateforme. Faire un hud en tiles, ne permet pas de faire du scrolling vertical. (Sauf à la tuile bien sur mais la c'est pas un scrolling hardware). La Nes n'a pas ce problème et permet donc de faire bien plus effet de "raster".

SDK DevKitSMS
Le DevKitSMS est un SDK pour programmer la Master System dans le langage C. Il possede des fonctions basic pour mettre en mémoire les palettes de couleur, afficher des tiles, des sprites, du scrolling, et bien d'autre encor. Il est simple à installer et à comprendre.
Il permet de réaliser des rom pour la Master System,et la Game Gear.
lien
Vidéo de Programmation
Voici une série de vidéo que je met en place sur la programmation de la master system.
Episode I, installation des outiles
Episode II, Hello World
Episode III, Encodage des graphismes
Episode IV, Les sprites
Episode V, La manette de jeu
Episode VI, Importer une image
Plan de la mémoire de la MS
Adresse Hexadecimale Adresse Decimale.....
$0000 - $BFFF 0 - 49 151Plage Mémoire pour la cartouche.
$C000 - $DFFF49 152 - 57 343Plage Mémoire de travaille.(8 191 octets)
$E000-$FFFF 57 344 - 65 535Miroire(8 191 octets)
Plan mémoire de la cartouche
Adresse Hexadecimale Adresse Decimale.....
$0000-$7FFF 0 - 32 767Rom 32 767 octets
$8000-$BFFF32 768 - 49 151Bank switchable(16 383octets)
Encodage du Tiles !
Un tiles est un carré qui a pour dimension 8 pixels de coté.
Sur la Master System, cela fonctionne en Bit Plan.
Une ligne d'un tile est encodé sur 4 octets. (32 bits).
Il y a 8 lignes dans un tile ce qui fait donc 32 octets pour un tile.

Pour connaitre l'index de la palette d'un pixel d'une ligne il faut lire la valeur en mode colonne en fonction du numéro du bit et à l'envers svp. Exemple dans tableau !
... Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6
Octet 1 0 1 0 0 1 0
Octet 2 0 0 1 0 1 0
Octet 3 0 1 1 0 1 0
Octet 4 0 1 1 0 1 0
Pour connaitre l'index du premier pixel dans cette exemple, il faut regarder le Bit 1 de chaque ligne.
Ce qui fait 0000 soit l'index 0.
Pour le pixel 2 de cette ligne nous avons dans le 2em bit nous 1011 mais il faut partir de l'octet 4 pour recomposer tout ça, donc 1101 soit l'index 13.
MSEC

Logiciel "simple" qui permet de créer le makefile et de compiler les fichier.C
A placer dans le dossier source.
Le fichier binaire se trouve dans le dossier out.
Télécharger
Site réalisé par Jean Monos