• 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?".
  • Forum moderator applications are now open! Click here for details.
  • 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.

Hackathon - pokeruby & pokeeemerald

330
Posts
10
Years
  • Age 32
  • Seen Nov 24, 2023
Pokeruby & Pokeemerald Hackathon
Dates: Friday, November 2nd - Friday, November 9th

Discussion/support can be found in the pret Discord server (https://discord.gg/6EuWgX9)​

What is it?
A hackathon is an event, typically lasting several days, in which a large number of people meet to engage in collaborative computer programming.

The purpose of this hackathon is for people to get their feet wet with ROM hacking using the Gen 3 decompilation projects. It will last 7 days. Participants may work independently or with a group of people.

Winners will be determined at the end of the event for several categories:
  1. Most fun to play
  2. Best technical feature
  3. Best graphical appeal
The prizes are the knowledge and experience gained from participating.​

What is the theme?

The theme of this hackathon is Pokémon Gym. It's up to you what you want to do with that theme. For example, you could redesign an existing Gym, create a brand new Gym, create a Gym rematch system, create a Gym that adapts to your current team, etc...

The theme is only there to help guide ideas. It's perfectly acceptable to do something that doesn't adhere to the theme.

How do I enter?
Reply to this post stating that you're entering as an individual or with a team, or direct message user @ShantyTown in the PC Discord server.​

How do I submit my project?
Projects should be hosted on GitHub. An easy way to do this is to "fork" one of the three GitHub repositories linked below. If you've never used Git or GitHub before, take 30 minutes to go through GitHub's introduction guides:
  1. GitHub - Hello World
  2. GitHub - Fork a Repository
Reply to this post with a link to the code and patch (optional), or direct message user @ShantyTown#6258 in the PC Discord server.​

How do I start?
A pokeruby hackathon template project has been created for convenience. Participants may simply use the regular pokeruby or pokeemerald projects, if desired. Both projects are found on GitHub and can be forked (see above):
  1. pokeruby hackathon template
  2. pokeruby
  3. pokeemerald
Follow the exact instructions in INSTALL.md to setup your project. Please setup your project before the hackathon starts, in case you run into any installation issues. If you run into issues, you can find support in the Discord server.​

How do I edit the game?
There are no tutorials for the decompilation projects at this time. Remember that every time you make a modification to the code or data, the ROM needs to be re-compiled using "make -j4", just like when you originally setup pokeruby or pokeemerald by following the instructions in "INSTALL.md".​

Map/Tileset Editing
You can edit maps using a program called porymap. It supports most things that AdvanceMap supports, such as map editing, tileset editing, event editing, and connection editing. It can be found on GitHub in the Releases tab.​

Script Editing
If you know how to script with XSE, then you already know how to script with pokeruby and pokeemerald. Scripts can be edited with any text editor. The command names are similar to XSE's, but there are some differences. The full list of commands can be found in data/script_cmd_table.inc, and more details about the commands are found in include/macros/event.inc.

Map scripts are found inside individual map directories. For example, data/maps/LittleRootTown/scripts.inc. The text for the scripts are found right next to the scripts in data/maps/LittleRootTown/text.inc. Note that it's valid to simply put text in the same file as scripts.

Once you've written a script, you would copy paste the script's label into the corresponding event in porymap (see map editing above).​

Graphics Editing
The decompilation projects use indexed .png image files for graphics. To modify existing graphics, you would open the image in an image editor, such as GraphicsGale or Gimp, make modifications, and save over the original image. For many graphics, the palettes are generated from the indexed .png file itself. Other graphics share palettes, and you would need to modify the `.pal` file itself using a text editor, which is a very simple format containing a list RGB (red, green, blue) values.​

Data/Text Editing
All of the data in the game can be edited using a text editor. Some data is found in the data/ directory, whereas other data is found in src/data/. If there is some data you can't find after searching, just ask someone.​

Common Issues
When editing text, be careful when using the apostrophe character (') in words like "won't" or "let's". The correct character to use for that is '. For example, "won't" or "let's". You can simply copy-paste that character from here or the existing texts in project. Using a regular apostrophe character (') will cause an error like this:
Code:
data/maps/LittlerootTown/text.inc:4: error: unknown character U+27
make: *** [Makefile:157: build/ruby/data/event_scripts.o] Error 1

-----

When adding a brand new .c file to the project, you will need to add new content to ld_script.txt. This is the linker script which specifies the order in which files will appear in the built ROM. If you're adding .c code, you must add an entry like this right after the other lines in the .text section:
Code:
src/my_new_file.o(.text);

If you're adding any readonly data (data that's prefaced with const) in the new .c file, you would need to add a line like this in the .rodata section:
Code:
src/my_new_file.o(.rodata);

An example of .rodata would be things like this:
Code:
static const u16 sShortStreakPrizes[] =
{
    ITEM_HP_UP,
    ITEM_PROTEIN,
    ITEM_IRON,
    ITEM_CALCIUM,
    ITEM_CARBOS,
    ITEM_ZINC,
};

...

const struct WildPokemon PetalburgCity_WaterMons [] =
{
    {20, 30, SPECIES_MARILL},
    {10, 20, SPECIES_MARILL},
    {30, 35, SPECIES_MARILL},
    {5, 10, SPECIES_MARILL},
    {5, 10, SPECIES_MARILL},
};
 
Last edited:

Lunos

Random Uruguayan User
3,108
Posts
15
Years
I can't wait to see what comes out of this. Not only can this serve to show everyone the power of the decomps, since everything will be open source, that means anyone would be able to use the stuff made for this competition if they so wanted to (giving credits where it's due, obviously).

Good luck everyone, have fun!

EDIT: Just to clarify though, I'm not going to enter this competition. I don't feel like I could make something that is good enough, and I'm focused on my own base anyway.
 
Last edited:
1
Posts
6
Years
  • Age 22
  • Seen Jul 4, 2021
Count me in! Gyms are one of my favorite things in Pokemon, so I'm excited to see what we get from this!
 
330
Posts
10
Years
  • Age 32
  • Seen Nov 24, 2023
Reminder that the hackathon starts in 2 days, and there's still time to join. The current participants are:
  1. ShantyTown
  2. luckytyphlosion
  3. Slawter
  4. Garak
  5. petuuuhhhhh
  6. Mantager
  7. Hyperdriveguy
  8. Fontbane
  9. Deokishisu
  10. Ketsuban
 
1
Posts
5
Years
  • Age 30
  • Seen Nov 23, 2018
i guess i'll try to join it, idk if i'll finish anything and i don't expect to win or make anything serious/decent but i don't have much else to do (also i think this is my first actual post on here hi hello)

also a few things to note: porymap crashes immediately if you try to load the pokeruby hackathon template (and then crashes on startup until you remove it from porymap's recent_projects registry entry) and gba-music-studio can't load the rom it spits out, so anyone else using it should probably keep a regular pokeruby/pokeemerald instance as well if you plan to use those
 
330
Posts
10
Years
  • Age 32
  • Seen Nov 24, 2023
i guess i'll try to join it, idk if i'll finish anything and i don't expect to win or make anything serious/decent but i don't have much else to do (also i think this is my first actual post on here hi hello)

also a few things to note: porymap crashes immediately if you try to load the pokeruby hackathon template (and then crashes on startup until you remove it from porymap's recent_projects registry entry) and gba-music-studio can't load the rom it spits out, so anyone else using it should probably keep a regular pokeruby/pokeemerald instance as well if you plan to use those

The porymap issue should be resolved now, as I merged in the latest pokeruby/master code into the hackathon template. If you want to use GBA Music Studio with the hackathon template (or any modified version of pokeruby), you will need to modify GBA Music Studio's configuration file to have the correct song table address for the modified ROM.
 
330
Posts
10
Years
  • Age 32
  • Seen Nov 24, 2023
The hackathon is finished, and we received 5 total entries (not bad!). There were some very interesting and impressive projects, especially given the short time limit. Here are the summaries listed in no particular order:

1. susieqt

Source code: https://github.com/susieqt/pokeruby-hackathon

This project was a Pokemon/Mother crossover. After an ultra wormhole opened, the Mother universe spilled into Hoenn. There is a surprising amount of content in this project--custom tiles, maps, Mother soundtrack, new Pokemon, font, and a spooky graveyard. Bravo! Hopefully this project is just starting--it would be neat to see complete playable experience in this world.

E27g0sk.png
AOAAGQB.png
6LB84bK.png
lL7sbl6.png
VikVmec.png


2. luckytyphlosion

Source code: https://github.com/luckytyphlosion/pokeruby-hackathon

This project was a recreation of the Elite 17, the final challenge of popular ROM hack Ruby Destiny: Life of Guardians. Rather than giving the player a set Pokemon team, the player can buy Pokemon and items from the Mart before the Elite 17 challenge starts. Rare and higher-leveled Pokemon cost more money, so the player has to be smart about how his budget is spent. Only first-stage Pokemon may be bought. A new item called a "Level Stone" can be bought from the Mart to evolve Pokemon that meet their evolution level requirements. The battle theme of the Elite 17 is also ripped from Ruby Destiny.

rOlFF2v.png
43SgCWb.png
7Sy8jBr.png
sgxFQSA.png


3. garak

Source code: https://github.com/garakmon/pokeruby-hackathon

This project was very graphically-focused, and it puts the player in the "Pokemon Fall Festival". The custom tiles are very nice to look at and walk around in. There is even an old lady whose head is popping out of a pumpkin on the ground. The player is given some tickets, which can be spent on some level 100 pokemon. There is a Gym that can be challenged, but it's not quite complete. Garak was working on some walls that reflect like mirrors, but it's still a work in progress, as seen in the screenshot below.

XeaiCrh.png
BiVJcQk.png
rWWZ0Ua.png
K50gY6z.png


4. slawter

Source code: https://github.com/Slawter666/pokeemerald/tree/surfable

This one deviated from the Gym theme, but it's very cool nonetheless. Slawter did an engine modification that allows unique surfing overworld sprites. This allows the player to ride on the Pokemon that's actually using Surf, rather than a boring blue blob. Watch the video below to see it in action.




5. shantytown

Source code: https://github.com/huderlem/pokeruby-hackathon/tree/myhack

This project experimented with randomly-generated maps. Every time the player enters the Gym, its layout is randomly generated in a maze-like fashion. There are switches scattered around the Gym that cause the Gym's maze to be regenerated when they are stepped on. The location of the Gym trainers are randomly placed, too. As a cool bonus effect, the player shoots out stars when walking around.




5. egg (Honorable Mention)

Source code: https://github.com/DizzyEggg/pokeemerald/tree/battle_engine_v2

This wasn't technically part of the hackathon, but it deserves an honorable mention. Egg has been working on an improved battle engine for pokeemerald. The list of features is very large, and it brings many of the future games' features into it, including mega evolution. Keep an eye out for a thread about it in the near future.

9ZKqblR.png
aJ9nmNI.png
7ceMwsY.png
ndjUQ39.png



Winners
I said there would be winners, so here they are:

Most fun to play: susieqt's Mother crossover
Best technical feature: luckythphlosion's custom Pokemon Mart menu
Best graphical appeal: garak's Fall Festival map/tiles

Thanks to all the participants, and hopefully the next hackathon will be even better!
 
Last edited:
Back
Top