[O/A] détournement d'OAM DMA

Ici, vous pouvez poster les glitches et autres contributions que vous pensez avoir découvert ou réalisé dans les jeux, avec de préférence une photo le cas échéant. S'il est validé par notre équipe, il sera ajouté au site web !
Répondre
Tagada67
Nouveau glitchologue
Messages : 11
Enregistré le : ven. 11 août 2017 18:28

[O/A] détournement d'OAM DMA

Message par Tagada67 » lun. 27 déc. 2021 02:34

Bonsoir les glitchologues !

Après une longue période d'inactivité, j'ai voulu me remettre à l'étude du jeu pokémon !
Et forcément, je suis retourné sur votre site, c'est une vraie mine d'or, on y trouve juste absolument tout !! (ou presque ^^)
Je joue sur mon émulateur gba sur iphone, et également sur bgb sur mon ordi pour analyser certaines mémoires.
Après des tas d'essais infructueux pour obtenir un bad clone sur version Argent, j'ai finalement appliqué une méthode trouvée sur glitchcity qui marche à tous les coups.

Bref, après quelques codes de testés avec mon ACE objets/boîtes, j'ai vu sur le site celui du passe-muraille, qui nous oblige à utiliser la CT17 dans la poche Balls à chaque déplacement !
(si utilisé avec l'ACE)
Vous faites référence au détournement d'OAM DMA, mais vous n'avez pas encore documenté cela (manque de temps et/ou de personnes ?), et après quelques recherches (aucune ressource française....), j'ai finalement pu pondre un code exemple pour le passe-muraille, qui s'active et se désactive à volonté ! (en écrivant dans la HRAM)

J'espère que celui-ci pourra vous être utile !
Voilà la bestiole :

Premier code à éxecuter pour obtenir le bon nombre de CTs dans votre sac.
(J'utilise un Maraiste avec CT01 et retour, donc ce code ne fonctionnera pas avec le setup de base, mais vous pouvez toujours utiliser le code présent sur le site pour obtenir le nombre des CTs en question ^^)

Boîte 1 : p0péC♀?d
Boîte 2 : éA♀p0&?n'
Boîte 3 : éH♀0G?8*
Boîte 4 : éB♀p0*?b
Boîte 5 : é*♀p0*?c
Boîte 6 : éD♀éE♀**
Boîte 7 : éF♀éG♀n' Chaque étoile est un espace

Après exécution du code vous obtiendrez dans votre poche CTs :

CT02 x33 (ld hl, d16)
CT03 x163 (0xA3)
CT04 x206 (0xCE) ($CEA3, gestion des collisions vers le bas)
CT05 x175 (xor a)
CT06 x34 (ld (hl+), a)
CT07 x34 (ld (hl+), a)
CT08 x34 (ld (hl+), a)
CT09 x34 (ld (hl+), a)
CT10 x201 (ret)

Deuxième code, (compatible avec Maraiste CT02 tenue) à exécuter chaque fois que vous souhaitez activer/désactiver le passe-muraille !

Boîte 1 : Ap0&éM9p
Boîte 2 : 0♀éL9p0*
Boîte 3 : éK94J98A
Boîte 4 : p'!m'p0*?b
Boîte 5 : éJ9n'Ap0&
Boîte 6 : ?n'éJ9n' Chaque étoile est un espace

Ce code écrit les choses suivantes dans la mémoire :
Si $FF89=0xC9 (ret) alors il écrit 0x21 (ld hl, d16)
Sinon $FF89=0x21, alors il replace le 0xC9 d'origine
$FF8A 0x7F
$FF8B 0xF5
$FF8C jp hl

Vous aurez compris que le prog counter saute vers $D57F qui est la 2ème CT de ma poche à CTs avant de reprendre son boulot, bingo, mon code est constamment rafraîchi !
On peut bien sur ajouter/modifier les instructions rafraîchies en modifiant les CTs, à voir ce qu'il est possible de faire.
Je ne vous ai pas fourni l'asm correspondant aux codes boîtes, ça aurait fait un trop gros pâté qui donne pas super envie à lire.

A bientôt ! :D

Avatar du membre
Guerdi
Community manager
Messages : 566
Enregistré le : mar. 8 juil. 2014 23:09
Localisation : Quelque part dans le nuage du clavardage téléversé.
Contact :

Re: [O/A] détournement d'OAM DMA

Message par Guerdi » dim. 3 juil. 2022 22:43

Salut le glitchologue :hap:

Effectivement, on manque de temps et de personnel, mais c'est prévu qu'on documente tout ça incessamment sous peu (ou pas).
En tout cas merci de ta contribution, ça nous sera sûrement utile :D
Image
Ouais j'ai fais cette signature en 5 minutes.

Répondre