• 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?".
  • 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.

[ARCHIVE] Simple Questions (SEARCH BEFORE ASKING A QUESTION)

Status
Not open for further replies.

AtecainCorp.

Rejishan awake...
1,377
Posts
15
Years
Two questions about Pokemon Ruby.

1. It is possible to add more types without repleacing existing Types? <I need to add 3 types>
- If it was possible... How to edit their effectivnese.

2. How add new Voicegroup to Pokemon Ruby? I want add to my hack something like GB PLAYER. And I need to inster GBC Soundfonts.
 

Wobbu

bunger bunger bunger bunger
2,794
Posts
12
Years
Two questions about Pokemon Ruby.

1. It is possible to add more types without repleacing existing Types? <I need to add 3 types>
- If it was possible... How to edit their effectivnese.

2. How add new Voicegroup to Pokemon Ruby? I want add to my hack something like GB PLAYER. And I need to inster GBC Soundfonts.

1. A couple pages earlier in this thread there was a discussion about adding types.

2. Using a hex editor, find 0x600 free bytes, then write 00 3C 00 00 00 00 00 08 00 00 00 00 to the free space 128 times (I recommend using a fill selection feature). This would be the setup for a single sample instrument. Fortunately, Sappy can change the setup for you if you have a multi sample instrument.

I'd rather not go too in-depth because gogojjtech has explained this: http://www.pokecommunity.com/showthread.php?t=301027

Fortunately for you, Ruby already has the GBC 'soundfonts.' They're called squares, waves, and noises, and can be created with Sappy.
 
Last edited:

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
Two questions about Pokemon Ruby.

1. It is possible to add more types without repleacing existing Types? <I need to add 3 types>
- If it was possible... How to edit their effectivnese.

Stop asking questions like these. You know that in order to increase limits and add more, it will require a little bit of ASM, even if it is just following the loading routine and increasing the limits. However, you adamantly refuse to learn even the most basic of ASM. Instead hounding us for a different answer, which there is none.
 

Alice

(>^.(>0.0)>
3,077
Posts
15
Years
So this is weird... the name of routes/towns/etc only display in the starter town, and nowhere else. Any idea why that's happening? I have it set to show name of course.
 

sCr45h

The Littleroot Champ
134
Posts
11
Years
So, I was wandering, if I start working on a hack, can I make the maps now and insert the new tiles and sprites later or do I have to do it while creating the maps? Im a noob so I'm trying to learn abit more. Its just that I started a Hack and I want to make it the best I can but Im still learning.
 
17
Posts
10
Years
  • Seen Feb 4, 2016
I'm working with Pokémon Ruby, and I'm trying to replace the move Cotton Spore with Electroweb (a move from Generation V). I've figured out how to edit the move name, description, and the actual effects of the attack using A-Tack and a hex editor with tables.

But I have no idea how to change the battle animation/effect. I'd settle for making it use the same one as Spider Web, although ideally I'd like the web to be tinted yellow.

All the information I've been able to find about this talks about Fire Red, and the one tool I found that claimed to do this (PGE's built in attack editor), causes the game to display a white screen and crash on start up, if I so much as TOUCH the game with that tool.

So now I'm thinking of just trying to find the tables/pointers manually and do this in a hex editor or something, unless there's a better way. Anyone have any idea how to do this?
 

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
2,475
Posts
11
Years
Athenian, use pokemon game editor's attack editor.

sC45h, it doesn't matter as long as you're using advance map 1.92, not 1.95
 

DoesntKnowHowToPlay

Tiny Umbrella with Lots and Lots of Good
265
Posts
12
Years
  • Seen Feb 24, 2024
I'm working with Pokémon Ruby, and I'm trying to replace the move Cotton Spore with Electroweb (a move from Generation V). I've figured out how to edit the move name, description, and the actual effects of the attack using A-Tack and a hex editor with tables.

But I have no idea how to change the battle animation/effect. I'd settle for making it use the same one as Spider Web, although ideally I'd like the web to be tinted yellow.

All the information I've been able to find about this talks about Fire Red, and the one tool I found that claimed to do this (PGE's built in attack editor), causes the game to display a white screen and crash on start up, if I so much as TOUCH the game with that tool.

So now I'm thinking of just trying to find the tables/pointers manually and do this in a hex editor or something, unless there's a better way. Anyone have any idea how to do this?

Simplest way would be to take bits of move animation data in FR in a hex editor (offsets for this are documented somewhere in R&D) and search for it in Ruby. It'll probably take a few tries to get something that isn't different between the two ROMs, but the general structures of the scripts and the commands are the same so it should be doable. Once you've found a battle script in Ruby, search for the pointer to it and there's your animation pointer table.
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
So, I was wandering, if I start working on a hack, can I make the maps now and insert the new tiles and sprites later or do I have to do it while creating the maps? Im a noob so I'm trying to learn abit more. Its just that I started a Hack and I want to make it the best I can but Im still learning.

As long as the new tiles line up with the old ones (ie, you insert new trees where old ones are, new flowers where old flowers were, new water where old water was...) then it won't matter. If your tilesets do no line up, then you need to do those first.
 

Tlachtli

Crit happens.
267
Posts
12
Years
Egg types are always ???, but I'd like to change that. For Emerald, what kind of editing would be required to make eggs show the type combo of what will actually hatch (hex vs. ASM, ect.)?

EDIT: Also, is there an easy(ish) way to find out exactly how much the DMA is shifting the memory addresses?
 
Last edited:
17
Posts
10
Years
  • Seen Feb 4, 2016
Simplest way would be to take bits of move animation data in FR in a hex editor (offsets for this are documented somewhere in R&D) and search for it in Ruby. It'll probably take a few tries to get something that isn't different between the two ROMs, but the general structures of the scripts and the commands are the same so it should be doable. Once you've found a battle script in Ruby, search for the pointer to it and there's your animation pointer table.

Thanks, I looked over the threads a bit more carefully. I didn't have the patience to expand the move table, learn animation scripting, or look at RAM in VBA to figure out where moves start and end, so I took something of a shortcut.

1. I found a list of moves in the order they're listed in the ROM itself. You could also just load up your ROM in PGE or A-Tack and use that list as a reference, I guess. I CAN'T link to what I used, thanks to this site's annoying rule against linking. :(

2. I noted the number of the move Spider Web (169), and converted it to Hex (A9).

3. I multiplied A9 by 4, and got 2A4.

3. I found the offset of the Ruby Attack Animation Table in a thread, 1C7168.

4. I added 1C7168 to 2A4, and got 1C740C.

5. I went to 1C740C in a Hex editor, and wrote down the pointer 6A1D1D between the two 08 bytes (big-endian/ARM form of 1D1D6A, if you care).

6. I repeated step 1, and got 178 for the move Cotton Spore (which I'm changing into Electroweb).

7. I converted 178 into Hex, giving B2.

8. I multiplied B2 by 4, and got 2C8.

9. I added 1C7168 to 2C8, and got 1C7430.

10. I went to 1C7430, and OVERWROTE the three-byte pointer there with the 6A1D1D pointer I wrote down earlier.

Now Electroweb has the Spider Web animation! I tested it, and it works perfectly. This method should work any time you want to "borrow" an animation from an existing move to overwrite another existing move, provided you DON'T need to customize or change the animation at all.

I hope it helps someone out there, so they don't have to wade through all the stuff I did.
 

Aethestode

Hacker
1,700
Posts
16
Years
  • Age 31
  • Seen Aug 14, 2023
Find the scripts, remove the check flag.

Okay, how do you find the SURF script?
I searched early the entire thread, and all of them just vaguely say "go look for it". I mean, it's easy to look for the CUT or rocksmash script, but I just don't know where to look for SURF. I tried using A-Text to look for text, and I got the dec offset, but then I was confused when it got to the Hex editor part.

Like I tried looking for it in Hex Editor with A-text by looking for the text "The Sea is dark...". I found the entire script, but there's nothing on "checkflag".
 
Last edited:
5
Posts
15
Years
I just got into scripting a few days ago, and I have a few questions about applications of setvar that I've noticed. (and other things)

-When creating a level script, I'm curious as to why it is necessary that you use setvar in the script you want to run. I realize that it is necessary, but I don't understand why and I would really like to know.

-While I'm asking questions, when using hidesprite, the sprite is successfully hidden until the player takes a step, and then it reappears in its original location. I'm fairly certain that I'm supposed to use setvar, but I don't know what to set the variable or value as.

-Also, my level scripts only trigger the first time I enter a level as far as I can tell, why is that, and what actions are necessary to create a level script that triggers every time you enter the level?

I'm using XSE for my scripting and Advance-Map 1.0.9 in case anybody needs to know. Thanks in advance.
 
21
Posts
10
Years
  • Seen Aug 13, 2013
So my brother came up with the idea of creating a hack that allows you to use Dark Balls in the games. Neither of us are computer savvy, and we were wondering if anyone would like to take on the challenge of creating it. So, anyone interested?
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
Egg types are always ???, but I'd like to change that. For Emerald, what kind of editing would be required to make eggs show the type combo of what will actually hatch (hex vs. ASM, ect.)?

EDIT: Also, is there an easy(ish) way to find out exactly how much the DMA is shifting the memory addresses?

Probably ASM hacking. You will have to see how that is loaded.

DMA is easy. In the RAM, there will be a pointer to the new data. A good example is at 0x300500C. The pointer here will constantly change, but it always points to the same data (which happens to be your player data, like name, gender, and such). That is how DMA works.

Okay, how do you find the SURF script?
I searched early the entire thread, and all of them just vaguely say "go look for it". I mean, it's easy to look for the CUT or rocksmash script, but I just don't know where to look for SURF. I tried using A-Text to look for text, and I got the dec offset, but then I was confused when it got to the Hex editor part.

Like I tried looking for it in Hex Editor with A-text by looking for the text "The Sea is dark...". I found the entire script, but there's nothing on "checkflag".

What is the offset of the script you found?

I just got into scripting a few days ago, and I have a few questions about applications of setvar that I've noticed. (and other things)

-When creating a level script, I'm curious as to why it is necessary that you use setvar in the script you want to run. I realize that it is necessary, but I don't understand why and I would really like to know.

-While I'm asking questions, when using hidesprite, the sprite is successfully hidden until the player takes a step, and then it reappears in its original location. I'm fairly certain that I'm supposed to use setvar, but I don't know what to set the variable or value as.

-Also, my level scripts only trigger the first time I enter a level as far as I can tell, why is that, and what actions are necessary to create a level script that triggers every time you enter the level?

I'm using XSE for my scripting and Advance-Map 1.0.9 in case anybody needs to know. Thanks in advance.

1)No, you don't need to use setvar. *Before* the script runs, (only for map script types 02 and 04) it checks the var that you provided in the header and makes sure it was previously set the value. If not, the script doesn't run.

2)You have to set the flag which is in the person ID in A-map for that OW.

3)See number 1.

DUUUUUUUUUUUUUUUDE. Upgrade. Advance map 1.92 and XSE 1.1.1 are the versions you should have.
 
Last edited:

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
2,475
Posts
11
Years
Thanks, I looked over the threads a bit more carefully. I didn't have the patience to expand the move table, learn animation scripting, or look at RAM in VBA to figure out where moves start and end, so I took something of a shortcut.

1. I found a list of moves in the order they're listed in the ROM itself. You could also just load up your ROM in PGE or A-Tack and use that list as a reference, I guess. I CAN'T link to what I used, thanks to this site's annoying rule against linking. :(

2. I noted the number of the move Spider Web (169), and converted it to Hex (A9).

3. I multiplied A9 by 4, and got 2A4.

3. I found the offset of the Ruby Attack Animation Table in a thread, 1C7168.

4. I added 1C7168 to 2A4, and got 1C740C.

5. I went to 1C740C in a Hex editor, and wrote down the pointer 6A1D1D between the two 08 bytes (big-endian/ARM form of 1D1D6A, if you care).

6. I repeated step 1, and got 178 for the move Cotton Spore (which I'm changing into Electroweb).

7. I converted 178 into Hex, giving B2.

8. I multiplied B2 by 4, and got 2C8.

9. I added 1C7168 to 2C8, and got 1C7430.

10. I went to 1C7430, and OVERWROTE the three-byte pointer there with the 6A1D1D pointer I wrote down earlier.

Now Electroweb has the Spider Web animation! I tested it, and it works perfectly. This method should work any time you want to "borrow" an animation from an existing move to overwrite another existing move, provided you DON'T need to customize or change the animation at all.

I hope it helps someone out there, so they don't have to wade through all the stuff I did.

You know that Pokemon Game editor's Attack editor can change animations, effects, descriptions, power, accuracy, whether it's Status, physical, or special. This whole thing would have been faster with it...
 
5
Posts
15
Years
1)No, you don't need to use setvar. *Before* the script runs, (only for map script types 02 and 04) it checks the var that you provided in the header and makes sure it was previously set the value. If not, the script doesn't run.

2)You have to set the flag which is in the person ID in A-map for that OW.

3)See number 1.

DUUUUUUUUUUUUUUUDE. Upgrade. Advance map 1.92 and XSE 1.1.1 are the versions you should have.

I did end up upgrading thanks lol. However, I only partially understand your explanation for the first question. From what I understand of script types 2 and 4, setvar essentially becomes a flag for the event script and causes it to only go off once. If I'm correct, would I have to use a different script type for an event which occurs every time I enter an area?

Also please correct me if I'm wrong because I'm really trying to understand this.

EDIT: Also, I've noticed that when entering the map I've mad on Advance Map my game sometimes freezes. Does anybody know what the issue is?
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
I did end up upgrading thanks lol. However, I only partially understand your explanation for the first question. From what I understand of script types 2 and 4, setvar essentially becomes a flag for the event script and causes it to only go off once. If I'm correct, would I have to use a different script type for an event which occurs every time I enter an area?

Also please correct me if I'm wrong because I'm really trying to understand this.

EDIT: Also, I've noticed that when entering the map I've mad on Advance Map my game sometimes freezes. Does anybody know what the issue is?

These are all related. A-map mislabled it. Where it says Flag, it really means var. As long as the var = the value, the script will run. 04 only runs once but has a lot of limitations and 02 continually runs every frame until the var is changed. If you want the script to run each time, I would suggest using a 02 map script, with var 0x4000 and value 0. Var 4000 is temporary, so it will reset when warping. Finally, at the end of your script, for the last line, have "setvar 0x4000 0x1". This will prevent it from running every frame, and will run just when entering the map each time because the var will reset.
 

Renegade

Time for real life...
995
Posts
12
Years
Hiya people~
Just wondering something... What do people mean when they say one var can be used for an entire game? That doesn't make sense to me. How can only one var be used (for example, 0x4011) to track more than one event in a hack? If someone could please elaborate on this, it would be much appreciated :)
 
5
Posts
15
Years
These are all related. A-map mislabled it. Where it says Flag, it really means var. As long as the var = the value, the script will run. 04 only runs once but has a lot of limitations and 02 continually runs every frame until the var is changed. If you want the script to run each time, I would suggest using a 02 map script, with var 0x4000 and value 0. Var 4000 is temporary, so it will reset when warping. Finally, at the end of your script, for the last line, have "setvar 0x4000 0x1". This will prevent it from running every frame, and will run just when entering the map each time because the var will reset.

This makes way more sense. Thanks a ton. I find it really interesting that Var 4000 is temporary. I don't think I would've figured that out by myself.
 
Status
Not open for further replies.
Back
Top