IN PROGRESS!!!!!!
THe ASM guide for dummies (well... I'd say dummies that know regular codes pretty well)
______________________________________________________________
This guide is designed to help you understand asm, and little tools
and tidbits that could help you MODIFY codes. If you want to MAkE asm codes,
you're going to have to use Hamster's code making guide. Neverless, it is
always good to start at modifying and move on to making. BY modifying, I mean
actually have them serve a new purpose or improving on the original. NOT by
changing button activators or etc...
__________________________________________________________________
1. Understanding asm foundations
Asm is brand new code type. It is basically machine language.
With asm, you can change almost anything because you don't have to rely on
things that exist on ram dumps. You can change almost any part of the game.
You can directly intercept the game and inject your own code. It has a
different language than the one you normally see. It is still made of the numbers
1-9 and the letters A-F, but they come in different combinations. You will
soon find out how to understand all of this.
___________________________________________________________________
2. THe BUTTON ACTIVATOR
The first thing people learn in regular code modifying is button
activators! No code can be done without the push of some buttons (except a
few :D :P). Now... you must note one thing... There is no specific asm button
activator. It all varies on the depending code. Lets go through the types...
--------------------------------------------------------------------
A. The common activator
I'm pretty sure you've all seen the common 2834XXXX YYYYZZZZ. This (surprisingly)
is also found in some cases of asm. It is used in specific cases. Here is when it
is used.
These button activators are put ON TOP of the whole asm. On top of everything!
It should be the first line in your code. Now... You may be wondering what
this is doing in an asm code. Fact is, that this type is used when you want
the whole code to be activated when a button is pressed.
LET ME REPEAT IN BIG, SIMPLE, WORDS! :D
This is used when you want the WHOLE!!!!! code to be activated when
the button is pressed. Since numbers and letters can speak more than words though,
let me give you an example.
This is the TT slow down code by mdmwii (more on that at volder).
2834XXXX YYYYZZZZ
C0000000 00000004
3E2001A0 3A31FFFF
2C110000 41820008
4BFFFFF4 60000000
4E800020 00000000
Don't worry if the rest looks like gibberish. You'll understand it later.
For now, all wii need is the 2834 part.
Let me tell you how this code will work. When you press the specified button,
the WHOLE code runs. If you were to remove it, the code would keep on repeating.
(actually, it won't because there is something there that says "if no buttons
pressed, STOP!". Lets just assume that it wasn't there though.
So.... recap! 2834 is used on top of an asm code when you want the whole code
to be run at the push of a button.
--------------------------------------------------------------------
B. The (wait for it!) ASM button activator.
This may be something new to you. It will also have different rules.
Here is the ASM button activator:
3E408034 A252xxxx
7E600026 3A80zzzz
The x and z correspond to the regular values. Notice anything missing though?
It's the Y value. The "this button and others" pressed function is auto-
matically added. Normally, when y is 0 it means that "only this button pressed"
. However, if you want the "Not only this button pressed" effect, you had to subtract
and stuff. With asm, all your troubled are history (sort of).
Now... comes the usage.
This is only used INSIDE the asm code where you have different functions
needing different functions. Again. It is used as a button activator for
different functions within the asm code. A good example is freefly. It has
many different functions rise, move up, left, down etc... Each of these
functions within the asm code has the Asm activator on top of it.
Also... If you've already defined the XXXX value, you can just use this:
3A80zzzz 7E56A038
instead of the above code.
Ex for type 1:
Excerpt from freefly 1.0 code
C25AA700 0000000E
3E408034 A252xxxx
7E600026 3A80zzzz
7E56A038 7C16A000
40A20018 C03E0068
C0BE01C8 EC212828
D03E0068 4800002C
You can see the button activator being used in there. It goes above the code
you want to activate. If your code to activate is the first in the list, put it
below the first line. As shown in the picture, since the activator is the first
of many, it goes below the C2.... stuff.
Ex for type 2:
3A80zzzz 7E56A038
7C16A000 40A20018
C03E0068 C0BE01C8
EC21282A D03E0068
48000008 D03E0068
7E6FF120 3A400000
3A600000 3A800000
3AC00000 00000000
As you can see, the XXXX value is no longer needed. It was defined in the ex for 1.
These codes actually come one after another.
So put together you get...
C25AA700 0000000E
3E408034 A252xxxx
7E600026 3A80zzzz
7E56A038 7C16A000
40A20018 C03E0068
C0BE01C8 EC212828
D03E0068 4800002C
3A80zzzz 7E56A038
7C16A000 40A20018
C03E0068 C0BE01C8
EC21282A D03E0068
48000008 D03E0068
7E6FF120 3A400000
3A600000 3A800000
3AC00000 00000000
{INSERT MORE ABOUT THIS TOPIC HERE}
________________________________________________________________________
3. Hooking you into the game (Also knows as hooktype)
Now cometh the most important parthe of the code. (lol)
The hook tells the wii where to inject the payload.
Hooktypes mostly start with either C2 or D2.
In freefly, the hook is C25AA700 0000000E
{INSERT MORE ABOUT THIS TOPIC HERE. I DON'T REALLY KNOW MUCH}
___________________________________________________________________
4. Repeating... 4.Repeating... 4.Repeating... 4.Repeating... 4.Repeating... 4.Repeating :D
Ever wonder how people can loop asm codes? Now you will know how to.
You will learn how to make a code loop when a specific button is held
{INSERT MUCH MORE HERE AND CORRECT INCORRECT INFO}
{THIS IS JUST BASED ON MY THEORY. I NEED MDM'S HELP!!!}
2834XXXX YYYYZZZZ
C0000000 00000004
2C110000 41820008
PUT YOUR ASM CODE HERE
4E800020 00000000
___________________________________________________________________
5. NOPe!
The NOP is used when you want to disable an instruction from updating. THe word NOP is actually an opcode term. THe code version is 60000000.
An example would be something like C03E0068 60000000. (not a valid code).
This would mean "prevent the adress at C03... from updating. It would freeze the value.
Nop can even be a line itself. It just acts as a placeholder. It is an asm version of 00000000 00000000.
{INSERT MORE HERE ALREADY!!!}
__________________________________________________________________
6. Uh... If, and, switch, swutch, or, never, near, most, none?
The switch. A simple if command. If this is true, do this, if that is true, do that.
This can be done in asm with the cmpwi command.
2C11XXXX 4182YYYY The x's and y's are the things to be compared.
{INSERT AND CORRECT HERE!! PWEASE? :O}
__________________________________________________________________
7. {ADD MORE HERE?}
______________________________________________________________