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

Help Thread: Quick Questions & Answers

Status
Not open for further replies.
I resized and inserted all frames of the main character's overworld following Darthatron's.
The overworld is shown correctly both in Overworld Editor and in Advance Map, but ingame there's just one part of the top of the overworld and it's split too. How could I solve it?

Solved it.
To those who might run into the same problem: "Unknown pointer 1" and "Unknown pointer 2" are different according just to the sprite dimension.
So if you want to use a 32x32 overworld, check the UP1 and UP2 of an already existing 32x32 overworld. Then with your hex editor replace the current UP1 and UP2 of your resized overworld with those of the one whose dimensions are 32x32 already.
 
Last edited:
Ok, now I'm trying to make an old man speak, (80008F not sure if that matters) but when I talk to him I end up in the team rocket hideout?
Yes. This happens ALL. THE. TIME. to me. A script that I compile just randomly sends me to team rocket's hideout. But just to make sure it is precisely the same thing that happens to me, perhaps you should post the actual script in the script help thread? Or more likely, the actual issue is that you didn't compile it in free space and overwrote another script.
 
Code

#dynamic 0x800000

#org @start
msgbox @talk1 0x2
end

#org @talk1
= Zzz... What's That? Zzz...

Compiled:
-------------------------------------
Opening output: C:\Users\KIDS\Desktop\1636 - Pokemon - Fire Red Version (U).gba...
Processing input script...
1 - #DYNAMIC
> lDynamicStart = 0x800000
3 - #ORG
> lNewOffset = 0x80008F
4 - (0F) - MSGBOX (native) [+8]
> pText = 0x8800099
> bType = 0x2
5 - (02) - END [+1]
7 - #ORG
> lNewOffset = 0x800099
8 - RAW TEXT [+27]
> sText = "Zzz... What's That? Zzz..."
-------------------------------------
DYNAMIC_OFFSET 1
> sLabel = @start
> lOffset = 0x80008F
DYNAMIC_OFFSET 2
> sLabel = @talk1
> lOffset = 0x800099
-------------------------------------
Cleaning up...
Closing output...
Finished processing input in 0.013 seconds.
 
This is bad. really bad.
[PokeCommunity.com] Quick Questions & Answers
 
Try to put #freespace 0xFF before #dynamic 0x800000, maybe your script is just overwriting some other data. Then take the first offset XSE gives you and put it on the overworld on Advance Map.
 
Last edited by a moderator:
That I don't know—the reason I corrected NewDenverCity was I thought you were just talking about getting more flags. I have no idea how trainer flags are mapped into the available space.
 
I need something clarified about abilities. I've expanded the names and descriptions tables (repointed them first obviously) and that works fine but when I add a new ability routine how do I assign it to the next free ability slot (the one after airlock)? Is there a table of ability routine pointers that I have to expand too?

This is for Emerald btw. Thanks
 
I need something clarified about abilities. I've expanded the names and descriptions tables (repointed them first obviously) and that works fine but when I add a new ability routine how do I assign it to the next free ability slot (the one after airlock)? Is there a table of ability routine pointers that I have to expand too?

This is for Emerald btw. Thanks
Not quite, as abilities don't work like that. The way the system works is by reading the Pokémon's attributes from the Pokedex chart and assigning it either its first or second ability, which is a half-word. Then there are various hooks and checks scattered throughout the entire ROM looking for and comparing that ability. So no, there's no ability routine pointer table, so you don't need to expand anything else.
 
Not quite, as abilities don't work like that. The way the system works is by reading the Pokémon's attributes from the Pokedex chart and assigning it either its first or second ability, which is a half-word. Then there are various hooks and checks scattered throughout the entire ROM looking for and comparing that ability. So no, there's no ability routine pointer table, so you don't need to expand anything else.

So how does the game know what to do when a Pokemon has a certain ability that isn't a vanilla one?
 
So how does the game know what to do when a Pokemon has a certain ability that isn't a vanilla one?
The asm that you insert. Think about how abilities work. They trigger at many different times. It wouldn't make sense to have pointers to "ability effects" because it would be far more logical to have a check for specific abilities at times that they would trigger.
 
The asm that you insert. Think about how abilities work. They trigger at many different times. It wouldn't make sense to have pointers to "ability effects" because it would be far more logical to have a check for specific abilities at times that they would trigger.

Ok I see, but if you give a Pokemon a new ability how does the game know it's the new abiltity you inserted?
 
Ok I see, but if you give a Pokemon a new ability how does the game know it's the new abiltity you inserted?
It reads the index off of the base stats table. Let's say that you're attempting to add the ability regenerator. What I'm getting at is that there's no "pointer" that goes regenerator ability -> heal. Instead, you would modify the pokemon switch routine (I'm guessing around the same place as natural cure, though I haven't looked at the public code) to add a check - for the pokemon having the index for the regenerator ability - and if ability index matches regenerator, you heal the Pokemon. If you're asking about how it is determined which ability a pokemon has, it is dependant on getattr on species and getattr on ability bit, a bit that matches the lowest bit of personality for a pokemon with two abilities or zero otherwise. There are various routines scattered throughout the ROM that use those two pieces of info to grab the ability index number from the species' entry in the base stats table.
 
Hi there, for some reason a script i made is freezing the game, i can't understand what i am doing wrong really...any help with this?

Spoiler:
 
Spoiler:

I completely understand now. It all makes sense thanks.
 
Hi there, for some reason a script i made is freezing the game, i can't understand what i am doing wrong really...any help with this?

Spoiler:

try putting "0x" before the 4's, 12, and 13 after the applymovement's and waitmovement's, and after the hidesprite
 
Last edited:
Status
Not open for further replies.
Back
Top