Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!

January 27th, 2010 (10:21 AM). Edited January 29th, 2010 by Coolboyman.
 Coolboyman Veteran Hacker Join Date: Sep 2003 Location: The East Bay Age: 30 Gender: Male Nature: Bold Posts: 471
Here's a simple thing I did for Prism. It lets you run when you hold B.

First thing's first. When the bike shop owner calls you it's pretty buggy without the correct flags. So lets just disable that.

97BFA:
ld hl,\$7BE4 (21 E4 7B) - This will prevent the "bike step count" from working. It will always write 00 to the RAM where it's supposed to add up, so the bike shop owner will never call you.

10000: call \$7E66 (CD 66 7E) - This will call the ASM from 13E66 needed to make this work.

13E66:
call \$4017 (CD 17 40) - This is what was originally at 10000, to make sure nothing "screws up" we'll just move it here.
ld de,\$D682 (11 82 D6) - Loads D682 from the ram into de (which is what determines if Hiro is on the bike or not)
ld c,\$04 (0E 04) - Since the RAM uses the same location to check if you are surfing (identified with 04), let's make sure this function does nothing if you are surfing.
ld a,[de] (1A) - Puts the contents of de (D682 in RAM) into a.
sbc a,c (99) - Subtracts c from a
jr z,\$7E8B (28 18) - Checks if a is equal to 0. If so, jump ahead 18 bytes which is ret (C9), ending the function. Since a can only equal 0 if it was previous 4, this will only happen if you are surfing.
ld de,\$CF29 (11 29 CF) - loads CF29 (indicates what keys are down) into de.
ld a,[de] (1A) - loads the contents of de into a.

Since bit 1 is on if B is down, let's make it so it ignores the other bits. Let me know if there's an eaiser way of doing this, for some reason the other bit commands weren't working for me.

res 0,a (CB 87) - turns bit 0 in a to off (A)
res 2,a (CB 97) - turns bit 2 in a to off (Select)
res 3,a (CB 9F) - turns bit 3 in a to off (Start)
res 4,a (CB A7) - turns bit 4 in a to off (Right)
res 5,a (CB AF) - turns bit 5 in a to off (Left)
res 6,a (CB B7) - turns bit 6 in a to off (Up)
res 7,a (CB BF) - turns bit 7 in a to off (Down)
rcc, a (CB 0F) - shifts the bits in A down 1, changing 2 into 1.
ld de,\$D682 (11 82 D6) - loads D682 into de again
ld [de],a (12) - Puts the contents of a into de.
ret (C9)

This will make the game write 01 into D682 if B is held down. If D682 is 01, that will make your characters speed increase. If you use this, just please give me credit. Enjoy.
January 30th, 2010 (10:12 AM).
 Logan Join Date: Nov 2008 Location: Salisbury, England Age: 23 Gender: Male Nature: Sassy Posts: 10,407
Wow, no one has replied? This is pretty awesome, CBM. Well done. I'm not sure how many people use it; due to the GBA hacking generation. Nevertheless this is still awesome.
__________________
January 30th, 2010 (1:21 PM).
 .com Join Date: Jul 2008 Age: 23 Gender: Male Posts: 666
Quote:
 Originally Posted by The Doctor Wow, no one has replied? This is pretty awesome, CBM. Well done. I'm not sure how many people use it; due to the GBA hacking generation. Nevertheless this is still awesome.
This pretty sums up what I would've posted lol.
January 30th, 2010 (4:19 PM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
Thank you very much for posting this, this should come in very handy for a project I am still working on. Great job.
February 2nd, 2010 (7:16 PM).
 Team Rocket's Raichu Bye-Bye! Join Date: Mar 2009 Age: 23 Posts: 535
Quote:
 Originally Posted by Melash Thank you very much for posting this, this should come in very handy for a project I am still working on. Great job.
I thought you said on Skeentendo you had canceled it or put it on hiatus or something like that. :P

Well anyway. Nice thing you made there CBM. Might just do this for a crystal game anyway. ;)
__________________

I'm a supermod of that forum.

I've left, bye PC.
February 2nd, 2010 (9:48 PM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
Quote:
 Originally Posted by Team Rocket's Raichu I thought you said on Skeentendo you had canceled it or put it on hiatus or something like that. :P
I actually meant to say that the project has not been cancelled, it will be revived and continued soon. But to stay on topic....
Quote:
 Originally Posted by Team Rocket's Raichu Well anyway. Nice thing you made there CBM. Might just do this for a crystal game anyway. ;)
Would this hack work for Crystal also? Crystal is slightly different, so it's possible it wouldn't work.
February 4th, 2010 (2:17 PM).
 Coolboyman Veteran Hacker Join Date: Sep 2003 Location: The East Bay Age: 30 Gender: Male Nature: Bold Posts: 471
Quote:
 Originally Posted by Melash I actually meant to say that the project has not been cancelled, it will be revived and continued soon. But to stay on topic.... Would this hack work for Crystal also? Crystal is slightly different, so it's possible it wouldn't work.
You would have to find the new RAM addresses, but I believe once you do that it shouldn't be hard to put this into Crystal
August 2nd, 2010 (9:20 PM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
I seem to be having several problems with this. I input it exactly as you have posted, and checked it several times to confirm it was correct, and it seems to be so.

The major glitch I'm having is that whenever I hold down "B" when exiting a textbox (with an NPC or similar) the player will automatically mount the bike.

I've also had the same glitch occur after battling certain trainers, but I think I can fix that. I may have also been caused by holding down the "B" button.
August 3rd, 2010 (2:45 AM).
 Sawakita Not Invented Here Join Date: May 2010 Gender: Male Posts: 180
Nice tutorial!

Quote:
 Originally Posted by Coolboyman Since bit 1 is on if B is down, let's make it so it ignores the other bits. Let me know if there's an eaiser way of doing this, for some reason the other bit commands weren't working for me. res 0,a (CB 87) - turns bit 0 in a to off (A) res 2,a (CB 97) - turns bit 2 in a to off (Select) res 3,a (CB 9F) - turns bit 3 in a to off (Start) res 4,a (CB A7) - turns bit 4 in a to off (Right) res 5,a (CB AF) - turns bit 5 in a to off (Left) res 6,a (CB B7) - turns bit 6 in a to off (Up) res 7,a (CB BF) - turns bit 7 in a to off (Down) rcc, a (CB 0F) - shifts the bits in A down 1, changing 2 into 1. ld de,\$D682 (11 82 D6) - loads D682 into de again ld [de],a (12) - Puts the contents of a into de. ret (C9) This will make the game write 01 into D682 if B is held down. If D682 is 01, that will make your characters speed increase. If you use this, just please give me credit. Enjoy.
Maybe it's a stupid suggestion but, instead of resetting one bit at a time, why don't you use:
and 02 (E6 02) - so it reset all bits but the "B"-bit
rcc, a (CB 0F) - shifts the bits in A down 1, changing 2 into 1.
ld de,\$D682 (11 82 D6) - loads D682 into de again
ld [de],a (12) - Puts the contents of a into de.
ret (C9)

Is it one of the commands you said weren't working?
__________________
August 3rd, 2010 (7:09 AM).
 Full Metal C(++) Developer. Join Date: Jan 2008 Location: In my mind. Age: 23 Gender: Male Nature: Timid Posts: 806
The following:
Spoiler:

call \$4017 (CD 17 40) - This is what was originally at 10000, to make sure nothing "screws up" we'll just move it here.
ld de,\$D682 (11 82 D6) - Loads D682 from the ram into de (which is what determines if Hiro is on the bike or not)
ld c,\$04 (0E 04) - Since the RAM uses the same location to check if you are surfing (identified with 04), let's make sure this function does nothing if you are surfing.
ld a,[de] (1A) - Puts the contents of de (D682 in RAM) into a.
sbc a,c (99) - Subtracts c from a
jr z,\$7E8B (28 18) - Checks if a is equal to 0. If so, jump ahead 18 bytes which is ret (C9), ending the function. Since a can only equal 0 if it was previous 4, this will only happen if you are surfing.
and 02 (E6 02) - so it reset all bits but the "B"-bit
rcc, a (CB 0F) - shifts the bits in A down 1, changing 2 into 1.
ld de,\$D682 (11 82 D6) - loads D682 into de again
ld [de],a (12) - Puts the contents of a into de.
ret (C9)

could also be repointed, correct?
I'm thinking I might use this as a test for my new package system I'm making.
If it's alright with you, could I post the finished package on this thread for the metal gen. hackers to test?
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
August 5th, 2010 (9:11 AM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
Still waiting for Coolboyman's response...
August 19th, 2010 (11:39 AM). Edited August 19th, 2010 by miksy91.
 miksy91 Dark Energy is back in action! ;) Join Date: Oct 2008 Location: Finland Gender: Male Posts: 1,462
Quote:
 Originally Posted by Melash I seem to be having several problems with this. I input it exactly as you have posted, and checked it several times to confirm it was correct, and it seems to be so. The major glitch I'm having is that whenever I hold down "B" when exiting a textbox (with an NPC or similar) the player will automatically mount the bike. I've also had the same glitch occur after battling certain trainers, but I think I can fix that. I may have also been caused by holding down the "B" button.
Why not just modify the bike-sprite to look like the walking one ?
I'm pretty sure CBM has done that if the script works that way.

EDIT:
Thanks CBM as it works fine for me (and, I actually understood part of the things I was doing) :)
I'll give you credit for this.
__________________
Pokémon Dark Energy
Some ROM hacking related stuff
August 19th, 2010 (1:31 PM). Edited August 20th, 2010 by wiidude645.
 wiidude645 I'm Just Beast Like That Join Date: Oct 2009 Gender: Male Posts: 8
what do you use to insert them? Is there a certain program to do so? Someone please tell me!
August 19th, 2010 (9:02 PM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
Quote:
 Originally Posted by miksy91 Why not just modify the bike-sprite to look like the walking one ? I'm pretty sure CBM has done that if the script works that way. EDIT: Thanks CBM as it works fine for me (and, I actually understood part of the things I was doing) :) I'll give you credit for this.
Yes, the bike sprite and the bike music need to be disabled for this to work.
August 19th, 2010 (9:20 PM).
 miksy91 Dark Energy is back in action! ;) Join Date: Oct 2008 Location: Finland Gender: Male Posts: 1,462
Quote:
 Originally Posted by Melash Yes, the bike sprite and the bike music need to be disabled for this to work.
For me, the code automatically disabled the bike music
__________________
Pokémon Dark Energy
Some ROM hacking related stuff
August 20th, 2010 (12:54 AM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
Quote:
 Originally Posted by miksy91 For me, the code automatically disabled the bike music
Hold on, are you talking about just regularly using the running shoes? During normal use of holding down the "B" button, everything functions just fine. However, if you hold down B when exiting a textbox, it will sometimes cause the player to mount the bike and cause the music to start playing.

The exact same code isn't going to function differently for the same game.
August 20th, 2010 (11:02 AM).
 miksy91 Dark Energy is back in action! ;) Join Date: Oct 2008 Location: Finland Gender: Male Posts: 1,462
No, when exiting a textbox it will mount the bike but will not start playing the bike music. I've tested it both Outside & Inside.
__________________
Pokémon Dark Energy
Some ROM hacking related stuff
August 22nd, 2010 (10:05 AM).
 miksy91 Dark Energy is back in action! ;) Join Date: Oct 2008 Location: Finland Gender: Male Posts: 1,462
Double-post, but for especially good reason.

You're right about the fact it plays the bike-music (for example sometimes after losing a battle).
It depends on the Map Loading Process -data (see the Scripting Compendium).

I tested it with Blackthorn City by changing 07 to 08 at 154c2, and bike music didn't start playing anymore after I failed in a trainer battle.
However, there are other locations too where you have to do the same thing.
__________________
Pokémon Dark Energy
Some ROM hacking related stuff
August 22nd, 2010 (6:18 PM).
 Melash Back for now. Join Date: May 2008 Location: Idaho Age: 25 Gender: Male Nature: Relaxed Posts: 426
Quote:
 Originally Posted by miksy91 Double-post, but for especially good reason. You're right about the fact it plays the bike-music (for example sometimes after losing a battle). It depends on the Map Loading Process -data (see the Scripting Compendium). I tested it with Blackthorn City by changing 07 to 08 at 154c2, and bike music didn't start playing anymore after I failed in a trainer battle. However, there are other locations too where you have to do the same thing.
Changing the map loading process for every map that needs it is a little impractical, and could potentially cause glitches. Try disabling the bike music instead, just search for it in the VBA debugger.
March 17th, 2013 (1:27 PM).
 80C "This is a text filler!" Join Date: Oct 2012 Posts: 156
Very nice CBM!

I have got an idea\question:
could that be converted and used in Pokemon Red\Blue\Yellow?
__________________
Ripeness is all...
POKEMON GRAPE DEMO 3.1 AVAILABLE!

March 30th, 2013 (4:15 AM).
 FroggestSpirit Join Date: Feb 2012 Posts: 18
Yes, it could be. it'd probably be a lot different, but I imagine it'd be like the bicycle
__________________
I'm ASM
August 23rd, 2018 (8:33 AM).
 1490797911 Join Date: Aug 2016 Gender: Male Posts: 6
Hey if someone did this on an unedited Rom, can you post a patch for it to make it easier to do?
__________________
Working on a new game, Pokemon Neon
October 10th, 2018 (1:37 PM).
 Petuuuhhh Join Date: Apr 2017 Location: Georgia Age: 25 Gender: Male Posts: 592
This makes me automatically ride the bike in the overworld. So it doesn't do what it says it does. Anyone know a fix?
__________________
October 14th, 2018 (9:23 AM).
 Overlord Kaktus Made in Guatemala Join Date: Feb 2014 Location: Guatemala City Gender: Female Nature: Brave Posts: 281
Quote:
 Originally Posted by Petuuuhhh This makes me automatically ride the bike in the overworld. So it doesn't do what it says it does. Anyone know a fix?
Insert this hack using Map editor of Happiness.
__________________
I'm just a normal romhacker c:
October 14th, 2018 (9:35 AM).
 Petuuuhhh Join Date: Apr 2017 Location: Georgia Age: 25 Gender: Male Posts: 592
Quote:
 Originally Posted by ~Ruki! Insert this hack using Map editor of Happiness.
I'm pretty sure that was sarcasm. For anyone that doesn't want to learn ASM to hack Gen 2, here's a modified version of Chamber_'s running shoes routine made by Miksy91 that is tested and works:

\$101AE
jp \$7E03

org 04:7E03//\$13E03
@walkOrRun

ld a,[\$CF29]//let's game know, that you're pushing "B" ; D03E crystal
bit 2,a
and a,\$02
jr z,@walk
ld a, 02
jr @doStep

@walk
ld a, 01

@doStep
call \$425F
scf
ret