GithubHelp home page GithubHelp logo

nicholatian / citrite Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 9.24 MB

The official source code repository for Pokémon Citrite Version, a ROM hack of Pokémon Emerald.

License: GNU General Public License v2.0

Makefile 5.77% Assembly 43.05% C 27.48% C++ 7.91% Python 15.79%

citrite's Introduction

Pokémon Citrite: A ROM hack of Pokémon Emerald

Titlescreen

This is an old repo of mine. It is no longer maintained.

You are free to use this repository in accordance with what is set out in the LICENSE file in the root of this repository.

I hope you find what I have published of use. I put a lot of work into creating this extensible system and developing it properly, so it should be easy to work around and port to other platforms as it is now.

What is provided

  1. A GNU Makefile that builds the ROM. It has various targets inside it that handle the compilation of images, Pokétext, map files, palette arrays, and of course GNU assembly and C code.
  2. A collection of Python 3 scripts inside util/ that provide pivotal functionality to the build system. This includes things like Pokétext conversion from UTF-8 to bytecode, the parsing of palette files, string manipulation for version incrementing, the insertion of hooks from a config holding symbol-offset pairs, and the conversion of binary blobs to GNU assembly along with their labelling and alignment. There is also a console patching utility that implements an extended version of the IPS patch format, however it is not bug-free and needs more testing.
  3. Linker scripts for ld to use to properly hook things into our binary blob before it is inserted into the Emerald ROM.
  4. Config files for VBA(-M/-SDL-H) to enable proper emulation of Emerald.
  5. Various documents inside doc/, including the ARM7TDMI reference manual, a PokéScript command list exported from XSE, a movement code table for Emerald, and a Pokétext table for use in Hexecute and other binary editors.
  6. A huge collection of media to do with Pokémon Citrite that you probably don’t care about. You’re welcome to look at it though. :P

citrite's People

Contributors

nicholatian avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

citrite's Issues

Custom background image for main menu

Objective: Enable the placement of any 4-bit 240×160 image in the main menu, and ensure it shows up behind the already present rbox construct

Bonus: Enable the placement of any 8-bit 240×160 image, as described above.

Notes:

  • No VRAM offsets should need to be changed to make this workable.
  • That said, there will be a 512-tile limit on 8-bit images.
  • It may be possible to rearrange the VRAM to have the main menu rbox/text tileset at VRAM:0600C000, though I don’t know if there would still be space for the tilemap after that.

Implement spooky scripts in Ground Zero

Thought of this while running through alpha 1.1 on my DSTWO.

Objective: Write some scripts that do some things around Ground Zero that are 3spooky5me.

Examples

  • A script that forces the player to walk an extra tile, preventing them from viewing a thing on the wall.
  • A script that plays the Curse sound effect occasionally upon entering any of the houses.
  • More things I haven’t thought of yet

Implement a macro system for a large-scale animated map block gamut

Objective: Write a macro system that translates into a collection of animated tiles, to be used in the sacred lake in the Nome Ruins.

Notes

  • This may require REing the assembly routines used for animating map blocks, however it won’t be much of a chore with IDA’s help.
  • All of the animations in the GIF below should be implemented, except for the clouds and the overworld objects.
  • The tiles should be downscaled to 66% their size shown in the GIF, to better match the overworld scaling of Emerald.

Tiles needing animated

Import all scripts from the alpha 1.1 ROM

Objective: See title

Notes

  • Scripts should be written using the macro-based assembly for PokéScript
  • Converting PKSV code to this format shouldn’t be too difficult.

Write a script to handle exported maps from Advance Map

To facilitate a normal map creation process, maps exported from Advance Map must be processed by the compilation entorage and incorporated into the game.

Objective: RE the map export format used by Advance Map, and write a script to convert files in that format into the format understood by Emerald’s engine.

Notes

  • AFAIK the map export format used by A-Map should be dead simple, and will require little (if any) parsing.

Add custom battle backgrounds for the essential environments

Objective: Add images to be implemented as battle backgrounds for the most common battle types (grass, sand, water, etc.)

Notes

  • This does not include special battle backgrounds, such as those for gym leaders, the Elite Four, the League Champ, etc..
  • These images should be original work made to order. No public resources!

Custom background image for options menu

Objective: Enable the placement of any 4-bit 240×160 image in the main menu, and ensure it shows up behind the already present rbox construct

Bonus: Enable the placement of any 8-bit 240×160 image, as described above.

Notes:

  • Since the rbox data is uploaded to VRAM:06004000 by default, rearrangement chores will need to be done to fit the required number of tiles (601) into VRAM.
  • If the rbox tiles are moved to VRAM:06008000, there will be a 512-tile limit on 8-bit images.
  • It may be possible to rearrange the VRAM to have the main menu rbox/text tileset at VRAM:0600C000, though I don’t know if there would still be space for the tilemap after that.

Add eastern “Grand Prairie”

Objective: Add the “Grand Prairie” map, situated between the Massive Steppes and the Trading Camp.

Environment

  • Lush, tall green grass everywhere, and Pokémon aplenty.
  • Tall mountains—the beginning of the Rampardos Range—are reachable the further east one goes.
  • Initially, access to the innards of the Rampardos Range should be unavailable until a later event occurs in a later release.

Import all maps from the Alpha 1.1 ROM

Objective: Using Advance Map, export all of the maps in the Alpha 1.1 ROM into files processable by a compilation script.

Notes

  • For these maps to be usable, a script must be written to process them. See Issue #3.

Add “Timothy”

Add a “Timothy” map, situated to the west of the Clandestine Desert and to the east-by-northeast of the Massive Steppes.

Environment

  • Sandy and what would normally be arid and dry, however it is raining constantly instead. This is due to weather distortion caused by radioactive clouds surrounding Ground Zero.
  • To the north leads an entrance to the Massive Caverns inside the Rampardos Range.

Points of Interest

  • A local gym; affiliated with the region’s League, officially.

Add southwestern “Grand Prairie”

Objective: Add a “Grand Prairie” map situated to the southwest of the Trading Camp, and to the east of the Amalthea Jungle.

Environment

  • Lush green meadows filled with flowers, interpolated with thickets of trees and tall grass.
  • To the northwest is a huge unknown lake.

Special

  • A modest homestead farm is located in the middle of the map.

Expand the palette array for overworld sprites

Objective: Expand the array of overworld palettes in Emerald’s engine to accomodate at least a byte’s worth of palette indexes.

Notes

  • You can get an easy lead by following cross-references to an existing OW palette.
  • GoGoJJTech says that expansion is easy, though we’ve yet to find that out, obviously!

Add “Trading Camp”

Objective: Add a “Trading Camp” map, situated west of the eastern Grand Prairie, northeast of the southwestern Grand Prairie… it’s smack-dab in the middle of the Grand Prairie.

Environment

  • Surrounded by trees and grasses
  • The city is composed of numerous dirt paths sprawling everywhere
  • Numerous houses, both open and closed

Special

  • A closed gym, in the southeastern part of town

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.