Assembly Tutorial

@Arch was thinking of, as part of the birthday event for FEU, to launch a series of Wiki Tutorials, Assembly/Debugging included. So if that gets started, we can contribute to that.

Also, Blazer’s tutorial is where I started, after getting basic knowledge of representation of data elsewhere. All debugging I’ve learned through experience.

I guess that’s be cool to get a “guest article” in there
Especially if I make a series out of it

Pls do.

What format would be best do you think?
YT video? Text with screenshots? Other?

Text with screenshots. Writing ASM seems like it’d be too focused on understanding to actually watch a video on–there’d be too much pausing to make a video format worth it. Also, it’d be easier to ask questions by directly quoting text that needs clarifying, along with edits to the tutorial if/when they’re needed.

It’d probably be best to make it a wiki thing so other hackers could come in and explain things better or correct mistakes if needed or if someone just has more knowledge on a particular topic than I

I know that the biggest hangup that I had when trying to dabble with assembly in regards to the GBA was how to actually do something with it. I have prior knowledge of opcodes and registers from a course in college (though it was on MIPS instead of ARM) and I could use the debugger and set breakpoints, but I could never find any documentation on what the heck I was supposed to do to make changes or add new code, which stopped my foray into it altogether. (And, I was doing this in conjunction with Cam at the time, so…)

I’m working on a rough draft for part 1 of this thing, anyone wanna help proofread?

1 Like

I can help yeah

1 Like

Message me on skype tomorrow

Just post it. I’ll wiki it and we can all edit it.

2 Likes

I’m halfway done but I’ll be busy until Thursday so expect this by the end of this week. The topic is memory as an overall concept so if you have anything particular you want to add or have included let me know

Why wait?

cuz this

I’m saying this is a collaborative effort. So if you post what you have then we can all edit itnto completion.

I’ll get it done, don’t worry but here’s what I have so far if you want to look at it
inb4 run ons galore
[spoiler=“Progress”]
Episode 1: MEMORY

What is memory and why should I care?

Memory is a crucial component of assembly hacking and programming as a whole and will show up
damn near everywhere in your hacking career, so it’s best to go over it first, even if you don’t start an
illustrious hacking career making something incredible, understanding memory and seeing how to deal with it
could be really useful in itself. Memory is exactly what it sounds like, it remembers stuff as the program
(game) runs. Say for instance, say a unit levels up and gets +1 Max HP, or you get a new item. The game
updates its memory to reflect values that change over time, but where is it? Compare the game to real life
and think about your own memory; you remember, for instance, how old you are, what you had for breakfast,
etc(I hope), but you don’t know where in your brain those pieces of information exist, so they can only be
changed if “Life”, or the program, changes them. This I think is a very fundamental concept, but I see it
looked over in most assembly tutorials. From here on I’ll show you how to find specific values and edit
them effectively.

That’s cool and all, but what is it?

Well if you’ve ever used a hex editor, you’ve seen how everything within a file is arranged in a particular
order, essentially and superifically, its a bunch of data all next to each other in a single block; when you
edit something in a hex editor you’re actually editing memory. “BUT WAIT A MINUTE! You said memory was stuff
that changed over time!”, you may say, that’s half true. See there are two types of memory, random access and
read only. Random access memory(or RAM), is that type of memory, the kind that can be read and written to
throughout the program cycle whereas read only memory(ROM) is constant and usually consists of code or other
resources. The long and short of it? If you have experience with a hex editor, editing memory shouldn’t be
such a foreign concept when you put it into practice.

Okay so memory edits sound simple enough, but what do I change and what do I change it to?

Now we get our get our hands dirty crack open VBA. From tools, you can select Memory Viewer and you’ll get a
thing like this.
PICTURE1
Because what I’m going over is universal and not FE specific I’m going to be using A Link to the Past as an
example.
PICTURE2
But here’s a little something for you guys so you don’t feel totally out of place
PICTURE3
Okay so let’s say we want to find out where rupees are in memory. To find it, we’re going to have to do a
cheat search.

[/spoiler]

Posted and wiki’d. I’ll probably edit it but I already have 4 things on my writing plate right now, so…

You should’ve just waited for me to finish it

Just edit that post. Plus this allow collaboration, which is what I’ve been trying to say/promote/achieve with making it a wiki post.

Found this, is pretty thorough and good