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

Code: DSLN: An Emerald Hacked Engine

Touched

Resident ASMAGICIAN
625
Posts
9
Years
  • Age 122
  • Seen Feb 1, 2018
First, I have a bit of wisdom to share with you all:
DON'T TRUST JOSEFIG; HE ONCE BOUGHT LINUX!

After JPAN made his hacked engine, it seemed that FireRed had won the battle of the Pokemon ROM bases. However, despite this, as well as the false rumours of its instability, as well as all the other features FireRed had in its favour, several brave hackers decided to stick determinedly by Emerald.

Although FireRed has received more attention from hackers, Emerald is by far the more "complete" ROM base. I'm not going to go into this; simply ask any Emerald hacker and they'll tell you why.

Emerald hackers have always looked covetously at FireRed. BUT THAT DAY IS NO MORE!
I bring you Da Supremerald Laudable Nick-nacks; an Emerald hacked engine. I will be attempting to port many of JPAN's hacked engine's features to Emerald, as well as several other hacks and patches of my own. If anyone wishes to contribute, I've set up a GitHub for this project. You can check it out here: https://github.com/Touched/DSLN. Send me a pull request if you have anything to add. If you wish to install this, the instructions are also on GitHub. Simply read the README files and all will be clear.

If you wish to suggest a feature, please leave a comment below.

Current Features
  • More Overworlds - inspired by JPAN
  • Customisable Tag Team battles - like the Mossdeep Space Centre battle

Planned Features
  • Multi Battles from scripts
  • Pokemon Attributes
  • Variable Maths
  • User-generated contests
  • Give Pokeblock commands
  • Custom start menus
  • Expanded world map
  • Dynamic map connections
  • Custom TV shows/newsflashes
  • Custom user-controlled swarms
  • Feebas style rare Pokemon
  • Phenomena (Gen V)/Tile Animation Control
  • Hidden Abilities
  • Pokemon Attribute Setting
  • Level Modifier
  • Customised select Pokemon (with restrictions)
 
Last edited:

DJTiki

top 3 most uninteresting microcelebrities
1,257
Posts
10
Years
I've been waiting for something like this for Emerald....now I have a reason to switch. So as far as suggestions go, the one reason I chose JPAN's Fire Red Hacked was because of the little features that were there to change the battle mechanics.

On the fly, I could affect the status of a party, remove Pokemon, and so on and so forth. But one of these features had hooks to the actual levels of wild Pokemon and trainers, being able to modify their levels according to the party. It was nice. I want to see that added. But an improvement on it would be the choice to check for an evolution.

With JPAN's Engine, if the level modifier made for instance a Bulbasaur Lv. 16, then it would stay that species. It's not so much a problem with Wild Pokemon since the game will have it evolve right after, but for trainers, it would be a different story. I wanted to make a game based on anti-grinding and trainers evolving through your progression, but its a little weird to see a Lv.40 Mudkip when at that point, should've been a Swampert.

So number 1 hope, a level modifyer for wild and trainer battles that includes an evolution check.

Also here are some other things:
● Newer Specials
● Be able to bring up the Pokemon selection menu and modify the requirements via a few short commands
● Behavior Byte Hacks like in JPAN

I guess that's all, once this is finished, I can finally dump old Fire Red. :)
 
3,044
Posts
9
Years
Now I'll switch to Fire Red...
Sadly, I already started the hack...
But in future purposes, I will use this xD
 
48
Posts
9
Years
  • Age 31
  • Seen Oct 26, 2015
Yes, yes, YES.

I've wanted to use Emerald for my hack so badly. Tag Battles, Contests, a Berry system...the latter of which many have tried to hack into FireRed because FR has to much more to offer. The friggin' Battle Frontier! Not to mention a vast array of tilesets available for map-making. But FR, as you've pointed out, currently has enough things hacking wise to outweigh those wonderful features.

Now all we need is an Emerald equivalent of MrDS' Decap and Attack Rombase. There's been attempts to add the Fairy type and the Physical-Special split, I'll have to look into the progress on that. But this will hopefully help tip the scales in Emerald's favor!
 
252
Posts
10
Years
  • Age 27
  • Seen Jul 6, 2019
Yes, yes, YES.

I've wanted to use Emerald for my hack so badly. Tag Battles, Contests, a Berry system...the latter of which many have tried to hack into FireRed because FR has to much more to offer. The friggin' Battle Frontier! Not to mention a vast array of tilesets available for map-making. But FR, as you've pointed out, currently has enough things hacking wise to outweigh those wonderful features.

Now all we need is an Emerald equivalent of MrDS' Decap and Attack Rombase. There's been attempts to add the Fairy type and the Physical-Special split, I'll have to look into the progress on that. But this will hopefully help tip the scales in Emerald's favor!
The physical/special split and the fairy type have already been implemented a long time ago. Expanding the type table for emerald shouldn't be that hard for you to do, and Doesn't has a patch for Emerald that implements the p/s split.
 
48
Posts
9
Years
  • Age 31
  • Seen Oct 26, 2015
The physical/special split and the fairy type have already been implemented a long time ago. Expanding the type table for emerald shouldn't be that hard for you to do, and Doesn't has a patch for Emerald that implements the p/s split.

Oh thanks! I was looking around, but last I saw the Fairy type implementation still had several major bugs to work out. And the stupid forum search didn't turn up the p/s split. Thanks again!
 

Le pug

Creator of Pokémon: Discovery / Fat Kid
870
Posts
10
Years
adding more free space would be awesome due to emerald's lack of it. that's been the main reason i stayed away from emerald...

.................................................................really....

there's this little feature called expanding your rom.... ya know, making it from 16MB to 32MB .. so you have 16MB of free space ......
smh
 

Touched

Resident ASMAGICIAN
625
Posts
9
Years
  • Age 122
  • Seen Feb 1, 2018
I've been waiting for something like this for Emerald....now I have a reason to switch. So as far as suggestions go, the one reason I chose JPAN's Fire Red Hacked was because of the little features that were there to change the battle mechanics.

On the fly, I could affect the status of a party, remove Pokemon, and so on and so forth. But one of these features had hooks to the actual levels of wild Pokemon and trainers, being able to modify their levels according to the party. It was nice. I want to see that added. But an improvement on it would be the choice to check for an evolution.

With JPAN's Engine, if the level modifier made for instance a Bulbasaur Lv. 16, then it would stay that species. It's not so much a problem with Wild Pokemon since the game will have it evolve right after, but for trainers, it would be a different story. I wanted to make a game based on anti-grinding and trainers evolving through your progression, but its a little weird to see a Lv.40 Mudkip when at that point, should've been a Swampert.

So number 1 hope, a level modifyer for wild and trainer battles that includes an evolution check.

Also here are some other things:
● Newer Specials
● Be able to bring up the Pokemon selection menu and modify the requirements via a few short commands
● Behavior Byte Hacks like in JPAN

I guess that's all, once this is finished, I can finally dump old Fire Red. :)

Thanks for the suggestions. Yeah, I'll definitely add a level modifier. As for specials, I haven't decided between using specials and a custom scripting command. Maybe I'll just provide the option of both, that way people won't need raws or a new script editor.
 

Deokishisu

Mr. Magius
990
Posts
18
Years
I love you.

I'm trying to think of RSE specific features...

How about a way to define contest opponents, their Pokemon, and their Pokemon's moves and contest stats before entering a contest? This would allow for custom or variable contests with a much larger scope and flexibility than the base game allows. It also allows special contests, or contests only run at certain times or under certain conditions to vary widely from the base ones we're stuck editing from. This would be a boon to the contest feature in general, as in addition to the base contests, special festival contests could run, or the player could add more difficulty levels, or force a specific contest-only rival to appear! Off the top of my head, the opponent coordinators' OW sprites, their names, their Pokemon and the Pokemon's names, their Pokemon's contest stats and moves, and possibly their held item would have to be able to be defined and then forced to load. Changing anything structurally may break link contests, for those would want to keep link functionality.

I don't know how PokeBlock generation works, so I don't know if this can already be done easily, but being able to define and generate a PokeBlock to give to the player from a script would be nice. It's extremely difficult to make good PokeBlocks without human players helping out.

The Battle Dome has a 16 person tournament that I could see being made custom. With expanded OWs, we could use it to create a Pokemon World Tournament, or special Tournaments held during certain times with certain rules, while still keeping the base Battle Dome intact.

Disabling portions of the start menu would be awesome, as I've had times where I don't particularly want the player to save or fiddle with their items. Speaking of items, the Battle Pyramid has a special bag that it uses. Could we have the ability to create similar, smaller bags for other areas? Admittedly, I haven't looked into how the Battle Pyramid's bag actually works yet, so this might be easy already.

Multiple world maps in Emerald would be useful to quite a few people, if you wanted to put some code in for that.

The Frontier Pass is a lot of fun, and could probably be used to select other things with some modification. Perhaps being able to call the Frontier Pass with changed graphics/different areas clickable would be useful?

Dynamic map connections would be awesome for me in particular, but not something I'd see many people using. I want to be able to randomly connect a few maps together, that would be randomly generated at the start of the game and then stay set. The maps would be made so that they would all logically connect if randomly placed together, and allows for some variability in certain areas.

Can anyone think of anything cool for berries? I initially thought that maybe if soil stayed barren for a while, the game could sprout a random fully grown tree every so often. It would be useful to those playing on flashcarts whose batteries have died. The ecosystem shouldn't be entirely dependent on the player! Other than that, I can't really think of anything cool that the berry system could be modified to do.

Decorations and secret bases? I haven't looked at all about how they work, but I'd like to be able to place dolls/cushions on bare ground as well as on the rugs and stands. As long as you still can't place them in front of doorways, it'd be fine. Expanding decorations would be great too, or generating secret bases from a script for those who can't mix records by defining data and placing it in a secret base slot the way that a record mix would do. For those who want to keep link functionality, any modification here would have to be made carefully, as changes to any existing structure will likely break swapping bases through mixing records.

Here is a big one that I REALLY want to see. Complete control over TV Shows and channels, as well as generating flashing TVs with custom shows or news on the fly. Again, I haven't looked at the TV or how newflashes work, but that'd be awesome.

Swarms. I know that JPAN already implemented swarms in his engine, but the way RSE uses them is a bit different. Players can mix records to swap swarms. I don't know if swarms are something that are IN the base game already and then activated by record mixing, or if the swarm data is actually sent from the other game and then stored. If it is the latter, hacks can use this to define swarms for certain areas, and then mix records to transfer custom swarms to other games. These custom swarms would have to be generated and then stored back in the correct locations, overwriting whatever's already there. This would allow for true swarms, that would correctly be reported by the TV, while allowing for customization and multiplayer fun!

We may also want the ability to disable certain things from being transferred while mixing records, such as Battle Tower records. As far as I know, the game can transfer a player's party and where they last lost and insert them in their friend's Battle Tower in that spot by mixing records. As you can tell, this will be disastrous with expanded Pokemon, custom moves, custom items, and so on. Being able to disable sending that data, or prevent data from even being recorded in the appropriate places to get mixed would be great. The decoration trader in the Mauville Pokemon Center would be another culprit with custom decorations, as well as the quiz lady in Lilycove's Pokemon Center, which allows players to select items (which could be custom as well) to give to players who answer a custom quiz. Sending TV shows will have to be disabled as well, as sending shows that mention expanded Pokemon would be bad. Alas, no one can know that I won a Smart Contest with my Mismagius. Honestly, with this much being disabled, being able to write data into the areas where mix records are kept in a script/with a special would be much appreciated. That way, we COULD send this data, but with placeholder stuff instead. Or send special bases or special news programs to other players. Yes, Wallace did catch a Feebas on route whatever. Winona won a Beauty contest with her Altairia. Youngster Joey got to spot number 4 in the Battle Tower with his top percentage Rattata, etc.

Being able to define custom Hall of Fame entries for different characters would be kind of cool flavor-wise, but would probably easily go unnoticed by players. It always bugged me that the Hall of Fame PC only showed your own entries, as if you're the only person to have ever entered the Hall of Fame. Made especially absurd when your Rival beats you to being the Champion but doesn't show up in the Hall of Fame in RGBYFrLg.

Allowing Feebas tile generation elsewhere and in other conditions would be really cool. Perhaps a rare Pokemon only appears in a few grass tiles on a route and those tiles get randomized everyday?

Giving us the option to change how fishing works would be great. A lot of people aren't particularly fond of the multiple A presses needed to fish in RSE, and would prefer the standard method. A chain fishing feature like in XY would be nice as well.

Phenomena like in Black2/White2 would be absolutely amazing! Random grass shaking in places and then a rare Pokemon popping out, or an Audino. That system could be expanded to allow us to do a crapload of stuff. Shaking grass could leave an item dropped from a Pokemon that ran away, for example. We could define items/Pokemon and rarity with a table or perhaps a levelscript.

Are abilities recalculated when a Pokemon is withdrawn from a PC? If not, giving us a special to define a Pokemon's ability would be nice for hidden ability use. Allow it to work with givepokemon and setwildbattle.

EDIT: Also, if you could find how the Egg's type is determined so that Emerald hackers don't have to swap Normal and ??? to make the Fairy type, that would be great. Even disabling the overwrite so that the Egg's type is the type of the baby inside would be really cool.

---

I know that this is a huge post, and many of these things would be difficult to implement, but I've been mulling over these things for a bit and wanted to offer some feasible (and not so feasible) suggestions. Thank you so much for working on this and offering this resource to the community!
 
Last edited:
252
Posts
10
Years
  • Age 27
  • Seen Jul 6, 2019
Can I love you forever
In all seriousness, this is amazing! This, along with the split disassembly, will definitely change Emerald hacking for the better. One request though. Can you make it so that we can choose the features we want to implement? IIRC JPAN did something like that, where he had a tool and we could choose which features we wanted to put into Firered.
 

Deokishisu

Mr. Magius
990
Posts
18
Years
Thought of a few more...

Ability to change contest backgrounds and judges with a variable. Why should battle backgrounds get all the fun? This would probably work best with a table.

I'd also like to be able to set EVERYTHING about a Pokemon received in trades, givepokemon, and encountered from setwildbattle. Right down to the PID and Game Origin. This would be great in allowing hackers to give out events that are legit in every sense of the word, or replicate Pokemon from Pokemon XD with their special moves and allowing them to be traded to the player or something.

Complete control over the roaming Pokemon and how it is generated would be nice as well.

I really like the feature that X and Y has that gives the Route name as well as a flavor name subtext underneath it in the popdown that occurs when you enter a route. That would probably work with a table with pointers to the subtext strings. Even if that's not possible, an easy way to edit/expand the popdown graphics when entering areas would be awesome.
 

Touched

Resident ASMAGICIAN
625
Posts
9
Years
  • Age 122
  • Seen Feb 1, 2018
I'm gonna reply to each item separately.

How about a way to define contest opponents, their Pokemon, and their Pokemon's moves and contest stats before entering a contest? This would allow for custom or variable contests with a much larger scope and flexibility than the base game allows. It also allows special contests, or contests only run at certain times or under certain conditions to vary widely from the base ones we're stuck editing from. This would be a boon to the contest feature in general, as in addition to the base contests, special festival contests could run, or the player could add more difficulty levels, or force a specific contest-only rival to appear! Off the top of my head, the opponent coordinators' OW sprites, their names, their Pokemon and the Pokemon's names, their Pokemon's contest stats and moves, and possibly their held item would have to be able to be defined and then forced to load. Changing anything structurally may break link contests, for those would want to keep link functionality.

This would be a rather interesting feature, and one I hadn't thought of previously. I will definitely look into adding something like this.

I don't know how PokeBlock generation works, so I don't know if this can already be done easily, but being able to define and generate a PokeBlock to give to the player from a script would be nice. It's extremely difficult to make good PokeBlocks without human players helping out.

Hadn't thought of this, but it shouldn't be hard to implement.

The Battle Dome has a 16 person tournament that I could see being made custom. With expanded OWs, we could use it to create a Pokemon World Tournament, or special Tournaments held during certain times with certain rules, while still keeping the base Battle Dome intact.

I'm not so sure about this one. I'm gonna have to play through Emerald again in order to decide whether this is feasible or not.

Disabling portions of the start menu would be awesome, as I've had times where I don't particularly want the player to save or fiddle with their items. Speaking of items, the Battle Pyramid has a special bag that it uses. Could we have the ability to create similar, smaller bags for other areas? Admittedly, I haven't looked into how the Battle Pyramid's bag actually works yet, so this might be easy already.

This is definitely possible, and a feature I was already thinking of adding. It is relatively trivial to create new start menus, and I can base them on a variety of factors. So you'll be able to add custom menus and things. I don't quite know about custom bags, I'll have to look into those.

Multiple world maps in Emerald would be useful to quite a few people, if you wanted to put some code in for that.

I know I could expand the map, but I'm not so sure how easy it would be to switch them. I shall investigate this more, but I will need to plan it well in order to integrate with mapping tools, etc. I can already expand the sethealingplaces and flight positions, so I should be able to add this too.

The Frontier Pass is a lot of fun, and could probably be used to select other things with some modification. Perhaps being able to call the Frontier Pass with changed graphics/different areas clickable would be useful?

While I can do something like this, doing it in a generic and customisable fashion would be impossible. I could not account for all the possible variations people might want. I will be adding a base for graphics and cutscene hacks for things like this, but it will be a template written in C. This means it won't be useful to anyone who can't code in C.

Dynamic map connections would be awesome for me in particular, but not something I'd see many people using. I want to be able to randomly connect a few maps together, that would be randomly generated at the start of the game and then stay set. The maps would be made so that they would all logically connect if randomly placed together, and allows for some variability in certain areas.

I've done this for FireRed already, but I believe Emerald already has it (in Battle Pyramid). I will investigate this and see if I can port my code or adapt the already present code.

Can anyone think of anything cool for berries? I initially thought that maybe if soil stayed barren for a while, the game could sprout a random fully grown tree every so often. It would be useful to those playing on flashcarts whose batteries have died. The ecosystem shouldn't be entirely dependent on the player! Other than that, I can't really think of anything cool that the berry system could be modified to do.

I'm not sure about this. It will have to be researched more before I can say anything definitive.

Decorations and secret bases? I haven't looked at all about how they work, but I'd like to be able to place dolls/cushions on bare ground as well as on the rugs and stands. As long as you still can't place them in front of doorways, it'd be fine. Expanding decorations would be great too, or generating secret bases from a script for those who can't mix records by defining data and placing it in a secret base slot the way that a record mix would do. For those who want to keep link functionality, any modification here would have to be made carefully, as changes to any existing structure will likely break swapping bases through mixing records.

This would be a low priority for me. I would ideally like to see what changes ORAS brings to Secret Bases before doing anything secret base related.

Here is a big one that I REALLY want to see. Complete control over TV Shows and channels, as well as generating flashing TVs with custom shows or news on the fly. Again, I haven't looked at the TV or how newflashes work, but that'd be awesome.

I hadn't thought of this at all, and is certainly interesting. I will attempt to look into it.

Swarms. I know that JPAN already implemented swarms in his engine, but the way RSE uses them is a bit different. Players can mix records to swap swarms. I don't know if swarms are something that are IN the base game already and then activated by record mixing, or if the swarm data is actually sent from the other game and then stored. If it is the latter, hacks can use this to define swarms for certain areas, and then mix records to transfer custom swarms to other games. These custom swarms would have to be generated and then stored back in the correct locations, overwriting whatever's already there. This would allow for true swarms, that would correctly be reported by the TV, while allowing for customization and multiplayer fun!

While I'm not so sure about a record mixing component, I will definitely be adding swarms. Mixing records for swarm swapping would suffer from the same expansion related bugs as battle tower. I would either have to scrap this linking feature or break backwards compatibility. I'm leaning heavily in the direction of the latter. Do we really need to trade/link with unhacked ROMS?

We may also want the ability to disable certain things from being transferred while mixing records, such as Battle Tower records. As far as I know, the game can transfer a player's party and where they last lost and insert them in their friend's Battle Tower in that spot by mixing records. As you can tell, this will be disastrous with expanded Pokemon, custom moves, custom items, and so on. Being able to disable sending that data, or prevent data from even being recorded in the appropriate places to get mixed would be great. The decoration trader in the Mauville Pokemon Center would be another culprit with custom decorations, as well as the quiz lady in Lilycove's Pokemon Center, which allows players to select items (which could be custom as well) to give to players who answer a custom quiz. Sending TV shows will have to be disabled as well, as sending shows that mention expanded Pokemon would be bad. Alas, no one can know that I won a Smart Contest with my Mismagius. Honestly, with this much being disabled, being able to write data into the areas where mix records are kept in a script/with a special would be much appreciated. That way, we COULD send this data, but with placeholder stuff instead. Or send special bases or special news programs to other players. Yes, Wallace did catch a Feebas on route whatever. Winona won a Beauty contest with her Altairia. Youngster Joey got to spot number 4 in the Battle Tower with his top percentage Rattata, etc.

I'm not so sure about being able to do anything linking related. I still haven't got round to building an emulator capable of testing such things. When I get round to documenting the linking protocol I can investigate this. So this will be a low priority.

Being able to define custom Hall of Fame entries for different characters would be kind of cool flavor-wise, but would probably easily go unnoticed by players. It always bugged me that the Hall of Fame PC only showed your own entries, as if you're the only person to have ever entered the Hall of Fame. Made especially absurd when your Rival beats you to being the Champion but doesn't show up in the Hall of Fame in RGBYFrLg.

I doubt this would be hard to implement, but as you say, it would probably go largely unnoticed. Things like these would be very low down on my list of things to implement. Maybe when most of the other ideas have been completed.

Allowing Feebas tile generation elsewhere and in other conditions would be really cool. Perhaps a rare Pokemon only appears in a few grass tiles on a route and those tiles get randomized everyday?

This is something that I will definitely be looking into, as this, along with Mirage Island are very interesting features of the original games.

Giving us the option to change how fishing works would be great. A lot of people aren't particularly fond of the multiple A presses needed to fish in RSE, and would prefer the standard method. A chain fishing feature like in XY would be nice as well.

This probably could be done. I haven't yet got X/Y, but I will look into this once I've played through it.

Phenomena like in Black2/White2 would be absolutely amazing! Random grass shaking in places and then a rare Pokemon popping out, or an Audino. That system could be expanded to allow us to do a crapload of stuff. Shaking grass could leave an item dropped from a Pokemon that ran away, for example. We could define items/Pokemon and rarity with a table or perhaps a levelscript.

This has given me an idea. I will look into trigger tile animations based on an X and Y coordinate, rather than the presence of an overworld. The other things could probably be implemented with scripts though. The dark grass with wild double battles would also be something to look into (I don't know if anyone has fixed the Gen III wild doubles, but I'll have to investigate more)

Are abilities recalculated when a Pokemon is withdrawn from a PC? If not, giving us a special to define a Pokemon's ability would be nice for hidden ability use. Allow it to work with givepokemon and setwildbattle.

I don't believe they are recalculated. From my research, I think they are randomly set from the personality ID at catch time. I've actually got some code to add REAL hidden abilities, so this is a feature I will be adding. (allowing a 3rd ability for each Pokemon)
Like JPAN's engine I will be providing some way of changing Pokemon attributes, so you should be able to set things like this.

EDIT: Also, if you could find how the Egg's type is determined so that Emerald hackers don't have to swap Normal and ??? to make the Fairy type, that would be great. Even disabling the overwrite so that the Egg's type is the type of the baby inside would be really cool.

When I create the Fairy type, it will not be by replacing an existing type. I will do it properly by expanding the types, thus preserving these features.
I don't think I'll be adding a way of seeing the egg's type, as it doesn't make much sense (how would you know the type if you don't know the species, etc.). Maybe you could add a NPC that tells the player what the type of the Pokemon is inside the egg? You could read the species of the egg and determine it's type. I will definitely be adding more string buffer commands (buffer Pokemon type, buffer pokemon species (Tiny Turtle pokemon for Squirtle, etc.).

I know that this is a huge post, and many of these things would be difficult to implement, but I've been mulling over these things for a bit and wanted to offer some feasible (and not so feasible) suggestions. Thank you so much for working on this and offering this resource to the community!

You've had some great ideas, of which a surprising amount are actually feasible (you don't see that often), as well interesting (few people get that balance right). If you have any more ideas, please post again. You can never have enough ideas. I will be updating the planned features with the ideas I approved.

Can I love you forever
In all seriousness, this is amazing! This, along with the split disassembly, will definitely change Emerald hacking for the better. One request though. Can you make it so that we can choose the features we want to implement? IIRC JPAN did something like that, where he had a tool and we could choose which features we wanted to put into Firered.

Each hack can be applied individually, using the instructions in its subdirectory. If I get the time, I will be adding a tool component, but that will only be after I add more features. This will not be released as a single patch. However, if you wish to make a patch after applying it for yourself, you're welcome to do so. Just make sure you post it here.
 
204
Posts
9
Years
  • Age 37
  • Seen Jul 26, 2021
Would it be possible to add a 3rd (dream world) ability or even more than 3 abilities? This would be useful when trying to keep the game stats uptodate.

Also is it possible to make exp dependable on the level gap? I for example had an idea to make overleveling impossible by giving the players Pokemon 0 exp (and maybe even 0 evs, but i think its better if the evs given arent changed) if the level gap is greater than a certain number.

Great job! I really appreciate your work!
 
Last edited:

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years
When I create the Fairy type, it will not be by replacing an existing type. I will do it properly by expanding the types, thus preserving these features.

Each hack can be applied individually, using the instructions in its subdirectory. If I get the time, I will be adding a tool component, but that will only be after I add more features. This will not be released as a single patch. However, if you wish to make a patch after applying it for yourself, you're welcome to do so. Just make sure you post it here.

I've already expanded the Fairy type in Emerald in the manner in which you've described. I'll probably make a tutorial for it because it's a little different to Fire Red (due to the palettes). As long as the DSLN is compatible with my upcoming Emerald rombase, you won't need to worry about importing it.
 

Deokishisu

Mr. Magius
990
Posts
18
Years
Hey! I'm back with a LOT more ideas. Sorry if it's too much to wade through! Hopefully you'll find them as interesting as the last ones I had. Have you made any further progress, by the way? I've been watching the thread and the github intently. I'm really excited for everything you're doing.

I guess I'll start with the big one. According to this Bulbapedia page, there is a set amount of data allocated for each bag pocket and the player's PC. The slots set per pocket vary between the Gen 3 games. I haven't really looked into this, but would there be a way to give the hacker control of how the allocation is done? Or perhaps, remove the Player's PC and distribute that among the bag pockets? Running out of space in the main pocket is frustrating, especially when the player has extra slots that will probably never be used in the Key Items and TM/HMs pockets. "Oops, the BAG is full." Is a message I read much too often in Gen 3. Making it so that the player's items can stack up to 999 instead of 99 in the bag (like in the PC) would be great too! This leads into my second idea.

Many people are using the Black and White style of TMs, where a TM is infinite use, cannot be disposed of, and you only ever need one of them. This is great, of course, but why have the TM/HM pocket be a thing at all then? Why not move the TMs to variables or flags or some other form of data that gets stuck in the save and access them from an item in the bag (like, I don't know, the TM Case?) and open up those 64 item slots for something else? These two might not be feasible, but they'd be great quality of life changes for the player.

Speaking of infinite TMs, perhaps getting true B/W functionality where the TMs don't replenish PP is a good idea. Otherwise, TMs can basically be used as free Ethers.

I'd like a special that checks a Pokemon's learnset, TM/HM compatibility, Egg move list, and Move Tutor compatibility to see if a Pokemon is capable of learning a move. Maybe code in that if a Pokemon can learn Sketch, it acts as if they can learn any move being checked for so that Smeargle doesn't have to constantly be scripted as an exception. Some may prefer Sketch not be considered that way, so maybe document how to disable that extra bit of ASM if you decide to take this idea and run with it!

Can we repurpose the space in the Pokemon Data Structure for the box markings for something useful? I can't really think of anything amazing to put there. Is there space to remember the egg moves a Pokemon is hatched with so that the Move Relearner can reteach them? We would have to disable allowing the player to mark their Pokemon in the boxes themselves, and perhaps clear them when traded in. Wait, according to Bulbapedia, there's only one byte there. Nevermind then. This is still a feature that would be awesome! There are unknown bytes after the checksum that might be usable? Maybe the two useless spaces could be combined to create this?

A flag that prevents catching Pokemon until the flag is turned off would be well received. Whether it disables throwing any balls or allows you to waste them like with the Marowak battle is up to preference, I suppose.

Adding onto that, a flag that disables Pokedex registration for as long as it's set would be hugely appreciated as well. There are times when I'm giving the player a Pokemon behind the scenes that I don't want showing up in their Pokedex (I bypass this by giving the player Eggs and then taking them away before giving back control, but it's still annoying!), or when they're getting a Pokemon for a minigame or something and will be giving it back later.

I'd like a flag that disables whiteouts when the player loses a battle too. There are story events that would benefit from being able to continue fluidly if the player loses, as well as minigames that I'm sure hackers don't want to jump through hoops to continue with logically if the player fails. Whether or not the game heals the player's party automatically when the player loses when this flag is set, or leaves it up to the hacker is up to you if you decide to implement this.

I see that you did some work with modifying the game's Oak/Birch introduction sequence in the past. Could you perhaps give us the means to move the whole dang thing to the Overworld so that we can script it out with a levelscript instead? We would need a way to assign a temporary name to the player, and then have commands to choose a gender and name them from the overworld. This way, the whole intro could be done with an easy combination of sprites, tiles, and normal dialog scripts. Easy to edit, easy to get to, no hassle.

I'd like a couple more skins for the ingame clock if possible. I use the boy and the girl ones in the player's rooms (depending on gender, of course) but I'd really like a generic clock skin available for other houses, and maybe unique ones for the Pokemon Center and minigame places. Definitely a low priority, but nice to have. Speaking of the clock, could we perhaps put the time on the start menu somewhere? Or somewhere else easily accessible? For example, in the Safari Zone, when you pause the game, there's a window in the top left corner in addition to a modified safari start menu. Could we enable that everywhere else and slap the time there? Perhaps time and location name?

Speaking of the Safari Zone, JPAN fixed the Safari specials and gave his users the ability to add and remove steps and Safari Balls. This would be AMAZING for someone who wants to do a sprawling Safari Zone in their hack. A feature I haven't seen before that would be great for the Safari Zone is localized roaming Pokemon. Imagine having a rare Pokemon that roams only through the Safari Zone and changes every few days? The hacker could tie that to all sorts of stuff! The variable connections could allow hackers to swap areas like in HGSS' Safari Zone too. Really, the possibilities are endless.

The Safari Zone also changes the selections available on the battle menu. Control over this would be great for minigames when combined with other things. Want to port Battle Bingo in from XD? You can do it now! Have a minigame where you're fighting non-Pokemon, or you don't want the player to have access to regular menu items? This is your thing! I'm sure that this would be difficult if the hacker wanted to do more than print messages to the textbox when selecting menu items, and probably borderlines on the unfeasible.

Finding out how to give the limbo slots between Celebi and Treecko their own cries would certainly be a great quality of life change for hackers everywhere.

The Wally catching a Pokemon tutorial is pretty bland. I'd love to have more control of what moves he chooses and what he says and does in his tutorial battle. Heck, this could allow us to have cinematic battles if the auto-pilot and backsprite switching functionality can be carried over into a Trainer battle version of this. Also, I feel like the game must save the player's items somewhere during this in order to show Wally's bag. Finding out how that works may be the key to enabling other bags, or at least cutting the player off from using items by saving their bag and then emptying it in certain areas. But seriously, cinematic battles would be great for establishing a villain's power early on.

Textboxes that pop up and dismiss themselves as you walk by a person event would be kind of cool. In XY this happens when passing by groups of people in Lumiose. It even happened in BW in Castelia when you bumped into certain people. Maybe making the textbox smaller and appear at the top of the screen would be less jarring to the player than opening up a regular textbox that they could move with around with. With timers, we could even have events where the player is caught eavesdropping if they stay nearby for too long. This could even be used to display information without interrupting the flow of play. Have a timed minigame? Use this textbox as a space to push alerts, without pausing the action. "30 seconds left!" Walked over a tile that poisoned your Pokemon? Here's an alert! Need a textbox up all the time in an area? Use this one! The possibilities for this are endless.

Speaking of textboxes (and tying into the previous idea), giving us an escape character that auto-progresses the textbox as if the player had pressed A would be great. Synching dialog to events moving around and happening without putting a halt to the whole deal to wait for the player to press A is crucial for certain events, in my opinion. It could also be used for the TV or a Radio program or something.

...And speaking of timers, I'm not quite sure what Emerald offers in the timer department. All I know is that resetvars dumps the clock time into variables, and I've been using that to calculate timers. I'd like a flag or a special that allows me to set a timer more easily. Perhaps the hacker puts the time that needs to elapse in LASTRESULT and then the special lifts it, calculates the time that the timer needs to go off at by adding it to the current time (which would need to be coded to protect against overflow), and then a walking script checks for the current time against the timer time at every step. If it is possible for it to check every frame, that would be better. That way, the player couldn't sit and wait to walk until the clock strikes 00:00:00 to have extra time. (I'm assuming the walking script would check if the current time is greater than the timer's stop time. If there's a better way to implement it, a walking script would probably more feasible than something the checks the time every frame.)

The ability to confuse directional inputs might be a good idea for a gym puzzle or Trick House room or something. What if pressing up made you go left? What if the inputs were randomized again after a few steps or when you step on a certain tile? Definitely low priority, but cool nonetheless.

Being able to assign items to L and R as well as select on the overworld would be nice for the player. Or even have the hacker assign them to something else. Does R bring up a multichoice box for your fishing rods while L activates a script that checks your party for a Pokemon that knows a field move to use in a context sensitive way? Being able to use these useless buttons in the overworld seems like a no brainer and super useful.

A Running Shoes toggle like in HGSS would be another great quality of life change for the player that could be assigned to hypothetically usable-in-the-overworld LR buttons. Could this be done by looking at how the player character's walking speed is determined and then manipulating that instead of forcing a B press? If so, could we change it so that when the player has toggled running on, holding B forces them to walk instead?

The ability to assign battle weather conditions to OW weather would be nice. That ash snow should totally make it hail when entering battle. Alternatively, fixing the 3 snowflakes weather effect so that it constantly and consistently spawns its snow particles would be nice. I know that weather in the OW is poorly documented, but being able to clone a weather effect's movement and change its particles without sacrificing the original weather would be really nice. The movement effect of the sandstorm weather would create a killer blizzard weather. Making it so that the OW sprites and two-layer tiles on the map are covered by fog would be a quality of life change for hackers too, if you're considering making any weather changes. In addition, the intense sunlight weather for Emerald actually switches between thunderstorm and sunlight. Separating out the intense sunlight and making it its own weather would be great.

Some people may like being able to force the game to only generate perfect IV'd Pokemon by setting a flag. As long as PID and nature variance are preserved, it'd be a nice option to have.

I personally would like to give Battle Frontier/Battle Tent opponents actual text strings instead of easy chat garbage. Anyone decapitalizing the game is going to be making the easy chat system a wreck anyway. Could their data be restructured so that the easy chat choices are pointers to text strings instead?

Match Call needs to be tackled. Other than getting calls when Eggs are ready, I can't really think of anything cool to do with it. I guess being able to force calls automatically when certain conditions are met would be nice. Perhaps today is the day that has been randomly chosen for a special contest to occur, so the player gets a call forced on them 3 minutes after starting the game back up, or after walking a certain amount of steps, or opening a certain number of textboxes, or something. Calls would need to be staggered in this way to keep the player from getting multiple calls in a row if multiple conditions are met at once. Maybe certain minigames or events have cooldowns and the player could be called when they're ready again. The hacker could do a lot with this, I think. (In the base game, Roxanne calls the player after getting Brawly's number automatically. You may want to look at how this is done if you choose to implement this.)

The ability to make OWs and tiles slightly translucent would be useful for lights at night, ghosts, flashbacks, windows, etc.

JPAN made multichoice boxes whose options were customizable from the script that was calling it. Honestly, why Gamefreak didn't do it that way in the first place is beyond me, but please please please port it. My goodness, is it useful. And so freeing.

And I'm not sure if you saw the four suggestions I had after my initial post (I think you were replying when I posted them), so I'll spoiler them here again:

Spoiler:


Again, you're awesome, and I hope you find some of these ideas useful!
 

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years
Hey! I see you have the new ability structure up on the GitHub! Awesome! How's progress been so far?-

Touched has told me that hidden abilities are done. They can be set either as, any pokemon can randomly spawn 3 abilities, Or you can set a var to only load the hidden ability.
 
91
Posts
14
Years
  • Seen Feb 22, 2023
Hey, I just played with your Overworld Hack a bit and I figured that there are some minor errors in it. First of all: There is one more loading routine you might want to hook into, if you don't the overworlds won't load correctly. Next if you use applymovement to move the camera the game will crash, this is due to some bits of code in your npc_get_template.s:

Code:
@ Clear upper 16 bits
@lsl r1, #0x10     @Why shift r1?
lsl r0, #0x10
lsr r1, r0, #0x18 @ Clear lower 8 bits of word

I did not make a pull request on your github due to the fact that I am not working on english roms, it would be of no use for you guys I guess, however, the second loading routine I found is located around 0808dd6ch on BPED(German Emerald "Smaragd") - It should not be hard to figure out the english offset.

I like to see emerald hacks out there, I love emerald as a rombase, however it was always kind of hard to find support and you had to re-do a lot of stuff that was already done for Firered. Keep it up!

~SBird
 
Back
Top