[Résolu][R/B][8F]Les sous-programmes

Discussions dédiées à l'exécution de code (ACE) sur les trois premières générations (et la quatrième ?). Ce forum permet également de demander de l'aide ou de soumettre de nouvelles idées sur ce sujet !
Avatar du membre
Darkbrioche
Nouveau glitchologue
Messages : 12
Enregistré le : mer. 21 oct. 2015 21:58

[Résolu][R/B][8F]Les sous-programmes

Message par Darkbrioche » sam. 7 nov. 2015 11:46

Alors voilà, je ne sais pas si quelqu'un pourrait m'aider mais je cherche les "sous-programmes" ou "subroutines" (si ça vous parle plus) pour la version française utilisable avec le 8F code execution glitch (http://www.prama-initiative.com/index.p ... -execution)avec CALL $2920 par exemple (Du genre pour afficher du texte, faire jouer un son,...) car j'ai essayé celles de la version anglaise avec et sans décalages mais ça ne marche pas.

Voilà, je pense ne pas avoir été clair mais bon...

Avatar du membre
ISSOtm
Programmeur PRAMA
Messages : 206
Enregistré le : dim. 14 juin 2015 20:54
Localisation : Latios ! Utilise Flute Eon !
Contact :

Re: [R/B][8F]Les sous-programmes

Message par ISSOtm » sam. 7 nov. 2015 17:45

Il n'existe pas de moyen sûr de savoir si une routine a la même adresse dans la version US (voir Pokéred) et dans la version FR.

Le décalage de 5 octets n'est pas présent en ROM, je te suggère d'essayer avec la même adresse. Si ça ne marche pas, voilà une méthode :

Cherche dans Pokéred l'adresse de la routine que tu cherche. Généralement ça doit donner quelque chose comme ça (je cherchais la routine qui déclenche une bataille) :

Code : Tout sélectionner

StartBattle: ; 3c11e (f:411e)
Ce qui t'intéresse c'est f:411e, et pas 3c11e, attention.

Ensuite, ouvre BGB, lance une ROM américaine, et fais Ctrl+G dans la fenêtre du dessus et tape f:411e (dans mon cas).
J'obtiens ceci : Image
Mémorise quelques lignes en partant de celle en surbrillance.

Lance une ROM française, et va à la même adresse.
Image
Cherche le même code, mais n'oublie pas que les adresses mémoire sont décalées !
Donc dans mon cas, la routine est au même endroit. COOL !

Si ça ne marche pas, contacte-moi sur Skype (voir ma signature :P) ou si tu ne veux/peux pas, on continuera sur ce thread !
Le vrai aventurier du Bac+2.

Morpheo évolue en Troisticules !
ET PENDANT CE TEMPS-LÀ L'ÉQUIPE DE PRAMA SUR SKYPE a écrit : Haxel: site pas opti pour 4/3 aze
ISSOtm: "Allez vous faire foutre, utilisez un ordinateur moins vieux que vous"
Haxel: mon PC a 3 ans
Haxel: aze
gu3rdin4: Donc
gu3rdin4: Haxel < 3ans

Avatar du membre
Darkbrioche
Nouveau glitchologue
Messages : 12
Enregistré le : mer. 21 oct. 2015 21:58

Re: [R/B][8F]Les sous-programmes

Message par Darkbrioche » sam. 7 nov. 2015 21:22

OK merci, désolé (les screens et tout) :roll: , j'ai oublié de préciser que je ne suis pas sur émulateur et je ne peux pas en avoir :cry: (sinon je pense que je serais sur US :lol: ), donc tant pis, sinon est-ce que le décalage peut être très important ? Sinon il me suffit de tester plusieurs possibilité (en priant pour ma sauvegarde... Oui je flippe beaucoup à l'idée d'effacer ma sauvegarde)
Sinon pour Skype désolé :3 mais je peux qu'1 week-end/2
Mais, du coup, dans ton exemple, il faut faire CALL $411E (je freeze) ou CALL $4BBD (je crash) ou autre chose ? C'est peut-être que le menu start est ouvert ? Si oui comment le fermer ?

Avatar du membre
ISSOtm
Programmeur PRAMA
Messages : 206
Enregistré le : dim. 14 juin 2015 20:54
Localisation : Latios ! Utilise Flute Eon !
Contact :

Re: [R/B][8F]Les sous-programmes

Message par ISSOtm » dim. 8 nov. 2015 11:56

Déjà, est-ce que tu es sur Jaune ?

Ensuite, n'oublie pas que les routines sont censées êtres appelées dans un certain contexte.
Imagine demander à un ami "Prépare-moi cette recette" sans lui avoir préalablement fourgué ladite recette ?

Pour sûr qu'il va planter.

Oublie 12:4bbd, c'est une typo de ma part, je vais éditer le post pour corriger.


[EDIT] Je viens de me souvenir d'une chose.
Jeune padawan, suffisamment de choses sur la GameBoy tu ne connais pas :yoda:.

Dans f:411e, il y a 411e (l'adresse) et f, qui est l'ID de la banque.
Pour expliquer simplement, imagine que tu as un livre, mais que ton pote est trop con pour lire autre chose que les deux pages qui sont face à lui. Du coup il faut lui dire de tourner les pages.
Là c'est pareil ! Remplace le livre par la cartouche, le pote par la GameBoy, et les pages par ce qu'on appelle les "banques".
En fait la cartouche (je ne sais plus exactement) contient 512 Ko de ROM, mais la GameBoy ne peut en prendre en compte que 8k simultanément (c'est en fait plus compliqué que ça, mais je simplifie).
Du coup il y a une puce dans la cartouche (repose cet insecticide) qui permet de changer de banque (tourner les pages).

Donc, si je me souviens bien, quand tu utilise un item, le jeu passe sur la banque #3 (même si le code de ton item est en RAM, c'est la G1 je te rappelle ;)). Du coup si tu fais un call $411e, le jeu n'appelle pas "f:411e" mais "3:411e".
Je ne sais pas ce que c'est, btw, mais ça doit pas faire du bien :dvo:.

Du coup, jeune padawan, comment de banque changer tu te demandes, raison n'ai-je pas ?
Facile ! Il suffit d'écrire à l'adresse mémoire $2000 (en fait, entre $2000 et $3FFF mais par convention on utilise $2000, c'est comme ça c'est un nombre rond en hexa et je trouve que tu poses beaucoup trop de questions je vais devoir t'éliminer en plus regarde ça ma phrase est super longue y'a trop de texte rglblblbl je me noie adieu Game Freak cruel)
Ta sauvegarde ne pâtira pas si tant est que tu n'écris RIEN dans la plage d'adresses $0000 à $1FFF à part des zéros.

Ah aussi, n'oublie pas de mettre la bonne banque de données pour quand ton script quittera (si tu ouvre le livre sur une recette de riz aux marrons alors que ton pote, je rappelle qu'il est con, était en train de faire une fondue savoyarde et que tu lui rends le livre à la page du riz aux marrons, l'assemblage moléculaire obtenu va probablement avoir une tronche bizarre, voire endommager les casseroles. Maintenant remplace l'assemblage moléculaire susnommé par ton expérience de jeu et les casseroles par ta sauvegarde, et tu auras le droit de m'appeler le roi des analogies) sinon il y aura crash.

Je suis certain que tu as dû relire le début de la phrase précédente après avoir lu la parenthèse. Si c'est le cas j'ai gagné :lama2:
Modifié en dernier par ISSOtm le dim. 8 nov. 2015 12:18, modifié 1 fois.
Raison : Ajout de la vraie explication, que j'avais pas mise parce que j'étais con :qwe:
Le vrai aventurier du Bac+2.

Morpheo évolue en Troisticules !
ET PENDANT CE TEMPS-LÀ L'ÉQUIPE DE PRAMA SUR SKYPE a écrit : Haxel: site pas opti pour 4/3 aze
ISSOtm: "Allez vous faire foutre, utilisez un ordinateur moins vieux que vous"
Haxel: mon PC a 3 ans
Haxel: aze
gu3rdin4: Donc
gu3rdin4: Haxel < 3ans

Avatar du membre
Darkbrioche
Nouveau glitchologue
Messages : 12
Enregistré le : mer. 21 oct. 2015 21:58

Re: [R/B][8F]Les sous-programmes

Message par Darkbrioche » dim. 8 nov. 2015 14:32

XD ok gg t'as gagné sinon merci, faut que j'essaye de bidouiller dans ce cas là et puis je verrai ce que ça donne... De toute façon, ma sauvegarde ne craint rien du coup (même si je vais pleut être tenter de mettre des nombres de façon random... NON NON STOP !). Oh wait ! Faut pas que j'appelle une routine qui efface ma sauvegarde ! Bon, au pire ce sera l'occasion de tester le save abuse glitch :lol: mais je risque de galérer (je me souviens du temps où j'essayais de faire un bad clone sur or/argent, j'ai jamais réussi et j'ai filé mon jeu à un pote mais ça fait au moins 5 ans. Mais bon, je m'égare de toute façon la 1G c'est mieux)
Et je suis sur pokemon bleu.
Et il y a un décalage entre EU et US dans les adresses entre $2000 et $3FFF ? (parce que moi je respecte les conventions, je suis pas un "thug" comme disent les jeunes au jour d'aujourd'hui)
Et j'ai du mal à utiliser Pokered car comme me le disait notre chère maître Yoda avant de mourir (snif) "Pas doué tu est jeune padawan."
Bon, sur ce je vais pleurer sur ma gameboy. (Advance →SP← et ouais j'ai les moyens)

Avatar du membre
ISSOtm
Programmeur PRAMA
Messages : 206
Enregistré le : dim. 14 juin 2015 20:54
Localisation : Latios ! Utilise Flute Eon !
Contact :

Re: [R/B][8F]Les sous-programmes

Message par ISSOtm » dim. 8 nov. 2015 16:22

Rouge et Bleu, d'un point de vue code, c'est pas différent (ou si peu).
Non, il n'y a pas de décalage entre EU et US par rapport à $2000 et $3FFF ou $0000 et $1FFFF, c'est interne au hardware de la GameBoy, rien à voir avec le jeu ;)

Tu n'es pas "pas doué", tu es juste un pénis en anglais, avoue :hap:
Crois-moi, Pokéred est une vraie mine d'or.

Bah, moi j'ai pas de SP mais je sais ce que c'est et j'en voie pas l'intérêt :trololol:
Le vrai aventurier du Bac+2.

Morpheo évolue en Troisticules !
ET PENDANT CE TEMPS-LÀ L'ÉQUIPE DE PRAMA SUR SKYPE a écrit : Haxel: site pas opti pour 4/3 aze
ISSOtm: "Allez vous faire foutre, utilisez un ordinateur moins vieux que vous"
Haxel: mon PC a 3 ans
Haxel: aze
gu3rdin4: Donc
gu3rdin4: Haxel < 3ans

Avatar du membre
Darkbrioche
Nouveau glitchologue
Messages : 12
Enregistré le : mer. 21 oct. 2015 21:58

Re: [R/B][8F]Les sous-programmes

Message par Darkbrioche » dim. 8 nov. 2015 16:48

Alors non je t'arrête tout de suite, je suis assez bon en anglais (parce que je suis modeste) c'est juste que je ne connais pas ce vocabulaire et que c'est mal rangé on dirait la chambre de mon petit frère. [mauvaise foi désactivée]
Bon sinon j'ai toujours pas testé je m'y met !

[EDIT] J'ai testé ça :

Code : Tout sélectionner

21 00 20 3E CD 22 3E 1E
22 3E 41 22 3E C9 77 C3
00 20

Code : Tout sélectionner

Ce qui donne :
LD HL,$2000
LD A,$CD
LDI (HL),A
LD A,$1E
LDI (HL),A
LD A,41
LDI (HL),A
LD A,C9
LD (HL),A
JP $2000
ça met juste le jeu en couleur négatif avec plein de barres blanches j'ai du manquer une subtilité : le glitch c'est tout un art ya plus de débat à avoir le 10ème art c'est le glitch !

Avatar du membre
ISSOtm
Programmeur PRAMA
Messages : 206
Enregistré le : dim. 14 juin 2015 20:54
Localisation : Latios ! Utilise Flute Eon !
Contact :

Re: [R/B][8F]Les sous-programmes

Message par ISSOtm » mar. 10 nov. 2015 22:23

Ce que fait ton code :

ld hl, $2000
ld a, $CD
ldi (hl), a
Là, tu as chargé la banque $CD (j'ai omis de préciser : les banques s'arrêtent à $7F)

ld a, $1E
ldi (hl), a
Là tu as chargé la banque 1E

ld a, $41
ldi (hl), a
... Devine :D

ld a, $C9
ld (hl), a
... Devine ! :D

jp $2000
Tu sautes donc à l'adresse $C9:2000, donc non, ça fait pas ce à quoi tu t'attendais :)


Juste un truc : la ROM ($0000 - $7FFF) n'est pas accessible en écriture. Je suppose que tu voulais écrire un script, mais tu ne peux pas écrire en ROM.
Le vrai aventurier du Bac+2.

Morpheo évolue en Troisticules !
ET PENDANT CE TEMPS-LÀ L'ÉQUIPE DE PRAMA SUR SKYPE a écrit : Haxel: site pas opti pour 4/3 aze
ISSOtm: "Allez vous faire foutre, utilisez un ordinateur moins vieux que vous"
Haxel: mon PC a 3 ans
Haxel: aze
gu3rdin4: Donc
gu3rdin4: Haxel < 3ans

Avatar du membre
Darkbrioche
Nouveau glitchologue
Messages : 12
Enregistré le : mer. 21 oct. 2015 21:58

Re: [R/B][8F]Les sous-programmes

Message par Darkbrioche » mer. 11 nov. 2015 06:23

Ok, je savais qu'on ne peut pas modifier la ROM (mais je pensais que c'était la RAM :D) mais alors j'ai pas compris, on peut rien écrire aux adresses entre $0000 et $1FFF :o !
Ni même entre $2000 et $3FFF, non ?!
Je comprends pas vite et lentement et faut m'expliquer longtemps moi... :lol:
J'ai testé ça :

Code : Tout sélectionner

LD HL,$2000
LD (HL),$0F
CALL 411E
RET
(j'ai encore crash)

Puis sur le forum de GCL j'ai trouvé un lien vers ça : http://hax.iimarck.us/viewtopic.php?id=4007
Et j'ai fais ça :

Code : Tout sélectionner

LD B,$0F
LD HL,$411E
CALL $35F3
RET
Et...Magie :o !
Un hypotrempe niv.29 apparaît ! (à ce moment j' était tellement fier de moi)
(Malgré quelques graphismes un peu glitché)
(ça a freeze à ma première attaque mais c'était cool)

Avatar du membre
ISSOtm
Programmeur PRAMA
Messages : 206
Enregistré le : dim. 14 juin 2015 20:54
Localisation : Latios ! Utilise Flute Eon !
Contact :

Re: [R/B][8F]Les sous-programmes

Message par ISSOtm » mer. 11 nov. 2015 11:41

En fait, tu ne peux pas écrire en ROM, mais tu peux toujours essayer "ld hl, $2000 \ ld (hl), $0F", et voilà ce que ça fait :
  1. Le processeur veut écrire à l'adresse $2000 la valeur $0F
  2. Il met dans son bus mémoire "$2000", dans son bus données "$0F", et passe les routeurs en mode écriture
  3. Le circuit de la Game Boy reconnaît que $2000 correspond à une zone de données dans la cartouche
  4. Le circuit de la Game Boy transmet à la cartouche la valeur du bus mémoire et celle du bus données
  5. Le MBC (la puce dans la cartouche qui s'occupe de gérer le bankswitch) détecte une tentative d'écriture sur la plage $2000-$3FFF
  6. Il interprète ça comme un bankswitch
  7. Il effectue le bankswitch
Si ta gameboy a crashé, je vois peut-être pourquoi? Je vais jeter un oeil à Pokéred, et je reviens après.

[EDIT]

Code : Tout sélectionner

Bankswitch:: ; 35d6 (0:35d6)
; self-contained bankswitch, use this when not in the home bank
; switches to the bank in b
	ld a,[H_LOADEDROMBANK]
	push af
	ld a,b
	ld [H_LOADEDROMBANK],a
	ld [MBC1RomBank],a
	ld bc,.Return
	push bc
	jp [hl]
.Return
	pop bc
	ld a,b
	ld [H_LOADEDROMBANK],a
	ld [MBC1RomBank],a
	ret
Voilà le truc que tu utilises, du coup.
Si tu as crashé, je pense que c'est à cause des interruptions ; je m'explique.
60 fois par seconde, le jeu exécute une routine d'affichage. Celle-ci n'est apparemment pas stockée dans la banque 0 (statique, toujours entre $0000 et $1FFF), du coup le jeu utilise "H_LOADEDROMBANK" pour savoir sur quelle banque de données revenir. Comme ton premier code ne modifie pas cette adresse, je suppose que la routine d'affichage a chargé la mauvaise banque en ayant fini, d'où le crash.
Là tu as deux choix :
* Soit tu utilises Bankswitch (ce que tu as fait)
* Soit tu désactive les interruptions (je crois qu'il faut mettre $FFFF à $00), mais je ne te le recommenderais pas.

Voilà, maintenant tu sais comment trouver les sous-programmes et comment les exécuter !
Le vrai aventurier du Bac+2.

Morpheo évolue en Troisticules !
ET PENDANT CE TEMPS-LÀ L'ÉQUIPE DE PRAMA SUR SKYPE a écrit : Haxel: site pas opti pour 4/3 aze
ISSOtm: "Allez vous faire foutre, utilisez un ordinateur moins vieux que vous"
Haxel: mon PC a 3 ans
Haxel: aze
gu3rdin4: Donc
gu3rdin4: Haxel < 3ans

Répondre