|
Programmation Super Nintendo / Super Famicom
Mes petits tests de programmation sur la Super Nintendo. Note : Peu importe le nom que j'utilise pour désigner la console. (SNES, Super NES, Super Famicom...), cela reste la même console. Mise à jour le 24/09/2021 Caractéristiques de la Super Nintendo / Super Famicom
- Processeur : 16 bits 65C816 avec 3 modes de fréquence. 3,58 - 2,68 - 1,79 MHz Installation de l'assembleur et démarrage
Téléchargez WLA-DX. Voici une version de WLA DX. C'est le assembleur et linker pour plusieurs cibles. (Z80,6502,huc6280,65c02,Z80GB,SPC700...) Mais pour nous c'est le wla-65c02.exe et wlalink.exe qui nous intéressent. Placez le dossier wla_dx dans un dossier snes par exemple. où vous le souhaitez. Il vous faut également un émulateur SNES. Je vous propose bsnes_v115. Je vous propose aussi ça. Perso je le place dans le dossier SNES A la racine du dossier SNES, créez un dossier projets. Ce dossier va contenir tous les dossiers de vos projets/jeu/test.. Dans le dossier projets, créez un dossier test par exemple. Dans celui-ci, trois dossiers : Nous allons également créer un fichier Compilation.bat echo off ..\..\wla_dx\wla-65816 -I src\ -o obj\main.obj src\main.asm ..\..\wla_dx\wlalink -v -r obj\temp out\game.smc pause Ce fichier va rechercher wla-65816 pour appeler main.asm et sortir un game.smc dans le dossier out. Dans le dossier obj, créer un fichier temps. On va configurer le linker [objects] obj\main.obj La chaîne de compilation est maintenant, le compilateur est prêt. Reste à faire un fichier header.asm à inclure dans votre programme pour bien paramétrer vos fichiers source et que cela soit lisible sur une snes.
.MEMORYMAP
SLOTSIZE $8000
DEFAULTSLOT 0
SLOT 0 $8000
.ENDME
.ROMBANKSIZE $8000
.ROMBANKS 8
.SNESHEADER
ID "SNES"
NAME "TEST1 "
; "123456789012345678901"
LOROM
SLOWROM
CARTRIDGETYPE $00
ROMSIZE $08 ;size rom 08-0c
SRAMSIZE $00
COUNTRY $02 ;0 = japan , 1 = US , 2 = Europe
LICENSEECODE $00
VERSION 00
.ENDSNES
.SNESNATIVEVECTOR
COP $0000
BRK $0000
ABORT $0000
NMI VBlank
UNUSED $0000
IRQ $0000
.ENDNATIVEVECTOR
.SNESEMUVECTOR
COP $0000
UNUSED $0000
ABORT $0000
NMI VBlank
RESET Main
IRQBRK $0000
.ENDEMUVECTOR
Modes vidéo
La Snes possède 8 modes vidéo.
Mode 1 : 16/16/4/ND Mode 2 : 16/16/ND/ND Mode 3 : 256/16/ND/ND Mode 4 : 256/4/ND/ND Mode 5 : 16/4/ND/ND Mode 6 : 16/ND/ND/ND Mode 7 : 256/ND/ND/ND Configuration du background
Chaque background peut être configuré. Pointeurs de tiles
Deux registres gèrent le pointeur de tile de chaque background. La palette de couleurs
La SNES permet de mémoriser 256 couleurs en même temps. Chaque couleur est encodée sur 2 octets en utilisant que 15 bits. 5 bits par composant de couleurs. (32 rouges, 32 bleu, 32 vert, soit 32768 teintes). ; *************************************************** ; * * ; * Exemple de configuration d'une couleur sur SNES * ; * Programmation en Assembleur * ; * * ; *************************************************** ; ================================ ; * Prépare à écrire à l'index 0 * ; ================================ lda #$00 sta $2121 ; ============================ ; * Couleur noir à l'index 0 * ; ============================ ; + ----------------- + ; * Première opération * ; + ----------------- + lda #$00 sta $2122 ; + ------------------ + ; * Deuxième opération * ; + ------------------ + lda #$00 sta $2122 Configuration de sprite
Le registre $2101 permet de configurer les sprites. Données des sprites
La Snes permet d'afficher 128 sprites à l'écran et 32 sprites par ligne. L'adresse $2102 permet de sélectionner l'id du sprite à travailler. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Site rétro réalisé par Jean Monos • Amistrad | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||