| Accueil | Articles | Qui-suis-je | Archives | Palette |Collection |card flash|Revendeurs|Homebrew|Programmation|Annuaire | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
SNES Programmation
Mes petits tests de programmation sur la Super Nintendo. Note : Peux 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éristique de la Super Nintendo / Super Famicom
- Processeur : 16bits 65C816 avec 3 modes de fréquence. 3,58 - 2,68 - 1,79 MHz Installation d'un assembleur et démarage
Télécharger WLA_DX. Voici une version de WLA DX. C'est le compilateur linker pour divers cible. (Z80,6502,huc6280,65c02,Z80GB,SPC700...) Mais pour nous c'est le wla-65c02.exe et wlalink.exe qui nous botte. Placer le dossier wla_dx dans un dossier snes par exemple. Et ou vous voulez. Il vous faut un emulateur 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ée un dossier projets. Ce dossier va contenir tous les dossiers de vos projets/jeu/test.. Dans le dossier projets, faite un dossier test par exemple. Dans celui si, trois dossier : Nous allons créer aussi 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 appaller 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 Et voilou, le compilateur est près. Reste à faire un fichier header.asm à inclure dans votre programme pour bien paramétrer votre code 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
Mode Video
La Snes possède 8 modes videos.
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é. Pointeur de tiles
Deux registres gerent le pointeur de tile de chaque background. La palette de couleur
La SNES permet de mémoriser 256 couleurs en même temps. Chaque couleur est encodé sur 2 octets en utilisant que 15 bit. 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 * ; ============================ ; + ----------------- + ; * Premier operation * ; + ----------------- + lda #$00 sta $2122 ; + ------------------ + ; * Deuxième opération * ; + ------------------ + lda #$00 sta $2122 Configuration de sprite
Le registre $2101 permet de configurer les sprites. Data des sprites
La Snes permet d'afficher 128 sprites à l'écran et 32 sprites par ligne. L'adresse $2102 permet de selectionner l'id du sprite à travailler. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Site réalisé par Jean Monos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||