A dev version of (A practice file generator for everyone's favorite game: Super Mario Sunshine)
Find a file
2021-10-10 18:10:51 +02:00
.devcontainer Presets and categories (#73) 2021-10-10 15:45:53 +02:00
.github Upgrade to GitHub-native Dependabot 2021-04-29 15:59:39 +00:00
.vscode update devcontainer configuration 2021-06-12 13:08:09 +00:00
dockerfiles Presets and categories (#73) 2021-10-10 15:45:53 +02:00
docs fix allocated ranges 2021-10-10 18:10:51 +02:00
scripts Presets and categories (#73) 2021-10-10 15:45:53 +02:00
site Presets and categories (#73) 2021-10-10 15:45:53 +02:00
utils remove stage randomizer and remove save boxes 2021-08-13 18:08:21 +02:00
.dockerignore wip 2020-07-01 08:52:12 +02:00
.editorconfig switch from azure-pipelines to github actions 2020-06-29 23:31:44 +02:00
.gitattributes update cheat table file extension 2021-08-14 17:20:16 +00:00
.gitignore init vuepress 2020-06-29 23:31:44 +02:00
.prettierignore add .prettierignore 2020-09-24 14:59:53 +02:00
.prettierrc component translation frameworking 2020-07-03 19:23:15 +02:00
changelog.md Update changelog.md 2021-10-10 16:07:44 +02:00
Codes.xml Presets and categories (#73) 2021-10-10 15:45:53 +02:00
docker-compose.yml switch from azure-pipelines to github actions 2020-06-29 23:31:44 +02:00
LICENSE add license 2020-06-29 23:31:44 +02:00
package-lock.json Presets and categories (#73) 2021-10-10 15:45:53 +02:00
package.json Presets and categories (#73) 2021-10-10 15:45:53 +02:00
Readme.md Presets and categories (#73) 2021-10-10 15:45:53 +02:00

GCT Generator

GitHub license CD Pipeline

This repository contains the code behind the Super Mario Sunshine Cheatfile Generator at https://gct.zint.ch/


Features


Contributing

Updating Practice Codes

The codes are stored in the Codes.xml file. If you want to add or change codes edit the XML file. Note that GMSJ0A refers to the NTSC-J 1.1 release of Super Mario Sunshine. (It's not actually called version A but that's what we've been calling it for years due to a misconception on what the A on the back of the box means).

When adding new codes keep in mind that the English title/description are mandatory.

Reserved Memory

Some codes store some states in the games memory starting from address 0x817F0000. To avoid collisions use a memory range in the unallocated ranges:

Adding translations

  1. Create a new file <lang>.json in site/.vuepress/i18n, where <lang> is the language code you want to add. Copy the contents of en-US.json into your file and translate each entry in the JSON file.
  2. Create a new folder with your language code in site (such as site/de for German). Create a new markdown file for each existing page (guide.md, index.md, ios58.md, ...) and translate its contents from the English version.
  3. Create a new entry in site/.vuepress/i18n/locales.json with the site metadata and navigation items for your language.
  4. Open Codes.xml and add a translation for each code (<title> and <description>).

Updating Guides

You can find the guides in the site folder. Simply edit the corresponding markdown file (.md).

Note that in the code reference files everything following the <!-- injectionpoint --> tag will be removed during the next build.

Site Development

If you intend to change site code you need NodeJS version 14.X LTS installed on your local.

# Install dependencies
npm i

# Run project in watch mode
# This will serve the page in development mode on http://localhost:8080
npm run dev

# Build project
npm run build

The XML codes will be written automatically to the json file and code reference during the following actions:

  • Starting the development server with npm run dev
  • Building the site with npm run build

If you want to inject the codes at any given point you can use npm run codes:inject.

!!! Note that if npm was used, npm run codes:clean is ran automatically as a pre-commit hook, removing all injected codes and staging ALL changes. If you want to commit changes without cleaning codes first you have to commit through git commit --no-verify.

Build and preview the site (Docker)

The project root provides a docker-compose file, which creates a clean build (with the same configuration as the production build) and spins up a minimal Apache server on your local, serving the resulting build on port 8080.

# Build and serve the site on http://localhost:8080
# Press CTRL+C to stop the container
docker-compose up --build