PDA

View Full Version : Mastermind_X proudly presents: The Shiny Hack


Mastermind_X
July 10th, 2007, 01:15 PM
Hi guys,

some months ago, zel was able to integrate the shiny Gyarados in his great "Shiny Gold" hack. His 'informer' wanted to stay anonymous due to different reasons.

But today, I'm back, to provide the secret of the shiny Gyarados to all of you. Dunno, if anybody took a closer look to the script of the Gyarados. The whole hack works with ASM. So it isn't really easy to integrate and I wrote this tutorial, which was used by zel yet. It can by found here.

http://sfc.pokemon-inside.net/lesson.php?id=16

There is a Dutch version planned. Maybe someone wants to translate it to another language? (not german, that could I do by myself)

I'm sorry to say, my homepage is nearly completely in german. Maybe I can find the time to translate it...

Any feedback would be appreciated.

//Edit:

Some additions:
http://sfc.pokemon-inside.net/lesson.php?id=17

Naoshi
July 14th, 2007, 04:49 PM
This sounds promising. I'm surprised no one has commented here.

Mastermind_X
July 15th, 2007, 09:35 AM
Me too. =\

A Italian Version is finished so far. I'll post it later on.

D-Trogh
July 15th, 2007, 09:57 AM
Oh, so Andrea allready translated the tutorial..
Well.. I'm a lil' busy to translate the tutorial, I'm sorry.
I'm back in my HP-'obsession':P

Btw, welcome on PC ;)

YellowPen
July 16th, 2007, 02:28 AM
apparntly if you lose to shiny gararydos, every pokemon becomes shiny, but i think it can be fix easily

Mastermind_X
July 16th, 2007, 02:51 AM
Yeah. That's true. I'll have to find a solution for that.

GreenZ
July 16th, 2007, 03:13 AM
Hm... I did it in my Ruby hack and it works very well. I tested what happened after I lose in battle with this shiny poke and other wild or trainer pokes didn't become shiny...

But I'm happy that this works also for giving pokemon ^^ Great job ^^

Argent Crusader
July 17th, 2007, 05:41 AM
Um, i can ask you, Mastermind_X, if you can do a "Complete Hex Guide" just the Hex steps, and, for Emerald, plz!!!

jack276
July 18th, 2007, 07:50 AM
can this work for trainers pokemon?

HackMew
July 18th, 2007, 08:56 AM
can this work for trainers pokemon?

Yes, the Shiny Hack will work for trainers' Pokémon as well.

Teh Baro
July 21st, 2007, 08:24 AM
The script in shiny gold (which is exactly this one) is not "Do a shiny battle", it's more like "Set every pokémon shiny, do a common battle, set every pokémon back to normal". For a shiny battle, we (well, not me, the ones who know asm and crap) should work on an asm script that makes a single shiny battle, with a different trick other than this one.

Mastermind_X
July 22nd, 2007, 10:46 AM
That's the easiest solution. Do you really think, that there is an command like "start shiny battle" in the ingame-scriptengine?
Of course, it would be possible to extend the "wildbattle" command by patching the codehandler, but that would require a huge amount of effort. I'm also really pleased about you considering ASM as "crap". Hf in hacking it on the standard way.

jdogpwnz
August 3rd, 2007, 11:09 AM
Um.....when will yor site have an english version?

BlackRainbow*
August 18th, 2007, 02:45 AM
MX i just want to ask you if its possible to convert Memory Viewer adress into hex code?

D-Trogh
August 18th, 2007, 03:00 AM
I'm not M_X but err.. What do you mean exactly?
In the memory viewer you see the bytes in HEX..
Or do you mean call a memory adress like 02022000?
» 050020020208 [I hope I"m not wrong here XD]
»» This will goto that adress.. XD
-MEH- I probably don't help you here.. wait for Mastermind_X ;)

BlackRainbow*
August 18th, 2007, 05:01 AM
yes that's what i mean.
The number in memory viewer is 05000042 its possible to convert it to hexnumber

Mastermind_X
August 18th, 2007, 06:28 AM
I'm not M_X but err.. What do you mean exactly?
In the memory viewer you see the bytes in HEX..
Or do you mean call a memory adress like 02022000?
» 050020020208 [I hope I"m not wrong here XD]
»» This will goto that adress.. XD
-MEH- I probably don't help you here.. wait for Mastermind_X ;)

Uhm.. it is kinda useless to change the CPU's position to the RAM since there aren't any instructions. (In the normal case)
And, by the way, '08' which you use for the pointer is the internal GBA-Adressing for "ROM".

<special stuff>
'02' stands for the 256 KB "EWRAM". Other possible start-digits are:
'00' => BIOS
'03' => IWRAM (32KB)
'04' => I/O
'05' => Palette RAM (PRAM)
'06' => VRAM (Maps, BGs, etc... , on the Display)
'07' => OAM (Sprites)
'08' => ROM
'0A' => ROM (waitstate 2)
'0C' => ROM (waitstate 3)
'0E' => SRAM (the Save on the cartridge)

</special stuff>

Well. For the common ROM-hacker only 08 is interesting. The other things only are important if you're playing with ASM. ^^

BlackRainbow*
August 18th, 2007, 06:40 AM
'05' => Palette RAM (PRAM)
Okai i've want to edit paletts at offset 05000042 How to do that? because if you go into offset number 05000042 in hexeditor dosen't work.

Mastermind_X
September 21st, 2007, 05:33 AM
*bump*

So, I finished the tutorial for fixing the two problems reported above. You can read it there:

http://sfc.pokemon-inside.net/lesson.php?id=17&lang=en

(15 postings now =) )

ZodiacDaGreat
October 4th, 2007, 04:51 PM
Hey Mastermind, your shiny tutorial only works for Fire Red, can you make one for Ruby[AXVE]cause I'm trying to hack Ruby, and how bout the Day/Night Script does it work on Ruby?? I'm sorry if I sound rude.

Teddiursa™
February 9th, 2008, 09:44 AM
Works for me! i think it was very smart to do this, makes the game cool
(Read my Signiture)

Teh Baro
February 14th, 2008, 02:47 PM
The improved version doesn't work for me... (the first one does).
I just copied byte by byte the routine under the epigraph "Second issue: The infinity of shinys", permuting the words (ABCD ->CD AB), the only difference is that instead of 71b700 I wrote it at 742300, and in 0x406d0 I wrote 00 23 74 instead of 00 b7 71 (for obvious reasons).

I just opened the memory viewer at the location where I wrote the stuff in 16-bit mode and assured that I haven't commited a mistake copying the words. They're identical.

Am I the only one having issues with this? Because I just don't understand where's the mistake.

ZodiacDaGreat
February 14th, 2008, 08:27 PM
The improved version doesn't work for me... (the first one does).
I just copied byte by byte the routine under the epigraph "Second issue: The infinity of shinys", permuting the words (ABCD ->CD AB), the only difference is that instead of 71b700 I wrote it at 742300, and in 0x406d0 I wrote 00 23 74 instead of 00 b7 71 (for obvious reasons).

I just opened the memory viewer at the location where I wrote the stuff in 16-bit mode and assured that I haven't commited a mistake copying the words. They're identical.

Am I the only one having issues with this? Because I just don't understand where's the mistake.

Yeah! I 'am having the same problem, first I tried it on Fire Red, when I walked into the grass the game restarted, and same thing happens for Ruby...
I think there's no mistake there...

@Mastermind_X --> Can you tell whats going on??? and by the way hows the development going for the Day/Night System for Fire Red/Leaf Green, cause I think you completed the one for Ruby/Emerald/Sapphire eh??? What's the other two projects you're working on???
I just wanted to know!!

Teh Baro
February 15th, 2008, 03:03 AM
My rom doesn't restart, it just works as always. Put the 1 at 02022000 in the memory and nothing happened. Tried the script with the callasm and doesn't work either, although the memory is altered as it should (I suppose that later on, when the edited version works, I'd have to remove a callasm because the game will already reset the flag for me, which by the way, it doesn't)

with the old asm script, it worked perfectly, so the problem is in the repointed asm script in &H742300 (&H71b700 in the original) and not in the one at &H406d0.
Since the one that worked and the new one were exactly in the same hex positions, definitively the problem is not on putting the stuff in different positions of rom, which wouldn't make any sense.
Assuming Mastermind_X's script is right (which I may doubt, maybe he commited a mistake when copying it or something), I'm puzzled

Mastermind_X
February 15th, 2008, 07:36 AM
http://sfc.pokemon-inside.net/news-331

Ops. ^__^ Thank you very much.

Teh Baro
February 15th, 2008, 11:25 AM
http://sfc.pokemon-inside.net/news-331

Ops. ^__^ Thank you very much.
Works now! Great success!
You're the man, mmx!

ZodiacDaGreat
February 15th, 2008, 01:10 PM
Um...I tried the bugfixed version, this time the rom doesnt crash, but how do you make a shiny ecounter...I've been trying for almost one hour, can anyone help??? Sorry for being a loser at ASM,

Teh Baro
February 15th, 2008, 01:28 PM
Um...I tried the bugfixed version, this time the rom doesnt crash, but how do you make a shiny ecounter...I've been trying for almost one hour, can anyone help??? Sorry for being a loser at ASM,
First, you should test if it works:

In VBA, go to tools/memory viewer and go to 02022000 (there's a goto box in the corner). make the first byte be 01 and hit the box "automatic update". Encounter a pokemon. Shiny? success! the 01 you wrote is now a 00 again? Great success!

Now, if you haven't already done it, copy the asm script that automatically writes the 01 in the memory like you just did in the test:
0071b770h: 07 B5 03 48 01 68 01 22 51 40 01 60 07 BD 00 00 ; .µ.H.h."Q@.`.½..
0071b780h: 00 20 02 02 FF FF FF FF FF FF FF FF FF FF FF FF ; . ..ÿÿÿÿÿÿÿÿÿÿÿÿ

Then you make a common script, with the messages and all the stuff you wish.
Before the battle, use the command
callasm 0xA 'where A is the offset where you write the asm script above+1. In the example, callasm 0x71b771.

ZodiacDaGreat
February 15th, 2008, 03:32 PM
First, you should test if it works:

In VBA, go to tools/memory viewer and go to 02022000 (there's a goto box in the corner). make the first byte be 01 and hit the box "automatic update". Encounter a pokemon. Shiny? success! the 01 you wrote is now a 00 again? Great success!

Now, if you haven't already done it, copy the asm script that automatically writes the 01 in the memory like you just did in the test:
0071b770h: 07 B5 03 48 01 68 01 22 51 40 01 60 07 BD 00 00 ; .µ.H.h."Q@.`.½..
0071b780h: 00 20 02 02 FF FF FF FF FF FF FF FF FF FF FF FF ; . ..ÿÿÿÿÿÿÿÿÿÿÿÿ

Then you make a common script, with the messages and all the stuff you wish.
Before the battle, use the command
callasm 0xA 'where A is the offset where you write the asm script above+1. In the example, callasm 0x71b771.

Thanks alot Baro! It works fine for Fire Red but not ruby, cause I want to implement it on Ruby.

In Ruby, the game doesn't crash, everything is going fine but when I put 01 @ 02022000 the 01 turns back to 00 when I ecounter a pokemon, and its not shiny...Well? Can you help again????

linkandzelda
February 16th, 2008, 07:22 PM
hi.
i have gotten this to work properly at last but the offest MMX used (0x71b700) i have things there and i dont want to over write them (because i dont know what it is). I cant seem to get this to work if i place the modified code anywhere else in the rom. please can sombody help me with this.

edit: i ve got it to work from another place in the rom but not without the bit at 0x71b700. i have copyed 0x71b700 to 0x83b700 and did callasm 0x83b771 and it works but not without the same thing at 0x71b700. any suggestions?

thanks in advance
link

Teh Baro
February 17th, 2008, 06:29 AM
hi.
i have gotten this to work properly at last but the offest MMX used (0x71b700) i have things there and i dont want to over write them (because i dont know what it is). I cant seem to get this to work if i place the modified code anywhere else in the rom. please can sombody help me with this.

edit: i ve got it to work from another place in the rom but not without the bit at 0x71b700. i have copyed 0x71b700 to 0x83b700 and did callasm 0x83b771 and it works but not without the same thing at 0x71b700. any suggestions?

thanks in advance
link
In the code you write at 0x04somewhat, there's a part that goes 01 b7 71 08, it's a pointer to 0x71b701. Write the code wherever you want and edit the pointer. Remember that you have to add 1 for the pointer. (ex: you write it at 0x765430, the pointer is 31 54 76 08)

linkandzelda
February 17th, 2008, 12:21 PM
In the code you write at 0x04somewhat, there's a part that goes 01 b7 71 08, it's a pointer to 0x71b701. Write the code wherever you want and edit the pointer. Remember that you have to add 1 for the pointer. (ex: you write it at 0x765430, the pointer is 31 54 76 08)


thanks so much again teh baro. you are an amazing hacker. how did you manage to become so good? thank you so much.

link

Mastermind_X
February 17th, 2008, 02:43 PM
Nice to see some people who got it to work. Did anybody check the random-thingy? =)

ZodiacDaGreat
February 17th, 2008, 11:56 PM
I tried it!!
It work's 100% on Fire Red but not on Ruby,
Um...Can anyone tell me why the random thingy dont work for ruby???

The thing with ruby is: Well, I've input the code - correctly, when I put 01 @ 02022000 and ecounter a pokemon, the 01 quickly turns back to 00 and the pokemon's not shiny, same thing happens with the callasm thingy...

Perhaps! The offset of the random generator's for Fire Red only - I'm confused here? How come it doesn't work for Ruby??? Can anyone help??? This whole thing is confusing for Ruby.

Hardy Har Har
April 15th, 2008, 02:22 AM
is there any other way to make ALL wild pokemon shiny? i tried using the shiny hack maker but did not work.

Mastermind_X
April 16th, 2008, 11:49 AM
Write a script which constantly writes 01 to 02022000.

Derlo
April 16th, 2008, 06:39 PM
I have a question...
Is there the possibility to just do a single pokemon (in a total of more than 2) of the trainer Shiny to be (how in the battle tower)??
It ties now only got to do with all of the pokemons...