Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
95f351657c |
@ -1,24 +0,0 @@
|
|||||||
# 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
|
|
@ -1,14 +0,0 @@
|
|||||||
# 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.
|
|
@ -1,4 +0,0 @@
|
|||||||
<!---
|
|
||||||
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!
|
|
||||||
-->
|
|
@ -1,18 +0,0 @@
|
|||||||
# 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.
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
## 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
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
|||||||
[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: git config --global http.sslVerify false && git clone https://gitgud.io/tbld/scripts.git && cd scripts && sudo bash ./main.sh -cc
|
- init: echo "See INSTALL.md for compilation instructions."
|
||||||
|
|
||||||
|
|
||||||
|
@ -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.
|
- Hang out with us on **[matrix]**
|
||||||
- Follow the [style guide](STYLE.md)
|
- Follow the [style guide](STYLE.md)
|
||||||
|
|
||||||
DON'T:
|
DON'T:
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
# Cool people:
|
# Cool people:
|
||||||
|
|
||||||
# Compilation Hall of Fame
|
# creepyguy: Compiled 1.0.0, since I couldn't. He's awesome, go check him out on [Scratch](https://scratch.mit.edu/users/creepyguy256/)
|
||||||
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
3
FAQ.md
@ -1,3 +0,0 @@
|
|||||||
## FAQ
|
|
||||||
|
|
||||||
Any important questions that I feel need answering will be added here.
|
|
@ -13,9 +13,4 @@ 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.
|
If you run into trouble, ask for help on Matrix.
|
||||||
|
|
||||||
## 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 and 11 (WSL1)](#windows-10-and-11-wsl1) (**Fastest, highly recommended**, Windows 10 and later only)
|
- [Windows 10 (WSL1)](#windows-10-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 and 11 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.
|
||||||
|
|
||||||
## Windows 10 and 11 (WSL1)
|
## Windows 10 (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, or continue reading below for [Windows instructions using msys2](#windows-msys2).
|
Otherwise, ask for help on Matrix, 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, or continue reading below for [Windows instructions using Cygwin](#windows-cygwin).
|
Otherwise, ask for help on Matrix, 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.
|
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Matrix.
|
||||||
|
|
||||||
## 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.
|
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Matrix.
|
||||||
|
|
||||||
## 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.
|
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Matrix.
|
||||||
|
|
||||||
## 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://gitgud.io/tbld/game.git -c http.sslVerify false --recursive
|
git clone https://gitlab.com/tbld/game.git
|
||||||
```
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -377,41 +377,30 @@ 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
|
||||||
cd <path to tumbledemerald>
|
git clone https://github.com/pret/agbcc
|
||||||
cd agbcc
|
cd agbcc
|
||||||
./build.sh
|
./build.sh
|
||||||
./install.sh ../
|
./install.sh ../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:
|
- **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:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd <path to tumbledemerald>
|
|
||||||
cd agbcc
|
cd agbcc
|
||||||
git clean -fX
|
git clean -fX
|
||||||
./build.sh
|
./build.sh
|
||||||
./install.sh ../
|
./install.sh ../tumbledemerald
|
||||||
```
|
```
|
||||||
|
|
||||||
- **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 ../
|
./install.sh ../tumbledemerald
|
||||||
```
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -434,7 +423,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
|
make compare
|
||||||
```
|
```
|
||||||
If you see something like:
|
If you see something like:
|
||||||
```bash
|
```bash
|
||||||
@ -446,6 +435,10 @@ 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
|
||||||
|
|
||||||
|
351
Makefile
351
Makefile
@ -1,34 +1,13 @@
|
|||||||
TOOLCHAIN := $(DEVKITARM)
|
PREFIX :=
|
||||||
COMPARE ?= 0
|
|
||||||
|
|
||||||
ifeq (compare,$(MAKECMDGOALS))
|
|
||||||
COMPARE := 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# don't use dkP's base_tools anymore
|
|
||||||
# because the redefinition of $(CC) conflicts
|
|
||||||
# with when we want to use $(CC) to preprocess files
|
|
||||||
# thus, manually create the variables for the bin
|
|
||||||
# files, or use arm-none-eabi binaries on the system
|
|
||||||
# if dkP is not installed on this system
|
|
||||||
|
|
||||||
ifneq (,$(TOOLCHAIN))
|
|
||||||
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
|
|
||||||
export PATH := $(TOOLCHAIN)/bin:$(PATH)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
PREFIX := arm-none-eabi-
|
|
||||||
OBJCOPY := $(PREFIX)objcopy
|
OBJCOPY := $(PREFIX)objcopy
|
||||||
OBJDUMP := $(PREFIX)objdump
|
CC := $(PREFIX)gcc
|
||||||
AS := $(PREFIX)as
|
AS := $(PREFIX)as
|
||||||
|
|
||||||
LD := $(PREFIX)ld
|
SDL_DIR := /k/gba/pokeemerald-pc/SDL-1.2.15
|
||||||
|
ASM_PSEUDO_OP_CONV := sed -e 's/\.4byte/\.int/g;s/\.2byte/\.short/g'
|
||||||
|
|
||||||
# note: the makefile must be set up so MODERNCC is never called
|
export CPP := $(PREFIX)cpp
|
||||||
# if MODERN=0
|
export LD := $(PREFIX)ld
|
||||||
MODERNCC := $(PREFIX)gcc
|
|
||||||
PATH_MODERNCC := PATH=$(TOOLCHAIN)/bin:PATH $(MODERNCC)
|
|
||||||
|
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
EXE := .exe
|
EXE := .exe
|
||||||
@ -36,91 +15,41 @@ else
|
|||||||
EXE :=
|
EXE :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TITLE := POKEMON EMER
|
MODERN := 1
|
||||||
GAME_CODE := BPEE
|
|
||||||
MAKER_CODE := 01
|
|
||||||
REVISION := 0
|
|
||||||
MODERN ?= 0
|
|
||||||
|
|
||||||
ifeq (modern,$(MAKECMDGOALS))
|
|
||||||
MODERN := 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# use arm-none-eabi-cpp for macOS
|
|
||||||
# as macOS's default compiler is clang
|
|
||||||
# and clang's preprocessor will warn on \u
|
|
||||||
# when preprocessing asm files, expecting a unicode literal
|
|
||||||
# we can't unconditionally use arm-none-eabi-cpp
|
|
||||||
# as installations which install binutils-arm-none-eabi
|
|
||||||
# don't come with it
|
|
||||||
ifneq ($(MODERN),1)
|
|
||||||
ifeq ($(shell uname -s),Darwin)
|
|
||||||
CPP := $(PREFIX)cpp
|
|
||||||
else
|
|
||||||
CPP := $(CC) -E
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
CPP := $(PREFIX)cpp
|
|
||||||
endif
|
|
||||||
|
|
||||||
ROM_NAME := tumbledemerald.gba
|
|
||||||
ELF_NAME := $(ROM_NAME:.gba=.elf)
|
|
||||||
MAP_NAME := $(ROM_NAME:.gba=.map)
|
|
||||||
OBJ_DIR_NAME := build/tumbled
|
|
||||||
|
|
||||||
MODERN_ROM_NAME := tumbledemerald_modern.gba
|
|
||||||
MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf)
|
|
||||||
MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map)
|
|
||||||
MODERN_OBJ_DIR_NAME := build/modern
|
|
||||||
|
|
||||||
SHELL := /bin/bash -o pipefail
|
SHELL := /bin/bash -o pipefail
|
||||||
|
|
||||||
ELF = $(ROM:.gba=.elf)
|
ELF = $(ROM:.gba=.elf)
|
||||||
MAP = $(ROM:.gba=.map)
|
MAP = $(ROM:.gba=.map)
|
||||||
SYM = $(ROM:.gba=.sym)
|
|
||||||
|
|
||||||
C_SUBDIR = src
|
C_SUBDIR = src
|
||||||
GFLIB_SUBDIR = gflib
|
|
||||||
ASM_SUBDIR = asm
|
ASM_SUBDIR = asm
|
||||||
DATA_SRC_SUBDIR = src/data
|
DATA_SRC_SUBDIR = src/data
|
||||||
DATA_ASM_SUBDIR = data
|
DATA_ASM_SUBDIR = data
|
||||||
SONG_SUBDIR = sound/songs
|
SONG_SUBDIR = sound/songs
|
||||||
MID_SUBDIR = sound/songs/midi
|
MID_SUBDIR = sound/songs/midi
|
||||||
SAMPLE_SUBDIR = sound/direct_sound_samples
|
|
||||||
CRY_SUBDIR = sound/direct_sound_samples/cries
|
|
||||||
|
|
||||||
C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
|
C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
|
||||||
GFLIB_BUILDDIR = $(OBJ_DIR)/$(GFLIB_SUBDIR)
|
|
||||||
ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
|
ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
|
||||||
DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
|
DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
|
||||||
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
|
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
|
||||||
MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
|
MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
|
||||||
|
|
||||||
ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN)
|
ASFLAGS := --32 --defsym MODERN=$(MODERN) --defsym PORTABLE=1
|
||||||
|
|
||||||
ifeq ($(MODERN),0)
|
GCC_VER := $(shell $(CC) -dumpversion)
|
||||||
CC1 := tools/agbcc/bin/agbcc$(EXE)
|
|
||||||
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g
|
|
||||||
ROM := $(ROM_NAME)
|
|
||||||
OBJ_DIR := $(OBJ_DIR_NAME)
|
|
||||||
LIBPATH := -L ../../tools/agbcc/lib
|
|
||||||
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
|
|
||||||
else
|
|
||||||
CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet
|
|
||||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
|
|
||||||
ROM := $(MODERN_ROM_NAME)
|
|
||||||
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
|
|
||||||
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
|
|
||||||
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
|
|
||||||
endif
|
|
||||||
|
|
||||||
CPPFLAGS := -iquote include -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN)
|
CC1 := $(shell $(PREFIX)gcc --print-prog-name=cc1) -quiet
|
||||||
ifneq ($(MODERN),1)
|
override CFLAGS += -Wno-trigraphs -Wimplicit -Wparentheses -Wunused -O0 -g -m32 -std=gnu99 -fno-leading-underscore -fno-dce -Wno-unused-function -DPORTABLE -DNONMATCHING
|
||||||
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
|
ROM := pokeemerald_modern.gba
|
||||||
endif
|
OBJ_DIR := build/pc
|
||||||
|
|
||||||
|
CPPFLAGS := -iquote include -Wno-trigraphs -D NONMATCHING -D PORTABLE -I$(SDL_DIR)/include -L$(SDL_DIR)/lib
|
||||||
|
|
||||||
LDFLAGS = -Map ../../$(MAP)
|
LDFLAGS = -Map ../../$(MAP)
|
||||||
|
|
||||||
|
LIB := $(LIBPATH) -lgcc -lc
|
||||||
|
|
||||||
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
||||||
GFX := tools/gbagfx/gbagfx$(EXE)
|
GFX := tools/gbagfx/gbagfx$(EXE)
|
||||||
AIF := tools/aif2pcm/aif2pcm$(EXE)
|
AIF := tools/aif2pcm/aif2pcm$(EXE)
|
||||||
@ -132,14 +61,6 @@ FIX := tools/gbafix/gbafix$(EXE)
|
|||||||
MAPJSON := tools/mapjson/mapjson$(EXE)
|
MAPJSON := tools/mapjson/mapjson$(EXE)
|
||||||
JSONPROC := tools/jsonproc/jsonproc$(EXE)
|
JSONPROC := tools/jsonproc/jsonproc$(EXE)
|
||||||
|
|
||||||
PERL := perl
|
|
||||||
|
|
||||||
TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*))
|
|
||||||
TOOLBASE = $(TOOLDIRS:tools/%=%)
|
|
||||||
TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE))
|
|
||||||
|
|
||||||
MAKEFLAGS += --no-print-directory
|
|
||||||
|
|
||||||
# Clear the default suffixes
|
# Clear the default suffixes
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
# Don't delete intermediate files
|
# Don't delete intermediate files
|
||||||
@ -150,50 +71,14 @@ MAKEFLAGS += --no-print-directory
|
|||||||
# Secondary expansion is required for dependency variables in object rules.
|
# Secondary expansion is required for dependency variables in object rules.
|
||||||
.SECONDEXPANSION:
|
.SECONDEXPANSION:
|
||||||
|
|
||||||
.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern tidymodern tidynonmodern
|
.PHONY: rom clean compare tidy tools mostlyclean clean-tools
|
||||||
|
|
||||||
infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c)
|
||||||
|
|
||||||
# Build tools when building the rom
|
|
||||||
# Disable dependency scanning for clean/tidy/tools
|
|
||||||
# Use a separate minimal makefile for speed
|
|
||||||
# Since we don't need to reload most of this makefile
|
|
||||||
ifeq (,$(filter-out all rom compare modern berry_fix libagbsyscall syms,$(MAKECMDGOALS)))
|
|
||||||
$(call infoshell, $(MAKE) -f make_tools.mk)
|
|
||||||
else
|
|
||||||
NODEP ?= 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# check if we need to scan dependencies based on the rule
|
|
||||||
ifeq (,$(MAKECMDGOALS))
|
|
||||||
SCAN_DEPS ?= 1
|
|
||||||
else
|
|
||||||
# clean, tidy, tools, mostlyclean, clean-tools, $(TOOLDIRS), tidymodern, tidynonmodern don't even build the ROM
|
|
||||||
# berry_fix and libagbsyscall do their own thing
|
|
||||||
ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) tidymodern tidynonmodern berry_fix libagbsyscall,$(MAKECMDGOALS)))
|
|
||||||
SCAN_DEPS ?= 0
|
|
||||||
else
|
|
||||||
SCAN_DEPS ?= 1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(SCAN_DEPS),1)
|
|
||||||
C_SRCS_IN := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c)
|
|
||||||
C_SRCS := $(foreach src,$(C_SRCS_IN),$(if $(findstring .inc.c,$(src)),,$(src)))
|
|
||||||
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
|
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
|
||||||
|
|
||||||
GFLIB_SRCS := $(wildcard $(GFLIB_SUBDIR)/*.c)
|
#ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
|
||||||
GFLIB_OBJS := $(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o,$(GFLIB_SRCS))
|
|
||||||
|
|
||||||
C_ASM_SRCS += $(wildcard $(C_SUBDIR)/*.s $(C_SUBDIR)/*/*.s $(C_SUBDIR)/*/*/*.s)
|
|
||||||
C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS))
|
|
||||||
|
|
||||||
ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
|
|
||||||
ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
|
ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
|
||||||
|
|
||||||
# get all the data/*.s files EXCEPT the ones with specific rules
|
|
||||||
REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(wildcard $(DATA_ASM_SUBDIR)/*.s))
|
|
||||||
|
|
||||||
DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
|
DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
|
||||||
DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
|
DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
|
||||||
|
|
||||||
@ -203,61 +88,51 @@ SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
|
|||||||
MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
|
MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
|
||||||
MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
|
MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
|
||||||
|
|
||||||
OBJS := $(C_OBJS) $(GFLIB_OBJS) $(C_ASM_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
|
OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
|
||||||
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
|
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
|
||||||
|
|
||||||
SUBDIRS := $(sort $(dir $(OBJS)))
|
SUBDIRS := $(sort $(dir $(OBJS)))
|
||||||
$(shell mkdir -p $(SUBDIRS))
|
|
||||||
endif
|
|
||||||
|
|
||||||
AUTO_GEN_TARGETS :=
|
AUTO_GEN_TARGETS :=
|
||||||
|
|
||||||
all: rom
|
TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*))
|
||||||
|
TOOLBASE = $(TOOLDIRS:tools/%=%)
|
||||||
|
TOOLS = $(foreach tool,$(TOOLBASE),tools/%(tool)/$(tool)$(EXE))
|
||||||
|
|
||||||
tools: $(TOOLDIRS)
|
$(shell mkdir -p $(SUBDIRS))
|
||||||
|
|
||||||
syms: $(SYM)
|
all: tools rom
|
||||||
|
|
||||||
$(TOOLDIRS):
|
tools: $(TOOLS)
|
||||||
@$(MAKE) -C $@
|
|
||||||
|
$(TOOLS):
|
||||||
|
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) -C $(tooldir);)
|
||||||
|
|
||||||
rom: $(ROM)
|
rom: $(ROM)
|
||||||
ifeq ($(COMPARE),1)
|
|
||||||
@$(SHA1) rom.sha1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For contributors to make sure a change didn't affect the contents of the ROM.
|
# For contributors to make sure a change didn't affect the contents of the ROM.
|
||||||
compare: all
|
compare: all
|
||||||
|
@$(SHA1) rom.sha1
|
||||||
|
|
||||||
clean: mostlyclean clean-tools
|
clean: mostlyclean clean-tools
|
||||||
|
|
||||||
clean-tools:
|
clean-tools:
|
||||||
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
||||||
|
|
||||||
mostlyclean: tidynonmodern tidymodern
|
mostlyclean: tidy
|
||||||
rm -f $(SAMPLE_SUBDIR)/*.bin
|
rm -f sound/direct_sound_samples/*.bin
|
||||||
rm -f $(CRY_SUBDIR)/*.bin
|
|
||||||
rm -f $(MID_SUBDIR)/*.s
|
rm -f $(MID_SUBDIR)/*.s
|
||||||
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
||||||
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
|
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
|
||||||
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc
|
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc
|
||||||
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
|
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
|
||||||
rm -f $(AUTO_GEN_TARGETS)
|
rm -f $(AUTO_GEN_TARGETS)
|
||||||
@$(MAKE) clean -C berry_fix
|
|
||||||
@$(MAKE) clean -C libagbsyscall
|
|
||||||
|
|
||||||
tidy: tidynonmodern tidymodern
|
tidy:
|
||||||
|
rm -f $(ROM) $(ELF) $(MAP)
|
||||||
tidynonmodern:
|
rm -r $(OBJ_DIR)
|
||||||
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
|
ifeq ($(MODERN),0)
|
||||||
rm -rf $(OBJ_DIR_NAME)
|
@$(MAKE) tidy MODERN=1
|
||||||
|
|
||||||
tidymodern:
|
|
||||||
rm -f $(MODERN_ROM_NAME) $(MODERN_ELF_NAME) $(MODERN_MAP_NAME)
|
|
||||||
rm -rf $(MODERN_OBJ_DIR_NAME)
|
|
||||||
|
|
||||||
ifneq ($(MODERN),0)
|
|
||||||
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include graphics_file_rules.mk
|
include graphics_file_rules.mk
|
||||||
@ -278,129 +153,44 @@ include songs.mk
|
|||||||
%.gbapal: %.png ; $(GFX) $< $@
|
%.gbapal: %.png ; $(GFX) $< $@
|
||||||
%.lz: % ; $(GFX) $< $@
|
%.lz: % ; $(GFX) $< $@
|
||||||
%.rl: % ; $(GFX) $< $@
|
%.rl: % ; $(GFX) $< $@
|
||||||
$(CRY_SUBDIR)/%.bin: $(CRY_SUBDIR)/%.aif ; $(AIF) $< $@ --compress
|
sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(AIF) $< $@ --compress
|
||||||
sound/%.bin: sound/%.aif ; $(AIF) $< $@
|
sound/%.bin: sound/%.aif ; $(AIF) $< $@
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(MODERN),0)
|
%src/platform/sdl2.o: CFLAGS += -fleading-underscore -O3
|
||||||
$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
|
|
||||||
$(C_BUILDDIR)/libc.o: CFLAGS := -O2
|
|
||||||
|
|
||||||
$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork
|
|
||||||
|
|
||||||
$(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork
|
|
||||||
$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
|
|
||||||
$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
|
|
||||||
|
|
||||||
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
|
|
||||||
|
|
||||||
$(C_BUILDDIR)/record_mixing.o: CFLAGS += -ffreestanding
|
|
||||||
$(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE)
|
|
||||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet
|
|
||||||
else
|
|
||||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(DDEBUG), 1)
|
|
||||||
override ASFLAGS += --defsym DEBUG=1
|
|
||||||
override CPPFLAGS += -D DEBUG=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(DINFO),1)
|
|
||||||
override CFLAGS += -g
|
|
||||||
endif
|
|
||||||
|
|
||||||
# The dep rules have to be explicit or else missing files won't be reported.
|
|
||||||
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
|
||||||
# It doesn't look like $(shell) can be deferred so there might not be a better way.
|
|
||||||
|
|
||||||
ifeq ($(SCAN_DEPS),1)
|
|
||||||
ifeq ($(NODEP),1)
|
ifeq ($(NODEP),1)
|
||||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
$(C_BUILDDIR)/%.o: c_dep :=
|
||||||
ifeq (,$(KEEP_TEMPS))
|
|
||||||
@echo "$(CC1) <flags> -o $@ $<"
|
|
||||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) $< charmap.txt -i | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
|
||||||
else
|
else
|
||||||
|
$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep)
|
||||||
@$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
|
@$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
|
||||||
@$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
|
@$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
|
||||||
@echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
|
@echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
|
||||||
$(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
|
$(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
|
||||||
endif
|
|
||||||
else
|
|
||||||
define C_DEP
|
|
||||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
|
||||||
ifeq (,$$(KEEP_TEMPS))
|
|
||||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
|
||||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) $$< charmap.txt -i | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
|
||||||
else
|
|
||||||
@$$(CPP) $$(CPPFLAGS) $$< -o $$(C_BUILDDIR)/$3.i
|
|
||||||
@$$(PREPROC) $$(C_BUILDDIR)/$3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $$(C_BUILDDIR)/$3.s
|
|
||||||
@echo -e ".text\n\t.align\t2, 0\n" >> $$(C_BUILDDIR)/$3.s
|
|
||||||
$$(AS) $$(ASFLAGS) -o $$@ $$(C_BUILDDIR)/$3.s
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
$(foreach src, $(C_SRCS), $(eval $(call C_DEP,$(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(C_SUBDIR)/%.c,%,$(src)))))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(NODEP),1)
|
ifeq ($(NODEP),1)
|
||||||
$(GFLIB_BUILDDIR)/%.o: $(GFLIB_SUBDIR)/%.c $$(c_dep)
|
$(ASM_BUILDDIR)/%.o: asm_dep :=
|
||||||
ifeq (,$(KEEP_TEMPS))
|
|
||||||
@echo "$(CC1) <flags> -o $@ $<"
|
|
||||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) $< charmap.txt -i | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
|
||||||
else
|
else
|
||||||
@$(CPP) $(CPPFLAGS) $< -o $(GFLIB_BUILDDIR)/$*.i
|
$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) -I "" $(ASM_SUBDIR)/$*.s)
|
||||||
@$(PREPROC) $(GFLIB_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(GFLIB_BUILDDIR)/$*.s
|
|
||||||
@echo -e ".text\n\t.align\t2, 0\n" >> $(GFLIB_BUILDDIR)/$*.s
|
|
||||||
$(AS) $(ASFLAGS) -o $@ $(GFLIB_BUILDDIR)/$*.s
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
define GFLIB_DEP
|
|
||||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
|
||||||
ifeq (,$$(KEEP_TEMPS))
|
|
||||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
|
||||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) $$< charmap.txt -i | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
|
||||||
else
|
|
||||||
@$$(CPP) $$(CPPFLAGS) $$< -o $$(GFLIB_BUILDDIR)/$3.i
|
|
||||||
@$$(PREPROC) $$(GFLIB_BUILDDIR)/$3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $$(GFLIB_BUILDDIR)/$3.s
|
|
||||||
@echo -e ".text\n\t.align\t2, 0\n" >> $$(GFLIB_BUILDDIR)/$3.s
|
|
||||||
$$(AS) $$(ASFLAGS) -o $$@ $$(GFLIB_BUILDDIR)/$3.s
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
$(foreach src, $(GFLIB_SRCS), $(eval $(call GFLIB_DEP,$(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o, $(src)),$(src),$(patsubst $(GFLIB_SUBDIR)/%.c,%, $(src)))))
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(NODEP),1)
|
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
|
||||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
|
|
||||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
|
|
||||||
else
|
|
||||||
define SRC_ASM_DATA_DEP
|
|
||||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
|
||||||
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include - | $$(AS) $$(ASFLAGS) -o $$@
|
|
||||||
endef
|
|
||||||
$(foreach src, $(C_ASM_SRCS), $(eval $(call SRC_ASM_DATA_DEP,$(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o, $(src)),$(src))))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(NODEP),1)
|
|
||||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
|
||||||
$(AS) $(ASFLAGS) -o $@ $<
|
$(AS) $(ASFLAGS) -o $@ $<
|
||||||
else
|
|
||||||
define ASM_DEP
|
|
||||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
|
||||||
$$(AS) $$(ASFLAGS) -o $$@ $$<
|
|
||||||
endef
|
|
||||||
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o, $(src)),$(src))))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(NODEP),1)
|
ifeq ($(NODEP),1)
|
||||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
|
$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
|
||||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
|
|
||||||
else
|
else
|
||||||
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call SRC_ASM_DATA_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src))))
|
$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I include -I "" $(DATA_ASM_SUBDIR)/$*.s)
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
|
||||||
|
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(ASM_PSEUDO_OP_CONV) | $(AS) $(ASFLAGS) -o $@
|
||||||
|
|
||||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
||||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
$(ASM_PSEUDO_OP_CONV) $< | $(AS) $(ASFLAGS) -I sound -o $@
|
||||||
|
|
||||||
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
||||||
$(RAMSCRGEN) .bss $< ENGLISH > $@
|
$(RAMSCRGEN) .bss $< ENGLISH > $@
|
||||||
@ -422,28 +212,17 @@ endif
|
|||||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
||||||
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
|
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
|
||||||
|
|
||||||
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix libagbsyscall
|
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
|
||||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ <objects> <lib>"
|
cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
|
||||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
|
|
||||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||||
|
#$(ROM): $(ELF)
|
||||||
|
#$(OBJCOPY) -O binary $< $@
|
||||||
|
#$(FIX) $@ -p --silent
|
||||||
|
|
||||||
$(ROM): $(ELF)
|
pokeemerald.exe: $(OBJS)
|
||||||
$(OBJCOPY) -O binary $< $@
|
$(CC) $(CFLAGS) -Wl,--demangle $^ -L$(SDL_DIR)/lib -lmingw32 -lSDLmain -lSDL.dll -lwinmm -static-libgcc -o $@
|
||||||
$(FIX) $@ -p --silent
|
|
||||||
|
|
||||||
modern: all
|
$(ROM): pokeemerald.exe
|
||||||
|
@:
|
||||||
|
|
||||||
berry_fix/berry_fix.gba: berry_fix
|
modern: ; @$(MAKE) MODERN=1
|
||||||
|
|
||||||
berry_fix:
|
|
||||||
@$(MAKE) -C berry_fix COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
|
||||||
|
|
||||||
libagbsyscall:
|
|
||||||
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
|
||||||
|
|
||||||
###################
|
|
||||||
### Symbol file ###
|
|
||||||
###################
|
|
||||||
|
|
||||||
$(SYM): $(ELF)
|
|
||||||
$(OBJDUMP) -t $< | sort -u | grep -E "^0[2389]" | $(PERL) -p -e 's/^(\w{8}) (\w).{6} \S+\t(\w{8}) (\S+)$$/\1 \2 \3 \4/g' > $@
|
|
||||||
|
101
README.md
101
README.md
@ -1,82 +1,39 @@
|
|||||||
# tumbledemerald
|
# tumbledemerald [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#rebirthteam:matrix.org)
|
||||||
|
|
||||||
## Description
|
This is a decompilation of Pokémon Emerald, with many improvements and edits, similar to Rangi42's [polishedcrystal](https://github.com/Rangi42/polishedcrystal)
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
[<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)
|
Here is the last time Tumbled was updated to `pret:master`
|
||||||
|
|
||||||
## Installation
|
**20 December 2021**
|
||||||
Compiling tumbledemerald requires a Linux-based system with the following packages installed:
|
|
||||||
|
|
||||||
- make (or GNU make, if you have access to it specifically.)
|
## See also
|
||||||
- gcc
|
|
||||||
- g++
|
|
||||||
- git
|
|
||||||
- GNU arm-none-eabi binutils
|
|
||||||
|
|
||||||
(Bonus points for getting it to work with Clang, cmake, and non-GNU binutils, because rms gives me a headache.)
|
Other disassembly and/or decompilation projects:
|
||||||
|
* [**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.
|
|
||||||
|
|
||||||
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:
|
## Contacts
|
||||||
|
|
||||||
- Click the "Gitpod" button above.
|
You can slide into my **[matrix]** PM's: @fierymewtwo:matrix.org. However, there is an official Rebirth "room" (see the **[matrix]** badge 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".
|
|
||||||
|
|
||||||
For more detailed compilation instructions, see [this](INSTALL.md) document.
|
> The old GitHub repositories are now unmaintained, and all future development will take place on GitLab.
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
## 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". This is almost already done thanks to the Python script, but make sure to keep an eye out!
|
- Decapitalise everything! For example, change "POKéMON" to "Pokémon". (not yet though)
|
||||||
- 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, except when it doesn't make sense to do so.
|
- Use good English at all times.
|
||||||
- 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
1
agbcc
@ -1 +0,0 @@
|
|||||||
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,19 +118,6 @@ 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
|
||||||
|
|
||||||
@ -736,12 +723,6 @@ 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,7 +259,6 @@ 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
|
||||||
@ -286,20 +285,6 @@ 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
|
||||||
@ -1012,13 +997,6 @@ 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 commented out by default, but can be easily re-enabled, see docs.
|
special InitUnionRoom
|
||||||
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_ReturnPkmn
|
goto EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom
|
||||||
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_ReturnPkmn
|
goto_if_eq VAR_RESULT, FALSE, EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom
|
||||||
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_faster_down
|
walk_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_faster_right
|
walk_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_faster_down
|
walk_down
|
||||||
walk_in_place_faster_right
|
walk_in_place_faster_right
|
||||||
delay_16
|
delay_16
|
||||||
delay_8
|
delay_8
|
||||||
walk_faster_right
|
walk_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_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_down
|
walk_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_faster_down
|
walk_down
|
||||||
walk_in_place_faster_left
|
walk_in_place_faster_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomApproachPlayerMale:
|
PlayersHouse_1F_Movement_MomApproachPlayerMale:
|
||||||
walk_faster_right
|
walk_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_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_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_faster_right
|
walk_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_faster_down
|
walk_down
|
||||||
walk_in_place_faster_right
|
walk_in_place_faster_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_MomReturnToSeatFemale:
|
PlayersHouse_1F_Movement_MomReturnToSeatFemale:
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_down
|
walk_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_faster_down
|
walk_down
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_faster_left
|
walk_left
|
||||||
walk_faster_left
|
walk_left
|
||||||
walk_faster_left
|
walk_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerMoveToTVMale:
|
PlayersHouse_1F_Movement_PlayerMoveToTVMale:
|
||||||
walk_faster_left
|
walk_left
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerApproachTVForGymFemale:
|
PlayersHouse_1F_Movement_PlayerApproachTVForGymFemale:
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerMoveToTVFemale:
|
PlayersHouse_1F_Movement_PlayerMoveToTVFemale:
|
||||||
walk_faster_right
|
walk_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_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_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_faster_down
|
walk_down
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_down
|
walk_down
|
||||||
delay_8
|
delay_8
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_DadExitsFemale:
|
PlayersHouse_1F_Movement_DadExitsFemale:
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_left
|
walk_left
|
||||||
walk_faster_down
|
walk_down
|
||||||
delay_8
|
delay_8
|
||||||
step_end
|
step_end
|
||||||
|
|
||||||
PlayersHouse_1F_Movement_PlayerEnterRoomMale:
|
PlayersHouse_1F_Movement_PlayerEnterRoomMale:
|
||||||
delay_16
|
delay_16
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_faster_down
|
walk_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_faster_down
|
walk_down
|
||||||
walk_faster_down
|
walk_down
|
||||||
walk_faster_down
|
walk_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_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_right
|
||||||
walk_faster_right
|
walk_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,4 +1,3 @@
|
|||||||
# 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 (fixed in tumbledemerald.)
|
## Scrolling through items in the bag causes the image to flicker
|
||||||
|
|
||||||
**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_AURORA_MYSTIC_RECEIVED 0x55 // Custom flag used in tumbledemerald. Basically a workaround.
|
#define FLAG_UNUSED_0x055 0x55 // Unused Flag
|
||||||
|
|
||||||
#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
|
||||||
|
BIN
pokeemerald-0.png
Normal file
BIN
pokeemerald-0.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.2 KiB |
BIN
pokeemerald-1.png
Normal file
BIN
pokeemerald-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.2 KiB |
1
rom.sha1
Normal file
1
rom.sha1
Normal file
@ -0,0 +1 @@
|
|||||||
|
f3ae088181bf583e55daf962a92bb46f4f1d07b7 pokeemerald.gba
|
@ -322,16 +322,6 @@ 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,8 +69,6 @@ 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;
|
||||||
@ -116,7 +114,7 @@ void AgbMain()
|
|||||||
gSoftResetDisabled = FALSE;
|
gSoftResetDisabled = FALSE;
|
||||||
|
|
||||||
if (gFlashMemoryPresent != TRUE)
|
if (gFlashMemoryPresent != TRUE)
|
||||||
SetMainCallback2(CB2_FlashNotDetectedScreen);
|
SetMainCallback2(NULL);
|
||||||
|
|
||||||
gLinkTransferringData = FALSE;
|
gLinkTransferringData = FALSE;
|
||||||
sUnusedVar = 0xFC0;
|
sUnusedVar = 0xFC0;
|
||||||
|
@ -401,50 +401,3 @@ 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