Sujet: 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.
vingazole Ax Battler (Golden Axe)
Score : 932 Date d'inscription : 28/04/2011 Age : 50 Localisation : Saintes (17)
Sujet: 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)
On crée une fonction GetTile pour récupérer la valeur (16 bits) de la tile...
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 !
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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 !
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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 , ( on a le choix entre allez tout droit ou tout droit , mais l'important c'est d'avoir le choix )
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: 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
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
Révo Alex Kidd (Alex Kidd)
Score : 6485 Date d'inscription : 16/03/2010 Age : 35
Sujet: Re: Programmation Master System en Assembleur + variante en C Sam 1 Fév - 20:06
Sympa le niveau 2.2 de Lost Raider
J'ai hate pour ton tuto pedro, ca me tente bien d'essayer.
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: Re: Programmation Master System en Assembleur + variante en C Dim 2 Fév - 9:43
Merci J'ai ajouté quelques infos dans mon post précédent.
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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 , 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.
warriors 33 Alex Kidd (Alex Kidd)
Score : 9975 Date d'inscription : 04/11/2009 Age : 43 Localisation : Bordeaux
Sujet: Re: Programmation Master System en Assembleur + variante en C Dim 2 Fév - 23:15
ça avance petit à petit , c'est cool !
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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.
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: Re: Programmation Master System en Assembleur + variante en C Mer 5 Fév - 19:58
il est fort mon coéquipier ^^
vingazole Ax Battler (Golden Axe)
Score : 932 Date d'inscription : 28/04/2011 Age : 50 Localisation : Saintes (17)
Sujet: Re: Programmation Master System en Assembleur + variante en C Mer 5 Fév - 20:35
Le mien aussi
Content de voir que ça marche
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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:
#include // Les données de la palette qui s'appelle ici palette (on peut lui donner n'importe quel nom , // elle est composée de 11 couleurs (pour un maximum de 16 couleurs // les couleurs de la palette en héxadécimal vont de 00 (noir) à 3f (blanc) // ce qui faît un total de 64 couleurs disponibles unsigned char palette[] = {0x00,0x15,0x38,0x39,0x3D,0x12,0x07,0x0B,0x2A,0x2F,0x3F};
// Position des tiles // Exemple: 0x0001 = Place le tile à l'index 1 de la VRAM sur l'écran, 0x0000 = Place le tile à l'index 0 (début) de la VRAM sur l'écran... etc.. unsigned int v00_pos[] = {0x0001}; unsigned int v01_pos[] = {0x0002}; unsigned int v02_pos[] = {0x0003}; unsigned int v03_pos[] = {0x0004}; unsigned int v04_pos[] = {0x0005}; unsigned int v05_pos[] = {0x0006}; unsigned int v06_pos[] = {0x0007}; unsigned int v07_pos[] = {0x0008}; unsigned int v08_pos[] = {0x0009}; unsigned int v09_pos[] = {0x000a}; unsigned int v0a_pos[] = {0x000b}; unsigned int v0b_pos[] = {0x000c}; unsigned int v0c_pos[] = {0x000d}; unsigned int v0d_pos[] = {0x000e}; unsigned int v0e_pos[] = {0x000f}; unsigned int v0f_pos[] = {0x0010}; unsigned int v10_pos[] = {0x0011}; unsigned int v11_pos[] = {0x0012}; unsigned int v12_pos[] = {0x0013}; unsigned int v13_pos[] = {0x0014}; unsigned int v14_pos[] = {0x0015}; unsigned int v15_pos[] = {0x0016}; unsigned int v16_pos[] = {0x0017}; unsigned int v17_pos[] = {0x0018};
// Les tile (8x8) sur 4 bits c'est ce qui va composé notre image // pour cet exemple on a 24 blocs de 8x8pixels qui compose l'image // ces donnees sont obtenues en utilisant bmp to tile ( il est possible de le // faire à la main mais ca serait long et fastidieux). // Penser bien à utiliser une image qui soit un multiple de 8 en hauteur et largeur // et que votre image fasse 16 couleurs au plus
/* ==== Interruption "pause": - Vous vous demandez peut être ce qu'est les interruptions, hé bien le bouton pause de la SMS (Sega Master System) est une sorte d'interruption (il en génére une), - une fois que le bouton pause est appuyé, l'éxécution du code est coupé et le programme saute tout seul à une adresse (qui est $0066, représenté ici par notre fonction), - le bouton pause génére une interruption qui ne peut pas être désactivé et qui est appelé NMI (Non-Maskable Interrupts), sur la SMS seul le bouton pause génére une NMI, - le programme va donc ensuite executer le code de cette fonction (le code à cette adresse doit être court), - quand il atteint la fin de la fonction, il retourne au code executé précédement */
void pause() { }
// Programme principale void main() {
// Initialise les registres du VDP (Video Display Processor) // VDP_REG_FLAGS1_SCREEN = active l'affichage set_vdp_reg(VDP_REG_HINT_COUNTER, 0xFF); set_vdp_reg(VDP_REG_FLAGS1, VDP_REG_FLAGS1_SCREEN);
// On charge la carte des tiles (positions des tiles sur l'écran) // la position 0,0 correspond au premier bloc en haut a gauche de l'ecran (8x8 pixels) // explication des paramètres: // 1°: Nom du tile // 2°& 3°:position du tile X/Y où commencer à écrire le tile // 4°& 5°: Largeur et Hauteur du tile (8x8 pixels correspond à 1,1 ) // position de l'image v00 v01 v02 v03 // v04 v05 v06 v07 // v08 v09 v0a v0b // v0c v0d v0e v0f // v10 v11 v12 v13 // v14 v15 v16 v17
// On charge notre tile en VRAM, explication des paramètres: // 1°: Nom du tile // 2°: Index (exemple: 1 = écrire le premier tile à l'index 1 de la VRAM) // 3°: Nombres de tiles à écrires (suivant l'initialisation du VDP on peut avoir 448 tiles max de 8x8) // 4°: Bits par pixels (4 max, 4 = 16 sur 16 couleurs)
// On charge notre palette, explication des paramètres: // 1°: Nom de la palette // 2°: Index (exemple: 2 = commence à écrire les données à partir de la 2° couleurs) // 3°: Nombres de données à écrire // On ne peut charger que 32 couleurs
load_palette(palette, 0, 11);
// On ajoute l'interruption pause (fonction définie plus haut) add_pause_int(pause);
for(; { } }
Bon courage
Le commentaire est au 3/4 pompé sur celui de garzul , que vous pouvez trouver dans cette section du forum .
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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é
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: Re: Programmation Master System en Assembleur + variante en C Ven 7 Fév - 17:58
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: 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.
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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.
pedro76 Hayato (Kenseiden)
Score : 357 Date d'inscription : 18/03/2013
Sujet: 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
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: 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 :
(sprbase, nspr, adrtiles étant définis dans une structure)
NB. le *8 c'est pour décaler de 8 pixels
vingazole Ax Battler (Golden Axe)
Score : 932 Date d'inscription : 28/04/2011 Age : 50 Localisation : Saintes (17)
Sujet: 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 !
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
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.
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: 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.
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: Re: Programmation Master System en Assembleur + variante en C Mer 26 Fév - 9:11
infos : les attributs H/V marche directement 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"
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
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: 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
ichigobankai Alex Kidd (Alex Kidd)
Score : 7209 Date d'inscription : 26/08/2009 Age : 45 Localisation : Near Angers ^^
Sujet: 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...
Contenu sponsorisé
Sujet: Re: Programmation Master System en Assembleur + variante en C
Programmation Master System en Assembleur + variante en C