Précédent   Planet Emulation Forums > Divers > Création

Création Partagez ici vos créations: MUGEN, RPG Maker, Lunar Magic, Hyrule Magic, ...

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 28/01/2008, 16h17   #1
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
Tutorial : Logiciels Complémentaires à Lunar Magic : les custom blocks/ASM

Les custom blocks :
Bon, pour arriver à concocter quelques custom blocs, il faut d’abord se munir de blocktool, de translhexion, du bloc-notes, de spritetool, bien sur de Lunar Magic et d’une rom de Super Mario World et enfin du fichier d’aide qui se trouve ici. Note : ayez sous les yeux la partie RAM Map de smw central .
Comme ce tuto risque d’être un peu long, je vais le décomposer en 3 parties : les bases de l’ASM, créer son bloc et enfin des exemples de custom blocs.

1. Les bases de l’ASM (ou étude théorique)
D’abord, ‘y faut dire 65C816 ASM pour la snes (tuh…). Pour ceux qui ne connaissent pas cela veut dire ASseMbly(eur). C’est le langage informatique qu’utilise la snes. En réalité il existe plusieurs versions d'assembleur, une pour chaque processeur. Ici je vais vous apprendre l'ASM 65C816 car c'est celui qui nous intéresse. Quand vous ouvrez la rom avec Translhexion, vous voyez la forme hexadécimal de l’ASM (pour ceux qui ne savent pas comment utiliser translhexion ni blocktool, reportez vous aux tutos de cette discussion ; je suppose que vous savez ce qu’est l’hexadécimal puisque vous savez utiliser Lunar Magic…). On appelle cet ensemble de chiffre le "machine code" in english ou en français le langage machine. C'est le langage compréhensible par la snes. Pour pouvoir traduire l'ASM en fichier executable ou ici en fichier.bin qui contiendra le langage machine, il faut un compilateur, un logiciel qui traduira le fichier source dans lequel se trouve le code source (l'ASM est utilisé dans le code source). On dit que l'assembleur est un langage compilé car il est traduit une fois pour toute. Let's go !
Bon. Commençons par le commencement.
L’ASM est fait d’opcodes et de valeurs. Les opcodes correspondent à des actions à effectuer. Les valeurs, bah… ce sont des valeurs. Les valeurs peuvent être directes : un nombre, là comme ça, au hasard, 007 ^^ ; ou indirectes (nous allons voir ça après). Sachez qu’en faisant de l’ASM, vous avez à disposition des registers(res) : l’accumulator(eur), les X et Y registers, le stack, le processor status ou flag register (celui-là est particulier). Le plus important est l’accumulator : il vous permet de stocker 1 valeur mais peut être utilisé indéfiniment. Ca fait beaucoup de notion, nan ? un petit exemple :
LDA #$07
STA $7E0DBF
‘paniquez pas j’vous explique. LDA et STA sont des opcodes. #$07 est une valeur directe, $0DBF indirecte. Traduction : LDA veut dire LoaD Accumulator (je noterai accumulator A par la suite) et STA STore A. Les valeurs directes en hexadécimal sont précédées de #$ et en binaire de #%, et les valeurs indirectes sont simplement précédées de $ puisqu’elle viennent de la RAM.
Ce qui veut dire que ce code met dans l’A la valeur en héxa 07 et restitue la valeur de l’A à l’adresse 7E0DBF. Si on regarde dans la RAM Map de smwcentral, il s’agit du compteur de pièces. Si vous faites un bloc avec ce code (on verra ça après), le bloc remet le compteur des pièces à 7. Note pour les valeurs indirectes, le 7E n’est pas obligatoire, ainsi que les 2 zéros s’il y en a après : $7E0019 devient $19. Attention : on ne supprime pas les deux derniers zéros. Ex : $7E1900 ne sera jamais $19.

Eh ben là vous avez déjà appris...le tiers de cette partie ! on continue avec d’autres opcodes :
STZ : STore Zero to memory. STZ $0DBF -> met 0 à l’adresse 0DBF (Mario a plus de pièces ^^)
INC : INCrement A or memory. INC $0DBF -> augmente de 1 la valeur indirecte de l’adresse 0DBF (Mario gagne une pièce)
DEC : DECrement A or memory. DEC $0DBF -> diminue de 1 la valeur indirecte de l’adresse 0DBF (Mario perd une pièce)
Ca continue... En réalité il me semble qu’il y en a 92. Vous pouvez avoir une vue d’ensemble en ouvrant le fichier d’aide dont j’ai parlé au début (en anglais)
ASL : Left Shift A or memory. Multiplie par 2 l’A. Ex : A=15, ASL, A=30
LSR : Right Shift A or memory. Divise par 2 l’A. Note : si le résultat est avec une virgule (en gros si ça tombe en xx,5), on garde la partie entière (on garde xx).
TAX : Transfer A to X. Transfert la valeur de l’A au register X (j’expliquerai après)
TAX, TAY, TXY, TYA,... même principe
XBA : eXchange B and A. Echange le "high byte" (dans un nombre avec xxyy, xx est le high byte) avec le "low byte"(yy). Ex : A=1523, XBA, A=2315

Note sur les bits : 1 byte = 8bits = xx, 2 bytes = 16bits = xxxx, 3 bytes = 24bits = xxxxxx, etc...
REP : Reset Processor Status et SEP: SEt Processor status flag. Quand vous avez une adresse en 2 byte, les manips ne marcheront pas. Vous devez donc utiliser :
REP #$20 -> A passe en 16 bits
REP #$30 -> A, X et Y passent en 16 bits
REP #$10 -> X et Y passent en 16bits
SEP #$20 -> A retourne en 8 bits
SEP #$30 -> A, X et Y retournent en 8bits
SEP #$10 -> X et Y retournent en 8 bits
J'explique ce qu'est le processor status ou flag register : c'est un ensemble de 8 bits (ex : 01000101) dont chaque bit se met sur 0 ou 1 en fonction des opérations effectuées. On a :
N V M X D I Z C
N : negative flag V : overflow flag
M : "m" (?) flag X : "x" (?) flag
D : decimal flag I : interrupt flag
Z : zero flag C : carry flag

Bon je vous explique quand même X et Y : ils fonctionnent à peu près pareil que l'A, mais ils ont d'autres propriétés, notamment une très importante : l'indexing (le fait de pouvoir stocker plusieurs valeur à la fois (je ne vous l'expliquerais pas car je ne le comprend pas, mais sachez qu'il est SUPER utile dans les custom sprites)). Préférez l'A ^^. Cela dit cela peut être utile si vous voulez ne pas utilisez l'A pour telle raison. Après il y a le stack : il vous permet de stocker une valeur un moment, puis de la remettre ensuite. C'est comme une pile de livres : vous mettez un livre sur cette pile, vous effectuez n'importe quoi, mais après vous reprenez le livre.
Opcodes liés au stack :
PHA : PusH A. Prend un "livre" ou valeur de l'accumulator et le met sur le stack.
PLA : PuLl A. Remet à sa place le "livre" ou valeur déposée précédemment.

Voici maintenant 2 opcodes tout à fait inutile xD :
NOP : NO oPération. Celui ci ne fera strictement rien
STP : StoP the Clock. Celui la "freeze" le jeu : la partie se bloque.

Et maintenant des très importants :
CMP : CoMPare A with memory et BEQ : Branch if EQual, BNE : Branch if Not Equal
Un petit exemple va vous permettre de comprendre :
LDA $0DBF met le nb de pièces de mario dans l'A...
CMP #$20 ...compare cette valeur avec le nombre 20 (en décimal, 32)...
BNE retour ...si ces 2 valeurs ne sont pas égales, aller à l'étiquette retour...
INC $0DBF ...sinon, augmenter les pièces de 1...
retour :
RTS ...retourner au jeu.
Donc si vous n'avez pas 32 pièces, vous n'aurez pas une pièce en plus.
CMP associé à BEQ, BNE,... sont utilisé pour les branchements.
Quand vous utilisez CMP, on soustrait la valeur de l'A à la valeur derrière l'opcode : si les deux valeurs sont identiques, le zero flag est mis sur ON. BEQ branche alors si le zero flag = ON. C'est pourquoi vous pouvez voir des BEQ ou BNE tout seul : ils utilisent le zero flag directement.
Il existe aussi :
BCS (BGE) : Branch if GrEater than -> si valeur > A, carry flag = ON donc BCS branche si carry flag = ON
BCC (BLT) : Branch if Less Than -> branche si carry flag = OFF
BPL : Branch if Plus -> branche si negative flag = OFF
BMI : Branch if Minus -> branche si negative flag = ON
Les deux dépendent du negative flag : une valeur directe est dite positive si <#$80, et négative si >=#$80 (si vous voulez savoir : positive : de #%00000000 à #%01111111 ; négative : de #%10000000 à #%11111111)
BVC : Branch if oVerflow Clear -> branche si overflow flag = OFF
BVS : Branch if oVerflow Set -> branche si overflow flag = ON, c'est-à-dire s'ils dépassent #$FF ou #$00.
Ces deux-là en revanche dépendent de l'overflow flag ; je l'expliquerai dans la partie ADC/SBC.

Avez-vous remarqué ? J'ai mis RTS...
RTS : ReTurn from Subroutine. Cet opcode doit terminer chaque bloc. Pourquoi ? parce que ça dit à la snes de retourner aux actions possibles de Mario, au jeu...
Voyez cela comme ça : .....(jeu).............(Mario touche/frappe un bloc)->[action du bloc........RTS].......(jeu).....
Quand vous tapez un bloc, le jeu est "jumped", littéralement "sauté", par l'opcode :
JSR : Jump to SubRoutine.
JSL : Jump to Subroutine Long. Cet opcode utilisé dans un bloc bascule vers une autre subroutine (comme par exemple la routine ou Mario devient petit ou gros) ; les opcodes situés à l'adresse indiquée sont effectuées (s'il n'y en pas, c'est le gros bug). Vous pouvez trouver des subroutines dans la ROM Map de smwcentral (conseil : cliquez sur type pour les trier, elles se trouveront à la fin). Si vous voulez savoir comment ça marche, JSL met la location de votre code dans le stack et bascule vers ladite subroutine. Le RTL : Return to Subroutine Long à la fin de la subroutine repioche la localisation de votre code dans le stack. C'est le même principe avec RTS : le saut vers votre code a mis la localition "vers le jeu" dans le stack. RTS à la fin utilise alors cette donnée pour y retourner ; donc si vous mettez qqch dans le stack lors de votre code et que vous ne le reprenez pas, RTS va vous envoyer n'importe où !
Attention : l'adresse à mettre lors de l'utilisation de JSL est la snes adresse.
Ex :
JSL $00F5B7 bascule vers la subroutine qui blesse Mario
RTS
Ce bloc est donc comme une "black piranhe plant" ^^

JSR doit être utilisé avec RTS, et JSL avec RTL. Simple ?
JMP : JuMP
JML : JuMp Long
Idem sauf qu'on peut basculer vers une étiquette.

Allez les derniers :
ADC : ADd with Carry. Ajoute la valeur directe d'après à l'A.
SBC : SuBstract with Carry. Soustrait la valeur d'après à l'A.
CLC : Clear Carry flag
SEC : SEt Carry flag
Ces quatre opcodes doivent être associés pour éviter de drôles de résultats. En effet, ADC et SBC dépendent du "carry flag" : si le carry flag est mis en quelle que sorte sur ON (1), ADC ajoutera votre valeur à l'A + 1 ; si le carry flag est mis sur OFF (0), SBC ôtera votre valeur à l'A et enlèvera aussi 1. Pour éviter toute interférence, on utilise CLC avec ADC et SEC avec SBC.
Note : si l'addition dépasse #$FF ou est en dessous de #$00, le compteur reprend à l'exact opposé. Ex : #$FF + #$01 = #$00, #$FF + #$02 = #$ 01, #$00 - #$02 = #$FE, ... Donc #$100 = #$00 et #$-01 = #$FF. Quand les compteurs reprennent à ces valeurs, l'overflow flag esy mis sur ON.
Note 2 : les seules opérations possibles sont les additions/soustraction avec les registers. Les multiplications et divisions sont infaisables (sauf les multiplications et divisions rapides avec ASL et LSR). Ce qui nous amène donc aux...

Les boucles
Vous voulez augmenter telle valeur de, disons trente, INC ne marchera pas (à moins de mettre 30 INC ^^), et malheureusement on ne veut pas utiliser ADC. Que faire ? et bien on fait des boucles ! un petit exemple :
LDA $0DBF Met le nb de pièces dans l'A...
boucle : ...étiquette...
INC ...augmente de 1 l'A...
CMP #$70 ...comparer cette valeur avec #$70...
BNE boucle ...si ces deux valeurs ne sont pas égales, retourner à "boucle"...
STA $0DBF ...sinon réinsérer les pièces dans le compteur...
RTS ...retour.
Si on fait un bloc avec ce code, on a un bloc qui augmente les pièces de Mario jusqu'à 70, d'où l'inutilité de ADC qui ne peut pas régler le compteur de pièces sur un tel nombre.
Maintenant les boucles de multiplication :
PHY Sauvegarde Y dans le stack...
LDY $0DBF ...y met le nb de pièces...
LDA #$00 ...met 0 dans l'A...
boucle :
CLC ...carry flag = OFF...
ADC #$03 ...A + 3...
DEY ...diminue de 1 Y...
CPY #$00 ...comparer Y avec 0...
BNE boucle ...si les deux valeurs ne sont pas égales, aller à boucle...
STA #$0DBF ...sinon remettre le nb de pièces ds le compteur...
PLY ...remettre la valeur de Y...
RTS ...retour.
Ce code multiplie le nb de pièces par 3. En réalité, il augmente l'A de 3 autant de fois qu'il y a de pièces (le nb de Y), ce qui revient au même, non ?



Voila pour la première partie. Si vous avez déjà compris cela, ça ira tout seul après ^^.

Dernière modification par SL ; 06/05/2008 à 19h38.
SL est déconnecté   Réponse avec citation
Vieux 28/01/2008, 16h18   #2
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
2. Créer son custom bloc.(ou étude pratique)


Bon maintenant que je vous ai donné tous les codes et leur signification, 'yapluka !
Pour commencer, ouvrez le bloc-notes. On va faire un bloc qui donne 17 pièces, ni une de plus, ni une de moins. Ca vous dit?
Dans ce bloc-notes, inscrivez le code (ou copiez le bande de copiteurs !)
LDA $0DBF rappel : met le nombre de pièces de mario dans l'A...
CLC ...carry flag = "off"...
ADC #$11 ...ajoute 11 en hexa donc 17 en décimal...
STA $0DBF ...remet ce nombre dans le nombre de pièces...
RTS ...retour.
Enregistrez le fichier dans le même dossier que sritetool (pourquoi me diriez vous). Appelez-le par exemple piece17.asm. Faites glisser maintenant piece17 sur trasm.exe, comme ça :
http://nsa01.casimages.com/img/2008/01/28/mini_0801280149002177795.jpg
Vous pensez que cela n'a eu aucun effet ? détrompez-vous ! Allez dans le dossier qui contient le dossier de spritetool. En gros, cliquez sur dossier parent. Vous découvrez 3 fichiers : spritetooltv.smc, spritetooltv.err et spritetooltv.bin :
http://nsa01.casimages.com/img/2008/01/28/mini_0801280152042177829.jpg
Prenez le fichier.bin, renommez-le piece17 et déplacez le dans le dossier de blocktool. Laissez les deux autres là où ils sont, 'y sont très bien ^^. Maintenant votre petit et chétif bloc doit figurer parmi la multitude de blocs déjà présents. Ouvrez blocktool. Allez dans file, open, sélectionnez votre rom et ouvrir. Maintenant allez dans blocks puis edit block data. Cliquez sur le bouton pour allez tout à la fin, retenez le nombre qui s'affiche dans block number, cliquez sur le + et mettez dans block number le nombre de tout à l'heure + 1. Inscrivez :
- dans block title : pièces + 17 (si ça vous plait mettez autre chose c'est vous qui voyez)
- dans block usage : ce que vous voulez ^^
- dans Asm file name : piece17.bin
- pour les offsets : -1 veut dire que vous voulez que le bloc ne s'active pas, et 0 veut dire que vous voulez que le bloc s'active (sauf pour les reloc offsets). Vous mettez si vous voulez un "question bloc" : 0,-1,-1,-1,-1,0,-1,-1 ; ou si vous voulez un bloc transparent : 0,0,0,-1,-1,-1,-1,-1. Dans tout les cas mettez –1 aux reloc offsets. La on va prendre le question bloc, puisque le bloc transparent ne marche pas avec ce type de bloc. Donc 0,-1,-1,-1,-1,0,-1,-1
- Author name/author email : à vous de voir...
- Description : Ce que vous voulez, moi je met "bloc qui vaut 17 pièces."
- Décochez whole page
Ensuite ajouter ce bloc à votre hack et "save".
Allez voir votre hack avec lunar magic, regarder là ou vous l'avez mis, donner lui l'apparence d'un question block (tiles 60,61,62,63) et block acts like 124. Mettez-le dans votre hack et jouez. Tiding ! Mario gagne ......... quoi ? 18 pièces ? Y doit y avoir une erreur ?!?
Mais non ! c'est que le bloc se comporte comme un "question bloc with a coin inside", donc il vous donne avant tout 1 pièce et après vous rajoute 17 pièce. Mais moi j'en voulais que 17 !! Je vais devoir refaire tout ce que j'ai fais ? En fait, non.
Ouvrez translhexion. Ouvrez votre bloc avec (file, open, piece17). Vous voyez votre code maintenant sous forme hexadécimale. Comment on s'y retrouve ?
- Un opcode correspond en hexa à un nombre. LDA+valeur ind. = AD, STA = 8D, RTS = 60,... Sachez que vous pouvez retrouvez la correspondance opcode-hexa avec le fichier d'aide.
- Les valeurs directes sont conservées.
- Les valeurs indirectes (ou plutôt les adresses que vous indiquez) sont inversées. Ex : $0DBF = BF 0D. Vous saisissez ?
On va donc changer le 17 en 16. Facile, un clic sur le 6è byte, 11 (=17 en deci), et on remplace par 10.
http://nsa01.casimages.com/img/2008/01/28/mini_0801280153262177840.jpg
File, save, blocktool, open rom, save, Lunar Magic, on joue. Tadaaam ! Mario gagne 17 pièces.
Bravo, vous avez créé votre 1er custom bloc ! Alors, pas dur cette partie, non ? Maintenant, je vais vous donnez un peu d'inspiration pour vous permettre de créer le votre. Allez, on continue...

3. Exemples de blocs (ou les bonnes adresses)


Bien. C'est parti pour quelques séries de blocs, qui vont se compliquer (légèrement) par la suite.

Le bloc BG.

REP #$20
LDA #$32FF
STA $0701
SEP #$20
RTS
Celui-ci, dès qu'il sera touché par Mario, changera la couleur de votre "back area colour". Ex :
http://nsa01.casimages.com/img/2008/01/28/0801280159362177899.png
http://nsa01.casimages.com/img/2008/01/28/0801280200312177910.png
La couleur du BG se trouve à la deuxième ligne du code : pour l'exemple, j'ai mis #$32FF (orange), mais en fait c'est la snes RGB value de la couleur. Mettez #$03FF pour un jaune, #$6D08 pour un bleu, etc. Attention, pour je ne sais quelle raison, il n'insère pas la valeur 00 si c'est le premier byte. C'est-à-dire :
#$32FF ça marche
#$001A ça marche pas (si votre couleur d'origine est 32FF, il va mettre 321A au lieu de 001A)
Notez l'utilisation de REP SEP puisque si on regarde dans la RAM Map de smwcentral, il est inscrit : 2 bytes, donc 16 bits.

Le bloc qui fait du bruit ^^:

LDA #$01
STA $1DFC
RTS
Celui-là produira un son (de pièce dans l'exemple) quand Mario l'activera. 1DFC charge les sons suivant la valeur en hexa. Pour savoir quelle valeur correspond à quel son, il y a un récapitulatif dans la partie documents de smwcentral.
Il existe aussi une autre adresse qui charge les sons, mais elle est plus spéciale : 1DF9. En fait si vous avez le document de smwcentral, sachez que la valeur 00 avec 1DF9 correspond à la valeur 34 avec 1DFC. On peut d'ailleur obtenir de drôles d'effets en utilisant les valeurs comprises entre 6D et 7F avec 1DF9...

Les "bloc acts like" :

LDA #$30
STA $1693
LDY #$01
RTS

Mettez le "make this tile [...] like tile number" à 25.
Ahh... Quelque chose d'intéressant... si vous regardez dans la RAM Map de smwcentral, vous lisez : Block # in custom block code (low byte; high byte is Y register). Vous vous rappelez du low et high byte ? la description de l'adresse veut dire que c'est le low byte du block number dans le 16*16 tile map editor, et que le high byte doit être dans le Y register. En bien ce code met #$30 dans cette adresse, et #$01 dans le Y register. Ce qui veut dire que lorsque Mario active le bloc, le bloc acts like 0130, dans le 16*16 tile map editor c'est le grey cement bloc. Or ce bloc est supposé être un completely blank tile (25). Et bien quand Mario le touche, il agit comme un grey cement bloc, et quand c'est les sprites/objets, c'est un completely blank tile. Vous avez là un "No Mario bloc".

Allez... le dernier et le plus cool :
Le bloc péage :
(Je vais vous mettre les explications à côté cette fois-ci) :
LDA $0DBF Met le nombre de pièces ds l'A...
CMP #$1E ...le compare avec le nombre 1E, en déci 30...
BCC retour ...si le nb pièces < 30, allez à "retour"...
LDA $0DBF ...sinon, met le nb de pièce ds l'A...
SEC ...carry flag = on...
SBC #$1E ...soustrait à l'A 30 en hexa 1E...
STA $0DBF ...remet ce nb dans le compteur de pièces...
RTS ...retour au jeu
retour : étiquette retour...
LDA #$30 ...bloc acts...
STA $1693 ...like tile...
LDY #$01 ...130...
RTS retour au jeu.
Le bloc doit imiter le on/off bloc dans le 16*16 tile map editor (112).
Insérez en même temps le "switchable block on" avec blktool.

Vous trouvez ça long ? naan !
En clair, si vous n'avez pas 30 pièces, le bloc ne fait rien, et si vous avez 30 ou + pièces, on vous enlève 30 pièces et vous êtes autorisé à utiliser le bloc on/off. Ca donne :
http://nsa01.casimages.com/img/2008/01/28/0801280201512177924.png
http://nsa01.casimages.com/img/2008/01/28/0801280202442177931.png


Voila c'était le dernier j'espère que ce très long tuto vous a aidé et que maintenant vous allez laisser cours à votre créativité, car avec ce que vous avez appris, beaucoup de possibilités vous sont offertes !

Dernière modification par SL ; 06/05/2008 à 19h41.
SL est déconnecté   Réponse avec citation
Vieux 28/01/2008, 19h52   #3
Lexou
Lunarien de Lunariville
 
Avatar de Lexou
 
Date d'inscription: 04/2007
Localisation: Lunariville, ville des Lunariens
Messages: 2 057
Lexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de luiLexou peut être fier de lui
Envoyer un message via ICQ à Lexou Envoyer un message via AIM à Lexou Envoyer un message via MSN à Lexou Envoyer un message via Yahoo à Lexou
Très beau boulo frachement, il ne manquais plus que ça pour notre petite bande de hackeurs ça deviens de la programmation plus que de l'édition mais bon, c'est génial ^^
__________________
http://lunariville.com/images/pok%c3%a9mon%20darkness.png
Cliquez sur la bannière pour télécharger Pokémon Darkness (final)
Télécharger Super Mario Bros 4, Mystery of the Five Stones
Télécharger Nador Quest démo 2
Lexou est déconnecté   Réponse avec citation
Vieux 08/02/2008, 18h36   #4
bulle34500
Le petit Lunarien !
 
Avatar de bulle34500
 
Date d'inscription: 01/2008
Localisation: Ou je suis ? Ah! bonne question !
Messages: 318
bulle34500 deviendra célèbre
Envoyer un message via MSN à bulle34500
en francais ça veut dire quoi ?

fin je comprend pas j'ai tous lol rien a faire peut t-on expliquer plus clairement ?
__________________
Ma hack : http://cid-3636a023b7f55626.skydrive...f%20bowser.rar

Nouveau forum des lunariens


http://img6.xooimage.com/files/5/0/3/icon_mini_message-90b29-3b030b.png

Dernière modification par bulle34500 ; 14/02/2008 à 11h25.
bulle34500 est déconnecté   Réponse avec citation
Vieux 08/02/2008, 23h43   #5
ARN3
Debutant
 
Avatar de ARN3
 
Date d'inscription: 01/2008
Localisation: sur terre
Messages: 302
ARN3 deviendra célèbre
Mario 34500 c'est simplement trop dur pour toi, mais ça reste du Français et SL a ecrit tout ça entierement de lui meme me semble t-il, il faut donc feliciter son boulot meme si ça ne te concerne pas.
ARN3 est déconnecté   Réponse avec citation
Vieux 09/02/2008, 20h52   #6
bulle34500
Le petit Lunarien !
 
Avatar de bulle34500
 
Date d'inscription: 01/2008
Localisation: Ou je suis ? Ah! bonne question !
Messages: 318
bulle34500 deviendra célèbre
Envoyer un message via MSN à bulle34500
c'est du bon boulot mais il faut une explication plus logique car les code il faut savoir les bases ça c'est pas gagner car j'ai aussi fait cette erreur mais bon boulot
__________________
Ma hack : http://cid-3636a023b7f55626.skydrive...f%20bowser.rar

Nouveau forum des lunariens


http://img6.xooimage.com/files/5/0/3/icon_mini_message-90b29-3b030b.png

Dernière modification par bulle34500 ; 14/02/2008 à 11h19.
bulle34500 est déconnecté   Réponse avec citation
Vieux 09/02/2008, 23h08   #7
Dinofly
Président
 
Avatar de Dinofly
 
Date d'inscription: 10/2001
Messages: 6 407
Dinofly peut être fier de luiDinofly peut être fier de luiDinofly peut être fier de luiDinofly peut être fier de luiDinofly peut être fier de luiDinofly peut être fier de luiDinofly peut être fier de luiDinofly peut être fier de lui
Envoyer un message via ICQ à Dinofly
Avant de demander aux autres de parler français tu devrais peut-être t'appliquer un peu sur ton orthographe
__________________
http://dinofly.planetemu.net/images/president_planet_2012.png
http://forums.planetemu.net/picture.php?albumid=17&pictureid=198
Dinofly est déconnecté   Réponse avec citation
Vieux 14/02/2008, 20h46   #8
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
Citation:
Envoyé par mario 34500 Voir le message
fin je comprend pas j'ai tous lol rien a faire peut t-on expliquer plus clairement ?
Désolé mais je peux pas faire plus clairement.
En revanche tu peux poser des questions sur des points que tu ne comprend pas n'hésite pas
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png
SL est déconnecté   Réponse avec citation
Vieux 23/02/2008, 00h39   #9
noob-ou-pas
(futur) MANGAKA
 
Avatar de noob-ou-pas
 
Date d'inscription: 03/2007
Localisation: 06150
Messages: 346
noob-ou-pas est précieuxnoob-ou-pas est précieuxnoob-ou-pas est précieux
Envoyer un message via MSN à noob-ou-pas
Icon1

je voudrazis créer un bloc qui donne un champi si mario est petit mais une pièce seulement si mario est super, feu ou capé . pourrais-tu me donner quelques conseils et surtout me dire si il existe pas déjà ???
__________________
Citation:
N'empêche, un truc à essayer en boîte : t'accostes une fille, et là tu lui dit de manière super classe "tu danses ?" Bon si t'es pas trop moche, elle dit ok. Et là tu t'assoies à sa place "Vas-y je te regarde." Bon c'est clair, faut pas espérer finir la soirée avec parce que c'est foutu après ça...

noob-ou-pas est déconnecté   Réponse avec citation
Vieux 23/02/2008, 14h46   #10
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
Non je ne crois pas que le block existe (à ma connaissance ).
Donc pour le faire je peux déjà te dire ce que tu as besoin :
- tu dois utiliser :
l'adresse du status de Mario : $0019
CMP et les branchements
- il est possible que tu utilise :
l'adresse du compteur de pièces : $0DBF

Bon :
Si tu veux un question bloc :
- Utilise : LDA $0019
CMP #$00
BEQ/BNE (j'ai un doute) nothing
LDA #$01
STA $0019
nothing :
RTS
Comme c'est un bloc 1pièce, s'il fait rien il te donnera une pièce. Mais il te donnera une pièce avec le champi (attention : mario ne grandira pas comme lorsqu'il a un champi : il sera en big mario d'un seul coup). Donc autre possibilité :
...
BEQ/BNE nada
LDA..
STA..
RTS
nada :
LDA $0DBF
CLC
ADC #$01
STA $0DBF
LDA #$01
STA $1DFC
RTS
Tout en le mettant en nothing block. Mais PB car si le nb pièce = 99, block met les pièce à A0 ou un truc comme ça. Donc encore mieux :
...
B.. nadadenadita
LDA #$1F
STA $1693
LDY #$01
RTS
nadadenadita :
RTS
Tout en le mettant en 1pièce bloc. Si mario petit, block = flower block dc mushroom block.
- si tu veux un block activable de tt les cotés :
...
B.. nooooon,rienderien,nooooon,jeneregretterien (nan je rigole)
LDA #$01
STA $0019
RTS
nianianian :
2 possibilté :
1. LDA #$2B
STA $1693
LDY #$00
RTS
MAIS suis pas sûr que ça marche.
2. LDA $0DBF
CLC
ADC #$01
STA $0DBF
LDA #$01
STA $1DFC
RTS
Celle-ci marchera je pense.


Tu vois, il y a plein de possibilité ! adapte ton code à ce que tu veux
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png

Dernière modification par SL ; 23/02/2008 à 16h04.
SL est déconnecté   Réponse avec citation
Vieux 23/02/2008, 17h56   #11
noob-ou-pas
(futur) MANGAKA
 
Avatar de noob-ou-pas
 
Date d'inscription: 03/2007
Localisation: 06150
Messages: 346
noob-ou-pas est précieuxnoob-ou-pas est précieuxnoob-ou-pas est précieux
Envoyer un message via MSN à noob-ou-pas
Icon9

houlà, chargé!
garaararag
__________________
Citation:
N'empêche, un truc à essayer en boîte : t'accostes une fille, et là tu lui dit de manière super classe "tu danses ?" Bon si t'es pas trop moche, elle dit ok. Et là tu t'assoies à sa place "Vas-y je te regarde." Bon c'est clair, faut pas espérer finir la soirée avec parce que c'est foutu après ça...

noob-ou-pas est déconnecté   Réponse avec citation
Vieux 23/02/2008, 18h06   #12
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
oui je sais
c'est venu tt seul mais ça peut t'aider tu sais
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png
SL est déconnecté   Réponse avec citation
Vieux 23/02/2008, 18h18   #13
noob-ou-pas
(futur) MANGAKA
 
Avatar de noob-ou-pas
 
Date d'inscription: 03/2007
Localisation: 06150
Messages: 346
noob-ou-pas est précieuxnoob-ou-pas est précieuxnoob-ou-pas est précieux
Envoyer un message via MSN à noob-ou-pas
Icon1

heu merci de m'avoir mâché le boulot, mais j'ai un blème, le bloc que j'ai "crée" agit pareil qu'un invisible coin question block !
__________________
Citation:
N'empêche, un truc à essayer en boîte : t'accostes une fille, et là tu lui dit de manière super classe "tu danses ?" Bon si t'es pas trop moche, elle dit ok. Et là tu t'assoies à sa place "Vas-y je te regarde." Bon c'est clair, faut pas espérer finir la soirée avec parce que c'est foutu après ça...


Dernière modification par noob-ou-pas ; 23/02/2008 à 23h29.
noob-ou-pas est déconnecté   Réponse avec citation
Vieux 23/02/2008, 20h18   #14
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire

Ca va être dur de le régler comme ça.
Dis-moi d'abord ton code et le block acts like et je pourrais peut être te dire ce qui ne va pas
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png
SL est déconnecté   Réponse avec citation
Vieux 23/02/2008, 23h29   #15
noob-ou-pas
(futur) MANGAKA
 
Avatar de noob-ou-pas
 
Date d'inscription: 03/2007
Localisation: 06150
Messages: 346
noob-ou-pas est précieuxnoob-ou-pas est précieuxnoob-ou-pas est précieux
Envoyer un message via MSN à noob-ou-pas
Icon9

en fait j'ai mis ça comme code :
BEQ nothing
LDA #$1F
STA $1693
LDY #$01
RTS
nothing :
LDA $0DBF
CLC
ADC #$01
STA $0DBF
LDA #$01
STA $1DFC
RTS

et ensuite j'ai suivi la pratique pas à pas pour avoir un bloc-17-pièces
(seulement la partie pour l'insérer dans blktool, puis dans LM tkt)
en gros j'ai mis que ce bloc act like 124, et en valeur sur bloktool, 0,-1,-1,-1,-1,0, etc....
__________________
Citation:
N'empêche, un truc à essayer en boîte : t'accostes une fille, et là tu lui dit de manière super classe "tu danses ?" Bon si t'es pas trop moche, elle dit ok. Et là tu t'assoies à sa place "Vas-y je te regarde." Bon c'est clair, faut pas espérer finir la soirée avec parce que c'est foutu après ça...

noob-ou-pas est déconnecté   Réponse avec citation
Vieux 24/02/2008, 11h50   #16
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
Bon alors...
Il manque l'opcode pour comparer. Tu l'as peut être mis, Mais je le dis quand même :
LDA $0019
CMP #$00
BNE nothing
Les ... étaient pour ne pas répéter LDA..CMP..
Ensuite si tu as mis un block 1 pièce, et que tu met un code qui augmente de 1 le compteur, ca va te donner 2 pièces au lieu d'une. Soit tu garde le code :
LDA $0DBF
CLC
ADC #$01
STA $0DBF
LDA #$01
STA $1DFC
et tu met block acts like 129 (nothing block) ; soit tu enlève le code (ca donne :
nothing :
RTS )
et tu met le block acts like 124 (block 1 pièce).
Je préfère plutôt pour la deuxième solution car on évite un bug possible lorsque les pièces sont à 99. Donc préfère la solution où le block acts like est 124.
Voilà . Là ca devrait marcher (sauf peut être pour le BEQ/BNE (je penche pour BNE) dont je ne suis pas sûr)
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png

Dernière modification par SL ; 24/02/2008 à 11h52.
SL est déconnecté   Réponse avec citation
Vieux 25/02/2008, 16h21   #17
noob-ou-pas
(futur) MANGAKA
 
Avatar de noob-ou-pas
 
Date d'inscription: 03/2007
Localisation: 06150
Messages: 346
noob-ou-pas est précieuxnoob-ou-pas est précieuxnoob-ou-pas est précieux
Envoyer un message via MSN à noob-ou-pas
Icon9

sinon, au lieu de donner une pièce ce qui était déjà très généreux, il donne... kedal(mais sauf si mario pitit tu le sais), ça serait bien ça! pour ne pas te compliquer et m'emmeler les pinceaux, pourrais-tu me donner le code final qui conviendrait le mieux ?
je voudrais faire un copie-colle, c'est pas tres honnete mais j'y cale vraiment rien , meme avec ton tuto!
__________________
Citation:
N'empêche, un truc à essayer en boîte : t'accostes une fille, et là tu lui dit de manière super classe "tu danses ?" Bon si t'es pas trop moche, elle dit ok. Et là tu t'assoies à sa place "Vas-y je te regarde." Bon c'est clair, faut pas espérer finir la soirée avec parce que c'est foutu après ça...

noob-ou-pas est déconnecté   Réponse avec citation
Vieux 25/02/2008, 18h49   #18
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
J'ai pas tout compris... tu veux qu'il ne donne rien du tout à présent ? (lorsque mario pas = à chtit évidemment)
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png
SL est déconnecté   Réponse avec citation
Vieux 26/02/2008, 10h21   #19
noob-ou-pas
(futur) MANGAKA
 
Avatar de noob-ou-pas
 
Date d'inscription: 03/2007
Localisation: 06150
Messages: 346
noob-ou-pas est précieuxnoob-ou-pas est précieuxnoob-ou-pas est précieux
Envoyer un message via MSN à noob-ou-pas
Icon9

heu oui c'est ça T_T
désolé de te faire ièch
__________________
Citation:
N'empêche, un truc à essayer en boîte : t'accostes une fille, et là tu lui dit de manière super classe "tu danses ?" Bon si t'es pas trop moche, elle dit ok. Et là tu t'assoies à sa place "Vas-y je te regarde." Bon c'est clair, faut pas espérer finir la soirée avec parce que c'est foutu après ça...

noob-ou-pas est déconnecté   Réponse avec citation
Vieux 26/02/2008, 23h06   #20
SL
Yo-Yoshi
 
Avatar de SL
 
Date d'inscription: 01/2008
Localisation: 60
Messages: 301
SL a une aura spectaculaireSL a une aura spectaculaireSL a une aura spectaculaire
Mon cher noob-ou-pas, non tu ne me fais pas iech parce que l'ASM c'est mon truc . Je tiens quand même à m'excuser royalement car je viens de me pencher sur le block et je l'ai créer sans souci. Pourquoi alors je m'excuse ? parce que je t'ai embrouillé totalement avec tout mes trucs alors que c'est pourtant très simple . Je te donne le code que tu peux recopier ne t'en fais pas je ne t'en voudrai pas :
LDA $0019 charger le status de mario...
CMP #$00 ...comparer ac 0 (0=petit mario)...
BNE rien ... si mario pas petit, aller à rien (donc ne rien faire)...
LDA #$1F \
STA $1693 |...sinon faire agir le bloc comme un mushroom bloc...
LDY #$01 /
rien :
RTS ...retour.
Mettre le block acts like à 124 pour quand même avoir une pièce, et sur 129 pour rien du tout.
Et désolé pour le retard.
Edit : et c'est pas grave de pas comprendre à vrai dire c'est normal car je sais que j'ai dû vraiment t'embrouiller...
__________________
http://nsa01.casimages.com/img/2008/05/18/0805180242293334973.png

Dernière modification par SL ; 26/02/2008 à 23h08.
SL est déconnecté   Réponse avec citation
Réponse


Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non

Navigation rapide

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[faq] Lunar Magic, Les Premiers Pas sylvain Création 2571 23/02/2016 22h00
Logiciels Complémentaires à Lunar Magic et au hack de Super Mario World Lexou Création 114 30/06/2008 12h33
Custom Button Sur Mame 0.99 nikko-luv-mame Emulateurs Arcade 7 14/09/2005 15h43
Brevets Logiciels Blip Bla-Bla 2 28/08/2003 19h45
custom mame? G@mb1T Emulateurs Arcade 2 25/01/2003 15h27


Fuseau horaire GMT +2. Il est actuellement 00h19.


vBulletin® v.3.8.7, Copyright ©2000-2024, Jelsoft Enterprises Ltd.