PDA

View Full Version : Development: Modernizing the FireRed field engine?


Hiroshi Sotomura
April 22nd, 2010, 10:01 PM
I'll start with a big line.
FireRed's field engine is dated.

Obviously we don't have things like two-trainer double battles, but that's one thing. We already have an RTC implementation, which is another thing. The fact is that FireRed is designed to imitate RBY, and it falls down to several small things. Not only that, but FireRed feels older (ignoring the obvious graphical engine and the mechanics changes), so we should limit our scope to the 3rd Generation only.

The player doesn't face the trainer when initiating a battle.
Okay, I'll be honest: I started the thread mostly because I need some insight into this issue. FR/LG imitates RBY, where the player doesn't look at the trainer before the battle starts. The trainer has been facing the NPC since the Gold/Silver days, and it's still like this.

Speaking of initiating battles, the music when a trainer approaches is limited to three tracks - recent games have about 11, or 12, where an appropriate trainer theme plays for them (e.g. Ace Trainers, Youngsters, Miniskirts, Twins…) Darthatron and I took a bit of time to research it and we thought the music table was at 0x47A2D2, but changing it has no effect.

The item sound.
That Level Up sound is inappropriate for getting items - since Gold/Silver we've had the new Item Get fanfare . Is it also possible to implement the TM Get fanfare when a player receives a TM, and the Berry Get fanfare when the player finds a Berry?

Pokémon Ability behaviours in the field.
Implementing this would be tough. It basically improves Pickup, and abilities like Arena Trap increase the chance of encountering Pokémon. Oh, and items like Light Ball and Magma Armor have breeding effects, but that's going to be absolutely horrible to implement.

An IV checker character.
There's one in Emerald!

Battle Tower?
It's a de facto element of the Pokémon games since Ruby/Sapphire, and we don't have it. Would it be excessively hard to tap into the bank of trainers in the Trainer Tower, for instance? Would it be possible to implement more?

Updated Berry behaviours.
We've seen it in Emerald, but obviously it's much more difficult (in that it requires programming) to implement.

Mach Bike or Acro Bike
Recent games (HG/SS) have at least the behaviour of the Mach Bike, but should we implement anything like that for FR/LG? The default bike is clumsy and still tries to imitate R/B/Y.

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

This is a feasibility survey as part of Research & Development. We can choose to get straight into developing, but otherwise, it's more about collecting thoughts and ideas. That said, since this thread is the first of its kind to be introduced here, I should note that if you don't know what you're talking about, then you shouldn't post.

Darthatron
April 22nd, 2010, 10:35 PM
The player doesn't face the trainer when initiating a battle.
Isn't this as easy as just changing the sprite? :\
EDIT: I miss understood. Nevermind.

The item sound.
This probably wouldn't be overly difficult. I'm fairly sure that all we would have to do is implement something to check the item numbers in the current routine(?), which is not overly difficult.

Pokémon Ability behaviours in the field.
Such as..? But this shouldn't be overly difficult, depending on the ability.

Battle Tower?
I've never looked in to this.

Berry behaviours.
This would probably be the most annoying thing to do.

Hiroshi Sotomura
April 22nd, 2010, 10:57 PM
Is there actually some standard trainer script to allow that, though?

Mana
April 23rd, 2010, 03:34 AM
Is there actually some standard trainer script to allow that, though?

As far as I know there is no way to make the player face the trainer in a -normal- trainer script battle.

To make it happen I guess the only ways are either: Replacing the trainer view radius with a line of Script tiles to run simple movements + battle. Although this would mean a lot of scripts it doesn't have to take up a lot of space if you keep track of your pointers and reuse the movements.

The other way would be editing the [!]-Walks up to player sequence which would require hacking the game engine directly I assume.

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

With items having different sounds this is easy with a script using the additem command, as you can decide which fanfare to use depending on whether the item is a berry, pokéball-item or whatever. Having to use that command on PokéBall items however means more commands -> more bytes per script used as the 'giveitem' command does the equivalent in a much more simple form.



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

Just realised I totally took this thread the wrong way :P I thought 'how can we implement these things in to hacks' rather than to improve the FireRed game itself XD which I'm guessing people don't want to go and rescript totally haha.

(And yes I agree hacking the engine directly is better, because then by patching it means in the future people won't have to go through these above efforts :P)

Hiroshi Sotomura
April 23rd, 2010, 03:37 AM
The other way would be editing the [!]-Walks up to player sequence which would require hacking the game engine directly.
I'm assured that since the facing was never part of the script, it definitely involves hacking the game engine.

With items having different sounds this is easy with a script using the additem command, as you can decide which fanfare to use…[cut for brevity]
It could be nice and easy but my concern is that it's automatic in Ruby/Sapphire/Emerald, particularly for Item Balls.

Also, improving the engine does make it better since it brings the games up to date and all…

JPAN
April 23rd, 2010, 06:36 AM
I'll give my two cents on this...

The player doesn't face the trainer when initiating a battle.
I actually "solved" this problem earlier with the trainer flag hack, by allowing the script to be run like a normal script. There are commands to change the player facing, and the trainer position (and number) is kept on the routine that calls this behaviour. So, it's just a matter of changing my hack around.

The item sound.
In this one, I've got little to offer. I don't usually test with sound, so I never studied that area.

Pokémon Ability behaviours in the field.
I've been studying abilities lately, and this one, with a little asm, is quite feasable. For the egg hatching, It's on the same location of my walking scripts hack, and I've sucessfully made that change before. For other field abilities, I would need to know what they are before making any leaps, but it should be similar.

An IV checker character.
Also made this one earlier. Using the pokemon decrypt special + IV getter, you just need a looping script to find them all.

Battle Tower?
I'm yet to try this out, but I had plans to make something like this. What I thought of was to either have a pool of pokemon numbers or simply use the RNG to generate pokemon numbers, have a function to create a pokemon trainer dynamically on the RAM, and have the trainerbattle command call that trainer.
At the end of the battle, clean that trainer flag and you're ready for the next one. Only problem would be the xp gain, but that could be neutralized by force-level all your party pokemon to level 100 (or similar code).

Updated Berry behaviours.
This last one is involved with Item editing. I've studied them and so far they seem pure assembly, but I thought battles were pure assembly as well... I've managed to create some items that do act on pokemon on the screen, so it's doable, but the process I have is still buggy.

I'm not currently on my hacking computer, but I'm happy to give you the source code for the solutions to the problems I have solved. For the others, I can only offer my help.

HackMew
April 28th, 2010, 08:35 AM
[...] so we should limit our scope to the 3rd Generation only.

Why being limited? I get your point, but while modernizing the engine thinking about brand new features won't hurt. We might actually come up with some interesting ones.

The player doesn't face the trainer when initiating a battle.
Okay, I'll be honest: I started the thread mostly because I need some insight into this issue. FR/LG imitates RBY, where the player doesn't look at the trainer before the battle starts. The trainer has been facing the NPC since the Gold/Silver days, and it's still like this.

Speaking of initiating battles, the music when a trainer approaches is limited to three tracks - recent games have about 11, or 12, where an appropriate trainer theme plays for them (e.g. Ace Trainers, Youngsters, Miniskirts, Twins…) Darthatron and I took a bit of time to research it and we thought the music table was at 0x47A2D2, but changing it has no effect.

The item sound.
That Level Up sound is inappropriate for getting items - since Gold/Silver we've had the new Item Get fanfare . Is it also possible to implement the TM Get fanfare when a player receives a TM, and the Berry Get fanfare when the player finds a Berry?

Well, since I'll need all of those for my hack, I'll share my findings when I look into them.

Pokémon Ability behaviours in the field.
Implementing this would be tough. It basically improves Pickup, and abilities like Arena Trap increase the chance of encountering Pokémon. Oh, and items like Light Ball and Magma Armor have breeding effects, but that's going to be absolutely horrible to implement.

Well, maybe Magma Armor might not that hard to implement, for example. What about making a complete list?

An IV checker character.
There's one in Emerald!

In my opinion, the one in Emerald is almost useless, anyway: all he can do is revealing which IV is the highest in a vague manner. I planned something similar for my hack, except all EV/IV values would be shown. Getting the respective values is really a piece of cake. If anyone wants, I can provide a working example.

Battle Tower?
It's a de facto element of the Pokémon games since Ruby/Sapphire, and we don't have it. Would it be excessively hard to tap into the bank of trainers in the Trainer Tower, for instance? Would it be possible to implement more?

I have yet to do research about it, since it's not something I would need soon.

Updated Berry behaviours.
We've seen it in Emerald, but obviously it's much more difficult (in that it requires programming) to implement.

Again, what about writing down a list?

Vrai
April 28th, 2010, 02:24 PM
Well, maybe Magma Armor might not that hard to implement, for example. What about making a complete list?

A complete list, you say?

Note: Almost all of these only occur if the Pokemon is in the lead slot. If it's not so, I'll mention it.

Arena Trap - rate of wild battles is doubled
Compoundeyes - rate of wild pokemon holding an item increases
Cute Charm - rate of wild pokemon of opposite gender increases to 66.7%
Flame Body - pokemon eggs hatch in half the time (can be anywhere in party)
Hustle - rate of wild battles decreases
Hyper Cutter - cut removes more grass than normal (can be anywhere in party)
Intimidate - cuts rate of weaker (five levels under and lower) wild battles
Keen Eye - cuts rate of weaker wild battles
Lightningrod - receives more phone calls (Emerald)
Magma Armor - see flame body (can be anywhere in party)
Magnet Pull - rate of seeing wild Steel pokemon +50%
Pressure - rate of wild battles is halved
Sand Veil - rate of wild battles during Sandstorm is halved
Static - see magnet pull but replace steel with electric (can be anywhere in party)
Sticky Hold/Suction Cups - pokemon hooked by a rod are easier to catch (can be anywhere in party)
Swarm - pokemon cries are heard more often (can be anywhere in party)
Synchronize - pokemon with the same nature are 50% likelier to find
Vital Spirit - rate of high leveled battles decreases
White Smoke - see pressure

Yup so that should be it. I don't know any stats about them, just what they do.

Hiroshi Sotomura
April 28th, 2010, 10:04 PM
Battle Tower?
I'm yet to try this out, but I had plans to make something like this. What I thought of was to either have a pool of pokemon numbers or simply use the RNG to generate pokemon numbers, have a function to create a pokemon trainer dynamically on the RAM, and have the trainerbattle command call that trainer.
At the end of the battle, clean that trainer flag and you're ready for the next one. Only problem would be the xp gain, but that could be neutralized by force-level all your party pokemon to level 100 (or similar code).
The Trainer Tower seems to operate differently with handling trainers - they're loaded from some other space of data. That, and the Pokémon don't appear to follow the table structure we're used to, but are rather more sophisticated: Pokémon have IVs, EVs, set attacks, and set items. It somehow locks Exp. gain, as well.

Oh, and in the Battle Tower, items are disabled. And trainers seem to be loaded in a similar manner. They also speak gibberish phrases.

Why being limited? I get your point, but while modernizing the engine thinking about brand new features won't hurt. We might actually come up with some interesting ones.
Sure we could have some feasible 4th generation ideas, such as the Special/Physical attack division.

But other innovations that don't have to do with the engine directly would probably cannibalise the point of the R&D forum. :P

Anyway, Berry behaviours are associated with a Pokémon's EVs. These are the only (I think) Berry changes in Emerald. If any of these berries is used to decrease an EV and the EV is more than 110, the effort value for the stat is decreased to 100. Otherwise, for anything under it will decrease effort values by 10. Additionally, for each time the berry is used (including when there are no more effort values for that particular stat), happiness increases by 2. These are the EVs each berry decreases:
Pomeg Berry - HP
Kelpsy Berry - Attack
Qualot Berry - Defense
Hondew Berry - Sp. Attack
Grepa Berry - Sp. Defense
Tamato Berry - Speed

ZodiacDaGreat
April 30th, 2010, 01:11 AM
Battle Tower?
I'm yet to try this out, but I had plans to make something like this. What I thought of was to either have a pool of pokemon numbers or simply use the RNG to generate pokemon numbers, have a function to create a pokemon trainer dynamically on the RAM, and have the trainerbattle command call that trainer.
At the end of the battle, clean that trainer flag and you're ready for the next one. Only problem would be the xp gain, but that could be neutralized by force-level all your party pokemon to level 100 (or similar code).
Uhm, if I'm not wrong there's a special to do a battle for Battle Tower, special 0x3B, I think.

Why being limited? I get your point, but while modernizing the engine thinking about brand new features won't hurt. We might actually come up with some interesting ones.
I agree ^^

Ninja Caterpie
April 30th, 2010, 01:22 AM
Uhm, if I'm not wrong there's a special to do a battle for Battle Tower, special 0x3B, I think.

Just checked, no, that's "battle last battled trainer". Something like that, at least.

mewthree9000
April 30th, 2010, 04:36 AM
If you want a modern base, then why don't you use Emerald? It's the latest of the 3rd generation.

Hiroshi Sotomura
April 30th, 2010, 05:14 AM
While this can be debatable, FR's got some pretty cool features of its own in the engine. That and some of us are pretty entrenched in the game we've picked.

(For instance, the VS Seeker.)

Oh, speaking of Emerald items,
The Acro and Mach bikes.
To go with a more modern engine, we'd need to speed the default bike up to work similarly to the Mach Bike, if anything. Acro is probably more of a challenge and the need for it is… low?

HackMew
April 30th, 2010, 06:51 AM
But other innovations that don't have to do with the engine directly would probably cannibalise the point of the R&D forum. :P

Well, the brand new innovations I was talking about were referred to the engine directly, actually.
Anyway, I've remade the ability list Vrai posted to add more detailed information (Vrai's list was missing Illuminate too). See also the notes below:

1. Arena Trap
If the Pokémon with Arena Trap is leading the party, then Arena Trap causes wild Pokémon to appear 2 times more often.

2. Compoundeyes
If the Pokémon with the ability leads the party, even if it has fainted, the chance of finding a Pokémon in the wild holding an item increases by 50%.

3. Cute Charm
If the Pokémon with Cute Charm is first in the party, the chance of encountering a Pokémon of the opposite gender is 66.7%, regardless of gender ratios. This does not affect the swarming Pokémon species.

4. Flame Boby
Halves the number of steps it takes for an egg to hatch. Both the Pokémon with Flame Body and the egg must be in the party in order for this to work. Magma Armor also has a similar effect. However this effect will not stack up if multiple Pokémon with Flame Body and Magma Armor are in the party.

5. Hustle
If the Pokémon with Hustle is leading the party, then Hustle increases the chance of battling a higher-leveled wild Pokémon by 50%.

6. Hyper Cutter
Using Cut will remove all tall grass within a two square radius of the player's position, as opposed to a one square radius without this ability.

7. Illuminate
See Arena Trap.

8. Intimidate
If the Pokémon with Intimidate is leading the party, Intimidate decreases the chance of encountering a lower-level wild Pokémon by 50%.

9. Keen Eye
See Intimidate.

10. Magma Armor
See Flame Body.

11. Magnet Pull
If the Pokémon with Magnet Pull is leading the party, then the likelihood of encountering wild Steel-type Pokémon is increased to 150%.

12. Pressure
See Hustle.

13. Sand Veil
If the Pokémon with Sand Veil is leading the party in an area with a sandstorm, Sand Veil decreases the wild Pokémon encounter rate by 50%.

14. Static
Similar to Magnet Pull, targets Eletrict-type Pokémon instead.

15. Stench
if the Pokémon with Stench is leading the party, then Stench reduces the chances of encountering wild Pokémon by 50%.

16. Sticky Hold
Causes bites to occur more often while fishing.

17. Suction Cups
See Sticky Hold.

18. Swarm
Increases the rate in which the cries of wild Pokémon could be heard on the field.

19. Synchronize
If the Pokémon with this ability is leading the party, Synchronize gives a 50% chance of encountering a wild Pokémon with the same nature. However, this does not apply to any Pokémon created with Method 1 of the PRNG. This includes Emerald's 'one-off' Pokémon such as legendaries, Castform, and Beldum.

20. Vital Spirit
See Hustle.

21. White Smoke
See Stench.


I was able to implement Flame Body and Magma Armor already. Source code available on request. (From 21 to 19).
Among the others which are still missing, the ones that simply increase/decrease the encounter rate should be the easiest to implement. Such abilities are: Arena Trap, Illuminate, Sand Veil, Stench, and White Smoke. (So theoretically from 19 to 14).
While Sticky Hold and Suction Cups cause bites to occur more often while fishing, I don't know exactly how much "more often". Does anyone know? Also, apparently Suction Cups requires that the Pokémon having it is the leading one in the player's party. At least according to Bulbapedia. Is that true or not? What about Sticky Hold?
Regarding Swarm, Bulbapedia says that the chances of encountering wild Pokémon increase. True or false? Also, since it increases the cry rate, how much?
As you can see, Lightningrod is missing, due to its peculiar effect. Does anyone think it's still worth it? If so, does anyone know the exact values? Bulbapedia doesn't say anything about its field effect.
About Static and the similar ones... Vrai said the Pokémon can be anywhere in the party. However Bulbapedia thinks otherwhise. Who is wrong?
Just to be sure, can anyone confirm the data on the list above? Also, is it complete?

Hiroshi Sotomura
May 1st, 2010, 03:48 AM
Well HackMew, are these "brand new features" that improve the engine something that we've seen in a current game? If not, they probably are things we should spin off into another thread. Whatever the case, let's hear them. :D (Also, let's see code for what you've found related to this thread.)

I know that the abilities are similar, but should we implement a placeholder number (e.g. 30%, 50%, etc.) for the chances we don't know, is it trivial to change them later?

If Lightningrod actually does increase Match Calls, then it'd be irrelevant to FR/LG unless it was used to alter the chance of alerting trainers of VS Seeker. Or something like that. We could just not include it at all, and if some FR/LG hack includes a mobile phone, let the hacker decide the chance.

Oh, and don't forget about the enhancements made to Pickup.

edit: According to a certain site's "AbilityDex" (now you know what site it is) it relies on the lead Pokémon to trigger it.

HackMew
May 1st, 2010, 06:58 AM
Well HackMew, are these "brand new features" that improve the engine something that we've seen in a current game? If not, they probably are things we should spin off into another thread. Whatever the case, let's hear them. :D (Also, let's see code for what you've found related to this thread.)

I know that the abilities are similar, but should we implement a placeholder number (e.g. 30%, 50%, etc.) for the chances we don't know, is it trivial to change them later?

If Lightningrod actually does increase Match Calls, then it'd be irrelevant to FR/LG unless it was used to alter the chance of alerting trainers of VS Seeker. Or something like that. We could just not include it at all, and if some FR/LG hack includes a mobile phone, let the hacker decide the chance.

Oh, and don't forget about the enhancements made to Pickup.

edit: According to a certain site's "AbilityDex" (now you know what site it is) it relies on the lead Pokémon to trigger it.

Regarding the new features... I was just saying, I don't have anything special in my mind so far. The goal of the thread is indeed modernizing the engine, so I guess you're probably right about having another thread to talk about completely new features.

Surely we could use some placeholder values, but after all we need the exact ones to properly emulate then, at some point. So I think we should get all the detailed info first, and then think about implementing and whatnot.

I definitely agree on the Lightningrod ability.

As for Pickup, I did not forget about Emerald's enhancements. Considering it works in a similar fashion already, IMHO we could even leave it as is.

Now, here's the Flame Body/Magma Armor hack:

[css-div="font-family:consolas, courier new,monospace"].text
.align 2
.thumb
.thumb_func
.global MagmaArmorHack

main:
sub r0, #0x1
cmp r0, #0x1
blt return
push {r0, r4-r6}
ldr r4, .POKEMON_PARTY
mov r5, #0x6

loop:
add r0, r4, #0x0
mov r1, #0xB
ldr r3, .READ_DATA
bl bx_r3
add r6, r0, #0x0
add r0, r4, #0x0
mov r1, #0x2E
ldr r3, .READ_DATA
bl bx_r3
add r1, r0, #0x0
add r0, r6, #0x0
ldr r3, .GET_ABILITY
bl bx_r3
cmp r0, #0x28
beq fast_hatch
cmp r0, #0x31
beq fast_hatch
add r4, #0x64
sub r5, #0x1
cmp r5, #0x0
bne loop
pop {r0, r4-r6}

return:
str r0, [sp]
add r0, r4, #0x0
mov r1, #0x20
ldr r3, .RETURN_ADR

bx_r3:
bx r3

fast_hatch:
pop {r0, r4-r6}
sub r0, #0x1
b return


.align 2
.POKEMON_PARTY:
.word 0x02024284
.READ_DATA:
.word 0x0803FBE8|1
.GET_ABILITY:
.word 0x08040D38|1
.RETURN_ADR:
.word 0x08046398|1[/css-div]

Once assembled and inserted, replace the bytes at 0x46390 with 00 49 08 47 XX XX XX XX (XX XX XX XX being the pointer to the routine's address increased by 1). FR US v1.0, by the way. Feel free to test and use it yourself, just don't claim it as yours.

On a side note, the sub-routine located at 0x3FBE8, used in the routine above, it's a powerful routine which can retrieve just any Pokémon info. The routine has two parameters, r0 being the Pokémon base address, and r1 being what I call "data index". As usual, the return value is written to r0. Here's the list I've collected so far:

[css-div="font-family:consolas, courier new,monospace"]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 -
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[/css-div]

Hiroshi Sotomura
May 14th, 2010, 11:39 PM
Speaking of initiating battles, the music when a trainer approaches is limited to three tracks - recent games have about 11, or 12, where an appropriate trainer theme plays for them (e.g. Ace Trainers, Youngsters, Miniskirts, Twins…) Darthatron and I took a bit of time to research it and we thought the music table was at 0x47A2D2, but changing it has no effect.
Bump!

Also, is the Bike behaviour particularly easy to implement?

Vrai
May 15th, 2010, 08:06 PM
While Sticky Hold and Suction Cups cause bites to occur more often while fishing, I don't know exactly how much "more often". Does anyone know? Also, apparently Suction Cups requires that the Pokémon having it is the leading one in the player's party. At least according to Bulbapedia. Is that true or not? What about Sticky Hold?

Regarding Sticky Hold, both Serebii and Psypoke also agree that it is not required to be in the lead for it to work. :(

I dunno about the percentages, though.


Regarding Swarm, Bulbapedia says that the chances of encountering wild Pokémon increase. True or false? Also, since it increases the cry rate, how much?

This one I'm more confused about. Serebii and Psypoke, again, agree that it only increases cry rate, although Veekun agrees with Bulbapedia that it increases wild Pokemon encounter rates. I dunno. ):

As you can see, Lightningrod is missing, due to its peculiar effect. Does anyone think it's still worth it? If so, does anyone know the exact values? Bulbapedia doesn't say anything about its field effect.
It's not worth it. :D

About Static and the similar ones... Vrai said the Pokémon can be anywhere in the party. However Bulbapedia thinks otherwhise. Who is wrong?
Just to be sure, can anyone confirm the data on the list above? Also, is it complete?
Static was a mistake on my part, like the missing Illumination. It is, indeed, meant to be in the lead.

It seems to me that it's correct and complete, although clearly I'm not the best at judging these things. :)

Hiroshi Sotomura
May 25th, 2010, 12:32 AM
In my opinion, the one in Emerald is almost useless, anyway: all he can do is revealing which IV is the highest in a vague manner. I planned something similar for my hack, except all EV/IV values would be shown. Getting the respective values is really a piece of cake. If anyone wants, I can provide a working example.
I'd actually like to see something similar to the Emerald one, but a sample would be nice anyway.

altariaking
May 29th, 2010, 04:41 PM
another thing i think would be pretty cool is the animations from emerald.
this could be pretty tricky, but it would need a routine to check when a pokemon comes into battle, change the sprite, change it back again.
also, volt tackle. emerald has it, why not firered?

hashtag
May 30th, 2010, 01:11 AM
FireRed does have Volt Tackle actually, just not the breeding methods Emerald uses to get it.

sir.euge
June 29th, 2010, 06:26 PM
Ok! So if i wanted to insert the flame body hack i would use XSE and decompile that offset then replace it and recompile? This is going to be my first try so bear with me.

Tropical Sunlight
June 29th, 2010, 11:38 PM
Ok! So if i wanted to insert the flame body hack i would use XSE and decompile that offset then replace it and recompile? This is going to be my first try so bear with me.
Actually, no. You need an ASM-thing-tool, but I don't know anything more. If you decompile those offsets in XSE it should be pretty weird.

Mr.Silver
July 13th, 2010, 08:46 PM
I would like to add a suggestion if i may.

Gender differences (and gender based events).
Not just for pokemon, but for player events.
Its in ruby,sapphire and emerald. Heck its even in GenIV.

I would go into it further, but its 5:45am here

Darthatron
July 13th, 2010, 11:44 PM
I would like to add a suggestion if i may.

Gender differences (and gender based events).
Not just for pokemon, but for player events.
Its in ruby,sapphire and emerald. Heck its even in GenIV.

I would go into it further, but its 5:45am here

They already are. Use the checkgender command in a script. :P

Mr.Silver
July 14th, 2010, 04:56 AM
They already are. Use the checkgender command in a script. :P

I mean for pokemon sprites,Such as male and female gible's sprites
I know about the checkgender command TYVM. But at 5am your brain tends to malfunction from time to time.

Alignment
August 6th, 2010, 01:27 PM
I have something that I've been trying to firgure out for a while.
Would it be possible to implement something like in Diamond and Pearl? I'm not sure if Emerald has it too :/
Well, what I'm talking about is the Pokedex. The Pokedex only updates once you've actually caught a Pokemon, however in D/P/PT once you see the Pokemon all the information is available. I want to see this in Fire Red as well. I'm pretty sure it's possible because when you talk to Prof. Oak through the PC in the PokeCenter, he is able to recall how many you've seen (in other words battled) and how many you've caught.

So the bottom line is, can we make it so that once we battle (not necessarily catch) we recieve the information we would have recieved if we caught it like size, location ect.

I hope that someone can help out .

Wichu
August 7th, 2010, 02:37 AM
Actually, D/P's Pokédex works the same way as the other games - to see the type, weight, height and description, you have to capture it. The only difference is that the 'Pokédex' value shown on the continue screen and trainer card is the number seen, not caught. HG/SS reverted to the old system, where you have to capture a Pokémon for it to count towards the total.

KotovSyndrome_
August 20th, 2010, 03:53 PM
Could you make FR have seasons, for example, or day specific events e.g. Christmas/Halloween?

I thought maybe because it's running off an Emulator, the ROM could get the time/date from the computer it's played on.

Shiny Quagsire
August 26th, 2010, 11:24 PM
Could you make FR have seasons, for example, or day specific events e.g. Christmas/Halloween?

I thought maybe because it's running off an Emulator, the ROM could get the time/date from the computer it's played on.

Simply use MM_X's Day/Night, copy the RTC bytes to a variable in a script, and check them in a script, then do whatever the heck you want after it's checked. :)

r0bert
August 27th, 2010, 09:17 AM
yes but seasons would be cool like you have a forest in the winter everything is snow covered and frozen
in autumn/fall all the leaves are orange red and brown
in summer all the trees are green
spring blossoms grow

gamefreak4ever
September 8th, 2010, 11:19 AM
yes but seasons would be cool like you have a forest in the winter everything is snow covered and frozen
in autumn/fall all the leaves are orange red and brown
in summer all the trees are green
spring blossoms grow

That would be awesome!

I'd like it if the FireRed engine got modernized. I'm working on a FireRed hack now (by myself) and if you ask me (just my personal two cents on the matter), I'd say these would be nice implements:

-Secret Base ( You can make them in caves, underwater, etc instead of just trees all the time. The bases in Emerald were far better than DPPt who had them underground all the time.)
-PokeNav (IMO one of the best features. Upgrade the match call to make as well as give it the features fo the PokeWatch from DPPt)
-Abilities (We need more abilities that come from 4th gen and all the ones from 3rd gen that have the same effects as in emerald)
-Moves (needs to be heavily updated with moves from 4th and 5th gen)
-Day/Night (a must for pokemon who need to evolve depending on the time of the day)

And more on like with the tilesets and stuff.

Edit - Also does anyone know how to fix AdvanceMapError(5)?? I cant edit anything in the event pane.

Amabane~*
September 11th, 2010, 11:04 AM
I suggest just one thing for now, but maybe one of the best improvements possible: The 4th generation damage split (Physical Fire Punch, Special Shadow Ball, etc). It was already proven this is possible, since a lot of japanese FR and Emerald hacks (like the lastest release of FR Touhoumon, the 1.8x version) has it already implemented.

Just this one would make a huge improvement in the Advance games engine, and open a lot of options to the gameplay.

Quilava's Master
July 21st, 2011, 07:15 AM
Don't know if this is a legit bump, but I'll go for it anyways:
Thanks to Jambo51 we have the fix to the whole "Trainer doesn't face opponent" issue.
It's in this (http://www.pokecommunity.com/showthread.php?t=249893) thread.
Now if only we could get a true Battle Tower System like the one from RSE [not the watered down version that Fire Red gave us]. Also I'm interested in the item fanfare as using giveitem2 [which would allow one to use their own fanfare] does't seem to work.

Spherical Ice
May 27th, 2014, 05:46 AM
The item sound.
That Level Up sound is inappropriate for getting items - since Gold/Silver we've had the new Item Get fanfare . Is it also possible to implement the TM Get fanfare when a player receives a TM, and the Berry Get fanfare when the player finds a Berry?

The script at 0x81A4E66 contains the standard script which is called when you obtain an item (what MSG_FIND actually refers to).

#dynamic 0x800000

'---------------
#org @start
textcolor 0x3
compare 0x8002 0x101
if 0x1 call @snippet1
compare 0x8002 0x13E
if 0x1 call @snippet2
preparemsg 0x0
waitmsg
waitfanfare
compare 0x8002 0x101
if 0x1 call @snippet3
giveitem 0x8000 0x8001 0x8
call @snippet4
return

'---------------
#org @snippet1
fanfare 0x101
return

'---------------
#org @snippet2
fanfare 0x13E
return

'---------------
#org @snippet3
pause 0x32
return

'---------------
#org @snippet4
copyvar 0x8012 0x8013
return

fanfare 0x101 is the fanfare played when you level up. You can just change this to whatever you like, whether it be a new sound you insert and so on: just remember to repoint the script (or to not refactor when decompiling). You'll also probably want to edit 0x81A667B, which is the script for when you MSG_OBTAIN an item, and 0x81A67B3 which I believe is for TM / HMs? I'm not too sure.