Advertiser Content

Quick Research & Development Thread Page 13

Started by Spherical Ice January 9th, 2010 2:23 AM
  • 436372 views
  • 1130 replies

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.8 Years
So, I've gotten sick of being asked for this, so I figured it might be a good idea to share it. It's so short and easy that it definitely doesn't warrant having its own thread, so putting it here seems like a good compromise.

Extending the Number of Direct Sound Tracks on 3rd Gen Pokémon Games

It's as easy as this:
  1. Search for the hex string "00 C5 94 00" in your ROM
  2. Replace said string with "00 CX 94 00" where X stands for the number of maximum DS tracks

Now, there are limits here. Fire Red and Emerald (presumably Leaf Green too) can support a maximum of 12 (0xC) tracks, so you can put 00 CC 94 00 for these ROMs, however, Ruby (presumably Sapphire too) are different. RS can only support a maximum of 7!

BPR - 12
BPG - 12
BPE - 12
AXV - 7
AXP - 7

I just wanted to add that in RS there are actually two locations that have contain that string of hex values. One in the one 1D0000s and one in the E70000's. I believe after some talks with ShinyDragonHunter a while back I discovered this. I believe that it ended up being the first one.

----------------------

I also recently spent a lot of time pouring over the maximum number of overworld limiting bytes and found that in all games except Emerald, (which I have yet to figure out as it is very different, but I am close) that there were actually three different compare commands that prevent the increasing of OWs. The first was a normal check that set the limit at 151 for FR and 217 for Ruby. (Please note that there are 152 ows in FR and 218 in Ruby. This means that the SS Anne is not special like once assumed, this check is solely based off of the OW numbers used in A-map and NSE).

The second and third checks actually worked together in order to allow the use of higher number OWs over OW #240 by pulling different OWs from the origional table. If you only change one of these checks, it screws up your OW's pallette and position on the map. They must be used in sync.

The offsets for the ASM routines which control these limits are:

Ruby: 0x0805BC10

FireRed: 0x0805F2C8

Please note that this is the beginning of the entire routine, not the checks themselves. I plan on extending Darthatron's Advanced OW Editing Tutorial (with permission if he lets me:D) in order to account for these checks. So unless you have a good understanding of basic ASM, don't play with this quite yet.

Paired with Simba

MrDollSteak

Formerly known as 11bayerf1

Age 24
Male
Hong Kong
Seen 2 Weeks Ago
Posted May 15th, 2019
846 posts
10.7 Years

As for this, now i'm outta time, but i'll try to do something to you. Thing is, there's a routine in the rom, a powerful one, that has ENTIRE access to a pokemon's data, and can change anything about it!
List of things discovered that the routine can change (don't mind the hex numbers):
Spoiler:

0x00 - Pokémon ID
0x01 - Trainer IDs
0x02 - Nickname Max Length 1 (r6 should be the nickname's address)
0x03 - Font / Language
0x04 - Sanity
0x05 - Sanity
0x06 - Sanity
0x07 - OT Name Max Length
0x08 - Marks
0x09 - Checksum
0x0A - Filler
0x0B - Species
0x0C - Held Item
0x0D - Attack 1
0x0E - Attack 2
0x0F - Attack 3
0x10 - Attack 4
0x11 - PP 1
0x12 - PP 2
0x13 - PP 3
0x14 - PP 4
0x15 - PP Bonuses
0x16 - Coolness
0x17 - Beauty
0x18 - Cuteness
0x19 - Exp. Points
0x1A - HP EV
0x1B - Attack EV
0x1C - Defense EV
0x1D - Speed EV
0x1E - Sp. Attack EV
0x1F - Sp. Defense EV
0x20 - Happiness
0x21 - Smartness
0x22 - Pokérus Status
0x23 - Catch Location
0x24 - Catch Level
0x25 -
0x26 - Hometown / Poké Ball / Trainer Gender
0x27 - HP IV
0x28 - Attack IV
0x29 - Defense IV
0x2A - Speed IV
0x2B - Sp. Attack IV
0x2C - Sp. Defense IV
0x2D - IsEgg
0x2E - Ability Bit
0x2F - Toughness
0x30 - Sheen
0x31 - OT Gender
0x32 -
0x33 -
0x34 -
0x35 -
0x36 -
0x37 - Status Ailment
0x38 - Level
0x39 - Current HP
0x3A - Total HP
0x3B - Attack
0x3C - Defense
0x3D - Speed
0x3E - Sp. Attack
0x3F - Sp. Defense
0x43 - Hall Of Fame ribbon
0x50 - Obedience




Well, i explained this in the last post. Its the naming type, which is gonna through r0. But that can be easily changed, i think, so this is the least of our worries.

My main worry is how you're gonna convert the letters bytes into usable codes.
I was just wondering what exactly this routine is, and I was wondering if it would apply to eggs? For example, I want to create a script that would give you a specific egg with preset eggmoves. That or Pokemon with 'hidden abilities'. What special or callasm would I need to put into the script?

If I've been mildly silly and the number is already posted I apologize in advance.

Thanks!

FBI

Free supporter

Male
Unknown Island
Seen 1 Day Ago
Posted March 30th, 2019
1,905 posts
6.6 Years
Does anyone know how to ASM hack the intro in Fire Red so that it skips the "Gengar - Nidorino" Intro without the press of a button? Like after the "GAMEFREAK Presents" Logo, It will go on to the Title Screen and not play that sick and old intro?
Scroll up, there is a post about it by Knizz.
...

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.8 Years
Is there an offset for the current location of the player?
The (X,Y) coordinates I mean.
I believe that there is a script command that gets this info, it is like "getplayerlocation" or something. Hit F1 in XSE and scroll through the commands. I will also go see where the exact location in the ram is in case you need this for an ASM routine.

Edit:
-----------------------------------------------------------------------------------------------------
getplayerpos, getplayerxy:
Stores the players current x and y positions on the current map.
Hex Structure: [42] [xxyy] [aabb]
xxyy: Variable for x position
aabb: Variable for y position
Edit2: In case you need it:

X-value is at 020255A0
Y-value is at 020255A2

(Found using VBA's "Search for Cheats" function. Quite the amazing thing.)

Paired with Simba

ShyRayq

Unprofessional Unprofessional

Male
Seen 1 Day Ago
Posted 2 Days Ago
1,651 posts
12 Years
Just to clear things a bit, is this the direct solution to my problem?

Also do I just compile the "After"?
No, no, the post you want is the post before that.
3DS Friend Code: 5069-3944-3902
IGN: Peter; (X, Y, OR, AS, S, M)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Living Pokedex Complete: Y, C, R, LG, E, D, Pl, HG, B, B2, X, Y, OR, AS, M, UM
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.
Age 21
Male
Seen 1 Day Ago
Posted March 23rd, 2019
545 posts
7 Years
No, no, the post you want is the post before that.
Okay, now it's more unclear to me... Which one?

BEFORE:
080008aa 8b91 ldrh r1, [r2, #0x1c]
080008ac 1c18 add r0, r3, #0x0
080008ae 4008 and r0, r1
080008b0 2800 cmp r0, #0x0
080008b2 d0fa beq $080008aa
080008b4 bc01 pop {r0}
080008b6 4700 bx r0

AFTER:
080008aa df02 swi $02
080008ac 8b91 ldrh r1, [r2, #0x1c]
080008ae 1c18 add r0, r3, #0x0
080008b0 4008 and r0, r1
080008b2 2800 cmp r0, #0x0
080008b4 d0f9 beq $080008aa
080008b6 bd00 pop {pc}
And I just compile using ASM and I'm good?

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.8 Years
Okay, now it's more unclear to me... Which one?



And I just compile using ASM and I'm good?
Wrong post! http://www.pokecommunity.com/showpost.php?p=7526770&postcount=303

Paired with Simba
Age 21
Male
Seen 1 Day Ago
Posted March 23rd, 2019
545 posts
7 Years
Wrong post! http://www.pokecommunity.com/showpost.php?p=7526770&postcount=303
Oooooh..... Sorry... My bad.

BTW how do I do that? Hackmew's Knowledge Tutorial doesn't say anything about the "offset=offset" thing.

EDIT: Do I just repoint those offset to the one on the right?

EDIT2: Nevermind! I got it to work. Knizz, YOU-HAVE-MY-ETERNAL-GRATITUDE.

EDIT3: BTW How come the Help System is not in Pokemon Liquid Crystal? Does Anyone know how to remove that?

ShyRayq

Unprofessional Unprofessional

Male
Seen 1 Day Ago
Posted 2 Days Ago
1,651 posts
12 Years
Okay just asking, does anyone know the locations of the limiters on the Item amount.
I know about the bytes at 0x98998, 0x10864C and 0x10DA14, but I'm not sure where the others are.
If anyone can help, that'd be appreciated
3DS Friend Code: 5069-3944-3902
IGN: Peter; (X, Y, OR, AS, S, M)
Friend Safari: (Fighting) Throh, Meditite, Breloom
Living Pokedex Complete: Y, C, R, LG, E, D, Pl, HG, B, B2, X, Y, OR, AS, M, UM
Big thanks especially to DestinedJagold, Xerneas_X, Elements1 and ~RNC~

PM me if you want to trade, or add my FC.

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.8 Years
Oooooh..... Sorry... My bad.

BTW how do I do that? Hackmew's Knowledge Tutorial doesn't say anything about the "offset=offset" thing.

EDIT: Do I just repoint those offset to the one on the right?

EDIT2: Nevermind! I got it to work. Knizz, YOU-HAVE-MY-ETERNAL-GRATITUDE.

EDIT3: BTW How come the Help System is not in Pokemon Liquid Crystal? Does Anyone know how to remove that?
I'm going to give you a little tip, whenever you see something in brackets: [___] like these, it always means what is contained at the given offset. This comes up a lot, and it will help you understand chemistry:p, there is a connection here... Let me know when you notice it:p.

Paired with Simba

Jambo51

Glory To Arstotzka

Male
Seen January 28th, 2018
Posted December 6th, 2015
732 posts
10.2 Years
Changing the Level At Which Eggs Hatch

So, a very simple hack here. Simply allows you to define what level the hatched Pokémon will be at when it hatches. These offsets are BPRE only. I haven't the time to search for RSE's right now. If you backtrack from the Pokémon Encrypter with index 0x19 (Exp Points), you should find the same movs in RSE.

081375B0: XX 21
08046CBE: XX 22
0804623E: XX 22
See? Easy. Simply change the XX's to the level you want eggs to be. The XX's must all have the same value, or weird things will happen. The maximum allowed value is 0x64 (100). The game bugs out if you set it any higher.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!

Wobbu

Drag a needle on the good today

Male
Stardew Valley
Seen August 28th, 2016
Posted August 28th, 2016
2,793 posts
7.4 Years
I found the offsets from Pokémon Emerald (BPEE) for changing the level of Pokémon when they hatch from eggs.

08070A38: XX 22
08071414: XX 22
081C3200: XX 21
Thanks to Jambo51 for finding the FireRed offsets and making it easy to find the Emerald offsets.


My Favorite Song
Age 21
Male
Seen 1 Day Ago
Posted March 23rd, 2019
545 posts
7 Years
And another one, would it be possible to port the R/S/E Pokedex to FR? Just the appearance and functions not the main Pokedex content. I'm curious since I discovered that the Ruins of Alph was ported to FR so I thought it would be possible to do the same with a Pokedex.

Also a port of how the Pokemon Info Screen like the one jsziede posted^^ to FR?
Age 21
Male
Seen 1 Day Ago
Posted March 23rd, 2019
545 posts
7 Years
Here are some offsets for the Pokedex HUD:
0x451F55 = X position of text list
0x451F56 = Y position of text list
0x451F5D = X position of Habitat picture
0x451F5E = Y position of Habitat picture
0x451F65 = X position of "Seen:__ Owned:__" box
0x451F66 = Y position of "Seen:__ Owned:__" box
0x451F61 = BG Palette number that habitat picture uses
0x4520C8 = # of list entries on main pokedex page (National Pokedex enabled only)

Mess around with the bytes at those offsets, allowing you to do stuff like this:
I know this post of Chaos Rush was decades ago but I found another offset.
452010 = # of list entries on main Pokedex page (Regional)

NarutoActor

The rocks cry out to me

Age 25
Female
Brooklyn/Marlboro
Seen April 2nd, 2016
Posted March 22nd, 2016
1,979 posts
10.6 Years
Hello' everyone, I am working on a Java-Based Cross Platform Program to allow hackers to edit the wild data for GBA games and not be limited to the first 3 generations like advance map does. This is manly intended for the use of the 649 patch, but I can also be used for fakemon hacks since the list of pokemon is user-defined.

Here is the problem, I can not find out how wild data is structured in FireRed. I tried using offsets that are given' in advance map, and using backwards searches with a hex editor but I am running dry. I am hoping someone has the information, or that someone can at least help find it, without it I can not continue with the program. I already made the GUI, I just need to implement the structure. Here is a screen shot to show the program so far.
Spoiler:


Hello' everyone, I am working on a Java-Based Cross Platform Program to allow hackers to edit the wild data for GBA games and not be limited to the first 3 generations like advance map does. This is manly intended for the use of the 649 patch, but I can also be used for fakemon hacks since the list of pokemon is user-defined.

Here is the problem, I can not find out how wild data is structured in FireRed. I tried using offsets that are given' in advance map, and using backwards searches with a hex editor but I am running dry. I am hoping someone has the information, or that someone can at least help find it, without it I can not continue with the program. I already made the GUI, I just need to implement the structure. Here is a screen shot to show the program so far.
Spoiler:
~There are those people who understand hex, F the rest

miksy91

Dark Energy is back in action! ;)

Male
Finland
Seen 8 Hours Ago
Posted 1 Week Ago
1,483 posts
10.8 Years
Hello' everyone, I am working on a Java-Based Cross Platform Program to allow hackers to edit the wild data for GBA games and not be limited to the first 3 generations like advance map does. This is manly intended for the use of the 649 patch, but I can also be used for fakemon hacks since the list of pokemon is user-defined.

Here is the problem, I can not find out how wild data is structured in FireRed. I tried using offsets that are given' in advance map, and using backwards searches with a hex editor but I am running dry. I am hoping someone has the information, or that someone can at least help find it, without it I can not continue with the program. I already made the GUI, I just need to implement the structure. Here is a screen shot to show the program so far.
Spoiler:
Did you ever track down the data you edited? If not, you can easily find where it is by making an ips-file and use a hex editor to open the ips-file (that of course now holds the content between the original file and the hacked file with edited wild pokemon data). Ips file data structure is the following:

[First 5 bytes = "PATCH" in ASCII code][3-byte data address][How many bytes to write to this address (2 bytes)][Data to write to...][3-byte data address][How many bytes to write to this address (2 bytes)][Data to write to...]....["EOF" in ASCII]

What comes to other things, I like what I'm seeing here :)
And especially, since I've been doing similar things with Java myself just now.
Pokémon Dark Energy
Some ROM hacking related stuff

Iacobus

sǝɯɐɾ

Age 27
Male
Belgium
Seen May 16th, 2019
Posted March 31st, 2014
62 posts
15.7 Years
Hello' everyone, I am working on a Java-Based Cross Platform Program to allow hackers to edit the wild data for GBA games and not be limited to the first 3 generations like advance map does. This is manly intended for the use of the 649 patch, but I can also be used for fakemon hacks since the list of pokemon is user-defined.

Here is the problem, I can not find out how wild data is structured in FireRed. I tried using offsets that are given' in advance map, and using backwards searches with a hex editor but I am running dry. I am hoping someone has the information, or that someone can at least help find it, without it I can not continue with the program. I already made the GUI, I just need to implement the structure. Here is a screen shot to show the program so far.
Spoiler:
I'm not to sure if you should be writing a program if you can't figure it out yourself, but hey..

As defined in the AM ini, the pointer to the wild Pokémon data is located after the following byte sequence:
03 48 04 80 09 E0 00 00 FF FF 00 00

For FR (English) we find the following: B8 9C 3C 08

When we go to 0x3C9CB8 in our hex editor, we see the following:
02 1B 00 00 D0 73 3C 08 00 00 00 00 00 00 00 00 00 00 00 00 02 1C 00 00 08 74 3C 08 00 00 00 00 00 00 00 00 00 00 00 00 02 1D 00 00 40 74 3C 08 00 00 00 00 00 00 00 00 00 00 00 00

I hope you see a pattern here.. Anyway, here is what you need to know:
02 1B 00 00 D0 73 3C 08 00 00 00 00 00 00 00 00 00 00 00 00

Bank Number
Map Number
Filler
Grass Pointer
Water Pointer
Trees Pointer
Fishing Pointer

I checked the Bank and Map in AM and this seems to be the data for the MONEAN CHAMBER.
If I go and check the Wild Pokémon, this map appears to have only grass encounters. Looking at the zero-pointers for water, trees and fishing, this could be right. So, let's investigate a bit further.

We go to 0x3C73D0 in hour hex editor and again see a bunch of data. For everyone's sake, I only copied what belongs to the map (to the grass encounter data of the map).
07 00 00 00 A0 73 3C 08 19 19 C9 00 19 19 C9 00 1919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C900

The first byte is the encounter ratio. Then we have 3 filler bytes (?) followed by a pointer.
After the pointer, we have our 12 Pokémon with their minimum and maximum levels. Bytes are in this order: minimum level, maximum level, Pokémon number.

Hope this is enough for now.

Spherical Ice

Age 21
Bristol, UK
Seen 14 Hours Ago
Posted 4 Weeks Ago
5,249 posts
11.7 Years
Okay, so you can control which map out of a pre-determined list of maps the Seagallop Ferry (special 0x17B) will take you to, but how would you change what map the values of the variables correspond to?
Age 21
Male
Seen 1 Day Ago
Posted March 23rd, 2019
545 posts
7 Years
Hey guys! This post by knizz:
For FireRed:
If you want to skip the intro: [0x080EC5D0]=0x08078915.
If you want to skip the intro+titlescreen: [0x080EC5D0]=0x0800C301.
If you want to skip the tutorial+oak:
  • [0x0800C4C4]=0x08056645
  • [0x08054A68]=0x4C3C
  • [0x08054A6A]=0x6820
  • [0x08054A6C]=0x4900
  • [0x08054A6E]=0xE001
  • [0x08054A70]=name of the player
    Spoiler:

    081C5758 : GREEN
    081C575E : RED
    081C5762 : LEAF
    081C5767 : FIRE
    081C576C : GARY
    081C5771 : KAZ
    081C5775 : TORU
    081C577A : ASH
    081C577E : KENE
    081C5783 : GEKI
    081C5788 : JAK
    081C578C : JANNE
    081C5792 : JONN
    081C5797 : KAMON
    081C579D : KARL
    081C57A2 : TAYLOR
    081C57A9 : OSCAR
    081C57AF : HIRO
    081C57B4 : MAX
    081C57B8 : JON
    081C57BC : RALPH
    081C57C2 : KAY
    081C57C6 : TOSH
    081C57CB : ROAK
    081C57D0 : OMI
    081C57D4 : JODI
    081C57D9 : AMANDA
    081C57E0 : HILLARY
    081C57E8 : MAKEY
    081C57EE : MICHI
    081C57F4 : PAULA
    081C57FA : JUNE
    081C57FF : CASSIE
    081C5806 : REY
    081C580A : SEDA
    081C580F : KIKO
    081C5814 : MINA
    081C5819 : NORIE
    081C581F : SAI
    081C5823 : MOMO
    081C5828 : SUZI
  • [0x08054A7E]=0x4E34
  • [0x08054B3A]=0x0000
  • [0x08054B3C]=0x0000
plz credit lol
If you do this:
If you want to skip the intro+titlescreen: [0x080EC5D0]=0x0800C301.
the intro animation and the title screen will be removed BUT the Help System is removed too.

I'm guessing that the Help System is loaded as soon as the Titlescreen is displayed or maybe when the screen is refreshed and since it wasn't displayed or refreshed, it didn't load the Help System too.

Maybe we can mess up with it and make it load the Titlescreen but not load the Help System.

NarutoActor

The rocks cry out to me

Age 25
Female
Brooklyn/Marlboro
Seen April 2nd, 2016
Posted March 22nd, 2016
1,979 posts
10.6 Years
@Icobus
I knew most of what you posted but the information about the advance map's ini I did not know about, and proved quite useful(Thank you)
I have done some more research and testing, and some of your results are off.
07 00 00 00 A0 73 3C 08 19 19 C9 00 19 19 C9 00 1919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C900

The first byte is the encounter ratio. Then we have 3 filler bytes (?) followed by a pointer.
After the pointer, we have our 12 Pokémon with their minimum and maximum levels. Bytes are in this order: minimum level, maximum level, Pokémon number.
There are only 12 pokemon for grass encounters
5 for water
and 10 for fishing
also the pointer that you describe is actually the pointer to the wild-data, the data after the pointer belongs to a different map/bank
~There are those people who understand hex, F the rest
Advertiser Content