Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Star Trek: Glorious Wolf - (...) / Sorties: Dread Mac Farlane - episode 3 / News: Plein d'images cools créées par (...) / Sorties: Star Trek: Glorious Wolf - (...) / Jeux: Final Fantasy 2.0 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

340 connectés actuellement

29190739 visiteurs
depuis l'ouverture

5790 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Alex d'Or

Leo-Games

Eclipso

Kingdom Ultimate

Tous nos partenaires

Devenir
partenaire



[Master System] Programmer la Master System. Chapitre 3. Premier test réel

Nous allons afficher un Hello World à l'écran de la master system en mode bourrin !!!

Ecrit par Monos le 16/01/2018


❤ 0

image
Chapitre 3 : Afficher un Hello World à l'écran de la master system !

Reprennez le dossier réalisé au chapitre deux, et nommer le Hello_Word par exemple. Pour ce premier programme test, je ne vais pas trop parler du code en lui même et de la bibliotheque, c'est un chapitre pour voir si votre machine va vraiment compiler et afficher du texte à l'écran sur votre master system, (ou l'émulateur) pour enfin passer à la suite.

Pour commencez vous allez créer un nouveau fichier que vous allez nommer "main.c" dans le dossier source.(mais pas dans le header).
Maintenant vous aller copier/coller ce morceau de code. Il est un peu commenté pour débuter la compréhension !

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
// Intégration du fichier SMSlib.h 
// la bibliotheque du DevKitSMS.
#include "header/SMSlib.h"
 
// En tête de la rom pour que cela soit lisible sur Master System.
SMS_EMBED_SEGA_ROM_HEADER(0,0);
SMS_EMBED_SDSC_HEADER(0,0,2018,01,02,"Monos","Hello_World","Test") ;
 
// ****************************************************************
// ** Fonction main qui est la fonction initiale du programme... **
// ****************************************************************
void main (void)
{
        // **************************************************
        // ** Intégration d'un tableau du fichier externe. **
        // **************************************************
        extern unsigned char Font_Namco[]; 
        
        // *************************************************************
        // ** Configuration des deux premières couleurs de la palette **
        // ** prévue  pour les tiles.                                 **
        // *************************************************************
        SMS_setBGPaletteColor(0, RGB(0,0,0)); // couleur 0
        SMS_setBGPaletteColor(1, RGB(2,2,2)); // couleur 1
        
        
        // **************************************************************************
        // ** Chargement dans la mémoire vidéo, la police contenue dans le tableau **
        // ** 1 = Numéros du tiles de départ,                                      **
        // ** 0x38*32 c'est le nombre de tiles mutiplié par 32 1 tile = 32 octets  **
        // **************************************************************************
        SMS_loadTiles (Font_Namco, 1, 0x38*32); 
        
        // ***********************************
        // ** Commande pour allumer l'écran **
        // ***********************************
        SMS_displayOn(); // On allume l'écran.
        
        // ***************************************************************************
        // ** Commande pour afficher un tile à l'écran                              **
        // ** Position X,Position Y, numéro du tiles.                               **
        // ** La position du tile est exprimé en case. (8*8 pixel).                 **
        // ** Pas besoin de ";" à la fin de la fonction car c'est un défine (macro) **
        // ** et ça intègre le ; dans ce qu'il remplace.                            **
        // ***************************************************************************
        SMS_setTileatXY(7,7,18) // H
        SMS_setTileatXY(8,7,15) // E
        SMS_setTileatXY(9,7,22) // L
        SMS_setTileatXY(10,7,22)// L
        SMS_setTileatXY(11,7,25)// P
        SMS_setTileatXY(13,7,33)// W
        SMS_setTileatXY(14,7,25)// O
        SMS_setTileatXY(15,7,28)// R
        SMS_setTileatXY(16,7,22)// L
        SMS_setTileatXY(17,7,14) //D
  
        // ************************
        // ** Une boucle infinie **
        // ************************
        while (1)
        {
                // ******************************************************
                // Fonction pour attendre le retour du balayage écran. **
                // ******************************************************
                SMS_waitForVBlank();
    }
}
 



maintenant vous allez faire un 2nd fichier font.c
Et placez ce morceau de code dedans.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
 
const unsigned char Font_Namco[]={
// Tile index ,0x000
 0x1C ,0x00 ,0x00 ,0x00 ,0x26 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x32 ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x001
 ,0x0C ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x3F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x002
 ,0x3E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x07 ,0x00 ,0x00 ,0x00 ,0x1E ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x00 ,0x00 ,0x70 ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x003
 ,0x3F ,0x00 ,0x00 ,0x00 ,0x06 ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x1E ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x004
 ,0x0E ,0x00 ,0x00 ,0x00 ,0x1E ,0x00 ,0x00 ,0x00 ,0x36 ,0x00 ,0x00 ,0x00 ,0x66 ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x06 ,0x00 ,0x00 ,0x00 ,0x06 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x005
 ,0x7E ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x7E ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x006
 ,0x1E ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x7E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x007
 ,0x7F ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x06 ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x008
 ,0x3C ,0x00 ,0x00 ,0x00 ,0x62 ,0x00 ,0x00 ,0x00 ,0x72 ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x00 ,0x00 ,0x4F ,0x00 ,0x00 ,0x00 ,0x43 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x009
 ,0x3E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3F ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x06 ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x00A
 ,0x1C ,0x00 ,0x00 ,0x00 ,0x36 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x00B
 ,0x7E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x7E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x7E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x00C
 ,0x1E ,0x00 ,0x00 ,0x00 ,0x33 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x33 ,0x00 ,0x00 ,0x00 ,0x1E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x00D
 ,0x7C ,0x00 ,0x00 ,0x00 ,0x66 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x66 ,0x00 ,0x00 ,0x00 ,0x7C ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x00E
 ,0x3F ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x3F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x00F
 ,0x7F ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x7E ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x010
 ,0x1F ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x67 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x33 ,0x00 ,0x00 ,0x00 ,0x1F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x011
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x012
 ,0x3F ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x3F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x013
 ,0x03 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x014
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x66 ,0x00 ,0x00 ,0x00 ,0x6C ,0x00 ,0x00 ,0x00 ,0x78 ,0x00 ,0x00 ,0x00 ,0x7C ,0x00 ,0x00 ,0x00 ,0x6E ,0x00 ,0x00 ,0x00 ,0x67 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x015
 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x3F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x016
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x77 ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x6B ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x017
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x73 ,0x00 ,0x00 ,0x00 ,0x7B ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x6F ,0x00 ,0x00 ,0x00 ,0x67 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x018
 ,0x3E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x019
 ,0x7E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x7E ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x01A
 ,0x3E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x6F ,0x00 ,0x00 ,0x00 ,0x66 ,0x00 ,0x00 ,0x00 ,0x3D ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x01B
 ,0x7E ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x67 ,0x00 ,0x00 ,0x00 ,0x7C ,0x00 ,0x00 ,0x00 ,0x6E ,0x00 ,0x00 ,0x00 ,0x67 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x01C
 ,0x3C ,0x00 ,0x00 ,0x00 ,0x66 ,0x00 ,0x00 ,0x00 ,0x60 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x01D
 ,0x3F ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x01E
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x01F
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x77 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x08 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x020
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x6B ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x36 ,0x00 ,0x00 ,0x00 ,0x22 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x021
 ,0x63 ,0x00 ,0x00 ,0x00 ,0x77 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x77 ,0x00 ,0x00 ,0x00 ,0x63 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x022
 ,0x33 ,0x00 ,0x00 ,0x00 ,0x33 ,0x00 ,0x00 ,0x00 ,0x12 ,0x00 ,0x00 ,0x00 ,0x1E ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x023
 ,0x7F ,0x00 ,0x00 ,0x00 ,0x07 ,0x00 ,0x00 ,0x00 ,0x0E ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x38 ,0x00 ,0x00 ,0x00 ,0x70 ,0x00 ,0x00 ,0x00 ,0x7F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x024
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x025
 ,0x1C ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x1C ,0x00 ,0x00 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00
// Tile index ,0x026
 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x20 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x027
 ,0x81 ,0x00 ,0x00 ,0x00 ,0x42 ,0x00 ,0x00 ,0x00 ,0x24 ,0x00 ,0x00 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00 ,0x24 ,0x00 ,0x00 ,0x00 ,0x42 ,0x00 ,0x00 ,0x00 ,0x81 ,0x00 ,0x00 ,0x00
// Tile index ,0x028
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x029
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x02A
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x30 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x02B
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x3E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x02C
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x02D
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x02E
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x02F
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x030
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x031
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x032
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x033
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x034
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x035
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x036
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
// Tile index ,0x037
 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
 
};
 



maintenant à la racine de votre dossier du projet, (Racine veux dire des que nous entrons dans le dossier en question, vous allez faire un nouveau fichier compile.bat par exemple.
Et voici le code à mettre dedans.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
@echo off
 
echo ----------------------------
echo -- Compilation et linkage --
echo ----------------------------
sdcc -c -mz80 --peep-file peep-rules.txt source/main.c
sdcc -c -mz80 --peep-file peep-rules.txt source/font.c
sdcc -o sms.ihx -mz80 --no-std-crt0 --data-loc 0xC000 rel/crt0_sms.rel main.rel font.rel SMSlib.lib
 
echo ------------------------------
echo -- Creation du fichier .sms --
echo ------------------------------
ihx2sms sms.ihx out/sms.sms
 
echo -------------------------------------------
echo -- Destruction des fichiers asm et autre --
echo -------------------------------------------
pause
 
del *.sym
del *.ihx
del *.lk
del *.noi
del *.rel
del *.lst
del *.asm
del *.map
 
 
echo ----------
echo -- Fin --
echo ---------
pause
 



Nous y sommes, nous allons voir si tous fonctionne bien ! Double cliquez dessus et normalement,
image
Dans votre dossier, vous devez avoir un fichier qui se nomme sms.sms que vous pouvez lancer dans un émulateur master system et voir afficher un beau Hello World.
image

Nous allons décrypter le fichier bat. (Attention sur un autre os que windows, cela ne doit pas être un fichier bat, mais un truc propre à votre os.)

=> @echo off :Permet tous simplement de cacher les "commandes" envoyez à votre OS. Vous pouvez retirer cette ligne pour voir ce que cela fait. Mais c'est moins lisible je trouve.

=> sdcc -c -mz80 --peep-file peep-rules.txt source/main.c
=> sdcc -c -mz80 --peep-file peep-rules.txt source/font.c

Deux mêmes fonctions mais sur deux fichiers séparé. (main.c et font.c)
En gros on demande à sdcc de créer pour chaque fichier un fichier .rel du même nom. Un fichier en .sym et assembleur.

=> sdcc -o sms.ihx -mz80 --no-std-crt0 --data-loc 0xC000 crt0_sms.rel main.rel font.rel SMSlib.lib
Maintenant nous allons rassembler tout ça pour créer un seul fichier, le sms.ihx.
Donc pour chaque fichier.c que nous avons dans le programme, il faut ajouter son .rel dans la ligne !

Et enfin ihx2sms
=> sms.ihx out/sms.sms
Permet de passer du fichier sms.ihx => sms.sms qui est un fichier binaire lissible par la master system. Le fichier dans cette exemple sera créer dans le répertoire out. Vous pouvez changer le nom du répertoire mais il doit exister avant la création du fichier binaire.
Vous pouvez aussi changer le nom du fichier binaire par ce que vous voulez.
Le fichier binaire à pour nom aussi de ROM. Non pas les Tziganes mais l'acronyme de Read Only Memory. (Mémoire en lecture seul !) ou mémoire Morte. Interdiction écrire dessus, du coup c'est le nom donnée au fichier binaire des cartouches.

del *.sym
del *.ihx
del *.lk
del *.noi
del *.rel
del *.lst
del *.asm
del *.map

Permet d'effacer tous les fichiers et éviter éviter de polluer votre dossier. Il y a une pause avant cette fonction si vous voulez les récupérer.

Voilà voila pour un petit décryptage du fichier bat. Si ça marche bravos vous venez d'utiliser un logiciel en ligne de commande !

Maintenant nous allons voir les donnés de la fenêtre de commande.

*** sverx's …… ***
Bon ça osef, c'est le nom du bidul chouette, cela n'a pas d'importance capitale.

Info : 3331 bytes used/32769 totale [10,17 %] - size output Rom is 32kb.
Une bonne information, cette phrase dit que nous utilisons 3331 bytes pour notre programme !
Ou Octets. Donc cela fait un programme de 3,33ko. Oui Bytes et Octets sont synonymes. Il ne faut pas confondre Bytes = 1 octet = 8 bits…
nous avons 10,17 % aussi dans cette phrase. C'est le pourcentage "utilisé" pour le type de cartouche . La une cartouche de 32768 octets ce qui fait a la sortie nous avons belle et bien une cartouche de 32 Ko. Quand on arrive à plus de 100 % de la cartouche, on passe à une version supérieur. (Donc la une cartouche de 64ko,128ko…)
Attention aussi, 32ko qui est belle et bien 32,000 Kilos octets est une approximation du nombre d'octet disponible. 1Ko = 1024 octets. Donc une cartouche de 32ko mémorise bien 32768 octets !
On en discutera plus tard de la mémoire !
(Ceci dit pour débuter, il est peut être bon de ne pas dépasser les 32ko)

Prochaine ligne d'information : SEGA header found, checksum updated !
Tout s'est bien passé. La console Sega Master a besoin d'un en tête pour faire fonctionner le jeu, et quand cette phrase apparaît cela veux dire que le fichier binaire peut être lu sur une vrais console !

Voilou pour cette article, le prochain on décrypte le programme en C ! Car la pour pas mal de monde c'est obscure !

Télécharger le dossier Hello World (Archive)



winterskill - posté le 17/01/2018 à 12:56:29 (927 messages postés)

❤ 0

Empereur des bons gros meuh

pourquoi tu met un "pause" avant la destruction des fichiers dans ton batch? (oui je sais je chipote mais ça m'intrigue)

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


Monos - posté le 17/01/2018 à 17:43:03 (57322 messages postés)

❤ 0

Vive le homebrew

Pour avoir le temps de récupérer les fichiers ASM ou / et rel si on veux les examiner, ou les garder à coté pour divers raisons.

Signer du nez ?

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers