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 |