Compare commits
51 Commits
Author | SHA1 | Date | |
---|---|---|---|
92216ce4e8 | |||
521e1120bb | |||
211e3d5bac | |||
2211e349db | |||
eb3cb4679c | |||
058ab5c4ec | |||
351901fd95 | |||
1cb1738a59 | |||
582d2199b8 | |||
22df728cf0 | |||
d5b67928b3 | |||
457b785e91 | |||
bd59b4be2e | |||
f232eb77c5 | |||
3caa6eae99 | |||
9373ebe14a | |||
9275d7d7a5 | |||
a7af970ac8 | |||
043c9a9ff2 | |||
ced92caa24 | |||
6b3e5e8255 | |||
c8fd97043b | |||
a2b55c487b | |||
8eaf584c8b | |||
cb19ebccec | |||
f0a61f8324 | |||
4b02cad24b | |||
5b4b9a390b | |||
67b3f7021e | |||
7eece44655 | |||
608f0982cb | |||
34e697e91d | |||
2cc33db24a | |||
06200d422d | |||
4e3c9597fc | |||
2fd2705498 | |||
c2d9e83c22 | |||
f1bf8fcfdc | |||
7d8b1ff8a7 | |||
d3f3b60816 | |||
dfdec42bc8 | |||
b934b928f1 | |||
f0743b5f6b | |||
04f97628c1 | |||
a179459765 | |||
e2767c1d6d | |||
becc683289 | |||
3027f375da | |||
be215458f5 | |||
1f90f109d0 | |||
428c2c665c |
24
.gitlab-ci.yml
Normal file
24
.gitlab-ci.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# This CI file is used to test code pushed to "main".
|
||||||
|
|
||||||
|
image: ubuntu:rolling # Using rolling because of that OpenSSL vuln.
|
||||||
|
|
||||||
|
# Use Docker, because it just works.
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- apt update # Build a package cache with apt, because Ubuntu on Docker doesn't have one by default.
|
||||||
|
- apt install git bash libpng-dev build-essential binutils-arm-none-eabi -y # Install build dependencies.
|
||||||
|
- git config --global http.sslVerify false # disable SSL for git so that cloning the game doesn't fudge everything up.
|
||||||
|
|
||||||
|
build:
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
- echo "Do your build here"
|
||||||
|
- mkdir work-directory
|
||||||
|
- cd work-directory
|
||||||
|
- git clone --recursive https://gitgud.io/tbld/game.git # clone recursively so that we don't have to get agbcc ourselves
|
||||||
|
- cd game
|
||||||
|
- cd agbcc
|
||||||
|
- bash ./build.sh # Compile agbcc
|
||||||
|
- bash ./install.sh ../ # Install agbcc into tumbledemerald
|
||||||
|
- cd ..
|
||||||
|
- make -j8 # multi-threaded make
|
14
.gitlab/issue_templates/Bug Report.md
Normal file
14
.gitlab/issue_templates/Bug Report.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# Bug Report
|
||||||
|
|
||||||
|
## What issue have you found?
|
||||||
|
|
||||||
|
<!--- Please provide a detailed explanation of the bug here. -->
|
||||||
|
|
||||||
|
## What did you expect to happen instead of this bug?
|
||||||
|
|
||||||
|
<!--- What did you expect to happen instead? Please explain in detail. -->
|
||||||
|
|
||||||
|
<!--- Please check the following boxes. -->
|
||||||
|
|
||||||
|
- [ ] I am using the **latest version** of TumbledEmerald.
|
||||||
|
- [ ] I am using mGBA, the official CIA package, or a Game Boy Advance flashcart.
|
4
.gitlab/issue_templates/Default.md
Normal file
4
.gitlab/issue_templates/Default.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<!---
|
||||||
|
Please make sure to look at the issue templates and use the one that best describes your problem. If your issue
|
||||||
|
doesn't fit into one of these categories, please type your issue below. If we need more information, we'll ask!
|
||||||
|
-->
|
18
.gitlab/issue_templates/Feature Request.md
Normal file
18
.gitlab/issue_templates/Feature Request.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Feature Request
|
||||||
|
|
||||||
|
## Requested feature: <!--- type what you want added here. -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Why do you want this feature?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--- Please check the following boxes. -->
|
||||||
|
|
||||||
|
- [ ] I have submitted a merge request to implement this feature. <!--- not required, but if this is the case, please indicate so! -->
|
||||||
|
- If you have submitted a merge request, please reference it here: <!--- use the !NUMBER format. -->
|
||||||
|
- [ ] This feature has not been requested in another issue before.
|
||||||
|
- [ ] I would like to be listed in the credits.
|
||||||
|
|
16
.gitlab/issue_templates/Save Porting.md
Normal file
16
.gitlab/issue_templates/Save Porting.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
## Save Porting Request
|
||||||
|
|
||||||
|
Version of my save: <!--- replace this text with the game version that your save was created in. -->
|
||||||
|
Version I want to have my save ported to: <!--- replace this text with the game version you want to use your save in. -->
|
||||||
|
|
||||||
|
- [ ] I have attached my save file in `.sav` format to this request.
|
||||||
|
- [ ] I would like to authorize my save file to be used for testing and debugging purposes. (OPTIONAL)
|
||||||
|
|
||||||
|
<!---
|
||||||
|
Please note:
|
||||||
|
|
||||||
|
I might not get to your save right away. If it takes longer than a month to make you a new save, I'll update
|
||||||
|
it to work with the latest version of the game for you.
|
||||||
|
|
||||||
|
This process is NOT a conversion. This is me (an idiot!) rummaging through your save and trying to replicate it on the version you chose. I might miss something. If you notice something I missed, let me know.
|
||||||
|
-->
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "agbcc"]
|
||||||
|
path = agbcc
|
||||||
|
url = https://github.com/pret/agbcc
|
@ -3,6 +3,6 @@
|
|||||||
# and commit this file to your remote git repository to share the goodness with others.
|
# and commit this file to your remote git repository to share the goodness with others.
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- init: echo "See INSTALL.md for compilation instructions."
|
- init: git config --global http.sslVerify false && git clone https://gitgud.io/tbld/scripts.git && cd scripts && sudo bash ./main.sh -cc
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ DO:
|
|||||||
- Keep `tumbledemerald` up-to-date with `@pret`'s decomp. (pret/pokeemerald on GitHub.com)
|
- Keep `tumbledemerald` up-to-date with `@pret`'s decomp. (pret/pokeemerald on GitHub.com)
|
||||||
- Send pull requests
|
- Send pull requests
|
||||||
- Send feature requests
|
- Send feature requests
|
||||||
- Hang out with us on **[matrix]**
|
- Hang out with us.
|
||||||
- Follow the [style guide](STYLE.md)
|
- Follow the [style guide](STYLE.md)
|
||||||
|
|
||||||
DON'T:
|
DON'T:
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
# Cool people:
|
# Cool people:
|
||||||
|
|
||||||
# creepyguy: Compiled 1.0.0, since I couldn't. He's awesome, go check him out on [Scratch](https://scratch.mit.edu/users/creepyguy256/)
|
# Compilation Hall of Fame
|
||||||
|
These people have built or compiled TumbledEmerald releases in a pinch, lending their time to the project in a super helpful way!
|
||||||
|
## SanicConnoissuer_91: Built the 22.08a .CIA (and several others). Thanks a bunch, dude!
|
||||||
|
## creepyguy: Compiled 1.0.0, since I couldn't. He's awesome, go check him out on [Scratch](https://scratch.mit.edu/users/creepyguy256/)
|
||||||
|
|
||||||
- @ghoulslash: A lot of the features here are directly from [ghoulslash/pokeemerald](https://github.com/ghoulslash/pokeemerald.git) and its many amazing feature branches.
|
- @ghoulslash: A lot of the features here are directly from [ghoulslash/pokeemerald](https://github.com/ghoulslash/pokeemerald.git) and its many amazing feature branches.
|
||||||
- Tutorial authors: ~~Some~~ Most features were adapted from code in the [tutorials](https://github.com/pret/pokeemerald/wiki/Tutorials/) in [pret](https://github.com/pret/)'s wiki.
|
- Tutorial authors: ~~Some~~ Most features were adapted from code in the [tutorials](https://github.com/pret/pokeemerald/wiki/Tutorials/) in [pret](https://github.com/pret/)'s wiki.
|
||||||
|
3
FAQ.md
Normal file
3
FAQ.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
## FAQ
|
||||||
|
|
||||||
|
Any important questions that I feel need answering will be added here.
|
@ -13,4 +13,9 @@ titles and update them while still remaining faithful to the original games.
|
|||||||
* The keyboard prompt automatically switches to lowercase after the first character.
|
* The keyboard prompt automatically switches to lowercase after the first character.
|
||||||
* Dynamic trade names have been implemented: rather than pulling trade Pokemon info from a list, it pulls from the Pokemon's data instead.
|
* Dynamic trade names have been implemented: rather than pulling trade Pokemon info from a list, it pulls from the Pokemon's data instead.
|
||||||
* The "move grammar" table leftover from the Japanese versions has been completely nuked, making the game faster.
|
* The "move grammar" table leftover from the Japanese versions has been completely nuked, making the game faster.
|
||||||
*
|
* Pokémon Center receptionists now heal your Pokémon without prompt, and you turn around once the process is over to avoid accidentally healing again
|
||||||
|
* Default options have been changed to make the game quicker.
|
||||||
|
* The Aurora Ticket, Mystic Ticket, and Old Sea Map have been reimplemented:
|
||||||
|
* For the tickets, beat Wallace and talk to the girl who originally blocks Route 101 back in Littleroot Town.
|
||||||
|
* For the map, beat Wallace and talk to the fisherman who gives you the Old Rod, telling him that fishing is "not so good."
|
||||||
|
* The Fairy type from Generation VI+ has been added.
|
||||||
|
47
INSTALL.md
47
INSTALL.md
@ -5,11 +5,11 @@ These instructions explain how to set up the tools required to build **tumbledem
|
|||||||
These instructions come with notes which can be expanded by clicking the "<i>Note...</i>" text.
|
These instructions come with notes which can be expanded by clicking the "<i>Note...</i>" text.
|
||||||
In general, you should not need to open these unless if you get an error or if you need additional clarification.
|
In general, you should not need to open these unless if you get an error or if you need additional clarification.
|
||||||
|
|
||||||
If you run into trouble, ask for help on Matrix.
|
If you run into trouble, ask for help.
|
||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
Windows has instructions for building with three possible terminals, providing 3 different options in case the user stumbles upon unexpected errors.
|
Windows has instructions for building with three possible terminals, providing 3 different options in case the user stumbles upon unexpected errors.
|
||||||
- [Windows 10 (WSL1)](#windows-10-wsl1) (**Fastest, highly recommended**, Windows 10 and later only)
|
- [Windows 10 and 11 (WSL1)](#windows-10-and-11-wsl1) (**Fastest, highly recommended**, Windows 10 and later only)
|
||||||
- [Windows (msys2)](#windows-msys2) (Second fastest)
|
- [Windows (msys2)](#windows-msys2) (Second fastest)
|
||||||
- [Windows (Cygwin)](#windows-cygwin) (Slowest)
|
- [Windows (Cygwin)](#windows-cygwin) (Slowest)
|
||||||
|
|
||||||
@ -24,9 +24,9 @@ Unscientific benchmarks suggest **msys2 is 2x slower** than WSL1, and **Cygwin i
|
|||||||
|
|
||||||
All of the Windows instructions assume that the default drive is "C". If this differs to your actual drive letter, then replace C with the correct drive letter when reading the instructions.
|
All of the Windows instructions assume that the default drive is "C". If this differs to your actual drive letter, then replace C with the correct drive letter when reading the instructions.
|
||||||
|
|
||||||
**A note of caution**: As Windows 7 is officially unsupported by Microsoft and Windows 8 has very little usage, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10 instructions.
|
**A note of caution**: As Windows 7 is officially unsupported by Microsoft and Windows 8 has very little usage, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10 and 11 instructions.
|
||||||
|
|
||||||
## Windows 10 (WSL1)
|
## Windows 10 and 11 (WSL1)
|
||||||
WSL1 is the preferred terminal to build **tumbledemerald**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
WSL1 is the preferred terminal to build **tumbledemerald**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
||||||
- If WSL (Debian or Ubuntu) is **not installed**, then go to [Installing WSL1](#Installing-WSL1).
|
- If WSL (Debian or Ubuntu) is **not installed**, then go to [Installing WSL1](#Installing-WSL1).
|
||||||
- Otherwise, if WSL is installed, but it **hasn't previously been set up for another decompilation project**, then go to [Setting up WSL1](#Setting-up-WSL1).
|
- Otherwise, if WSL is installed, but it **hasn't previously been set up for another decompilation project**, then go to [Setting up WSL1](#Setting-up-WSL1).
|
||||||
@ -109,7 +109,7 @@ cd /mnt/c/Users/<user>/Desktop/decomps
|
|||||||
|
|
||||||
If this works, then proceed to [Installation](#installation).
|
If this works, then proceed to [Installation](#installation).
|
||||||
|
|
||||||
Otherwise, ask for help on Matrix, or continue reading below for [Windows instructions using msys2](#windows-msys2).
|
Otherwise, ask for help, or continue reading below for [Windows instructions using msys2](#windows-msys2).
|
||||||
|
|
||||||
## Windows (msys2)
|
## Windows (msys2)
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ cd Desktop/decomps
|
|||||||
|
|
||||||
If this works, then proceed to [Installation](#installation).
|
If this works, then proceed to [Installation](#installation).
|
||||||
|
|
||||||
Otherwise, ask for help on Matrix, or continue reading below for [Windows instructions using Cygwin](#windows-cygwin).
|
Otherwise, ask for help, or continue reading below for [Windows instructions using Cygwin](#windows-cygwin).
|
||||||
|
|
||||||
## Windows (Cygwin)
|
## Windows (Cygwin)
|
||||||
1. If devkitARM is **not installed**, then follow the instructions used to [install devkitARM](#installing-devkitarm) for the msys2 setup before continuing. *Remember to not continue following the msys2 instructions by mistake!*
|
1. If devkitARM is **not installed**, then follow the instructions used to [install devkitARM](#installing-devkitarm) for the msys2 setup before continuing. *Remember to not continue following the msys2 instructions by mistake!*
|
||||||
@ -217,7 +217,7 @@ Note that the directory **must exist** in Windows. If you want to store tumblede
|
|||||||
> Note 2: Windows path names are case-insensitive so adhering to capitalization isn't needed
|
> Note 2: Windows path names are case-insensitive so adhering to capitalization isn't needed
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Matrix.
|
If this works, then proceed to [Installation](#installation). Otherwise, ask for help.
|
||||||
|
|
||||||
## macOS
|
## macOS
|
||||||
1. If the Xcode Command Line Tools are not installed, download the tools [here](https://developer.apple.com/xcode/resources/), open your Terminal, and run the following command:
|
1. If the Xcode Command Line Tools are not installed, download the tools [here](https://developer.apple.com/xcode/resources/), open your Terminal, and run the following command:
|
||||||
@ -287,7 +287,7 @@ Note that the directory **must exist** in the folder system. If you want to stor
|
|||||||
> Note: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Desktop/decomp folder"`
|
> Note: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Desktop/decomp folder"`
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Matrix.
|
If this works, then proceed to [Installation](#installation). Otherwise, ask for help.
|
||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
Open Terminal and enter the following commands, depending on which distro you're using.
|
Open Terminal and enter the following commands, depending on which distro you're using.
|
||||||
@ -346,7 +346,7 @@ _(Specific instructions for other distributions would be greatly appreciated!)_
|
|||||||
### Choosing where to store tumbledemerald (Linux)
|
### Choosing where to store tumbledemerald (Linux)
|
||||||
At this point, you can choose a folder to store tumbledemerald (and agbcc) into. If so, you'll have to account for the modified folder path when changing directory to the tumbledemerald folder.
|
At this point, you can choose a folder to store tumbledemerald (and agbcc) into. If so, you'll have to account for the modified folder path when changing directory to the tumbledemerald folder.
|
||||||
|
|
||||||
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Matrix.
|
If this works, then proceed to [Installation](#installation). Otherwise, ask for help.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
|||||||
1. If tumbledemerald is not already downloaded (some users may prefer to download tumbledemerald via a git client like GitHub Desktop), run:
|
1. If tumbledemerald is not already downloaded (some users may prefer to download tumbledemerald via a git client like GitHub Desktop), run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://gitlab.com/tbld/game.git
|
git clone https://gitgud.io/tbld/game.git -c http.sslVerify false --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -377,30 +377,41 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
|
|||||||
> Where *\<folder where tumbledemerald is to be stored>* is the path of the folder [where you chose to store tumbledemerald](#Choosing-where-to-store-tumbledemerald-WSL1). Then run the `git clone` command again.
|
> Where *\<folder where tumbledemerald is to be stored>* is the path of the folder [where you chose to store tumbledemerald](#Choosing-where-to-store-tumbledemerald-WSL1). Then run the `git clone` command again.
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><i>Why disable SSL when cloning?</i></summary>
|
||||||
|
|
||||||
|
> GitGud's servers don't seem to allow cloning over https for some
|
||||||
|
> reason. The `-c http.sslVerify false` part of the above command
|
||||||
|
> ensures that cloning works properly, but may be a security risk.
|
||||||
|
> Don't be a stupid.
|
||||||
|
</details>
|
||||||
|
|
||||||
2. Install agbcc into tumbledemerald. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
|
2. Install agbcc into tumbledemerald. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
|
||||||
- If agbcc has **not been built before** in the folder where you chose to store tumbledemerald, run the following commands to build and install it into tumbledemerald:
|
- If agbcc has **not been built before** in the folder where you chose to store tumbledemerald, run the following commands to build and install it into tumbledemerald:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/pret/agbcc
|
cd <path to tumbledemerald>
|
||||||
cd agbcc
|
cd agbcc
|
||||||
./build.sh
|
./build.sh
|
||||||
./install.sh ../tumbledemerald
|
./install.sh ../
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Otherwise**, if agbcc has been built before (e.g. if the git clone above fails), but was **last built on a different terminal** than the one currently used (only relevant to Windows, e.g. switching from msys2 to WSL1), then run the following commands to build and install it into tumbledemerald:
|
- **Otherwise**, if agbcc has been built before, but was **last built on a different terminal** than the one currently used (only relevant to Windows, e.g. switching from msys2 to WSL1), then run the following commands to build and install it into tumbledemerald:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
cd <path to tumbledemerald>
|
||||||
cd agbcc
|
cd agbcc
|
||||||
git clean -fX
|
git clean -fX
|
||||||
./build.sh
|
./build.sh
|
||||||
./install.sh ../tumbledemerald
|
./install.sh ../
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Otherwise**, if agbcc has been built before on the same terminal, run the following commands to install agbcc into tumbledemerald:
|
- **Otherwise**, if agbcc has been built before on the same terminal, run the following commands to install agbcc into tumbledemerald:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
cd <path to tumbledemerald>
|
||||||
cd agbcc
|
cd agbcc
|
||||||
./install.sh ../tumbledemerald
|
./install.sh ../
|
||||||
```
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -423,7 +434,7 @@ cd tumbledemerald
|
|||||||
```
|
```
|
||||||
To build **tumbledemerald.gba** (Note: to speed up builds, see [Parallel builds](#parallel-builds)):
|
To build **tumbledemerald.gba** (Note: to speed up builds, see [Parallel builds](#parallel-builds)):
|
||||||
```bash
|
```bash
|
||||||
make compare
|
make
|
||||||
```
|
```
|
||||||
If you see something like:
|
If you see something like:
|
||||||
```bash
|
```bash
|
||||||
@ -435,10 +446,6 @@ then the build was successful.
|
|||||||
> If you switched terminals since the last build (e.g. from msys2 to WSL1), you must run `make clean-tools` once before any subsequent `make` commands.
|
> If you switched terminals since the last build (e.g. from msys2 to WSL1), you must run `make clean-tools` once before any subsequent `make` commands.
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
To build **tumbledemerald.gba** with your changes:
|
|
||||||
```bash
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
# Building guidance
|
# Building guidance
|
||||||
|
|
||||||
|
101
README.md
101
README.md
@ -1,39 +1,82 @@
|
|||||||
# tumbledemerald [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#rebirthteam:matrix.org)
|
# tumbledemerald
|
||||||
|
|
||||||
This is a decompilation of Pokémon Emerald, with many improvements and edits, similar to Rangi42's [polishedcrystal](https://github.com/Rangi42/polishedcrystal)
|
## Description
|
||||||
|
tumbledemerald is a hack based on the [decompilation](https://github.com/pret/pokeemerald) of Pokémon Emerald by pret. The project's aim is to modify Pokémon Emerald to bring it up to the standards of modern Pokémon titles.
|
||||||
It builds the following ROM:
|
|
||||||
|
|
||||||
**tumbledemerald.gba**
|
|
||||||
|
|
||||||
To set up the repository, see [INSTALL.md](INSTALL.md), or see our `utilities` repo for buildscripts
|
|
||||||
|
|
||||||
|
|
||||||
Here is the last time Tumbled was updated to `pret:master`
|
[<img src="https://img.shields.io/badge/Gitpod-Open%20workspace-orange.svg?logo=GITPOD&style=for-the-badge">](https://gitpod.io/#gitgud.io/tbld/game.git) [<img src="https://img.shields.io/badge/Mastodon-gray.svg?logo=MASTODON&style=for-the-badge">](https://social.linux.pizza/@sataa)
|
||||||
|
|
||||||
**20 December 2021**
|
## Installation
|
||||||
|
Compiling tumbledemerald requires a Linux-based system with the following packages installed:
|
||||||
|
|
||||||
## See also
|
- make (or GNU make, if you have access to it specifically.)
|
||||||
|
- gcc
|
||||||
|
- g++
|
||||||
|
- git
|
||||||
|
- GNU arm-none-eabi binutils
|
||||||
|
|
||||||
Other disassembly and/or decompilation projects:
|
(Bonus points for getting it to work with Clang, cmake, and non-GNU binutils, because rms gives me a headache.)
|
||||||
* [**Pokémon Red and Blue**](https://github.com/pret/pokered)
|
|
||||||
* [**Pokémon Gold and Silver (Space World '97 demo)**](https://github.com/pret/pokegold-spaceworld)
|
|
||||||
* [**Pokémon Yellow**](https://github.com/pret/pokeyellow)
|
|
||||||
* [**Pokémon Trading Card Game**](https://github.com/pret/poketcg)
|
|
||||||
* [**Pokémon Pinball**](https://github.com/pret/pokepinball)
|
|
||||||
* [**Pokémon Stadium**](https://github.com/pret/pokestadium)
|
|
||||||
* [**Pokémon Gold and Silver**](https://github.com/pret/pokegold)
|
|
||||||
* [**Pokémon Crystal**](https://github.com/pret/pokecrystal)
|
|
||||||
* [**Pokémon Ruby and Sapphire**](https://github.com/pret/pokeruby)
|
|
||||||
* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs)
|
|
||||||
* [**Pokémon FireRed and LeafGreen**](https://github.com/pret/pokefirered)
|
|
||||||
* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red)
|
|
||||||
* [**Pokémon Diamond and Pearl**](https://github.com/pret/pokediamond)
|
|
||||||
* [**Pokémon HeartGold and SoulSilver**](https://github.com/pret/pokeheartgold)
|
|
||||||
|
|
||||||
|
Run this command to compile `agbcc`, pret's toolchain:
|
||||||
|
```bash
|
||||||
|
cd <path to tumbledemerald>/agbcc && ./build.sh && ./install.sh ../
|
||||||
|
```
|
||||||
|
Then just run `make` in the root folder of the repository.
|
||||||
|
|
||||||
## Contacts
|
If you're new to Linux-based systems or the build system in general, I recommend using Gitpod. If you opt to go that route, here's what you need to do:
|
||||||
|
|
||||||
You can slide into my **[matrix]** PM's: @fierymewtwo:matrix.org. However, there is an official Rebirth "room" (see the **[matrix]** badge above)
|
- Click the "Gitpod" button above.
|
||||||
|
- If you haven't signed up for GitHub, GitLab, or Bitbucket before, follow the steps provided on Gitpod's site to set up an account.
|
||||||
|
- You should launch into a tab with a terminal window at the bottom. Wait until you see `agbcc successfully installed!` in the terminal window before continuing.
|
||||||
|
- Type "make" (without the quotes) into the terminal and press "Enter".
|
||||||
|
|
||||||
> The old GitHub repositories are now unmaintained, and all future development will take place on GitLab.
|
For more detailed compilation instructions, see [this](INSTALL.md) document.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
tumbledemerald is a Game Boy Advance game. As such, you will need an [emulator](https://mgba.io) to play. The only supported emulator is [mGBA](https://mgba.io) by endrift.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
If you:
|
||||||
|
|
||||||
|
* found a bug or glitch: Create an [issue](https://gitgud.io/tbld/game/-/issues) using the Bug template.
|
||||||
|
* need a save file updated: Create an [issue](https://gitgud.io/tbld/game/-/issues) using the Save Update template.
|
||||||
|
* have an idea for a cool new feature: Create an [issue](https://gitgud.io/tbld/game/-/issues) using the Feature Request template.
|
||||||
|
* want to contact me privately: Send me an [email](mailto:brodmoran@gmail.com) or send me a direct message on [Mastodon](https://social.linux.pizza/@sataa).
|
||||||
|
* want to become a contributor: Send a merge request!
|
||||||
|
|
||||||
|
We also have a forum [here](https://tumbledforums.flarum.cloud/) if you're into that!
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
For the project roadmap, please check [here](ROADMAP.md).
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
Contributions are welcome! Please make a merge request here on GitLab using the provided template.
|
||||||
|
|
||||||
|
We're currently looking for:
|
||||||
|
|
||||||
|
* someone who can work with GBA music (to add a custom song).
|
||||||
|
* documentation contributions. Our documentation could use some updates!
|
||||||
|
* Windows buildscripts.
|
||||||
|
* volunteers to build CIA packages for tumbledemerald.
|
||||||
|
* debug menu developers.
|
||||||
|
* someone with a brain the size of Jupiter to un-GNU tumbledemerald.
|
||||||
|
|
||||||
|
See [Installation](#installation) for directions on how to set up your system to compile.
|
||||||
|
|
||||||
|
`make` will usually stop you if it sees something wrong with your code. If the error is too vague, try running `make` with the `-d` argument (`make -d`). However, the only way to be completely certain is to test.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
By default, tumbledemerald does not include Wireless Adapter support. See [this script](https://gitgud.io/tbld/scripts/-/blob/main/enable_rfu.sh) to re-enable this (for playing on a Game Boy Advance flashcart, for example.)
|
||||||
|
|
||||||
|
## Authors and acknowledgment
|
||||||
|
Lead developers: Supersonic and Werewolf
|
||||||
|
CIA packages: Supersonic and SanicConnoissuer_91
|
||||||
|
Prebuilt ROMS: Supersonic, creepyguy256, and SanicConnoissuer_91
|
||||||
|
Features: ghoulslash, Supersonic, dunsparce9, AsparagusEduardo, surskitty, DizzyEgggg, Ketsuban (if I forgot you, please let me know!)
|
||||||
|
Special thanks: SanicConnoissuer_91, Werewolf, creepyguy256, pret, Nintendo Co, Ltd., GAME FREAK, inc., Creatures, inc., and you!.
|
||||||
|
|
||||||
|
## License
|
||||||
|
Due to legal reasons, tumbledemerald does not have a license. Ask ax6.
|
||||||
|
|
||||||
|
## Project status
|
||||||
|
tumbledemerald is actively developed, with a new feature about once every week, if I feel like it.
|
||||||
|
6
ROADMAP.md
Normal file
6
ROADMAP.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
## Roadmap for tumbledemerald:
|
||||||
|
|
||||||
|
### v3
|
||||||
|
|
||||||
|
* Combine Pokémon Centers and Marts into one map, similar to the current titles.
|
||||||
|
* Remove HM moves and replace them with corresponding Key Items.
|
4
STYLE.md
4
STYLE.md
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
These guidelines are to be applied to all code contributed to the `tumbledemerald` project.
|
These guidelines are to be applied to all code contributed to the `tumbledemerald` project.
|
||||||
|
|
||||||
- Decapitalise everything! For example, change "POKéMON" to "Pokémon". (not yet though)
|
- Decapitalise everything! For example, change "POKéMON" to "Pokémon". This is almost already done thanks to the Python script, but make sure to keep an eye out!
|
||||||
- Always type "Pokémon" with the "é" Unicode character!
|
- Always type "Pokémon" with the "é" Unicode character!
|
||||||
- When typing "Pokédex", make sure to type it without a capital "D".
|
- When typing "Pokédex", make sure to type it without a capital "D".
|
||||||
- Use good English at all times.
|
- Use good English at all times, except when it doesn't make sense to do so.
|
||||||
- Abide by an 85-character "soft limit" per line of code. (This includes comments)
|
- Abide by an 85-character "soft limit" per line of code. (This includes comments)
|
||||||
- If you decompile assembly (`.s` files) and a commit to `pret:master` later decompiles the same code, please revert your changes and add pret's
|
- If you decompile assembly (`.s` files) and a commit to `pret:master` later decompiles the same code, please revert your changes and add pret's
|
||||||
C or C++ code instead.
|
C or C++ code instead.
|
||||||
|
1
agbcc
Submodule
1
agbcc
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit d59cfb5ac1ce13d4bc9875ffef1666b118338d33
|
@ -1378,7 +1378,7 @@ BattleFrontier_BattleTowerLobby_Text_ExplainMultiLinkRules:
|
|||||||
.string "The Link Multi Battle Mode is for two\n"
|
.string "The Link Multi Battle Mode is for two\n"
|
||||||
.string "friends to mount a challenge together.\p"
|
.string "friends to mount a challenge together.\p"
|
||||||
.string "You and your friend must be linked with\n"
|
.string "You and your friend must be linked with\n"
|
||||||
.string "Wireless Adapters or a Gba Game Link\l"
|
.string "Wireless Adapters or a GBA Game Link\l"
|
||||||
.string "cable.\p"
|
.string "cable.\p"
|
||||||
.string "You must choose two Pokémon at\n"
|
.string "You must choose two Pokémon at\n"
|
||||||
.string "the registration counter.\p"
|
.string "the registration counter.\p"
|
||||||
|
@ -118,6 +118,19 @@ DewfordTown_EventScript_FishingExcellent::
|
|||||||
|
|
||||||
DewfordTown_EventScript_FishingNotSoGood::
|
DewfordTown_EventScript_FishingNotSoGood::
|
||||||
msgbox DewfordTown_Text_FishingAdvice, MSGBOX_DEFAULT
|
msgbox DewfordTown_Text_FishingAdvice, MSGBOX_DEFAULT
|
||||||
|
goto_if_set FLAG_SYS_GAME_CLEAR, DewfordTown_EventScript_Intermediate_GiveOldSeaMap
|
||||||
|
release
|
||||||
|
end
|
||||||
|
|
||||||
|
DewfordTown_EventScript_Intermediate_GiveOldSeaMap::
|
||||||
|
goto_if_unset FLAG_RECEIVED_OLD_SEA_MAP, DewfordTown_EventScript_GiveOldSeaMap
|
||||||
|
release
|
||||||
|
end
|
||||||
|
|
||||||
|
DewfordTown_EventScript_GiveOldSeaMap::
|
||||||
|
msgbox DewfordTown_Text_MaybeExploringWouldBeBetter, MSGBOX_DEFAULT
|
||||||
|
giveitem ITEM_OLD_SEA_MAP
|
||||||
|
setflag FLAG_RECEIVED_OLD_SEA_MAP
|
||||||
release
|
release
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -723,6 +736,12 @@ DewfordTown_Text_ThrowInFishingAdvice:
|
|||||||
.string "you need to time the pulls on your Rod\l"
|
.string "you need to time the pulls on your Rod\l"
|
||||||
.string "to haul them in.$"
|
.string "to haul them in.$"
|
||||||
|
|
||||||
|
DewfordTown_Text_MaybeExploringWouldBeBetter:
|
||||||
|
.string "Hmmm... Well, if you aren't having much\n"
|
||||||
|
.string "luck with fishing...\l"
|
||||||
|
.string "Maybe exploring would be a better\n"
|
||||||
|
.string "fit for a Trainer like you?$"
|
||||||
|
|
||||||
DewfordTown_Text_ThatsTooBadThen:
|
DewfordTown_Text_ThatsTooBadThen:
|
||||||
.string "Oh, is that so?\n"
|
.string "Oh, is that so?\n"
|
||||||
.string "That's too bad, then.$"
|
.string "That's too bad, then.$"
|
||||||
|
@ -259,6 +259,7 @@ LittlerootTown_EventScript_Twin::
|
|||||||
faceplayer
|
faceplayer
|
||||||
goto_if_set FLAG_ADVENTURE_STARTED, LittlerootTown_EventScript_GoodLuck
|
goto_if_set FLAG_ADVENTURE_STARTED, LittlerootTown_EventScript_GoodLuck
|
||||||
goto_if_set FLAG_RESCUED_BIRCH, LittlerootTown_EventScript_YouSavedBirch
|
goto_if_set FLAG_RESCUED_BIRCH, LittlerootTown_EventScript_YouSavedBirch
|
||||||
|
goto_if_set FLAG_SYS_GAME_CLEAR, LittlerootTown_EventScript_Intermediate_DustyTickets
|
||||||
goto_if_ne VAR_LITTLEROOT_TOWN_STATE, 0, LittlerootTown_EventScript_GoSaveBirch
|
goto_if_ne VAR_LITTLEROOT_TOWN_STATE, 0, LittlerootTown_EventScript_GoSaveBirch
|
||||||
msgbox LittlerootTown_Text_IfYouGoInGrassPokemonWillJumpOut, MSGBOX_DEFAULT
|
msgbox LittlerootTown_Text_IfYouGoInGrassPokemonWillJumpOut, MSGBOX_DEFAULT
|
||||||
release
|
release
|
||||||
@ -285,6 +286,20 @@ LittlerootTown_EventScript_GoodLuck::
|
|||||||
release
|
release
|
||||||
end
|
end
|
||||||
|
|
||||||
|
LittlerootTown_EventScript_Intermediate_DustyTickets::
|
||||||
|
goto_if_unset FLAG_AURORA_MYSTIC_RECEIVED, LittlerootTown_EventScript_DustyTickets
|
||||||
|
end
|
||||||
|
|
||||||
|
LittlerootTown_EventScript_DustyTickets::
|
||||||
|
msgbox LittlerootTown_Text_FoundTickets, MSGBOX_DEFAULT
|
||||||
|
giveitem ITEM_MYSTIC_TICKET
|
||||||
|
giveitem ITEM_AURORA_TICKET
|
||||||
|
setflag FLAG_RECEIVED_AURORA_TICKET
|
||||||
|
setflag FLAG_RECEIVED_MYSTIC_TICKET
|
||||||
|
setflag FLAG_AURORA_MYSTIC_RECEIVED @ because I'm bad at hacking.
|
||||||
|
release
|
||||||
|
end
|
||||||
|
|
||||||
LittlerootTown_EventScript_NeedPokemonTriggerLeft::
|
LittlerootTown_EventScript_NeedPokemonTriggerLeft::
|
||||||
lockall
|
lockall
|
||||||
applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinApproachPlayerLeft
|
applymovement LOCALID_TWIN, LittlerootTown_Movement_TwinApproachPlayerLeft
|
||||||
@ -997,6 +1012,13 @@ LittlerootTown_Text_GoodLuckCatchingPokemon:
|
|||||||
.string "Are you going to catch Pokémon?\n"
|
.string "Are you going to catch Pokémon?\n"
|
||||||
.string "Good luck!$"
|
.string "Good luck!$"
|
||||||
|
|
||||||
|
LittlerootTown_Text_FoundTickets:
|
||||||
|
.string "Um, hi!\p"
|
||||||
|
.string "I found these in an old suitcase. My\n"
|
||||||
|
.string "daddy doesn't want them, so I decided\n"
|
||||||
|
.string "to give these to you!$"
|
||||||
|
|
||||||
|
|
||||||
LittlerootTown_Text_TownSign:
|
LittlerootTown_Text_TownSign:
|
||||||
.string "Littleroot Town\n"
|
.string "Littleroot Town\n"
|
||||||
.string "“A town that can't be shaded any hue.”$"
|
.string "“A town that can't be shaded any hue.”$"
|
||||||
|
@ -1258,7 +1258,7 @@ EventScript_CloseMossdeepGameCornerBarrier::
|
|||||||
return
|
return
|
||||||
|
|
||||||
CableClub_OnResume:
|
CableClub_OnResume:
|
||||||
special InitUnionRoom
|
@ special InitUnionRoom commented out by default, but can be easily re-enabled, see docs.
|
||||||
end
|
end
|
||||||
|
|
||||||
MossdeepCity_GameCorner_1F_EventScript_InfoMan2::
|
MossdeepCity_GameCorner_1F_EventScript_InfoMan2::
|
||||||
|
@ -17,7 +17,7 @@ EventScript_PkmnCenterNurse_HealPkmn::
|
|||||||
waitmessage
|
waitmessage
|
||||||
call EventScript_PkmnCenterNurse_TakeAndHealPkmn
|
call EventScript_PkmnCenterNurse_TakeAndHealPkmn
|
||||||
goto_if_unset FLAG_POKERUS_EXPLAINED, EventScript_PkmnCenterNurse_CheckPokerus
|
goto_if_unset FLAG_POKERUS_EXPLAINED, EventScript_PkmnCenterNurse_CheckPokerus
|
||||||
goto EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom
|
goto EventScript_PkmnCenterNurse_ReturnPkmn
|
||||||
end
|
end
|
||||||
|
|
||||||
EventScript_PkmnCenterNurse_IllTakeYourPkmn::
|
EventScript_PkmnCenterNurse_IllTakeYourPkmn::
|
||||||
@ -75,7 +75,7 @@ EventScript_PkmnCenterNurse_PlayerWaitingInUnionRoom::
|
|||||||
EventScript_PkmnCenterNurse_CheckPokerus::
|
EventScript_PkmnCenterNurse_CheckPokerus::
|
||||||
specialvar VAR_RESULT, IsPokerusInParty
|
specialvar VAR_RESULT, IsPokerusInParty
|
||||||
goto_if_eq VAR_RESULT, TRUE, EventScript_PkmnCenterNurse_ExplainPokerus
|
goto_if_eq VAR_RESULT, TRUE, EventScript_PkmnCenterNurse_ExplainPokerus
|
||||||
goto_if_eq VAR_RESULT, FALSE, EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom
|
goto_if_eq VAR_RESULT, FALSE, EventScript_PkmnCenterNurse_ReturnPkmn
|
||||||
end
|
end
|
||||||
|
|
||||||
EventScript_PkmnCenterNurse_ExplainPokerus::
|
EventScript_PkmnCenterNurse_ExplainPokerus::
|
||||||
|
@ -116,7 +116,7 @@ PlayersHouse_2F_EventScript_SetWallClock::
|
|||||||
|
|
||||||
PlayersHouse_2F_Movement_MomEntersMale:
|
PlayersHouse_2F_Movement_MomEntersMale:
|
||||||
delay_8
|
delay_8
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_left
|
walk_in_place_faster_left
|
||||||
delay_16
|
delay_16
|
||||||
delay_8
|
delay_8
|
||||||
@ -124,18 +124,18 @@ PlayersHouse_2F_Movement_MomEntersMale:
|
|||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_2F_Movement_MomExitsMale:
|
PlayersHouse_2F_Movement_MomExitsMale:
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_up
|
walk_up
|
||||||
delay_8
|
delay_8
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_2F_Movement_MomEntersFemale:
|
PlayersHouse_2F_Movement_MomEntersFemale:
|
||||||
delay_8
|
delay_8
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_right
|
walk_in_place_faster_right
|
||||||
delay_16
|
delay_16
|
||||||
delay_8
|
delay_8
|
||||||
walk_right
|
walk_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_2F_Movement_MomExitsFemale:
|
PlayersHouse_2F_Movement_MomExitsFemale:
|
||||||
@ -221,11 +221,11 @@ PlayersHouse_1F_EventScript_WatchGymBroadcast::
|
|||||||
|
|
||||||
PlayersHouse_1F_Movement_MomApproachDadMale:
|
PlayersHouse_1F_Movement_MomApproachDadMale:
|
||||||
walk_up
|
walk_up
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_right
|
walk_in_place_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
@ -235,12 +235,12 @@ PlayersHouse_1F_Movement_MomApproachDadFemale:
|
|||||||
walk_left
|
walk_left
|
||||||
walk_left
|
walk_left
|
||||||
walk_left
|
walk_left
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_left
|
walk_in_place_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomApproachPlayerMale:
|
PlayersHouse_1F_Movement_MomApproachPlayerMale:
|
||||||
walk_right
|
walk_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomApproachPlayerFemale:
|
PlayersHouse_1F_Movement_MomApproachPlayerFemale:
|
||||||
@ -277,8 +277,8 @@ PlayersHouse_1F_Movement_MomApproachPlayerAfterTVMale:
|
|||||||
|
|
||||||
PlayersHouse_1F_Movement_MomApproachPlayerAfterTVFemale:
|
PlayersHouse_1F_Movement_MomApproachPlayerAfterTVFemale:
|
||||||
walk_up
|
walk_up
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomMakeRoomToSeeTVMale:
|
PlayersHouse_1F_Movement_MomMakeRoomToSeeTVMale:
|
||||||
@ -287,19 +287,19 @@ PlayersHouse_1F_Movement_MomMakeRoomToSeeTVMale:
|
|||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomMakeRoomToSeeTVFemale:
|
PlayersHouse_1F_Movement_MomMakeRoomToSeeTVFemale:
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_in_place_faster_left
|
walk_in_place_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomReturnToSeatMale:
|
PlayersHouse_1F_Movement_MomReturnToSeatMale:
|
||||||
walk_left
|
walk_left
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_right
|
walk_in_place_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomReturnToSeatFemale:
|
PlayersHouse_1F_Movement_MomReturnToSeatFemale:
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_left
|
walk_in_place_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
@ -393,27 +393,27 @@ PlayersHouse_1F_EventScript_Vigoroth2::
|
|||||||
end
|
end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerApproachTVForGymMale:
|
PlayersHouse_1F_Movement_PlayerApproachTVForGymMale:
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_left
|
walk_faster_left
|
||||||
walk_left
|
walk_faster_left
|
||||||
walk_left
|
walk_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerMoveToTVMale:
|
PlayersHouse_1F_Movement_PlayerMoveToTVMale:
|
||||||
walk_left
|
walk_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerApproachTVForGymFemale:
|
PlayersHouse_1F_Movement_PlayerApproachTVForGymFemale:
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerMoveToTVFemale:
|
PlayersHouse_1F_Movement_PlayerMoveToTVFemale:
|
||||||
walk_right
|
walk_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MovePlayerAwayFromDoor:
|
PlayersHouse_1F_Movement_MovePlayerAwayFromDoor:
|
||||||
@ -603,8 +603,8 @@ PlayersHouse_1F_EventScript_MomApproachPlayerAfterTVFemale::
|
|||||||
return
|
return
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_DadApproachPlayerMale:
|
PlayersHouse_1F_Movement_DadApproachPlayerMale:
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_DadApproachPlayerFemale:
|
PlayersHouse_1F_Movement_DadApproachPlayerFemale:
|
||||||
@ -621,24 +621,24 @@ PlayersHouse_1F_Movement_DadFaceMomFemale:
|
|||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_DadExitsMale:
|
PlayersHouse_1F_Movement_DadExitsMale:
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_down
|
walk_faster_down
|
||||||
delay_8
|
delay_8
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_DadExitsFemale:
|
PlayersHouse_1F_Movement_DadExitsFemale:
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_left
|
walk_left
|
||||||
walk_down
|
walk_faster_down
|
||||||
delay_8
|
delay_8
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerEnterRoomMale:
|
PlayersHouse_1F_Movement_PlayerEnterRoomMale:
|
||||||
delay_16
|
delay_16
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_left
|
walk_in_place_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
@ -651,9 +651,9 @@ PlayersHouse_1F_Movement_MomAndPlayerWatchDadExit:
|
|||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerEnterRoomFemale:
|
PlayersHouse_1F_Movement_PlayerEnterRoomFemale:
|
||||||
delay_16
|
delay_16
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_down
|
walk_faster_down
|
||||||
walk_in_place_faster_right
|
walk_in_place_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
@ -668,10 +668,10 @@ PlayersHouse_1F_Movement_PlayerApproachTVForLatiMale:
|
|||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerApproachTVForLatiFemale:
|
PlayersHouse_1F_Movement_PlayerApproachTVForLatiFemale:
|
||||||
walk_up
|
walk_up
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_right
|
walk_faster_right
|
||||||
walk_in_place_faster_up
|
walk_in_place_faster_up
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
|
@ -10,15 +10,15 @@ CableClub_Text_WhichService:
|
|||||||
|
|
||||||
CableClub_Text_TradeUsingLinkCable::
|
CableClub_Text_TradeUsingLinkCable::
|
||||||
.string "Trade Pokémon with another player\n"
|
.string "Trade Pokémon with another player\n"
|
||||||
.string "using a Gba Game Link cable.$"
|
.string "using a GBA Game Link cable.$"
|
||||||
|
|
||||||
CableClub_Text_BattleUsingLinkCable::
|
CableClub_Text_BattleUsingLinkCable::
|
||||||
.string "You may battle another Trainer\n"
|
.string "You may battle another Trainer\n"
|
||||||
.string "using a Gba Game Link cable.$"
|
.string "using a GBA Game Link cable.$"
|
||||||
|
|
||||||
CableClub_Text_RecordCornerUsingLinkCable::
|
CableClub_Text_RecordCornerUsingLinkCable::
|
||||||
.string "You can use the Record Corner with\n"
|
.string "You can use the Record Corner with\n"
|
||||||
.string "others using a Gba Game Link cable.$"
|
.string "others using a GBA Game Link cable.$"
|
||||||
|
|
||||||
@ Unused
|
@ Unused
|
||||||
CableClub_Text_CloseThisMenu:
|
CableClub_Text_CloseThisMenu:
|
||||||
@ -440,7 +440,7 @@ CableClub_Text_ExplainWirelessClubFirstTime:
|
|||||||
.string "with your friends in this room.\p"
|
.string "with your friends in this room.\p"
|
||||||
.string "If the Wireless Adapter isn't\n"
|
.string "If the Wireless Adapter isn't\n"
|
||||||
.string "connected, you may still link up\l"
|
.string "connected, you may still link up\l"
|
||||||
.string "using a Gba Game Link cable.\p"
|
.string "using a GBA Game Link cable.\p"
|
||||||
.string "If that is the case, you must go\n"
|
.string "If that is the case, you must go\n"
|
||||||
.string "to the Direct Corner.\p"
|
.string "to the Direct Corner.\p"
|
||||||
.string "I hope you enjoy the Wireless \n"
|
.string "I hope you enjoy the Wireless \n"
|
||||||
@ -476,7 +476,7 @@ CableClub_Text_ExplainWirelessClub:
|
|||||||
.string "to your friends.\p"
|
.string "to your friends.\p"
|
||||||
.string "If the Wireless Adapter isn't\n"
|
.string "If the Wireless Adapter isn't\n"
|
||||||
.string "connected, you may still link up\l"
|
.string "connected, you may still link up\l"
|
||||||
.string "using a Gba Game Link cable.\p"
|
.string "using a GBA Game Link cable.\p"
|
||||||
.string "If that is the case, you must go\n"
|
.string "If that is the case, you must go\n"
|
||||||
.string "to the Direct Corner.\p"
|
.string "to the Direct Corner.\p"
|
||||||
.string "I hope you enjoy the Wireless \n"
|
.string "I hope you enjoy the Wireless \n"
|
||||||
|
1
decap.py
1
decap.py
@ -1,3 +1,4 @@
|
|||||||
|
# Got this from a GitHub gist somewhere. If you made this, please reach out so I can add you to the credits!
|
||||||
from glob import iglob
|
from glob import iglob
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Fixes are written in the `diff` format. If you've used Git before, this should l
|
|||||||
- [Scrolling through items in the bag causes the image to flicker](#scrolling-through-items-in-the-bag-causes-the-image-to-flicker)
|
- [Scrolling through items in the bag causes the image to flicker](#scrolling-through-items-in-the-bag-causes-the-image-to-flicker)
|
||||||
|
|
||||||
|
|
||||||
## Scrolling through items in the bag causes the image to flicker
|
## Scrolling through items in the bag causes the image to flicker (fixed in tumbledemerald.)
|
||||||
|
|
||||||
**Fix:** Add the following function to [src/item_menu_icons.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu_icons.c):
|
**Fix:** Add the following function to [src/item_menu_icons.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu_icons.c):
|
||||||
```diff
|
```diff
|
||||||
|
@ -97,7 +97,7 @@
|
|||||||
#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
|
#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
|
||||||
|
|
||||||
#define FLAG_REMOVE_WARP_FADE 0x54 // Custom flag used in tumbledemerald.
|
#define FLAG_REMOVE_WARP_FADE 0x54 // Custom flag used in tumbledemerald.
|
||||||
#define FLAG_UNUSED_0x055 0x55 // Unused Flag
|
#define FLAG_AURORA_MYSTIC_RECEIVED 0x55 // Custom flag used in tumbledemerald. Basically a workaround.
|
||||||
|
|
||||||
#define FLAG_HIDE_CONTEST_POKE_BALL 0x56 // Always set after new game, object it hides is added directly
|
#define FLAG_HIDE_CONTEST_POKE_BALL 0x56 // Always set after new game, object it hides is added directly
|
||||||
#define FLAG_MET_RIVAL_MOM 0x57
|
#define FLAG_MET_RIVAL_MOM 0x57
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 6.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.2 KiB |
@ -322,6 +322,16 @@ static void HandleInputChooseAction(void)
|
|||||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_CANCEL_PARTNER, 0);
|
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_CANCEL_PARTNER, 0);
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) //if wild, pressing B moves cursor to run
|
||||||
|
{
|
||||||
|
PlaySE(SE_SELECT);
|
||||||
|
ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
|
||||||
|
gActionSelectionCursor[gActiveBattler] = 3;
|
||||||
|
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (JOY_NEW(START_BUTTON))
|
else if (JOY_NEW(START_BUTTON))
|
||||||
{
|
{
|
||||||
|
@ -189,7 +189,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] =
|
|||||||
[MOVE_SWEET_KISS] = _("Sweet Kiss"),
|
[MOVE_SWEET_KISS] = _("Sweet Kiss"),
|
||||||
[MOVE_BELLY_DRUM] = _("Belly Drum"),
|
[MOVE_BELLY_DRUM] = _("Belly Drum"),
|
||||||
[MOVE_SLUDGE_BOMB] = _("Sludge Bomb"),
|
[MOVE_SLUDGE_BOMB] = _("Sludge Bomb"),
|
||||||
[MOVE_MUD_SLAP] = _("Mud-slap"),
|
[MOVE_MUD_SLAP] = _("Mud-Slap"),
|
||||||
[MOVE_OCTAZOOKA] = _("Octazooka"),
|
[MOVE_OCTAZOOKA] = _("Octazooka"),
|
||||||
[MOVE_SPIKES] = _("Spikes"),
|
[MOVE_SPIKES] = _("Spikes"),
|
||||||
[MOVE_ZAP_CANNON] = _("Zap Cannon"),
|
[MOVE_ZAP_CANNON] = _("Zap Cannon"),
|
||||||
|
@ -69,6 +69,8 @@ u8 gLinkVSyncDisabled;
|
|||||||
u32 IntrMain_Buffer[0x200];
|
u32 IntrMain_Buffer[0x200];
|
||||||
s8 gPcmDmaCounter;
|
s8 gPcmDmaCounter;
|
||||||
|
|
||||||
|
extern void CB2_FlashNotDetectedScreen(void); // for Crust's sake use mGBA, people!
|
||||||
|
|
||||||
static EWRAM_DATA u16 gTrainerId = 0;
|
static EWRAM_DATA u16 gTrainerId = 0;
|
||||||
|
|
||||||
//EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL;
|
//EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL;
|
||||||
@ -114,7 +116,7 @@ void AgbMain()
|
|||||||
gSoftResetDisabled = FALSE;
|
gSoftResetDisabled = FALSE;
|
||||||
|
|
||||||
if (gFlashMemoryPresent != TRUE)
|
if (gFlashMemoryPresent != TRUE)
|
||||||
SetMainCallback2(NULL);
|
SetMainCallback2(CB2_FlashNotDetectedScreen);
|
||||||
|
|
||||||
gLinkTransferringData = FALSE;
|
gLinkTransferringData = FALSE;
|
||||||
sUnusedVar = 0xFC0;
|
sUnusedVar = 0xFC0;
|
||||||
|
@ -401,3 +401,50 @@ static bool8 WipeSectors(u32 sectorBits)
|
|||||||
else
|
else
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CB2_FlashNotDetectedScreen(void){
|
||||||
|
static const struct WindowTemplate textWin[] = {
|
||||||
|
{
|
||||||
|
.bg = 0,
|
||||||
|
.tilemapLeft = 3,
|
||||||
|
.tilemapTop = 2,
|
||||||
|
.width = 24,
|
||||||
|
.height = 16,
|
||||||
|
.paletteNum = 15,
|
||||||
|
.baseBlock = 1,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char errorMsg[] = _(
|
||||||
|
"{COLOR RED}Hey!\n"
|
||||||
|
"{COLOR DARK_GRAY}Flash memory not detected.\n\n"
|
||||||
|
"Please make sure you\nare playing the game\n"
|
||||||
|
"on the mGBA emu-\nlator"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!gMain.state){
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0CNT, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||||
|
DmaFill16(3, 0, VRAM, VRAM_SIZE);
|
||||||
|
DmaFill32(3, 0, OAM, OAM_SIZE);
|
||||||
|
DmaFill16(3, 0, PLTT, PLTT_SIZE);
|
||||||
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
|
InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
|
||||||
|
LoadBgTiles(0, gTextWindowFrame1_Gfx, 0x120, 0x214);
|
||||||
|
DeactivateAllTextPrinters();
|
||||||
|
ResetTasks();
|
||||||
|
ResetPaletteFade();
|
||||||
|
LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20);
|
||||||
|
LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
|
||||||
|
InitWindows(textWin);
|
||||||
|
DrawStdFrameWithCustomTileAndPalette(0, TRUE, 0x214, 0xE);
|
||||||
|
SaveFailedScreenTextPrint(errorMsg, 1, 0);
|
||||||
|
TransferPlttBuffer();
|
||||||
|
*(u16*)PLTT = RGB(17, 18, 31);
|
||||||
|
ShowBg(0);
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1180,7 +1180,7 @@ const u8 gText_ThunderWave48BP[] = _("Thunder Wave{CLEAR_TO 0x4E}48Bp");
|
|||||||
const u8 gText_SwordsDance48BP[] = _("Swords Dance{CLEAR_TO 0x4E}48Bp");
|
const u8 gText_SwordsDance48BP[] = _("Swords Dance{CLEAR_TO 0x4E}48Bp");
|
||||||
const u8 gText_DefenseCurl16BP[] = _("Defense Curl{CLEAR_TO 0x4E}16Bp");
|
const u8 gText_DefenseCurl16BP[] = _("Defense Curl{CLEAR_TO 0x4E}16Bp");
|
||||||
const u8 gText_Snore24BP[] = _("Snore{CLEAR_TO 0x4E}24Bp");
|
const u8 gText_Snore24BP[] = _("Snore{CLEAR_TO 0x4E}24Bp");
|
||||||
const u8 gText_MudSlap24BP[] = _("Mud-slap{CLEAR_TO 0x4E}24Bp");
|
const u8 gText_MudSlap24BP[] = _("Mud-Slap{CLEAR_TO 0x4E}24Bp");
|
||||||
const u8 gText_Swift24BP[] = _("Swift{CLEAR_TO 0x4E}24Bp");
|
const u8 gText_Swift24BP[] = _("Swift{CLEAR_TO 0x4E}24Bp");
|
||||||
const u8 gText_IcyWind24BP[] = _("Icy Wind{CLEAR_TO 0x4E}24Bp");
|
const u8 gText_IcyWind24BP[] = _("Icy Wind{CLEAR_TO 0x4E}24Bp");
|
||||||
const u8 gText_Endure48BP[] = _("Endure{CLEAR_TO 0x4E}48Bp");
|
const u8 gText_Endure48BP[] = _("Endure{CLEAR_TO 0x4E}48Bp");
|
||||||
|
Loading…
Reference in New Issue
Block a user