Thread: Development: Pokémon Fire Red Hacked Engine
View Single Post
Old September 10th, 2009 (4:14 AM). Edited May 30th, 2017 by Hiroshi Sotomura.
JPAN JPAN is offline
pokemon rom researcher
    Join Date: Dec 2008
    Posts: 104
    Greetings everyone. I have come before you today to present you the project I've been working on for the last month. I call it Pokemon Fire Red Hacked (Tentative Title).

    This is a base for Fire Red US V1.0. It will not work with other Fire Red versions.

    But what is this? Well, this is a small patch that rewrites a part of the main game engine, in order to increase the number of options you have as a ROM hacker. This include several features I've heard people complaining about and requesting, as well as some that just popped in my head.

    This is a work in progress, and I aspire for it to become one day a compiled colection of all that only ASM can make possible without having to know ASM to pull it off. So, please, feel free to suggest new features and present your own if you want. You will be credited for it, of course.

    • Support for over sixty thousand different OWs, as well as access to fourty-six hundred different palettes
    • Hacks preformed in the Battle system allow you to choose options for your hack, including Status-ridden pokemon, Shinies and creation of swarm events
    • Access to GBA Hardware function through new Specials that allow you to create Timed events and Button dependent events
    • All processor math and logic functions available for your variables
    • Dynamic multichoice boxes that can be changed Runtime, making them limitless
    • A fully-fledged pokemon decryption system accessed through variables that allow you to read and edit almost all information encrypted and locked away inside your pokemon.
    • Edited some of the old Specials, allowing for replacing the Old man Pokemon and Ghost Marowak with new pokemon, as well as a new version of the Pokemon Size minigame (the Heracross and Magikarp ones)
    • Edited the Fossil Special (from pewter museum). Now it can hold 256 different 64 by 64 pixel uncompressed images
    • Edit what every Behaviour byte does when you press A in front of it(scripts), allowing for things like headbutt trees
    • Choose where you go when you die, even if it's not a pokecenter.
    Also incuded in the pack is a Instruction booklet explaining the functions and some examples of those functions. Some gameplay mechanics are explained there that doesn't apply only to this hack.

    This Patch should be aplied first, then any other Rom base that you want. It should have no problem working, but I didn't test them all (as long as they didnt write it over the old scripts, is should be fine). This patch is based on the "clean" patch I gave away some time now, so all scripts, people and Signposts are gone.

    On a sidenote, all source code is provided in the attachment, with a compiled form also available. But all the code only work, as is, on Fire Red US v1.0. Most code, however is portable for any other Pokemon game, as long as you replace the pointers to in-game references to the ones of your version. The pokemon decrypt, timer and keypad functions are easily portable as long as you know the party location and variable 80xx family location.

    First update:
    I corrected all the reported bugs, and they seem to work right now. Also, the Swarm-Roam code and the Wild code are compatible with eachother, and both have been added new features.
    Added Behaviour byte scripts. You can now run scripts such as the defaults for cabinets and bookshelves on all bytes. Not advised to overwrite the water Bytes, but if you really want to, you have that option.
    Created a function that replaces the SethealingPlace determination of your retreat place when you whiteout.

    Second Update:
    Fixed some bugs in my code and in Nintendo's Safari code. Details in the version Changes.

    Third update:
    An early christmas present for you all, the newest version is out!
    Major changes on this hack, as well as corrected bugs and somewhat extensively tested code led me to prompt this as the first full version update.
    Full changes listed on the version change text.
    Of course, bugs will still happen, so please report them here when you find them.

    Fourth update:
    After some snooping around, I found a severe problem with my hack implementation: It always required to be applied when starting a hack. Because that decreases the number of people that can apply this hack, I have made a tool in C / to apply it. This tool already includes the remaining hacks for this latest release, including the result of the Item research, button-triggered scripts, more safari balls and trainer-activated scripts that are not trainers. Now with the manual included.
    When extracting the tool, extract the whole "Hack tool" folder. Any of those folders missing might corrupt your ROM and crash the tool.
    Tool use:
    (optional) to extend a ROM, check the "Expand ROM on opening" box
    Click "Open ROM"
    If it's not a Fire Red version, it should pop-up an error. If it's a FR(u), but you changed the header, same error will appear. Don't worry about it then.
    Select the hacks you wish to install, by clicking on the corresponding checkboxes and buttons (advice: if you are installing the behaviour byte hack, click that one first, as that function cleans the old space, that is not detected by the Free space table, for safety reasons, but is added to the opened rom free space, and uses it for smaller hacks, eg. specials)
    Click the apply button after selecting all you want from the above checkbox list
    In some cases, it might ask you for variables, or tell you it created some tables. That information is available afterwards if you click the "Get Changed Data" button.
    End all modifications by saving to a ROM, with a name of your choice.

    This tool doesn't ovewrite hacks. as such, if you install a hack that is not a special, it will be placed at a new location and the old one will not be cleaned. Next version should have that fixed.

    This tool is compiled in visual studio c++ 2005, and as such, may have dependencies with the .net framework. If it doesn't open, try installing .net framework 2.0.

    I must say, even though I program in c for a long time, and c++ from recent years, the C++ .net library was a bit new to me, so the layout might be a bit wierd and seem a bit off. Tell me your opinion of it, as always, so I can improve it for next release. Also, report any bug here or by PM.
    Here are the links for my work

    Currently working on:
    Battle Script Documentation
    Another large project
    Reply With Quote