• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Research: Calling All ASM Experts!

What features would you like in an ASM tool?


  • Total voters
    39
He spent twenty minutes complaining about not being able to move diagonally and that characters do nothing but stand around. He sat in the chair next to the character's mom for a minute and I asked, "What are you doing?" He replied, "I want her to make me dinner. Playing Pokemon is hard."

Diagonal movement? I'm working on it. (Somebody would need to make an Emerald port though)

And yeah, I can confirm it. Your dad is 100% surely a dad.
 
Update: My father trained all 5 of his Pokemon up to level 10. Before he entered Petalburg. Dat grind...

Diagonal movement? I'm working on it. (Somebody would need to make an Emerald port though)

And yeah, I can confirm it. Your dad is 100% surely a dad.

Oh, really? That actually is very intriguing. Are you working on implementing diagonal movement in the emulator or the game itself?
 
Update: My father trained all 5 of his Pokemon up to level 10. Before he entered Petalburg. Dat grind...

This reminds me of a friend of mine. Any time he tried a nuzlocke run he had his starter evolved before the first gym. :t005:

Diagonal movement? I'm working on it. (Somebody would need to make an Emerald port though)

Very interesting. Can the engine handle multiple directional inputs, or would there be separate buttons for diagonal movement? With the GBA's plus-pad I'm doubting if they planned on two different directional inputs at once.
 
Very interesting. Can the engine handle multiple directional inputs, or would there be separate buttons for diagonal movement? With the GBA's plus-pad I'm doubting if they planned on two different directional inputs at once.

I can confirm that the GBA allows diagonal movement (at least on a hardware level). VBA-M definitely allows you to push adjacent directions simultaneously, however there is code preventing opposite directions from being sent at the same time (they cancel each other out). So implementing diagonal movement is a game engine thing. Though unless daniilS means zigzagging instead of true diagonal movement, I don't see how it's feasible (so much more work than just altering the game engine)
 
Because Pokemon has a grid based movement system, diagonal movement would be impractical. Since the GBA only has 4 directions on the arrow pad any diagonal movement would rely on pushing first one direction then the next. Since Pokemon is grid based (1 button push = 1 grid block movement) this simply results in moving over one, then up one (or whatever directions you pushed). Games like Legend of Zelda: Minish Cap can have diagonal movement because they don't have grid based movement. Minish Cap simply moves you in the direction you're pushing for as long as you push the button and then adds to or cancels movement depending on what other buttons you push at the same time (push both up & down makes you stop; push up & left makes you travel diagonally up & left until a button is released). Since Pokemon's collision system (for trees, grass, water, etc.) is based on the same grid as the movement system & since you'd have to remove the grid system for diagonal movement, this is WAAAY more work than would be practical. (I guess you could steal the movement system straight from Minish Cap but other than that your only option is to rewrite a pretty large chunk of the Pokemon game engine.)

Note: I don't actually know about the inner workings of Pokemon's game engine, so it may be harder or easier than I'm making it out to be.
 
Update: He just finished reading through all the new material and says he's still planning. Sadly, it's a busy week this week, and we'll be away next week. (Otakon! ♥) But he's still working. ^^

I can confirm that the GBA allows diagonal movement (at least on a hardware level). VBA-M definitely allows you to push adjacent directions simultaneously, however there is code preventing opposite directions from being sent at the same time (they cancel each other out). So implementing diagonal movement is a game engine thing. Though unless daniilS means zigzagging instead of true diagonal movement, I don't see how it's feasible (so much more work than just altering the game engine)

Because Pokemon has a grid based movement system, diagonal movement would be impractical. Since the GBA only has 4 directions on the arrow pad any diagonal movement would rely on pushing first one direction then the next. Since Pokemon is grid based (1 button push = 1 grid block movement) this simply results in moving over one, then up one (or whatever directions you pushed). Games like Legend of Zelda: Minish Cap can have diagonal movement because they don't have grid based movement. Minish Cap simply moves you in the direction you're pushing for as long as you push the button and then adds to or cancels movement depending on what other buttons you push at the same time (push both up & down makes you stop; push up & left makes you travel diagonally up & left until a button is released). Since Pokemon's collision system (for trees, grass, water, etc.) is based on the same grid as the movement system & since you'd have to remove the grid system for diagonal movement, this is WAAAY more work than would be practical. (I guess you could steal the movement system straight from Minish Cap but other than that your only option is to rewrite a pretty large chunk of the Pokemon game engine.)

Note: I don't actually know about the inner workings of Pokemon's game engine, so it may be harder or easier than I'm making it out to be.

It does seem like a possibility, but it might be a little ahead of its time.
 
I don't know about the grid system, but replacing regular movement with diagonal by playing around with the movement table at 083A64C8 in FR or 0850DB7C in EM doesn't give you zigzagging. The map just derps out after a while.
Also, if you take a look at said table, you can see the last four entries are for—tada—diagonal walking. Some other movement tables, like those around 083A6481 in FR also have nine entries. So "ahead of its time"?
 
Only for Emerald though, huh? That's kind of a shame. Nonetheless it's amazing that he'd work on something like this. Maybe somebody else could come along later and make it work for FireRed :)
 
Progress update: He ended up making a lot of changes and then fixed some things to compile it in Visual Studio 2008. We're back from the family vacation today, so hopefully we can work on stuff again.

Only for Emerald though, huh? That's kind of a shame. Nonetheless it's amazing that he'd work on something like this. Maybe somebody else could come along later and make it work for FireRed :)

I wouldn't doubt that it could be adapted by someone else for FireRed. :)
 
Last edited:
Just mentioning that though we haven't been able to work on this lately, it has not been forgotten :3
 
I choose other because a ASM tool must have the ability to convert C and C++ into asm save the asm somewhere and the put the asm into the game. But that must be automatic otherwise I'll just use makefiles.
 
Back
Top