As some of you may already be aware, we have begun construction of a new forum as a rebirth of PHO and continuing on into future projects.
This forum is called Silph Co., and can be found by clicking the banner below. We are in the process of transferring some of our old resources, and the forum is open for posting. It will be sad to see PHO go, but we look forward to a bright future with Silph.
The forums here will be moved to an archive, and the url will redirect to the new site in the coming days/weeks.

Fangame ShowcaseWorking on a Homebrew project of some kind? Come and show it off!

Hello, intrepid reader! If you're looking at this thread, you have likely realised that there are several frustrating limits in the Gen III Pokémon game engines, which can badly alter how you wish to go about creating a hack.

What this project aims to do is offer a free to use, open source engine to base your crazy and creative hacks on!

Features:
All 649 Pokémon from Kanto, Johto, Hoenn, Sinnoh and Unova are in the base.
Built in brand new music engine especially coded to run music from the GB games with minimal conversion.
Built in RTC and Day and Night Cycle.
Fairy type (as well as all the old regular types!)

Planned Features:
Standard Pokémon features (battles, etc)
Seasonal Cycles (Day is shorter is Winter, etc)
Either Maxmod or potentially M4AA engine for 16 bit music (M4AA is Sappy to most people).

May add:
Kalos Pokémon
Contests (in spite of the fact that I personally dislike them)

Suggestions are welcome, and constructive criticism is welcomed!
The engine is planned to use the same scripting languages as the actual Gen III games, so no downloading new tools or learning new languages for this!

Details on major changes (Skip unless you're planning to ASM hack the engine):

Spoiler:

The Pokémon structure has been changed somewhat, separating out many PID dependent features into their own memory locations. Further details can be found in documentation.

The Real Time Clock data is (currently) held at 0x03000180, format being:
Year - u16
Month - u8
Day - u8
Day of week - u8
Hour - u8
Minute - u8
Second - u8
Time of Day - u8
Season - u8 (when implemented)

Flags are currently held at 0x0200F83C and are accessed in a bit wise manner, just like the original games. The valid flags range is 0x1 - 0x1FFF.

Variables are currently held at (unknown) and have a range of 0x0000 to 0xFFFF for values. the valid ranges of variables are from 0x4000 to 0x41FF, and 0x8000 to 0x801F.

The seen and caught flags for the Pokédex are held at (unknown), and are accessed as flags. the valid range of these is (technically) 0x1 to 0x290, but obviously, those flags above 0x289 are unused.

The Pokémon structure is held at (unknown) and follows the same structure as defined in the documentation.

I actually really like this. I'm just curious, is it possible at all to toggle the Fairy-Type in case we don't want it?

No, but like hacking any normal ROM, if you don't want to use something, then you just, well, don't use it! :P

Quote:

Originally Posted by Pia Carrot

Sounds great, may even consider hacking again when this comes out.

Thanks, man.

I'll stick up some screenshots and a download link when I get home (if I remember! Haha).

Currently working on getting the music engine to produce wave sounds, so I'm getting reasonably close to finishing the first part of that.

The documentation I refer to will also be linked to once I've created it. Hope you guys appreciate the work going into this as much as I've enjoyed writing this thing! (The engine, not this post haha).

This is really great to see this on there. I have an idea, perhaps have a config file that allows the selection of max generation to use? For example it could be configured to use only gen1, or up to gen6+. That way the amount of Pokémon and abilities could be tailored for what people want (and for example, make it have a GBC mode for gen2 games) and turning off Fairy type if you do add Kalos stuff.

This is really great to see this on there. I have an idea, perhaps have a config file that allows the selection of max generation to use? For example it could be configured to use only gen1, or up to gen6+. That way the amount of Pokémon and abilities could be tailored for what people want (and for example, make it have a GBC mode for gen2 games) and turning off Fairy type if you do add Kalos stuff.

Just a little idea, and really great to see this here!

I'd have to recompile the ROM several times, I'm not doing that. Since I'd just get confused about what's in one and not in another.

Like I said, if you don't want to use something, then just don't. All 649 Pokémon currently in it use their Gen 5 typings (so no fairies anywhere) but the type is there and has data in case people DO want to use it. Seem fair?

I'll also put in 2 separate Exp Calculations, one in gen 1-4 style, and one in gen 5 style.

How difficult would it be to change the screen resolution/size and how the textbox is positioned with your engine?

Resolution and size are predetermined by the GBA, so no way of changing them.

Textbox positioning... I'm sure I can come up with some way of giving the hacker some form of control over it. I'll cross that bridge when I come to it! :P

Quote:

Originally Posted by Pia Carrot

Also, will attacks be like they were before generation 4 or will they be split into Special and Physical individually?

They'll be split by default, using the new system.

Quote:

Originally Posted by Pia Carrot

Finally, so, like editing any normal ROM, I could use YAPE or something to change Pokémon typings and moves learned(if that's even still the modern tool to use, haven't hacked properly since 2010)?

Yes, and no. Since I had to rearrange some of the data, some parts won't work properly inside existing editors.

For example, I reworked the base stats data to include extra information (like a hidden ability) and extend or remove other data from it. In general, I'm trying to stick to Game Freak's systems though.