Aller au contenu

Messages recommandés

Salut,

Je me lance dans la programmation sur SNES et je but sur quelques éléments.
Surtout sur la gestion des graphismes et comment les convertir et les ranger convenablement dans une rom.

Je suis très intéressé par le code sources de Kogami ^^ sur la Demo DBZ :-P

merci d'avance pour votre aide :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est une vieille demo que j'ai faite il y a qql années et j'ai plus aucune sources donc je pourrais pas t'aider :(

Dommage, merci quand même ;-)

 

Sinon que vaut(techniquement) SNES Professional ASM dev Kit de Jay?

et SNES Maker, qu'en pensez-vous?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

J’aimerai savoir si une âme charitable pourrait me déchiffrer(me décoder avec des mots d'enfant le contenu :-P ) ces images, car j'ai beau lire les divers explications et je n'arrive pas à saisir la logique du trucs... :sad:

[sprite Tile?]

Sprite-TS-ASM00.png

 

[sprite Pal]

 

Sprite-PAL_ASM00.png

 

[bG]

 

BG-TS-PAL_ASM00.png
 

Merci d'avance pour le temps que vous me consacrerez  :smile:

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors c'est pas du code a proprement parler mais de la Data (donnée)

 

Tu devrais lire la doc sur l'asm, la tu a les opcode de base comme

 

org, db, dw

 

org permet d'adresser une adresse haxedecimal, db et dw d'écrire une valeur de chaine hexadecimal.

 

db = octet codé sur 8 bit

dw = octet codé sur 16 bit

 

Tu a plusieurs façon de traiter ces donnée, ici l'auteur a préférer les constituer sous un script asm, tu peux le faire aussi sur un fichier .bin que tu pourra importer avec la commande incbin (synthase qui peux être différent selon le compileur 65c816).

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour les réponses :smile:
pour le db/dw j'avais compris ce que j'ai pas compris c'est comment ça fonctionne
exemple

ligne 7 du sprite tile $00 / $00000000 est d'accord? on me dit que le bit 7 c'est la couleur du pixel,ok? et c'est là que je bug :sad: car sur $D8 par exemple %11011000 le bit 7 est à 1 mais qu'elle sera sa couleur?
Je ne sais pas si je m'explique bien? :sad:

j'ai lu cent fois ça :( http://jeux.developpez.com/tutoriels/SNES/debuter-programmation-super-nintendo/#LII-A-3.
Mais je bloque, je ne saisi pas :sad:
"Une image sur SNES est représentée sur deux octets au minimum.

Le principe est qu'en passant par une palette de couleurs, avec deux octets, on représente huit pixels de quatre couleurs différentes.

Il faut lire bit par bit et non par octet. Un bit représente une couleur du pixel, donc sur un octet, on a huit pixels et deux couleurs possibles (0 et 1). Sur deux octets, on a toujours huit pixels, mais en combinant, on peut avoir pour chaque pixel quatre couleurs (0 et 1 du premier et 0 et 1 du deuxième octet).

Sachant que la valeur 0 sera la transparence, on a donc trois couleurs + 1 alpha.

Par exemple :
0x00 0x01, 0x01 0x00 et 0x01 0x01 affichent tous les trois un pixel, mais de couleur différente.

Les seize couleurs se basent sur le même principe, mais sur quatre octets. Attention ! La SNES se base uniquement sur le format deux couleurs, donc les deux autres octets ne sont pas contigus, mais se trouveront après seize octets.

Donc, on a besoin pour une image de 8x8 pixels sur quatre couleurs de seize octets pour le représenter, on a besoin de deux octets pour représenter huit pixels.

Voilà une image qui devrait éclaircir cela :

10000201000000BC000000D1A8A81ABB.png
10000201000000BC000000D1D8B18316.png"

Partager ce message


Lien à poster
Partager sur d’autres sites

Je peux essayer de t'expliquer pour la ligne 0xF80F de l'exemple que tu cites.

 

Déjà, il faut voir (parce que c'est en tout petit, quand même...) qu'ici la palette est définie comme suit (j'utilise la notation % pour le binaire) :

 

0 = %00 = noir (ou transparence)

1 = %01 = rouge

2 = %10 = bleu

3 = %11 = jaune

 

Note que c'est ce qu'on appelle des couleurs indexées : "on" a associé auparavant une couleur RGB à chaque indice de couleur (0,1,2 ou 3).

 

Avec la valeur 16 bits (soit 2 octets) 0xF80F tu définis la couleur (sur 2 bits) de 8 pixels contigus : le premier octet (0xF8) représente le bit de poids fort (les "dizaines") de l'indice de couleur de chaque pixel, le deuxième octet (0x0F) représente le bit de poids faible (les "unités").

 

Convertissons la valeur de chaque octet en binaire (0xF8  = %11111000 et 0x0F = %00001111) et écrivons ces valeurs l'une au-dessus de l'autre :

 

  %  1  1  1  1  1  0  0  0      (0xF8)

   % 0  0  0  0  1  1  1  1      (0x0F)

 

Si tu lis en colonnes, tu verras apparaître l'indice de couleur (sur deux bits) de chaque pixel (de gauche à droite)  :

 

%10 = bleu

%10 = bleu

%10 = bleu

%10 = bleu

%11 = jaune

%01 = rouge

%01 = rouge

%01 = rouge

 

Ce qui correspond bien au schéma proposé dans l'exemple :)

 

Au passage cette façon de séparer les couleurs par chiffre binaire s'appelle le codage par bitplans (ici on a deux bitplans, d'après le lien que tu donnes on peut aussi coder les indices sur 4 bitplans sur SNES : il faut alors 4 octets pour coder les indices de couleurs de 8 pixels de %0000 à %1111 - soit 16 indices de couleur possibles).

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci vingazole :smile:

Ah? OK!! je vois ou je embrouillée (Il faut lire bit par bit et non par octet) et je ne superposais pas les octets.

Par contre je en tile de 16 px en 16 clrs, on décompose pareil par octet?

pour l'ordre les clrs de la pal de l'img c'est bien ça? (fait à la main pour m'habituer au binaire)

Pal-Tile01.png

0 = %0000 = fushia (ou transparence)

1 = %0001 = noir

2 = %0010 = marron 1

3 = %0011 = orange 1

4 = %0100 = jaune

5 = %0101 = lit de vin

6 = %0110 = marron 2

7 = %0111 = marron 3

8 = %1000 = orange 2

9 = %1001 = marron 4

A = %1010 = rose

B = %1011 = gris M

C = %1100 = gris F

D = %1101 = gris F

E = %1110 = blanc

F = %1111 = gris A

 

Comment on procède par exemple pour la 3eme lignes de la tile 16x16 (rectangle vert)?

 

Merci encore vingazole :smile:

post-7093-0-38687100-1454846710_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

L'ordre des couleurs de la palette et le comptage binaire associé me semblent corrects.

 

Pour la troisième ligne de pixels du sprite que tu montres, je pense qu'il faut faire deux groupes de 8 pixels : les huit pixels fuchsia (à gauche) codés par 0x00 0x00 0x00 0x00 (il faut 4 octets pour coder 8 pixels avec 4 bitplans par pixel - il faut deux bitplans de plus que pour les 4 couleurs, pour coder les "centaines" et les "milliers"), et 4 autres octets pour coder les 8 pixels à droite.

 

Je me trompe peut-être pour identifier les couleurs, mais je dirais qu'on a de gauche à droite :

 

%0001 %0010 %0011 %0011 %0100 %0101 %0101 %0100

 

Si on dispose ça en lignes, ça doit faire :

 

%00000000   (0x00)
%00001111   (0x0F)
%01110000   (0x70)
%10110110   (0xB6)

 

Par contre je ne suis pas un spécialiste de la SNES et je ne pourrai donc pas te dire comment disposer les 8 octets (0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x70 et 0xB6) les uns par rapport aux autres.

 

J'ai vu ça dans le lien que tu as donné, ça a l'air spécial :

 

Les seize couleurs se basent sur le même principe, mais sur quatre octets. Attention ! La SNES se base uniquement sur le

format deux couleurs, donc les deux autres octets ne sont pas contigus, mais se trouveront après seize octets.

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Restaurer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement

×
×
  • Créer...