PVSNESlib
La PVSNESlib est un SDK réalisé par Alekmaul pour programmer la super nintendo en langage C.
Lien Github
Lien Discord
Mise à jour le 15/07/2022
Installation sur Windows !
Page d'installation du pvsneslib
La documentation officiel est bien, mais des soucies peuvent apparaitres. Voici un complément d'information sur la lib.
Il vous faut Make. Et surtout qu'il soit fonctionnel. Ouvrez une console windows cmd.
-tapez make. si un message d'erreur no targets spefified est affiché, c'est que normalement c'est bon. Si vous avez un truc du genre la commande make n'est pas reconnus (en anglais heins) bon.... Il faut dire à windows ou se trouve make. Le guide d'installation vous demande d'installer MSYS. Celui qui est donnés n'est pas une installation automatique et ne modifie pas le path de windows.(Les trucs dans les variables d'environnement) c.a.d une zone du pc windows pour dire ou va se trouver make.
Deziper msys à la racine du C. Et dans les variables d'environnement de Windows dans PATH, a la fin vous ajoutez le lien du sous dossier bin de msys. chez moi ça peut donner ça.
....;C:\msys\bin\
Ne pas oubliez pas le ; pour séparer deux liens dans le path. Note: sur windows 10 c'est une ligne par variable. Plus beesoin des ; S
Une fois tout ça validé faire de nouveau un make dans la console.
Relancer le pc si ça fonctionne pas.
Pour Python, utilisez une version 3.X.X adapté à votre os. Windows Seven à son python.
A l'installation cochez bien la case "path !".
L'installation du dossier pvsneslib peut se faire n'importe ou sur votre pc. MAIS quand vous allez définir votre variable d'environnement ciblé bien le dossier !!! On verra plus tard on peux aussi définir la variable provisoirement, dans un fichier .bat en fonction de vos gout pour lancer la compilation.
Ah oui, une dernier chose utilisez bien dans release du pvsneslib car la lib est bien compilé... Les fichirs sources en Master ou Dev ne sont pas compilé. (Vous pouvez le faire vous même mais la je ne peux pas vous aider
Pour tester si tout est ok allez dans le dossier snes-exemples, hello world. Effacer le fichier sfc (qui est la rom du programme).
Pour lancer la compilation du dossier deux méthodes soit dans la console cmd ou alors un fichier.bat à la racine du dossier du projet à compilé.
Mon bat contient plein de truc, mais un petit :
@echo off
make
pause
Et le tour est joué.
Si des tonnes de lignes apparait et dit build finished succefully et un .sfc est la, vous êtes près à programmer pour le pvsneslib.
Note : Il semblerait que si un .sfc est présent à la racine du dossier une 2nd compilation ne fonctionne pas. La on peux faire un make clear ou effacer le .sfc manuellement.
Lien du bat
Un simple dossier template qui compile mais il ne fait rien pour le moment.
Initiation de la snes et un petit code minimum
Dans votre programme, il faut initier la console de jeu.
La commande : consoleInit(); permet de faire ça tout simplement.
Il faut aussi penser à include dans votre fichier les prototypes de fonction de la librairie. Elles sont contenue dans le fichier header snes.h.
Un petit #include ‹snes.h› au début du fichier doit donc être écrite.
setScreenOn(); permet d'allumer l'écran.
Notons dans dans l'exemple du simple template, il y a une boucle infini avec une fonction WaitForVBlank();
Cette fonction permet de temporiser le programme et d'attendre le signale du retour du balayage ecran.
En principe pour travailler dans la VRAM, (vidéo ram la ou on injecte des données graphiques), on, le fait pendant que le balayage ecran est en train de remonté en haut de l'écran et de repartir de plus belle pour dessiner des choses à l'écran. Cette période ce nomme le V Blank. C'est un concepte à toute machine rétro ! (ou pas retro xd).
// ====================================
// * Voici un exenple de code minimum *
// ====================================
// ===================
// * Fichier include *
// ===================
#include
// =================
// * fonction main *
// =================
void main(void)
{
// ----------------------------
// * Initiation de la console *
// ----------------------------
consoleInit();
setScreenOn(); \\ activer l'ecran de la snes
// -------------------------------
// * Boucle infini de la console *
// -------------------------------
while(1)
{
// --------------------------------
// * attendre le signal du vblank *
// --------------------------------
WaitForVBlank();
}
}
|