AccueilAccueil  -> Le site MSF  GalerieGalerie  RechercherRechercher  S'enregistrerS'enregistrer  ConnexionConnexion  ContactContact  

Partagez | 
 

 Programmation Master System en Assembleur + variante en C

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Suivant
AuteurMessage
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)


Score : 6506
Date d'inscription : 26/08/2009

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Dim 26 Jan - 8:16

si j'ai le temps aujourd'hui, je ferais un essai avec un export d'un des ecrans de lost raider car j'ai bcp de flip + 1er plan.
Revenir en haut Aller en bas
vingazole
Ax Battler (Golden Axe)
Ax Battler (Golden Axe)
avatar

Score : 918
Date d'inscription : 28/04/2011
Age : 43
Localisation : Les Herbiers (85)

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Jeu 30 Jan - 16:26

Bon, ça m'a pris un peu de temps pour assimiler z88dk et le code spécifique à la sms écrit par haroldoop, mais j'ai une solution pour ton problème d'attributs de tiles, pedro (il vaut mieux éviter d'utiliser des sprites pour les décors car on est limité à 8 sprites par ligne d'affichage) Smile


On crée une fonction GetTile pour récupérer la valeur (16 bits) de la tile...

Code:
unsigned int GetTile(unsigned char colonne,unsigned char ligne) {
 #asm
   ld   hl, 2
   add   hl, sp
   ld   b, (hl)      // b=ligne
   inc   hl
   inc   hl
   ld   e, (hl)      // e=colonne

   ld   l, b        
   ld   h, 0
   add   hl, hl
   add   hl, hl
   add   hl, hl
   add   hl, hl
   add   hl, hl      // hl = ligne*32
   ld   d, 0
   add   hl, de      // hl = (ligne*32) + colonne
   add   hl, hl      // hl = ((ligne*32) + colonne)*2
   ld  a,$38
   add a,h
    ld h,a               // hl = ((ligne*32) + colonne)*2 + $3800
   
   ld   a,l        
   out ($bf),a
   ld  a,h
   out ($bf),a        // positionnement de la VRAM en hl (pour lecture)
   
   in a,($be)      
   ld l,a                 // l=VRAM[hl]
   in a,($be)      
   ld h,a               // h=VRAM[hl+1]  
 #endasm
}


...et une fonction PutTile pour stocker une valeur dans la tilemap.

Code:
void PutTile(unsigned char colonne,unsigned char ligne,unsigned int valeur) {
 #asm
   ld   hl, 2
   add   hl, sp
   ld  e,(hl)      // de=valeur
   inc hl
   ld  d,(hl)
   inc hl
   
   push de
   
   ld   b, (hl)      // b=ligne
   inc   hl
   inc   hl
   ld   c, (hl)      // c=colonne

   ld   l, b        
   ld   h, 0
   add   hl, hl
   add   hl, hl
   add   hl, hl
   add   hl, hl
   add   hl, hl      // hl = ligne*32
   ld   d, 0
   ld  e,c
   add   hl, de      // hl = (ligne*32) + colonne
   add   hl, hl      // hl = ((ligne*32) + colonne)*2
   ld  a,$38
   add a,h
    ld  h,a          // hl = ((ligne*32) + colonne)*2 + $3800
   
   ld   a,l        
   out ($bf),a
   ld  a,h
   or  $40
   out ($bf),a     // positionnement de la VRAM en hl (pour écriture)
   
   pop de
   
   ld  a,e            
   out ($be),a     // VRAM[hl]=e
   ld  a,d
   out ($be),a     // VRAM[hl+1]=d
 #endasm
}


Pour plus de lisibilité on définit des constantes symboliques pour les masques des bits d'attributs de tiles :

Code:
#define BG_FLIP_HORIZ        0x0200         // inverse la tile horizontalement
#define BG_FLIP_VERT          0x0400         // inverse la tile verticalement
#define BG_2ND_PALETTE     0x0800         // sélectionne la 2ème palette
#define BG_FOREGROUND     0x1000         // la tile de "background" passe au premier plan (devant les sprites)


Exemples d'application

Pour faire passer la tile de coordonnées (7,3) au premier plan :
Code:
PutTile(7,3,GetTile(7,3)|BG_FOREGROUND);

Si on veut la refaire passer en background :
Code:
PutTile(7,3,GetTile(7,3)&~BG_FOREGROUND );

Pour changer l'état du flip horizontal de la tile :
Code:
PutTile(7,3,GetTile(7,3)^BG_FLIP_HORIZ);



nb. je me suis planté dans ma traduction du manuel SEGA: à la page 8 (schéma SYSTEME DE BACKGROUND) j'ai mis deux cases en trop à droite du mot de description de tile de 16 bits; le numéro de pattern est bien représenté par les 9 bits de poids faible !
drunken
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Jeu 30 Jan - 23:06

C'est juste incroyable, ça met la motivation au niveau max , bon ce weekend , je vais essayer de tout comprendre et pis de reprendre mon code en utilisant ce que t'as fait , ça va me permettre de gagner de la place et pis d'enlever mon bricolage au niveau des sprites , je mettrai aussi un tutoriel de base pour la programmation en c sur z88 , au moins l'affichage du background et des sprites ,s'il y 'a des gens qui veulent se lancer .
Encore meci vingazole , c'est du super boulot !
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Sam 1 Fév - 14:57

Une petite image pour illustrer , l'action se déroule maintenant sur 3 écrans de jeu , vous pouvez admirez ce fantastique level design , Alex fache ( on a le choix entre allez tout droit ou tout droit , mais l'important c'est d'avoir le choix )
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Sam 1 Fév - 16:52

cool ^^
le code de vincent fonctionne ? (j'ai pas essayé, pas eu le temps)

pour faire le level design et les tilemap, je te conseille vivement Tiled, par contre faut te coder un petit script pour exporter/convertir le json en truc "utilisable".
C'est ce que j'ai fait pour lost raider Wink

Du coup tu maitrises/connais l'ordre de tes tiles (que tu fais tranquilou sous photoshop ou autre) et ta construction de tilemap est simplifiée/facilement modifiable (car bmp2tiles te génère ca dans l'ordre où il les voit...pas toujours pratique, surtout pour un niveau)

Ca permet se genre de truc :


A l'origine Tiled te génère ca :


avec un bout de script, tu peux obtenir ca : (perso c'est fait en PHP -car je code vite et maitrise la chose-, mais tu peux faire ca en C, Python...)

(la meme "forme" que ce que bmp2tiles te génère)

en plus ca marche avec des calques donc tu peux faires "des essais" sans tout bousiller.

Je ne peux pas te filer mon script "tel quel" car y'a des infos spécifiques à lost d'encodées dedans (ca génère tilemap, placement/tailles/directions des objets) et ca calcul les tiles avec d'autres infos des classiques fonctions mirroir horizontal/vertical et 1er plan. Donc faudrait que je "nettoie"/simplifie...


Dernière édition par ichigobankai le Dim 2 Fév - 7:49, édité 4 fois
Revenir en haut Aller en bas
Révo
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 4252
Date d'inscription : 16/03/2010
Age : 28

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Sam 1 Fév - 20:06

Sympa le niveau 2.2 de Lost Raider Wink

J'ai hate pour ton tuto pedro, ca me tente bien d'essayer.
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Dim 2 Fév - 9:43

Merci Wink
J'ai ajouté quelques infos dans mon post précédent.
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Dim 2 Fév - 19:10

J'ai pas eu trop de temps ce week-end ,  Mad mais ce n'est que parti remise , donc je n'ai pas pu encore tester le travail de Vingazole . Mais bon dans la semaine j'espère pouvoir avancer , Révo , y' aura le début du tuto cette semaine , et pis merci Ichigo pour l'info  avec Tiled , je pense que ça va bien me faciliter la vie. Bon j'ai quand même une petite vidéo (^o^) , où l'on peut voir un petit arbre mort en premier plan , il est défini en temps que sprite et c'est un peu du bricolage ,avec ce qu'a fait vingazole je vais pouvoir avoir quelque chose de beaucoup plus propre.
Revenir en haut Aller en bas
warriors 33
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 9496
Date d'inscription : 04/11/2009
Age : 36
Localisation : Bordeaux

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Dim 2 Fév - 23:15

ça avance petit à petit , c'est cool !
Revenir en haut Aller en bas
http://warriors33collection.over-blog.com/
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mer 5 Fév - 19:01

Mickey présente le flip horizontal z88dk version Vingazole


Tadaaaa !!
Mickey peut se voir dans un miroir sans avoir à créer de nouveaux tiles,
Il suffit juste de mettre les fonctions de vingazole directement dans son code.
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mer 5 Fév - 19:58

il est fort mon coéquipier ^^
Revenir en haut Aller en bas
vingazole
Ax Battler (Golden Axe)
Ax Battler (Golden Axe)
avatar

Score : 918
Date d'inscription : 28/04/2011
Age : 43
Localisation : Les Herbiers (85)

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mer 5 Fév - 20:35

Le mien aussi Wink

Content de voir que ça marche Very Happy
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 2:27

C'est clair que vous formez une belle équipe , de plus ,  ( c'est l'instant louanges )  de ce que j'ai vu sur le forum vous vous complétez bien avec vos propres compétences . Mais ce que je préfère chez vous c'est le perfectionnisme que vous apportez dans un univers amateur.
Ce genre de travail généralement ne se voit que dans le monde professionnel où l'on est payé pour l'accomplir , et ça fait très plaisir de voir que la passion existe encore dans ce bas monde.
( fin de l'instant louanges ) .
ça fait un peu lèche cul tout ce que j'écris mais c'est ce que j'ai ressenti en parcourant ce forum et je tenais à le dire au moins une fois.Vive master system france!!
Bon revenons à nos moutons ou plutot à nos lapins , buster bunny vous présente
le flip vertical
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 17:52

Bon j'ai un peu la flemme en ce moment , alors pour l'instant ce sera juste un petit programme commenté. Ce programme permet d'afficher l'image de buster bunny comme plus haut ( sans le renversement) en tant que background , donc si vous comprenez le programme qui suit vous pourrez réaliser un background complet , c la meme chose (faut juste remplir tout l'écran).
Si vous avez des questions ou que vous voyez que je racontes de bétises n'hésitez pas à commenté.
Avant de débuter , je vous conseille pour commencer en logiciel gratuit paint.net pour dessiner vos tiles ; bmp 2tiles pour consertir vos images en données , et notepad++ pour éditer votre code ( ne pas oublier de sauvegarder votre code en nomdufichier.c , et bien sur le compilateur z88dk.
Le programme :
programme:
 

Bon courage

Le commentaire est au 3/4 pompé sur celui de garzul , que vous pouvez trouver dans cette section du forum .
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 17:56

a la premier ligne du programme c'est #include  < sms.h >  sans espace entre <> , il n'apparait pas lorsque j'essaye de l'écrire dans le message
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 17:58

pour la position de l'image il faut lire
v00 v01 v02 v03
// v04 v05 v06 v07
// v08 v09 v0a v0b
// v0c v0d v0e v0f
// v10 v11 v12 v13
// v14 v15 v16 v17

ca c'est décalé
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 17:58

v00 v01 v02 v03
v04 v05 v06 v07
v08 v09 v0a v0b
v0c v0d v0e v0f
v10 v11 v12 v13
v14 v15 v16 v17

Je vais y arriver
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 20:02

Pedro, as-tu un everdrive ou similaire afin de tester sur le vrai hard ?
Car sur mon test "megaman", le sprite partait en couil*** lors du déplacement.
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Ven 7 Fév - 22:41

En fait j'hesite entre un programmateur d'eprom 8 bits et me faire une cartouche test , ou me faire une cartouche relié au pc (façon furrtek) pour envoyer le code direct à la master system ou un everdrive.
Mais c'est prevu de tester sur le vrai hard . En fait truc mon vrai kiff dans un premier temps ca serait de faire un pcb 32ko , avec une demo faite par moi + une coque en impression 3d + une boite façon mark 3 a partir de mini boite de céréale , et pis avec de la peinture or en bombe (facon ancienne cartouche zelda sur nes) peindre la cartouche.
En fait creer un produit 100% neuf master system , ca serait un gros trip.
C'est l'objectif du moment , donc peut etre plutot orienter programmateur finalement.
Revenir en haut Aller en bas
pedro76
Rastan (Rastan)
Rastan (Rastan)
avatar

Score : 251
Date d'inscription : 18/03/2013

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mar 11 Fév - 0:39

Je confirme que le passage au premier plan des tiles de background fonctionne parfaitement, happy
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mar 25 Fév - 14:54

J'ai commencé a dev un truc via la lib en C, si j'arrive a peu près a mes fins vous verrez ca dans 2/3 semaines.

J'ai passé juste qq heures dessus ces 5 derniers jours, un petit portage/projet dont j'avais parlé à vingazole il y a qq mois.
Le sprite s'affiche/bouge (3x3 tiles) et le décor aussi (pas testé sur le hard neanmoins). Reste surtout la collision/interaction a gérer...

Maintenant que j'ai enfin apprivoiser les pointeurs & structures en C, ca devrait aller assez/plus vite.
(perdu qq heures le temps de me rappeler comment fonctionnait la lib/declaration, faire des essais)
La seule chose floue est à propos des "banks", car en C je ne vois pas comment les gérer... pour l'instant la compilation est "petite", mais si je rajoute image/anim d'intro, musique ca risque de poser problème.

Pas d'image pour le moment, je vais laisser la surprise...enfin si j'arrive à mes fins.

PS. Je n'ai toujours pas testé si les tiles pouvaient faire la symétrie horizontale/verticale directement via leur déclaration...
(pour ceux qui suivent si un tile pour adresse 0x0009, 0x0209 serait son symétrique H et 0x0409 son symétrique V,  et 0x0609 le symétrique H & V...)
les tiles étant déclarés ainsi : unsigned int tiles[] = {0x0001, 0x0002}, ca pourrait peut etre marcher directement...

PS. @Pedro

pour afficher tes tiles, tu déclares l'adresse de départ, la taille X/Y et c'est tout :
unsigned int TILES[] = {0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009}; //9 tiles
set_bkg_map(TILES,0,0,3,3); fera un bloc de 3x3 tiles en prenant ceux stockés dans TILES, en les mettant aux coordonnées x = 0, y = 0; (coin haut/gauche de l'écran)

pour les sprites, il faut faire une boucle, en calculant les nombres sur X, puis incrémenter sur Y quand X est atteint (et réinitialiser X à ce moment là)
Attention à la limite des 8 sprites par lignes (sinon ca clignote).

Exemple, si on avait un perso de 3x3 tiles :

Code:
void aff_perso(int x, int y){
   int i, j, k;
   j=0; k=0; //INIT
   for(i=0;i<9;i++){   
      if(j==3){
         j=0; //INIT
         k++;
      }
      set_sprite(i, x+(j*8), y+(k*8), perso_tiles[0]+i);
   j++;
   }
}

x et y étant les coordonnées récup du joy 1 ou 2.

Ca c'est mon code de test avant de passer aux "pointeurs/structures",
maintenant c'est un peu plus court :
Code:
void affperso(Perso *c) {
   int i, j, k, n;
   j=0; k=0; n=0;
   for(i = c->sprbase ; i < (c->nspr+1) ; i++){
      set_sprite(i, c->x+(j*8), c->y+(k*8), c->adrtiles+n);
      if(j==c->tx){j=0; k++;}else{ j++; }
      n++; //inc spradr
   }
}

(sprbase, nspr, adrtiles étant définis dans une structure)
NB. le *8 c'est pour décaler de 8 pixels Wink
Revenir en haut Aller en bas
vingazole
Ax Battler (Golden Axe)
Ax Battler (Golden Axe)
avatar

Score : 918
Date d'inscription : 28/04/2011
Age : 43
Localisation : Les Herbiers (85)

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mar 25 Fév - 15:30

ichigobankai a écrit:
J'ai commencé a dev un truc via la lib en C, si j'arrive a peu près a mes fins vous verrez ca dans 2/3 semaines.

J'ai passé juste qq heures dessus ces 5 derniers jours, un petit portage/projet dont j'avais parlé à vingazole il y a qq mois.
Le sprite s'affiche/bouge (3x3 tiles) et le décor aussi (pas testé sur le hard neanmoins). Reste surtout la collision/interaction a gérer...

Maintenant que j'ai enfin apprivoiser les pointeurs & structures en C, ca devrait aller assez/plus vite.
(perdu qq heures le temps de me rappeler comment fonctionnait la lib/declaration, faire des essais)
La seule chose floue est à propos des "banks", car en C je ne vois pas comment les gérer... pour l'instant la compilation est "petite", mais si je rajoute image/anim d'intro, musique ca risque de poser problème.

Pas d'image pour le moment, je vais laisser la surprise...enfin si j'arrive à mes fins.

Ah, t'es là-dessus ? cool !  cheers 

Je me suis penché un peu sur ce compilateur C grâce à Pedro, j'ai l'impression qu'il n'y a rien de prévu pour la gestion des banques, c'est dommage (ça limiterait les ROMs à 48 Ko je crois). D'autant que le format VGM (si c'est ce que tu veux utiliser) est très gourmand en mémoire Sad

ichigobankai a écrit:
Je n'ai toujours pas testé si les tiles pouvaient faire la symétrie horizontale/verticale directement via leur déclaration...
(pour ceux qui suivent si un tile pour adresse 0x0009, 0x0209 serait son symétrique H et 0x0409 son symétrique V,  et 0x0609 le symétrique H & V...)
les tiles étant déclarés ainsi : unsigned int tiles[] = {0x0001, 0x0002}, ca pourrait peut etre marcher directement...

Oui, je pense qu'on peut définir les 16 bits d'attribut des tiles directement, mais je n'ai pas testé non plus.
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mar 25 Fév - 15:46

une fois rendu à la musique (la fin donc ^^), si j'ai besoin de place je pourrais toujours compresser les gfx via la lib qui est dans les exemples.
Mais bon un gestion de banque serait juste "top", car pour faire du dev, le C c'est quand meme assez sympa (et rapide) ^^

Faudra que je PM fuurtek pour savoir si ca serait possible de faire/gérer un multitap pour SMS.
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Mer 26 Fév - 9:11

infos : les attributs H/V marche directement Wink
donc pour faire un rond de 2x2 tiles (par exemple), juste un quart du "rond" suffit :

si le 1er tiles = 0x0001 (coin haut/gauche)
le 2ème = 0x0201 (miroir H), (coin haut/droite)
le 2ème = 0x0401 (miroir V), (coin bas/gauche)
le 4ème = 0x0601 (miroir H et V), (coin bas/droite)

J'ai testé mon truc sur le hard, j'ai le perso qui "flick", ca doit merder niveau h ou v blanking (pour les appels/recup de sprites), mais là je ne m'y connais pas trop...


NB. après reflexion je vais remettre le truc des miroirs au "propre" Wink


1.on déclare les tiles
unsigned int mes_tiles[] = {0x0001,0x0002,0x0003}

2.
on definit un tilemap, c'est à dire la facon d'agencer les tiles, c'est à cet endroit qu'on dira si on veut un miroir sur tel ou tel tiles.
unsigned int mon_tilemap[] = {0x0001,0x0002,0x0202,0x0402,0x0603}

dans cet exemple on aurait,
le tiles 0x0001 "normal"
le tiles 0x0002 "normal"
le tiles 0x0002 avec miroir horizontal
le tiles 0x0002 avec miroir vertical
le tiles 0x0003 avec miroir horizontal ET vertical


3. on affiche le tilemap
set_bkg_map(mon_tilemap, 0, 0, 5, 1);

la fonction est ainsi
set_bkg_map(nom-de-mon-tilemap, coord X, coord Y, nombre sur X, nombre sur Y)
les unités sont en tiles et non en pixel

la master system a un ecran de 256 pixels de large sur 192 pixels de haut (par défaut)
soit 32 tiles x 24 tiles, les coordonnées sont toujours vis à vis du haut/gauche.

En complément :

Les propriétés de miroir, 1er plan, palette sont visibles dans meka, via la fenetre "tilemap viewer"

Dans cette capture on voit que pour le tiles n° 005 (celui selectionné via le petit contour blanc),
il a un attribut de miroir horizontal + vertical, donc ca valeur est 0x0605 Wink
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Jeu 27 Fév - 0:01

J'ai trouvé pour mon problème de "flick" (clignotement de sprite)
il ne faut pas recup plus de 8 tiles pour faire un sprite en 1 fois...et vu que mon truc en fait 9 ^^
du coup, le mieux c'est de décomposer en nb de tiles sur Y, puis sur X

en gros, à l'arrache c'est comme ca :

Code:

// n pour Y, 3 tiles sur Y
// i pour X, 3 tiles sur X
// j = 0x50, adr de départ des tiles a recup

wait_vblank_noint();

   for(n=0;n<3;n++){
      l=0; //init pos x
      for(i=0;i<3;i++){
         set_sprite(k, x+(l*8), y+(n*8), j+k);
         k++; //inc num sprite + decalage adresse tile
         l++; //inc pos x
      }
            //n s'inscremente de facon auto (pos y)
   }

et sur le hard ca fonctionne Wink
Revenir en haut Aller en bas
ichigobankai
Alex Kidd (Alex Kidd)
Alex Kidd (Alex Kidd)
avatar

Score : 6506
Date d'inscription : 26/08/2009
Age : 38
Localisation : Near Angers ^^

MessageSujet: Re: Programmation Master System en Assembleur + variante en C   Jeu 27 Fév - 20:25

Content, j'ai "presque" fini ma détection de collision ^^
pas simple entre un perso de 24x24 (pas centré, ca serait trop facile) et une grille de blocs 16x16...
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Programmation Master System en Assembleur + variante en C   

Revenir en haut Aller en bas
 
Programmation Master System en Assembleur + variante en C
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 7 sur 10Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Suivant
 Sujets similaires
-
» Programmation Master System en Assembleur + variante en C
» Programmation Master-System en assembleur
» Programmation Master-System en basic
» [TUTO1] Gestion des sprites sur la Master-System
» Mes mods sur autre chose que sur Master System ^^

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Master System France :: Master System France :: Nos créations-
Sauter vers: