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

Development: Pokémon Fire Red Hacked Engine

219
Posts
16
Years
The text colours is in the scripts in Firered normally, and is editable by Script Editing, not in the OWs.
Of course I know that.And please test before you talk.

Code:
#dynamic 0x800000
 
#org @1
lock
faceplayer
message @2 0x2
release
end
 
#org @2
= SEE MY COLOR.

Complie it and give it to a gril OW and a boy OW,and you'll realize it .
 
Of course I know that.And please test before you talk.

Code:
#dynamic 0x800000
 
#org @1
lock
faceplayer
message @2 0x2
release
end
 
#org @2
= SEE MY COLOR.

Complie it and give it to a gril OW and a boy OW,and you'll realize it .

You're right, there must be a gender byte stored somewhere to determine whether it's pink or blue font. But, if all else fails, you could just use the textcolor command. It's cumbersome, but it'll totally work.

And thanks for the sethealingplace help Amachi!
 

RedYoshi

Wah! Yoshi!
215
Posts
16
Years
Is there a way to just use the extra palettes with the overworlds that are already in the game? Without having to use the expanded OverWorld hack?

I changed the sprite palette via hex editing, as in the original palette was # 6, and I changed it to #22 in a hex-editor. The sprite looks fine in the overworld editor (it uses the changed palette), however in game it appears as having the original palette (#6)


Nvm, just read about the palette slot thing, I really need to double check these things....
 
Last edited:

JPAN

pokemon rom researcher
104
Posts
15
Years
  • Seen Jul 2, 2016
Sorry for the late replies, everyone.
The ice don't breaks when we step on it.
Even from the time I wrote my document about behaviour bytes that tile has given me a headache. Truth be told, that byte only works on that specific tile in that specific tileset. Never found out why. At the moment, the only fix I can give you is by placing on a step (green) script the following code:
Spoiler:

This will make the tile you are stepping on become the next tile, but you need some way to know what the next tile will be.
In the OW data ,there must be some bytes about OW's gender.You can see when talk to a gril OW,the fonts are red,but blue ones when a man .But I didn't see whatever about gender in that table, is it missed?
To be honest, I didn't even notice that color detail until I read your post. So I searched around, and found no difference between male and female OWs in the data. Most likely, there must be a separate table somewhere detailing that behaviour, or separate set of flags that are checked upon opening a script with that OW's number.
 

JPAN

pokemon rom researcher
104
Posts
15
Years
  • Seen Jul 2, 2016
By the way,is there any possibilty that help me about this? :http://www.pokecommunity.com/showpost.php?p=5389378&postcount=12768
Looks I have nobody else to ask for help...
First of all, from what I understood, you placed the sprite directly under the first table. Just to make it clear, you need to first insert a pointer in the first table (at 1a2000), and that pointer must point to a table, where each entry is a OW sprite. So, imagine you want to insert the sprite at 0x1A1740. then, you first place at 1a2004 a pointer to another address, like 0x1a9000, and there you place the pointer 0x1a1740. Either way, I wouldn't recommend using those addresses, as all addresses where the old scripts used to be (16000 to 1b0000) may be used in future versions.
Also, in the end, the sprite wouldn't show properly. It appears I forgot to include a very important routine on the last patch. That problem will be solved by next release.
I have 3 questions.

1. Is it possible to add a way to change the graphic of the old man special (of him throwing the pokeball), perhaps using load pointer?

2. Is it possible to add a way to have a script load every time any map is loaded?

3. Is it possible to add a way to have a script load every time the player takes a step?
The first (backsprite switching in general) is giving me a hard time thanks to the pointless reloading of palettes. I'm finishing the backsprite loader for the next release, but nothing using loadPointer or the like, just hardcoded in a table. Do you really need to switch the old man specifically or did you mean a trainer in general(like yourself)?

The second can be done sacrificing the fourth level script, forcing every map to load a specific script. I haven't really looked into it yet, but my guess is that changing the script loading routine, that searches if there is a level script to execute, to always check a new memory or ROM area where there is always a script to be used could be done.

The third is much harder. While I have found several routines that deal with the walking around, I have yet to find the one that calls all the separate others.
There are at least 4 routines where I found steps to work. One is the Daycare, other is the other daycare, the third is the safari zone and the last is the happiness counter. Though it can be done, I have to first find the master routine that makes you walk around.
 

Darthatron

巨大なトロール。
1,152
Posts
18
Years
The first (backsprite switching in general) is giving me a hard time thanks to the pointless reloading of palettes. I'm finishing the backsprite loader for the next release, but nothing using loadPointer or the like, just hardcoded in a table. Do you really need to switch the old man specifically or did you mean a trainer in general(like yourself)?

The second can be done sacrificing the fourth level script, forcing every map to load a specific script. I haven't really looked into it yet, but my guess is that changing the script loading routine, that searches if there is a level script to execute, to always check a new memory or ROM area where there is always a script to be used could be done.

The third is much harder. While I have found several routines that deal with the walking around, I have yet to find the one that calls all the separate others.
There are at least 4 routines where I found steps to work. One is the Daycare, other is the other daycare, the third is the safari zone and the last is the happiness counter. Though it can be done, I have to first find the master routine that makes you walk around.

Well... Switching the old man in order to create something similar to Yellow version so I can have an event of Oak catching Pikachu and then the original event where it's meant to be. However, changing the players battle sprite would also be pretty helpful.

I really have nothing to ad about the other two points, but your idea seems to be logical. I hope you can get them both done. :)
 

onyx79

Red Dead Revolver
488
Posts
15
Years
what I've downloaded your engine and it has deleted all of my person OW's also how can I use all of the features in your hacked engine?,how to use the safari zone swarms and etc.
 

Quickster

Dream or Drop?
351
Posts
16
Years
  • Seen Apr 4, 2016
Well... Switching the old man in order to create something similar to Yellow version so I can have an event of Oak catching Pikachu and then the original event where it's meant to be. However, changing the players battle sprite would also be pretty helpful.

Well, you can always replace the old man in tile molester,for example, see my signature.
If thats sorta what youre aiming for.
 

Darthatron

巨大なトロール。
1,152
Posts
18
Years
Well, you can always replace the old man in tile molester,for example, see my signature.
If thats sorta what youre aiming for.

The whole point was so I could switch the sprite in game so I could use the old man and another one. Thanks for the suggestion, but read more carefully next time. ^_^
 

Tropical Sunlight

The Faltine
3,476
Posts
16
Years
what I've downloaded your engine and it has deleted all of my person OW's also how can I use all of the features in your hacked engine?,how to use the safari zone swarms and etc.
The patch was supposed to delete every single script in the game.

Read the MS Word file that was included.
 
219
Posts
16
Years
First of all, from what I understood, you placed the sprite directly under the first table. Just to make it clear, you need to first insert a pointer in the first table (at 1a2000), and that pointer must point to a table, where each entry is a OW sprite. So, imagine you want to insert the sprite at 0x1A1740. then, you first place at 1a2004 a pointer to another address, like 0x1a9000, and there you place the pointer 0x1a1740. Either way, I wouldn't recommend using those addresses, as all addresses where the old scripts used to be (16000 to 1b0000) may be used in future versions.
Also, in the end, the sprite wouldn't show properly. It appears I forgot to include a very important routine on the last patch. That problem will be solved by next release.
O.O...Next release....Seems I have to make my hack beta at that time...

By the way,is it possible that make a trainer run a script other than trainerbattle when he sees you?
 

Haku.

(FLAME)...H....A...K..U
385
Posts
16
Years
does anyone know how do i make a new pallete pointer for an overworld?
I read the read me but still i don't understand a thing.
How do i repoint a pallete?
 
9
Posts
14
Years
  • Seen Aug 10, 2010
So wait...

Is this the ASM tool? I heard someone talking about how ASM can edit the intro movie sequence. Or are these tools just extensions of ASM?
 

JPAN

pokemon rom researcher
104
Posts
15
Years
  • Seen Jul 2, 2016
Posting here to tell you all that the new version is now available on the first post. Lot's of changes were made there, but some new features are really worth talking about, and are too big for that post space.

First, Dynamic OverWorlds. This will allow you, by using variables 0x4080 to 0x408f to create decoration-like Overworlds, that can be changed by scripts at any time without needing to create tons of them at A-Map and placing them hidden at the top of the map. All you need to do is place their OW number as one between 0 to f and then place in the right unknown byte below the picture number (table number) 0xFF, and then just change the respective variable (0x4080 for OW number 0, 0x4081 for OW number 2, etc.) the number of the table and sprite number you wish to use.
What can this be used for? For instance, simple randomized trainer rooms or Secret Bases.

Second we now have full trainer customization. Everything from the trainer card picture to the backsprite and OW can be selected in runtime by pushing the right buttons (or, in this case, variables). Details on how it works are found in the manual.

Next, we have Walking scripts. This new function allows you to activate a script simply by walking around. These scripts are very versatile, and are activated whenever there isn't a step-on script or warp in the way, as well as a EGG hatching or VS seeker running out. This Script allows most people to implement several random events that could before only be activated when a player crossed a map line, or by using up the stored steps of the VS seeker specials.
Examples of what you can do with this are presented in the manual, as well as details of its functioning. But combined with the getTileBehaviour special, also added in this entry, you can easily mimic and replace behaviour bytes and create your own step-on scripts based on past events (this was the closest I got to recover the ice behaviour lost in the past entry. I will fix it, but for now this is a good replacement).
Downsides to this code is that some low-level walking events, such as Random pokemon battles, are disabled. But a fix is given in the manual, using another of the specials developed in this delivery, the Random Wild Battle Generators the game uses, in conveinent Special format.

I hope you enjoy this delivery, and that it may help you with your hacks. Any bug or questions, post them here or PM me.
 

RedYoshi

Wah! Yoshi!
215
Posts
16
Years
...Second we now have full trainer customization. Everything from the trainer card picture to the backsprite and OW can be selected in runtime by pushing the right buttons (or, in this case, variables). Details on how it works are found in the manual.

Wow! The trainer customization thing sounds awesome! This adds lots of possibilities! Is it safe to patch over a Rom that has been patched with the previous version? I kinda don't feel like re-doing everything in my hack again...
 

Darthatron

巨大なトロール。
1,152
Posts
18
Years
You update is very good, but I was hoping for something do change the map tiles based on variables, much like your "Get Tile Number" function, but rather setting it.
 

JPAN

pokemon rom researcher
104
Posts
15
Years
  • Seen Jul 2, 2016
You update is very good, but I was hoping for something do change the map tiles based on variables, much like your "Get Tile Number" function, but rather setting it.
If you are talking about setting the tiles based on a position stored in a variable, it already does that, using the Setmaptile command.
In SetMapTile, the three first arguments are able to be variables. for instance, you may use this command:
Code:
Special 0x8f
Setmaptile 0x8004 0x8005 0x(your var here) 0xC
special 0x8e
To change the tile you are stepping on to the value contained inside your variable. This is already provided with the game code.
If you are talking about changing behaviour and background values, the new specials and codes I introduced allow you to simulate that to an extent.
 

Darthatron

巨大なトロール。
1,152
Posts
18
Years
If you are talking about setting the tiles based on a position stored in a variable, it already does that, using the Setmaptile command.
In SetMapTile, the three first arguments are able to be variables. for instance, you may use this command:
Code:
Special 0x8f
Setmaptile 0x8004 0x8005 0x(your var here) 0xC
special 0x8e
To change the tile you are stepping on to the value contained inside your variable. This is already provided with the game code.
If you are talking about changing behaviour and background values, the new specials and codes I introduced allow you to simulate that to an extent.
I had no idea they could be variables (apparently neither did a few other people I asked last night), thanks, that makes me life much easier. Keep up the good work. And thanks again.

EDIT: Is it just me or does the variable 0x800C no longer contain which way the player is facing?
 
Last edited:
Back
Top