vulcandth / pokecrystal16

Pokémon Crystal mod that implements 16-bit IDs for the vanilla game (not relying on other mods' features)
18 stars 22 forks source link
16-bit gameboy-color pokemon rgbds romhack

16-bit index expansion for Crystal

This repository is a modernized and rebased version of AX6's work found at https://github.com/aaaaaa123456789/pokecrystal16. It includes additional features such as the new expand-item-ID branch and the newbox/item-newbox branches.

This repository contains a modified Pokémon Crystal game, updated to handle 16-bit indexes. The main goal of this project is to create a reusable system that ROM hacks can use to bring 16-bit indexes into their games.
It is not within scope to create a new game, or to add additional features beyond 16-bit indexes.

The master branch of this repository is intended to perform identically to the original Pokémon Crystal, with minimal changes to support further development on it. Other branches will implement more features on top of it; the intention is that the necessary changes can be readily seen by comparing said branches to master (or between each other). Therefore, these other branches will never be merged into master, even though they will always be directly descended from it (i.e., in Git terminology, a merge would be a fast-forward).

Since this repository is intended to be used as a reference, the commit history is intentionally kept clean to make changes clearly visible. Therefore, modifications (such as bug fixes) will often be merged into whichever commit is more suitable for them, with the remainder of the commit tree rebased on top of the updated commit. Please do not fork this repository to build a new game on top (unless you intend to contribute to it), as the publicly-visible history will be repeatedly rewritten, making merges impossible. If you do want to contribute to the repository, let me know in advance so I can notify you of history rewrites.

For update notifications, discussions, bug reports, and feedback, join our Discord server: Fellowship of the Roms (Public). Once there, navigate to the #reaction-roles channel and react to pokecrystal16 to gain access to the #pokecrystal16 channels.

For further documentation, check out the wiki.

Branches

Last PC16 rebase: 2024-06-28

To view the differences between any two branches (or any two commits in the repository), you can use GitHub's tree comparison tool.

FAQs

Q1: Will this engine include \<insert additional feature here>?
A1: Unless the feature is specifically related to 16-bit indexing (or otherwise extending the range of possible index values), the answer is almost certainly "no". This repository's scope is limited to 16-bit indexes. If you already have a ROM hack that includes the features you like and you'd want it to have 16-bit indexes, the right course of action would be to port this engine to it. Otherwise, you can use this engine as a base to make your own ROM hack with all the features you want.

Q2: Can I use this engine for my own ROM hack?
A2: Of course; that's what it was made for. I will try make it as easy as possible to port to existing or new ROM hacks; instructions to do so will be in the wiki. All I can ask you for is that, just like this engine was openly available for you to use, you make your hack's code openly available as well — quoting some of the text in SQLite's copyright disclaimer, "may you share freely, never taking more than you give".

Q3: What's this engine's new limit on indexes?
A3: The theoretical limit is 65,534, minus a couple of "special" indexes used by the game for specific purposes (such as the value that indicates that a Pokémon is inside an egg). However, there are several limitations that will probably prevent you from ever reaching that limit. For starters, you can't fit 65,534 of anything inside a ROM bank! The index work is done, and I'll try to remove any hurdles that would render that work useless; however, if you want to push the limits of the hardware and add 20,000 new Pokémon, you'll find yourself against a technical challenge that will go beyond indexes.