You are not logged in.
i feel competent enough to teach, and i would love to learn how to hack generation 2. i have the disassembly set up, and i'm currently looking into adding the physical special split
all help or being pointed in the right direction would be appreciated
The first thing to know about working with assembly: there's no "one correct way" to do things.
You can read this diff to see how I implemented the Physical/Special split in Polished Crystal. However, if you look at TPP Anniversary Crystal and Crystal 20xx, their approaches are similar but combine the move's type and physical/special/status category in a single byte, thereby saving 255 bytes of ROM space. (On the other hand, this means whenever you load the type+category byte, you have to mask out the relevant part of it.)
Really, assembly programming is just about knowing exactly what you want to do and breaking it down into tiny steps that can be described with asm-level operations like "add these two numbers" or "set this RAM address to be this value". I sometimes refer to this GameBoy opcode summary: it's fairly terse and unhelpful if you've never seen asm before, but if you study the pokecrystal code alongside this summary it'll make more sense.
One tip: open one of the maps/*.asm files and pick an interesting-looking script. They're written with high-level macros like "writetext" and "applymovement" which are defined in engine/scripting.asm using individual assembly operations. So you can play the game to see how a script is playing out, while following along with the script's commands in the map's .asm file, and reading how each command is implemented in scripting.asm.
Kuroko Aizawa (aka Pia Carrot) has written a tutorial for pokecrystal. If you have the project set up and can build the original pokecrystal.gbc ROM, you're already ahead of the curve. The tutorial helps with editing fixed data, like maps, Pokémon, or moves.
The real advantage to assembly is that anything can be edited. If the existing data structures and procedures are too limiting, you can change them. For Polished Crystal I'm in the middle of changing the Pokémon data structure to have separate DVs for Special Attack and Special Defense. I wouldn't know where to begin doing something like that with hex-editing a GBA ROM.
Last edited by Rangi (2017-01-01 12:21:39)
thanks so much for the reply, i was totally lost on where to find information on how to do that, and i think thats one of the most important things to change.
really appreciate all of that