OpenPoké

not quite dead

Introduction

What is this?

OpenPoké was an attempt to rewrite the Pokémon engine as seen in Poké Fire Red from scratch; a game engine recreation. It runs on the same system as the original — the GameBoy Advance.

History

It all started when MajinBluedragon (aka Keitaro) wanted to make a ROM hack of Pokémon Ruby that added, among other things, a day/night cycle like in Pokémon Gold/Silver on the GameBoy Color. This was at the time considered impossible by scripting alone, and would require extensive assembly-level hacks. Yours truly (Kawa) joked that it'd be simpler to just write a whole new engine from scratch. After many months — perhaps even years — of work, even after MBD dropped out of the project and then tried to take it back through a sock puppet, I felt the project was becoming irrelevant. The NDS games, Pokémon Diamond and Pearl had been released, with more coming. Also, the rest of the team, with the sole exception of Cearn, had left me with unfulfilled promises of content assistance…

The final nail, however little, came when they managed to insert a day/night cycle into the GBA games after all. I've never even seen that hack in action. I didn't care any more.

What now?

With the project dead and the demo game left with a freezing script bug, I've moved on to other projects. But recently, there was some interest in the project, so I reworked the game a bit to work on the latest version of devkitPro and to have a more elegant end to the demo.

Features

Editor features

The editor will be released when it's properly fixed. I must've lost the correct one over time and recovered an earlier copy…

Screenshots

Historical disinterest

Downloads and Source

The suggested download is this precompiled .GBA binary ROM image, which has minor cleanup and some branding changes. The full source for this version is also available.

Then there's the old version, from years back. That too is available as a precompiled ROM image, as is the old source code. Though it's been repacked for release on this page, the code itself is untouched and will not compile on newer versions of devkitPro without some makefile changes.

If you want to build from source, the new release will automatically detect this separate music data and link in the EngineM4 driver and data. The old one does not — see the FAQ for more.

Both releases also contain a set of untouched data tools, written in an old version of C#, that won't run out of the box.

Frequently Asked Questions

Hot Skitty on Wailord Action? Seriously?
The old build is even worse.
Nice startup menu. Are there any special things not in there?
Sure are, boy. Hold Select on startup for a music test mode, and Start to see all the overworld tilesets.
Why is the music so bad?
Missing instruments. We never got the instrument data in a quite complete form. The sound engine replaces those missing instruments with generic beeps. You can disable music entirely (and cut off an ungodly chunk of data) in the old release by editing the makefile — find SOUNDENGINE = enginem4 and change that to SOUNDENGINE = dummy and then doing a clean rebuild. For the new release, simply remove all EngineM4 files and rebuild; the makefile will figure it out.
Why is this game so short?
Reread the introduction and see if you can figure it out.
Where's all the Pokémon at?
The data's there for all monsters up to Deoxys. In the old build, there's Magmortar and Lucario as well.
What about item storage, and putting Pokémon in boxes?
The box manager is in, and should be accessible in the Pokémon Center. Item storage is not.
When I look at the source code, there's both a pokedex.c and a Kopie van pokedex.c. What's up with that?
One of the last things I did back then was to try and make the PokéDex look like the one in HeartGold/SoulSilver. The one that's not a copy is that attempt, and the copy is a backup in the regular OpenPoké style, as seen in that outdated video. Look at miscgfx/dexlist.png and miscgfx/dexlist_gs.png for a reasonable idea of what that could be like.
Why is the scripting engine named Judas?
As a nonbeliever, I've been wondering the same thing ever since I made my first GBA scripting engine, which was Jesus. You can't tell without the editor, but the compiler for this engine is named Iscariot. It matches, you see? And an earlier compiler was named Herod. I keep calling my scripting languages and related tools by biblical names…
I have a stupid question that isn't answered here. What do I do?
Contact me. If it's a good one, I'll add it to this section.
But how d—
If you got here in the first place, you should be able to figure out a good way to contact me.

Editor

This section will be properly added when the editor is up to snuff, including documentation, and maybe a nice command reference. For now, here's a preview:

سمَـَّوُوُحخ ̷̴̐خ ̷̴̐خ ̷̴̐خ امارتيخ ̷̴̐خ