• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • 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: Chaos Rush's 649 on Ruby Project

Status
Not open for further replies.
1,323
Posts
16
Years
  • Seen Dec 9, 2023
I am really loving the progress you are making...
You are surely going to be well-known and your base will surely be in use by many hackers when it's done and ready. ;)
I wanna let you know that I am supporting your project. :)

I got a question though.
What address of free space have you used?
I asked because, well, it may conflict with my ROM if I decide to use this base. =/
Ruby's free space starts at 0x6B09F8, and stops at around 0xD00000, where the font and overworld data is located, then resumes at 0xEAE244-ish.

As for the actual data I've used up so far, I've used up from 0x6B0A00 to 0x76DDA8. Also I've used up from 0x800000 to 0xB00000-ish, which contains all the cry data.

Currently, the remaining free space is from 0x76DDA8-0x800000, and some more free space from somewhere at 0xB00000 up to 0xD00000 (the original Ruby rom has data located at 0xD00000), and I haven't touched any of the free space from 0xEAE244-0xFFFFFF.


And you really shouldn't be planning using this base on a rom that's already been hacked. What I recommend doing is once I release the first patch, you should start over, but import all the map and script data. If you apply the patch to an existing hack things will probably screw up.
 

PokeFreak201306

Pokemon Master
32
Posts
12
Years
Is this actually on a ruby game cartridge and if it is, would you please PM me and tell me how you can change data on a cartridge THANKS :D
 

Leafgreen2itsmyidea

Pokémon Master
76
Posts
11
Years
  • Seen Sep 30, 2013
Brilliant

It suprises me that you putted in all pokémon
but what about the pokédex that's what is bothering me.
 

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
Is this actually on a ruby game cartridge and if it is, would you please PM me and tell me how you can change data on a cartridge THANKS :D

You can't change data on an official cartridge. This patch is a not for profit ROM Hack base. It is intended to be used on Emulators.

It suprises me that you putted in all pokémon
but what about the pokédex that's what is bothering me.

I'm working on the Pokédex right now for Chaos Rush, but it's set out somewhat differently from FR's, so it's taking a little time to fix.
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
You can't change data on an official cartridge. This patch is a not for profit ROM Hack base. It is intended to be used on Emulators.
Just a minor correction: It is intended to be used on Emulators AND actual GBA hardware through a flashcart :P As I personally can't stand playing games with a keyboard, I prefer to play hacks on actual hardware (but only when I'm playing them, when I'm working on them of course I'll user a computer XD)

I always make sure that everything I do on this patch works on my GBA:
1570k2h.jpg
 
Last edited:

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
Just a minor correction: It is intended to be used on Emulators AND actual GBA hardware through a flashcart :P As I personally can't stand playing games with a keyboard, I prefer to play hacks on actual hardware (but only when I'm playing them, when I'm working on them of course I'll user a computer XD)

I always make sure that everything I do on this patch works on my GBA

Yes, ok. Very funny. You know fine well that I meant you can't modify an official Pokemon Ruby cartridge... :P For what it's worth, that's the very reason I adopted using the Bios for my patch - I know it should work on the actual hardware.

Got some good news, I have tracked down the Pokedex routines, and I am working on their expansion now. They are remarkably similar to the FR routines, and my initial guess about the static RAM address has proven to be correct.
 

fallkitten

I Believe in Sherlock Holmes!
170
Posts
15
Years
  • Age 29
  • N/A
  • Seen Mar 26, 2024
It's amazing! I love it! Looks so aversome! Ruby is now 20% cooler=3. As i understood it would be the game with all pokemon from 1-4 gens? Should we edit them into the grass ourselves?
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
Yes, ok. Very funny. You know fine well that I meant you can't modify an official Pokemon Ruby cartridge... :P For what it's worth, that's the very reason I adopted using the Bios for my patch - I know it should work on the actual hardware.

Got some good news, I have tracked down the Pokedex routines, and I am working on their expansion now. They are remarkably similar to the FR routines, and my initial guess about the static RAM address has proven to be correct.
Awesome. You're the man, Jambo; none of this would be possible without you. Would you like my Ruby save file, that has every slot in the PC box filled, and all trainers defeated, to help test the Pokedex so that you can find free space in the ram? Since my save file literally uses up as much space as possible, so you'll know for sure what's free space.

EDIT: Also if you happen to find the offset that controls how many Pokemon appear in the regional dex (the one with 202), could you please tell me where you found it? This would be helpful for people doing G/S/C remakes that want 250 (or 256) Pokemon in the regional dex, or it would be helpful for me, who wants 210 Pokemon in my future hack.


It's amazing! I love it! Looks so aversome! Ruby is now 20% cooler=3. As i understood it would be the game with all pokemon from 1-4 gens? Should we edit them into the grass ourselves?
Actually, it has all Pokemon from Gen 1-5. But it's not exactly like the games like Jambo's FireRed patch, this is a "cheap" version of it. For instance, you can evolve female Kirlia with a Dawn Stone, even though you're not supposed to. And rather than evolving Magmar by trading with a Magmarizer, instead you can evolve Magmar (and Electabuzz, Rhydon, Seadra, Dusclops, etc.) with a custom stone I call the, "Omega Stone". I found the table that controls item usage (thanks to JPAN's explanation of it for FireRed in some other thread), hence why I was able to add new evolutionary stones, which no one else has been able to do (besides Jambo51). The new stones are the Razor Stone, the Royal Stone, the Magnet Stone, the Porygon Stone, and the Omega Stone, along with the Dawn, Dusk, and Shiny Stones from the official games. There's also a bunch of other new items that function as stones to handle form changes, such as the "Shelmet DNA", the "KarrablastDNA", the "Remoraid DNA", "Oven", "Washing MCHN", "Griseous Orb", etc...
 
Last edited:
5
Posts
12
Years
  • Seen Jul 11, 2013
hence why I was able to add new evolutionary stones, which no one else has been able to do (besides Jambo51).

Um. I think that's untrue. I've been able to change King's Rock into a use Item as well as a hold item, simply by changing the "How a Pokemon evolves." I don't think PGE supports this, but I think I used YAPE, where it has the option to show all items, instead of just the stones and evolve via trade items, and you just click one of those and you're set. It's been a while since I've done it, so it could have been something other than YAPE.

Anyway, you've been doing an awesome job. If you ever get something like JPAN's hacked engine into Ruby, I'll be forced to switch ROMs again!
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
Um. I think that's untrue. I've been able to change King's Rock into a use Item as well as a hold item, simply by changing the "How a Pokemon evolves." I don't think PGE supports this, but I think I used YAPE, where it has the option to show all items, instead of just the stones and evolve via trade items, and you just click one of those and you're set. It's been a while since I've done it, so it could have been something other than YAPE.
No. If you make a Pokemon evolve with an item originally not a stone, it won't actually evolve. Even though the HP bar will show up as if it would work, a message would pop up saying, "It won't have any effect". If you search "stone" in the simple questions thread, you'll notice that everyone keeps saying "I made a custom stone and it won't work even though I made it evolve with that item in YAPE/PGE". This is because you have to alter the item usage table, which wasn't documented at all until recently by JPAN.

I'm not kidding. Go make a custom item with Item Editor, then make a Pokemon evolve with said custom item, then try to evolve it.
Spoiler:
 

Mr.Pkmn

Ordinary ASM Magician
53
Posts
15
Years
  • Seen Nov 17, 2023
I was able to add new evolutionary stones, which no one else has been able to do (besides Jambo51).
I did that too some time ago. There's an issue though.

The table doesn't go far enough to support items like King's Rock, so you have to repoint it or tell the game via ASM that every item beyond Sitrus Berry is an evolutionary stone (like i did)
 

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
I can confirm that Ruby's Pokedex is absolute murder to extend. Unlike FR and Emerald, which move the relevant data needed for extension automatically by using a Malloc, Ruby's is a mess of about 200 pointers and 15 or so semi-pointers, which are harder still to track down, which repoint the "working data" to the end of the Pokedex.

There is some good news - I have a borderline working version of it (not finished, but just about usable) and since Ruby's dex is manually pointed to, but changes position due to a random calculation (yes, a random calculation!) I can safely assume that the entire RAM area set aside for this Random Dex movement is safe to use! So I simply forced it to revert to case 0 all the time, giving plenty of free memory after the Dex for extra additions.

This is on top of the previously completed Seen Caught flags reassignment which I completed, allowing for 832 species of Pokemon (potentially excluding the formes). For anyone curious how this is achieved without adding more saveable memory, I will explain. The current Seem/Caught flags have 4 blocks of 416 flags, defined as 3 blocks of seen flags (for error checking I guess?) plus 1 block for caught. I redefined them as 2 blocks of seen flags and 2 blocks of caught flags.

Block 1: Bulbasaur - Combee Seen
Block 2: Vespiquen - Pokemon 832 Seen
Block 3: Bulbasaur - Combee Caught
Block 4: Vespiquen - Pokemon 832 Caught

As you can see, using the existing space, it is possible to more than double the number of Seen/Caught flags! :)

@Chaos Rush - It should be quite easy to force your formes to share the normal version's SC flags - simply assign them the same value on the Dex Table, just like you assigned Turtwig flag 387, even though it's Pokemon #440 by index number.
 
Last edited:
1,323
Posts
16
Years
  • Seen Dec 9, 2023
I can confirm that Ruby's Pokedex is absolute murder to extend. Unlike FR and Emerald, which move the relevant data needed for extension automatically by using a Malloc, Ruby's is a mess of about 200 pointers and 15 or so semi-pointers, which are harder still to track down, which repoint the "working data" to the end of the Pokedex.
The amount of respect I have for you just doubled. Seriously, you don't know how much I appreciate you for doing this for me, especially considering how you're busy with University and your own 649 patch, and the problems you've encountered (200 POINTERS!?!?!?), and that you're essentially just helping out some random dude on the internet. You're awesome. Just making it clear that I really really REALLY appreciate this. You deserve like, 90% of the credit for this entire project because the Pokedex is one of the most important things. I hope you get everything working soon, and you seriously don't know how thankful I am to have a skilled ASM hacker like you helping me.


There is some good news - I have a borderline working version of it (not finished, but just about usable) and since Ruby's dex is manually pointed to, but changes position due to a random calculation (yes, a random calculation!) I can safely assume that the entire RAM area set aside for this Random Dex movement is safe to use! So I simply forced it to revert to case 0 all the time, giving plenty of free memory after the Dex for extra additions.

This is on top of the previously completed Seen Caught flags reassignment which I completed, allowing for 832 species of Pokemon (potentially excluding the formes). For anyone curious how this is achieved without adding more saveable memory, I will explain. The current Seem/Caught flags have 4 blocks of 416 flags, defined as 3 blocks of seen flags (for error checking I guess?) plus 1 block for caught. I redefined them as 2 blocks of seen flags and 2 blocks of caught flags.

Block 1: Bulbasaur - Combee Seen
Block 2: Vespiquen - Pokemon 832 Seen
Block 3: Bulbasaur - Combee Caught
Block 4: Vespiquen - Pokemon 832 Caught

As you can see, using the existing space, it is possible to more than double the number of Seen/Caught flags! :)
Just curious, but can you elaborate on how it is "just about usable"? If it's too complicated then I apologize for asking this question, but I'm just wondering what the functionality of the extension is so far.

Also I'm amazed at how you figured out a way to include caught/seen flags for the extra 321 Pokemon slots I added. You are just amazing... I wish you good luck on tracking down the remaining pointers, it must be absolute hell...

@Chaos Rush - It should be quite easy to force your formes to share the normal version's SC flags - simply assign them the same value on the Dex Table, just like you assigned Turtwig flag 387, even though it's Pokemon #440 by index number.
Yeah, that's what I meant in our VM convo earlier. Good to hear that it should work like that, I personally don't care about choosing which sprite that appears in the Pokedex.
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
In case anyone is wondering about Landorus, Thundrus, and Tornadus's new forms (the June CoroCoro magazine reveals that Landorus, Thundrus, and Tornadus will be receiving new forms in Black 2/White 2: http://cdn.bulbagarden.net/media/upload/7/7f/CoroCoro_B2W2_June_2012_cover.jpg), when I was in the process of adding Pokemon, I made 9 blank Pokemon slots named, "EXTRA", just in case for whatever reason I needed more Pokemon slots (which proved to be helpful, since the Kami trio's new forms were revealed long after I started working on this). Unfortunately, 3 of them have already been used up because I decided to include a way for sunshine Cherrim, and two extra Eevee clones for a way to evolve into Glaceon/Leafeon, but on the good side I have a total of six Pokemon named "EXTRA", which I will use to address Landorus, Thundrus, and Tornadus's forms. Not to mention I included a slot for Spiky-Eared Pichu, which IMO is a useless Pokemon, so if necessary I will turn that slot into another "EXTRA" Pokemon slot.

(In case anyone is wondering, I've already included slots for Black Kyurem and White Kyurem before the EXTRA Pokemon)
 
Last edited:

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
In case anyone is wondering about Landorus, Thundrus, and Tornadus's new forms (the June CoroCoro magazine reveals that Landorus, Thundrus, and Tornadus will be receiving new forms in Black 2/White 2:

Why do Game Freak has this misconception that we want them to add MORE Pokémon (or formes of Pokémon)? We have nearly 800 differing version of Pokémon already! I miss the days when we had 150 or so Pokémon and formes were not a consideration. Simplicity is usually better than complexity, and it's doubly the case in Pokémon.

I know that this is hardly your fault, I just felt the need to say something like this. :P
 

InMooseWeTrust

Jack of All Trades
803
Posts
16
Years
There are plenty of things you can axe from 3rd gen to free up memory, if you know how:
-Mystery Gift
-ALL contest data, Pokéblocks, useless berries, and the like
-Secret base data
-Mail items
-Look at all of the items by index number (Bulbapedia article). Over half of them are useless.
-Box data (no one will be able to fill up all 14 unless they catch multiple of the same species)
-Game Corner
-Anything else you never see in a non-sideshow hack

I'm sure you can think of many more.


Few things for Chaos Rush:

1. Do you have any plans for (or will you support) an item modernization project? This would basically axe a lot of the useless items and combine items that do the same thing (Poké Doll and Fluffy Tail) into one. It could also repoint the index numbers so you end up with a smaller list and a more friendly room for expansion. I'd like to start something like this for ROM bases. Or if it's too complicated, maybe just axe useless items like mails.

2. In fact, do you plan on getting rid of ANYTHING besides the Pokémon Contest data? I mean, if you look at completed ROM hacks and what people actually use in them, there's huge chunks of data that's just never used.

3. My spriting skills are horrid but I am good at recruiting people. For your sprite modernization project, would you like me to scour for spriters here, Bulbagarden and Serebii and try to recruit people to help you?

4. What are you doing with the free space between Celebi and Treecko?

5. Is adding fakemon problematic in Emerald if you replace existing space? I know you said that the animated graphics crash when you add later generation Pokémon, but you didn't specify what would happen if you simply replaced two-frame sprites of existing Pokémon.

6. (see 5) What if I were to use the space between Treecko and Celebi? And the index numbers for the Unown forms (if I'm okay with a screwed up Pokédex)? Would that work just as well?

7. Are cries stored the same illogical, messy way in Emerald as they are in Ruby? Have you looked into this at all? If so, what have you learned (comparing Ruby to Emerald)?
 
Last edited:
1,323
Posts
16
Years
  • Seen Dec 9, 2023
There are plenty of things you can axe from 3rd gen to free up memory, if you know how:
-Mystery Gift
-ALL contest data, Pokéblocks, useless berries, and the like
-Secret base data
-Mail items
-Look at all of the items by index number (Bulbapedia article). Over half of them are useless.
-Box data (no one will be able to fill up all 14 unless they catch multiple of the same species)
-Game Corner
-Anything else you never see in a non-sideshow hack

I'm sure you can think of many more.
I don't see why I need to "axe" any of these, since Jambo51 has already figured out a way to expand the Pokedex flags without using more memory. Not to mention I would like to use Pokemon Contests in a future hack, and removing useless items would be more tedious than keeping them in, since it would require re-pointing the table and removing blank items that hackers could potentially use to create custom items. It makes absolutely no sense to remove them (and I've already used up about 30 of them for my custom items related to form changing, along with the new evolutionary stones introduced in D/P, and my custom stones, the Razor Stone, the Royal Stone, the Omega Stone, the Magnet Stone, and the Porygon Stone). And I will definitely be needing a Game Corner in my future hack Pokemon DarkViolet, so there is no way I'm going to remove that.

Few things for Chaos Rush:

1. Do you have any plans for (or will you support) an item modernization project? This would basically axe a lot of the useless items and combine items that do the same thing (Poké Doll and Fluffy Tail) into one. It could also repoint the index numbers so you end up with a smaller list and a more friendly room for expansion. I'd like to start something like this for ROM bases. Or if it's too complicated, maybe just axe useless items like mails.
As I said earlier, removing useless items make no sense because it removes opportunities for hackers to easily create custom items.

2. In fact, do you plan on getting rid of ANYTHING besides the Pokémon Contest data? I mean, if you look at completed ROM hacks and what people actually use in them, there's huge chunks of data that's just never used.
No, because I am planning on using Pokemon Contests in my hack(s). And I'm not going to remove something that was available in the original Ruby rom, why would I take away features, that makes no sense. You can't assume that no one is going to use them, for instance, you said I should remove the Game Corner, but I am planning on having a Game Corner in my own hack(s).

3. My spriting skills are horrid but I am good at recruiting people. For your sprite modernization project, would you like me to scour for spriters here, Bulbagarden and Serebii and try to recruit people to help you?
Maybe. The thing is, my standards are ridiculously high, and I refuse to have anything below professional quality. And everytime someone tries to help, there's always something unsatisfactory about their sprite (sorry, people that have helped). I still appreciate the effort, but I don't see anything wrong with wanting to have high-quality sprites. Not that I'm gloating about my own skill or anything, but I've been spriting since 2006, and I created ALL of the custom graphics in Pokemon DarkViolet, so I think it's safe to say that I'm an excellent graphic artist:
91253557.png
26691123.png

Oh, and look at my avatar. I love it.

4. What are you doing with the free space between Celebi and Treecko?
Absolutely nothing. I'm keeping them there, so that hackers can use them for whatever. For instance, I'm planning on using them for mugshots. Also, if you remember in Pokemon DarkViolet, I had the fossil sprites appear in the Pewter Museum, despite being an Emerald hack. I used the ?? slots between Celebi and Treecko, and I will be needing them again when I restart DarkViolet on Ruby.

5. Is adding fakemon problematic in Emerald if you replace existing space? I know you said that the animated graphics crash when you add later generation Pokémon, but you didn't specify what would happen if you simply replaced two-frame sprites of existing Pokémon.
It was only problematic because there are multiple tables relating to the animations, and none of them have been found. They crash because the slots for the added Pokemon simply don't exist in the table, which could easily be solved by finding the tables and expanding them. It is not problematic at all if you replace an existing Pokemon, because they already have an existing slot in the animation tables.

6. (see 5) What if I were to use the space between Treecko and Celebi? And the index numbers for the Unown forms (if I'm okay with a screwed up Pokédex)? Would that work just as well?
The index numbers between Celebi and Treecko is being left untouched, so their functionality remains the same that it would be in any other Gen III rom. And while I'm not sure how the Unown index numbers work, I'm pretty sure you're not supposed to actually use them, as they all have blank base stats. You're supposed to use the first Unown (index #201), and Game Freak had their own method of choosing which letter is appears as, which I think Jambo51 found out how it was controlled in FireRed.

7. Are cries stored the same illogical, messy way in Emerald as they are in Ruby? Have you looked into this at all? If so, what have you learned (comparing Ruby to Emerald)?
Yeah, they are all stored in the illogical messy way in all Gen III roms. My guess is that Kecleon was the first Gen III Pokemon created, hence why its the first cry in the table.
 
Last edited:

InMooseWeTrust

Jack of All Trades
803
Posts
16
Years
Are you familiar with Destinedjagold's Ruby Destiny hacks? I remember in one of them, there was a cave where you could catch all of the Unown forms. And this was in RUBY. Maybe you can ask him how to exploit those index numbers?
 
Status
Not open for further replies.
Back
Top