WiiRD vs. Cheat Engine

Started by Igglyboo, September 22, 2008, 03:32:37 AM

Previous topic - Next topic

Igglyboo

I am going to be getting a USB gecko very soon and I want to start making codes.
By what i have gathered so far, WiiRD is a lot like cheat engine.
I am decently experienced in Cheat Engine and was wondering how WiiRD stacks up to this.

Are they anything alike or will i have to learn everything over again to use WiiRD? If they are alike, how so and how not?

Panda On Smack

It's pretty easy to work out and if you are used to do this sort of thing then you'll be fine

Romaap

yeah, it looks a bit like cheat engine.
you put in a number(in hex) and WiiRD looks for all the memory adresses that has that value.
after a few searches there is 1(sometimes more) mem adress.
then you can change the value, freeze it, and that sort of things.

Igglyboo

why for most codes are they 10 lines plus?
in CE when i change a memory value it is 1 line most of the time

And what is a pointer adress?

TheDuck

Check this video tutorial out. It has everything you need to know about hacking the Wii's ram. It does go over pointers too.
Level up my brawler card!

My Brawl FC:
3093-6754-3475
My Wii Number:
2990-6191-6196-0153
PM me with your FC and I'll add you! :love

Link

For the codes: what's one line in cheat engine unfortunately has to be multi line in WiiRd for many reasons. The code types developed for the Wii are not just address pokes like the ones Cheat Engine shows you in its list.

Cheat Engine shows you: Address AAAAAAAA -> Type: TT --> Value: VVVVVVVV

And now our code types are designed to contain all this information. Therefore there are seperated code types for 8 bit, 16 bit and 32 bit. We are using so-called identifiers for telling the type to our code handler. The identifier is given with the first two digits of the left code part.

In case it is a regular 32 bit code.. the identifier is 04 - that means all codes beginning with 04 and 05 are identified as 32 bit codes. However.. 04 and 05 --> that means we're spanning from 04000000 to 05FFFFFF - that's 32 MB of memory, the Wii however has 88 MB - so this code type alone isn't sufficient.

Normally the base address is 80000000. In that case 04123458 means: write to 80123458 - 05123458 means: write to 81123458 -> because 04/05 means: write to [baseaddress+XXXXXXX].

However.. now imagine our address would be 90123458 - that's a valid Wii address yet the 04/05 code type can't reach it if it can only span from 80000000 to 81FFFFFF with base address 80000000. Therefore we need one additional line to change the base address:

42000000 90000000
04123458 ________

Now 42000000 90000000 changes the base address to 90000000 - and now 04123458 again writes to [base address+XXXXXXX] --> 90123458 - success!

For compatibility reasons these codes should be terminated: meaning another line. The universal terminator is E0000000 80008000 .

So the final code would be:

42000000 90000000
04123458 ________
E0000000 80008000

Now for some comfort WiiRd code handler doesn't only offer the base address - the base address must be a multiple of 02000000 and might not be the best choice in all cases. Therefore we also have the pointer address. And it's really simple: to change a code from base address to pointer.. just add 10 to the code type. So while 04/05 is [base + XXXXXXX] 14/15 is [pointer + XXXXXXX]. The code above with pointers would look the following way:

4A000000 90000000
14123458 ________
E0000000 80008000

You see.. 42 changed to 4A (42 = Set base, 4A = Set ptr). 04 changed to 14 - the terminator remained.

Cheat engine also has excellent pointer support btw. . A pointer is used where a memory address changes all the time. However on that one: watch Foxx' video! It is explaining pointers in Mario Galaxy.