diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
index d7a4516d2a7..32a1ce26269 100644
--- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
+++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
@@ -23,22 +23,26 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using as a base?
options:
- - 1.6.2 (Default)
+ - 1.8.4 (Latest release)
+ - master (default, unreleased bugfixes)
- upcoming (Edge)
- - 1.6.1
- - 1.6.0
- - 1.5.3
- - 1.5.2
- - 1.5.1
- - 1.5.0
- - pre-1.5.0
+ - 1.8.3
+ - 1.8.2
+ - 1.8.1
+ - 1.8.0
+ - 1.7.4
+ - 1.7.3
+ - 1.7.2
+ - 1.7.1
+ - 1.7.0
+ - pre-1.7.0
validations:
required: true
- type: input
id: upcomingversion
attributes:
- label: Upcoming Version
- description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
+ label: Upcoming/master Version
+ description: If you're using the upcoming or master branches directly, please specify what was the commit hash you pulled from.
validations:
required: false
- type: input
diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
index 0c3378eb3fd..3e21436c1a9 100644
--- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
+++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
@@ -23,22 +23,25 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using as a base?
options:
- - 1.6.2 (Default)
+ - 1.8.4 (Latest release)
+ - master (default, unreleased bugfixes)
- upcoming (Edge)
- - 1.6.1
- - 1.6.0
- - 1.5.3
- - 1.5.2
- - 1.5.1
- - 1.5.0
- - pre-1.5.0
+ - 1.8.3
+ - 1.8.1
+ - 1.8.0
+ - 1.7.4
+ - 1.7.3
+ - 1.7.2
+ - 1.7.1
+ - 1.7.0
+ - pre-1.7.0
validations:
required: true
- type: input
id: upcomingversion
attributes:
- label: Upcoming Version
- description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
+ label: Upcoming/master Version
+ description: If you're using the upcoming or master branches directly, please specify what was the commit hash you pulled from.
validations:
required: false
- type: input
diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml
index 538dae03835..fcbf4b8884f 100644
--- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml
+++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml
@@ -23,22 +23,25 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using as a base?
options:
- - 1.6.2 (Default)
+ - 1.8.4 (Latest release)
+ - master (default, unreleased bugfixes)
- upcoming (Edge)
- - 1.6.1
- - 1.6.0
- - 1.5.3
- - 1.5.2
- - 1.5.1
- - 1.5.0
- - pre-1.5.0
+ - 1.8.3
+ - 1.8.1
+ - 1.8.0
+ - 1.7.4
+ - 1.7.3
+ - 1.7.2
+ - 1.7.1
+ - 1.7.0
+ - pre-1.7.0
validations:
required: true
- type: input
id: upcomingversion
attributes:
- label: Upcoming Version
- description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
+ label: Upcoming/master Version
+ description: If you're using the upcoming or master branches directly, please specify what was the commit hash you pulled from.
validations:
required: false
- type: input
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 930d20a0185..7a76b748e57 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -11,6 +11,15 @@
+## **People who collaborated with me in this PR**
+
+
+
+
+## Feature(s) this PR does NOT handle:
+
+
+
## **Discord contact info**
-
\ No newline at end of file
+
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 02d7e22b6c7..0322cbe11f0 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,12 +10,14 @@ on:
jobs:
build:
runs-on: ubuntu-latest
+ container: devkitpro/devkitarm
env:
GAME_VERSION: EMERALD
GAME_REVISION: 0
GAME_LANGUAGE: ENGLISH
MODERN: 0
COMPARE: 0
+ UNUSED_ERROR: 1
steps:
- name: Checkout
uses: actions/checkout@v2
@@ -27,7 +29,9 @@ jobs:
repository: pret/agbcc
- name: Install binutils
- run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi libelf-dev
+ run: |
+ sudo apt update
+ sudo apt install -y build-essential libpng-dev libelf-dev
# build-essential, git, and libpng-dev are already installed
# gcc-arm-none-eabi is only needed for the modern build
# as an alternative to dkP
@@ -39,6 +43,9 @@ jobs:
working-directory: agbcc
- name: Agbcc
+ env:
+ MODERN: 0
+ COMPARE: 0
run: make -j${nproc} -O all
- name: Modern
@@ -49,6 +56,7 @@ jobs:
- name: Test
env:
+ MODERN: 1
TEST: 1
run: |
make -j${nproc} -O pokeemerald-test.elf
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 00000000000..874ebdd5906
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,48 @@
+name: Docs
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ pages: write
+ id-token: write
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Install latest mdbook
+ run: |
+ tag=$(curl 'https://api.github.com/repos/rust-lang/mdbook/releases/latest' | jq -r '.tag_name')
+ url="https://github.com/rust-lang/mdbook/releases/download/${tag}/mdbook-${tag}-x86_64-unknown-linux-gnu.tar.gz"
+ mkdir mdbook
+ curl -sSL $url | tar -xz --directory=./mdbook
+ echo `pwd`/mdbook >> $GITHUB_PATH
+ - name: Build Book
+ run: |
+ cd docs
+ mdbook build
+ - name: Check if Pages is enabled
+ uses: octokit/request-action@v2.x
+ id: check_pages
+ continue-on-error: true
+ with:
+ route: GET /repos/{repo}/pages
+ repo: ${{ github.repository }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Setup Pages
+ uses: actions/configure-pages@v4
+ if: steps.check_pages.outcome == 'success'
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: 'docs/book'
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
+ if: steps.check_pages.outcome == 'success'
diff --git a/.gitignore b/.gitignore
index 082430d794e..ba80433cf72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,7 +21,6 @@ sound/**/*.bin
sound/songs/midi/*.s
tools/agbcc
*.map
-*.ld
*.bat
*.dump
*.sa*
@@ -39,3 +38,5 @@ prefabs.json
*.diff
*.sym
*.js
+src/data/map_group_count.h
+tools/trainerproc/trainerproc
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d599aaf3f7..f513818cbb6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,122 +1,48 @@
-# Pokeemerald-Expansion Changelog
-
-# Version 1.6.2
-
-## 🌋 *IMPORTANT CHANGES* 🌋
-### Battle changes
-* Battler Types are now obtained via `GetBattlerType` instead of `gBattleMons[battlerId].type1/2/3` to better consider Roost. Be sure to update your custom battle effects to account for this change.
-
-## 🧬 General 🧬
-### Fixed
-* Fixed Cheat Start not initiating time-based events by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3446
-
-## 🐉 Pokémon 🐉
-### Changed
-* Updated Cresselia's base stats to Gen 9 by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3419
-* Updated Zacian/Zamazenta base stats to Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3421
-### Fixed
-* Fixed Kleavor, Hisuian Sneasel and Sneasler missing their SV abilities by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3391
-* Fixed Bergmite/Avalugg old and updated egg groups being switched by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3380
-
-## 🤹 Moves 🤹
-### Changed
-* Quick Draw now uses weighted RNG by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
-* Added `IS_BATTLER_TYPELESS` macro that checks if the specified battler has no valid type by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
-### Fixed
-* Fixed Protect failing if the user flinched on the previous turn by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
-* Fixed entry hazards not working properly being cleared on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
- * This includes Toxic Spikes not working if Pecha Berry actived on the previous turn.
-* Fixed Roost overwriting other type changing at the end of the turn (Soak, Forest's Curse, Color Change, etc.) by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
- * Now it suppresses the user's Flying-type rather than remove and re-add it.
-* Fixes Salt Cure visual bug if mon fainted by direct attack by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3388
-* Fixed Purifying Salt not preventing the use of Rest by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
-* Fixed Make it Rain lowering Sp. Attack twice if hitting 2 targets in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3441
-* Fixed Reflect Type not properly handle 3rd types by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303
-* Fixed form change triggered by switching not occuring when using moves like U-Turn or Baton Pass by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3463
-* Fixed Last Resort not counting Sleep Talk as used for its effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
-
-## 🎭 Abilities 🎭
-### Changed
-* Removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
-* Moved Beads of Ruin and Sword of Ruin damage to the appropiate damage modifier functions by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
-### Fixed
-* Fixed Intimidate increasing the attack of both opponents if one of them has Contrary in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
-* Fixed Battle/Shell Armor not preventing critical hits by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
-* Fixed Rivalry's effect being reversed by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
-* Fixed Rivalry lowering attack if either attacker or target were genderless by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
-* Fixed missing Poison Heal Ability Popup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
-* Fixed Parental Bond not working at all by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
-* Fixed Beads of Ruin and Sword of Ruin damage modifiers by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
-* Fixed Sheer Force not negating effects that benefit the user (eg. Flame Charge, Power-Up Punch) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
-* Fixed Strength Sap not healing the user when used on a Substitute by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
-* Fixed Substitute showing the "took damage for" message if Strength Sap was used on it by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486
-* Fixed Weak Armor interrupting Multi Hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3497
-
-## 🧶 Items 🧶
-### Fixed
-* Fixed Shiny Charm doing too many rerolls by default by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3327
-* Fixed Berserk Gene activating for the wrong Pokémon double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
-* Fixed Red Card not being consumed after opponent Sticky Web activation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
-* Fixed implementation of Gen6 that didn't allow for the Exp Share flag to be set via script without setting the item to the Gen 6+ version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3384
-* Fixed Kee Berry raising defense by 1 stage instead of 2 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
-* Fixed Kee Berry incorrect stat raise message by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
-* Fixed Razor Fang not being able to be used directly even if `I_USE_EVO_HELD_ITEMS_FROM_BAG` was set to `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3456
-
-## 🧹 Cleanup 🧹
-* `AbilityBattleEffects` uses `B_MSG_TERRAIN` constants for field terrain intro text by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3410
-* Removed all trailing whitespace by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3472
-
-## 🧪 Test Runner 🧪
-### Added
-* Flinch tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345
-* Berserk Gene double battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363
-* More specific Toxic Spikes tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316
-* Red Card/Sticky Web test @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
-* Intimidate/Contrary double battle test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365
-* Critical Hit tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
-* Roost tests by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
-* Rivalry tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381
-* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385
- * Defeatist, Dragon's Maw, Earth Eater, Gale Wings, Poison Heal, Rocky Payload, Sap Sipper, Steelworker and Transistor.
-* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399
- * Beast Boost, Ice Scales, Neuroforce, Purifying Salt, Quick Draw and Sharpness.
-* Berry tests @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409
- * Full: Apicot, Custap, Ganlon, Jaboca, Kee, Lansat, Liechi, Maranga, Micle, Petaya, Rowap and Salac Berries.
- * TODO: Starf Berry.
-* Weather and type-specific tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
- * Full: Freezing, Hail, Moonlight, Morning Sun, Sandstorm, Snow, Solar Beam/Blade, Steel poisoning, Synthesis, Thunder and Weather Ball.
- * Partial: Prankster, Safety Goggles, Aurora Veil, Hurricane, Leech Seed and OHKO moves.
- * TODO: Harvest.
-* Single Parental Bond test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417
-* Several tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378
- * Full: Weak Armor, Last Resort, Stealth Rock.
- * Completed Weak Armor tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3493
- * Partial: Defiant, Sheer Force, White Herb, Strength Sap.
-### Changed
-* Red Card tests now check if the item was consumed by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364
-* Tests now cannot use `i` in their cycles to avoid messing with `PARAMETRIZE` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
-* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3414
-* Moved Powder/Grass test to `move_flags` folder by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260
-* Continuous `NOT x; NOT y;` are now not allowed in tests due to them not acting as one would expect by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3459
- * Test writers should use `NONE_OF { x; y; }` instead.
-### Fixed
-* Fixed CreateNPCTrainerPartyForTrainer test failing on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367
-* Fixed `RNG_CRITICAL_HIT` by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377
-* Fixed `ASSUMPTIONS` block not working by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3368
- * Fixup by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408
-* Fixed Beads of Ruin and Sword of Ruin damage tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415
-* Fixes test RNG by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3433
-* Fixed battle test estimateCost bug by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3448
-* Test cleanup and improvements by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3449
- * Removed duplicated Prankster TO_DO test.
- * Corrected Multi-hit test names (4 and 5 hits stated 35% instead of 15%).
- * Grouped Maranga Berry's Physical vs Special tests using PARAMETRIZE.
- * Improved Jaboca, Kee and Rowap tests by @AlexOn1ine
-* Fixed `ModifyPersonalityForNature` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3452
-* Fixed test_runner.c modern warning by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3451
-
-## New Contributors
-* @BLourenco made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258
-
-## Full Changelog
-https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.1...expansion/1.6.2
+# Pokeemerald-Expansion Changelogs
+
+## 1.8.x
+- ### [Version 1.8.4](docs/changelogs/1.8.x/1.8.4.md) - Bugfix Release 🧹
+- ### [Version 1.8.3](docs/changelogs/1.8.x/1.8.3.md) - Bugfix Release 🧹
+- ### [Version 1.8.2](docs/changelogs/1.8.x/1.8.2.md) - Bugfix Release 🧹
+- ### [Version 1.8.1](docs/changelogs/1.8.x/1.8.1.md) - HOTFIX Release 🔥
+- ### [Version 1.8.0](docs/changelogs/1.8.x/1.8.0.md) - Feature Release ✨
+
+## 1.7.x
+- ### [Version 1.7.4](docs/changelogs/1.7.x/1.7.4.md) - Bugfix Release 🧹
+- ### [Version 1.7.3](docs/changelogs/1.7.x/1.7.3.md) - Bugfix Release 🧹
+- ### [Version 1.7.2](docs/changelogs/1.7.x/1.7.2.md) - Bugfix Release 🧹
+- ### [Version 1.7.1](docs/changelogs/1.7.x/1.7.1.md) - Bugfix Release 🧹
+- ### [Version 1.7.0](docs/changelogs/1.7.x/1.7.0.md) - Feature Release ✨
+
+## 1.6.x
+- ### [Version 1.6.2](docs/changelogs/1.6.x/1.6.2.md) - Bugfix Release 🧹
+- ### [Version 1.6.1](docs/changelogs/1.6.x/1.6.1.md) - HOTFIX Release 🔥
+- ### [Version 1.6.0](docs/changelogs/1.6.x/1.6.0.md) - Feature Release ✨
+
+## 1.5.x
+- ### [Version 1.5.3](docs/changelogs/1.5.x/1.5.3.md) - HOTFIX Release 🔥
+- ### [Version 1.5.2](docs/changelogs/1.5.x/1.5.2.md) - Bugfix Release 🧹
+- ### [Version 1.5.1](docs/changelogs/1.5.x/1.5.1.md) - Bugfix Release 🧹
+- ### [Version 1.5.0](docs/changelogs/1.5.x/1.5.0.md) - Feature Release ✨
+
+## 1.4.x
+- ### [Version 1.4.3](docs/changelogs/1.4.x/1.4.3.md) - Bugfix Release 🧹
+- ### [Version 1.4.2](docs/changelogs/1.4.x/1.4.2.md) - Bugfix Release 🧹
+- ### [Version 1.4.1](docs/changelogs/1.4.x/1.4.1.md) - HOTFIX Release 🔥
+- ### [Version 1.4.0](docs/changelogs/1.4.x/1.4.0.md) - Feature Release ✨
+
+## 1.3.x
+- ### [Version 1.3.0](docs/changelogs/1.3.x/1.3.0.md) - Feature Release ✨
+
+## 1.2.x
+- ### [Version 1.2.0](docs/changelogs/1.2.x/1.2.0.md) - Feature Release ✨
+
+## 1.1.x
+- ### [Version 1.1.1](docs/changelogs/1.1.x/1.1.1.md) - Bugfix Release 🧹
+- ### [Version 1.1.0](docs/changelogs/1.1.x/1.1.0.md) - Feature Release ✨
+
+## 1.0.x
+- ### [Version 1.0.0](docs/changelogs/1.0.x/1.0.0.md) - Feature Release ✨
+
+## Pre-1.0.x:
+- ### [Version 0.9.0](docs/changelogs/0.9.x/0.9.0.md) - Retroactive Version 🦕
diff --git a/INSTALL.md b/INSTALL.md
index af2e844677a..ed7d5bad089 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,6 +1,6 @@
# Instructions
-These instructions explain how to set up the tools required to build **pokeemerald**, which assembles the source files into a ROM.
+These instructions explain how to set up the tools required to build **pokeemerald Expansion**, which assembles the source files into a ROM (pokeemerald.gba).
These instructions come with notes which can be expanded by clicking the "Note..." text.
In general, you should not need to open these unless if you get an error or if you need additional clarification.
@@ -27,10 +27,10 @@ All of the Windows instructions assume that the default drive is C:\\. If this d
**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/11 (WSL1)
-WSL1 is the preferred terminal to build **pokeemerald**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
+WSL1 is the preferred terminal to build **pokeemerald Expansion**. 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).
- 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, **open WSL** and go to [Choosing where to store pokeemerald (WSL1)](#Choosing-where-to-store-pokeemerald-WSL1).
+- Otherwise, **open WSL** and go to [Choosing where to store pokeemerald Expansion (WSL1)](#Choosing-where-to-store-pokeemerald-expansion-WSL1).
### Installing WSL1
1. Open [Windows Powershell **as Administrator**](https://i.imgur.com/QKmVbP9.png), and run the following command (Right Click or Shift+Insert is paste in the Powershell).
@@ -79,21 +79,60 @@ Some tips before proceeding:
> Note: If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**, then follow the [legacy WSL1 instructions](docs/legacy_WSL1_INSTALL.md) from here.
-4. Certain packages are required to build pokeemerald. Install these packages by running the following command:
+4. Certain packages are required to build pokeemerald Expansion. Install these packages by running the following command:
```bash
- sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
+ sudo apt install build-essential binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi git libpng-dev
```
Note...
> If the above command does not work, try the above command but replacing `apt` with `apt-get`.
+ This will install GCC v10 on Ubuntu 22.04. pokeemerald Expansion works with GCC v10, but remote repositories and the RHH Team use GCC v13 for stricter error-checking. If you want to upgrade from v10 to v13, also follow the devkitpro install instructions.
-### Choosing where to store pokeemerald (WSL1)
-WSL has its own file system that's not natively accessible from Windows, but Windows files *are* accessible from WSL. So you're going to want to store pokeemerald within Windows.
+### Installing devkitARM on WSL1
+
+1. Change directory to somewhere you can download a package, such as **C:\Users\\_\_\Downloads** (the Downloads location for most users). To do so, enter this command, where *\ is your **Windows** username:
+
+ ```bash
+ cd /mnt/c/Users//Downloads
+ ```
+
+2. Once the directory has been changed, run the following commands to install devkitARM.
-For example, say you want to store pokeemerald (and agbcc) in **C:\Users\\_\_\Desktop\decomps**. First, ensure that the folder already exists. Then, enter this command to **change directory** to said folder, where *\* is your **Windows** username:
+ ```bash
+ sudo apt install wget
+ wget https://apt.devkitpro.org/install-devkitpro-pacman
+ chmod +x ./install-devkitpro-pacman
+ sudo ./install-devkitpro-pacman
+ sudo dkp-pacman -S gba-dev
+ ```
+ The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
+
+3. Run the following command to set devkitPro related environment variables (alternatively, close and re-open WSL):
+
+ ```bash
+ source /etc/profile.d/devkit-env.sh
+ ```
+
+devkitARM is now installed.
+
+### Installing Python on WSL1
+
+To install Python on WSL1, simply run the following commands:
+
+```bash
+sudo apt update && sudo apt upgrade
+sudo apt install python3
+```
+
+Python is now installed.
+
+### Choosing where to store pokeemerald Expansion (WSL1)
+WSL has its own file system that's not natively accessible from Windows, but Windows files *are* accessible from WSL. So you're going to want to store pokeemerald Expansion within Windows.
+
+For example, say you want to store pokeemerald Expansion in **C:\Users\\_\_\Desktop\decomps**. First, ensure that the folder already exists. Then, enter this command to **change directory** to said folder, where *\* is your **Windows** username:
```bash
cd /mnt/c/Users//Desktop/decomps
@@ -115,7 +154,7 @@ Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or conti
- If devkitARM is **not installed**, then go to [Installing devkitARM](#installing-devkitarm).
- If devkitARM is installed, but msys2 **hasn't previously been set up for another decompilation project**, then go to [Setting up msys2](#setting-up-msys2).
-- Otherwise, **open msys2** and go to [Choosing where to store pokeemerald (msys2)](#choosing-where-to-store-pokeemerald-msys2).
+- Otherwise, **open msys2** and go to [Choosing where to store pokeemerald Expansion (msys2)](#choosing-where-to-store-pokeemerald-expansion-msys2).
### Installing devkitARM
1. Download the devkitPro installer [here](https://github.com/devkitPro/installer/releases).
@@ -127,7 +166,7 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
1. Open msys2 at C:\devkitPro\msys2\msys2_shell.bat.
-2. Certain packages are required to build pokeemerald. Install these by running the following two commands:
+2. Certain packages are required to build pokeemerald Expansion. Install these by running the following two commands:
```bash
pacman -Sy msys2-keyring
@@ -172,10 +211,20 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
cd
```
-### Choosing where to store pokeemerald (msys2)
-At this point, you can choose a folder to store pokeemerald into. If you're okay with storing pokeemerald in the user profile folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald is stored when changing directory to the pokeemerald folder.
+### Installing Python on msys2
-For example, if you want to store pokeemerald (and agbcc) in **C:\Users\\_\_\Desktop\decomps** (where *\* is your **Windows** username), enter this command:
+To install Python on msys2, simply run the following commands:
+
+```bash
+pacman -S mingw-w64-x86_64-python3
+```
+
+Python is now installed.
+
+### Choosing where to store pokeemerald Expansion (msys2)
+At this point, you can choose a folder to store pokeemerald Expansion into. If you're okay with storing pokeemerald Expansion in the user profile folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald Expansion is stored when changing directory to the pokeemerald-expansion folder.
+
+For example, if you want to store pokeemerald Expansion in **C:\Users\\_\_\Desktop\decomps** (where *\* is your **Windows** username), enter this command:
```bash
cd Desktop/decomps
@@ -191,7 +240,7 @@ Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or conti
2.
- If Cygwin is **not installed**, or does not have all of the required packages installed, then go to [Installing Cygwin](#installing-cygwin).
- If Cygwin is installed, but **is not configured to work with devkitARM**, then go to [Configuring devkitARM for Cygwin](#configuring-devkitarm-for-cygwin).
- - Otherwise, **open Cygwin** and go to [Choosing where to store pokeemerald (Cygwin)](#choosing-where-to-store-pokeemerald-cygwin)
+ - Otherwise, **open Cygwin** and go to [Choosing where to store pokeemerald Expansion (Cygwin)](#choosing-where-to-store-pokeemerald-expansion-cygwin)
### Installing Cygwin
1. Download [Cygwin](https://cygwin.com/install.html): setup-x86_64.exe for 64-bit Windows, setup-x86.exe for 32-bit.
@@ -234,15 +283,15 @@ Note that in Cygwin, Copy is Ctrl+Insert and Paste is Shift+Insert.
> Replace the drive letter c with the actual drive letter if it is not c.
-### Choosing where to store pokeemerald (Cygwin)
+### Choosing where to store pokeemerald Expansion (Cygwin)
-Cygwin has its own file system that's within Windows, at **C:\cygwin64\home\\_\_**. If you don't want to store pokeemerald there, you'll need to account for where pokeemerald is stored when **changing directory** to the pokeemerald folder.
+Cygwin has its own file system that's within Windows, at **C:\cygwin64\home\\_\_**. If you don't want to store pokeemerald Expansion there, you'll need to account for where ppokeemerald Expansion is stored when **changing directory** to the pokeemerald-expansion folder.
-For example, if you want to store pokeemerald (and agbcc) in **C:\Users\\_\_\Desktop\decomps**, enter this command, where *\* is your **Windows** username:
+For example, if you want to store pokeemerald Expansion in **C:\Users\\_\_\Desktop\decomps**, enter this command, where *\* is your **Windows** username:
```bash
cd c:/Users//Desktop/decomps
```
-Note that the directory **must exist** in Windows. If you want to store pokeemerald in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Windows Explorer) before executing the `cd` command.
+Note that the directory **must exist** in Windows. If you want to store pokeemerald Expansion in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Windows Explorer) before executing the `cd` command.
Notes...
@@ -261,8 +310,9 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
```
2. - If libpng is **not installed**, then go to [Installing libpng (macOS)](#installing-libpng-macos).
+ - If pkg-config is **not installed**, then go to [Installing pkg-config (macos)](#installing-pkg-config-macos).
- If devkitARM is **not installed**, then go to [Installing devkitARM (macOS)](#installing-devkitarm-macos).
- - Otherwise, **open the Terminal** and go to [Choosing where to store pokeemerald (macOS)](#choosing-where-to-store-pokeemerald-macos)
+ - Otherwise, **open the Terminal** and go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos)
### Installing libpng (macOS)
@@ -280,7 +330,27 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
```
libpng is now installed.
- Continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**, otherwise, go to [Choosing where to store pokeemerald (macOS)](#choosing-where-to-store-pokeemerald-macos).
+ Continue to [Installing pkg-config (macOS)](#installing-pkg-config-macos) if **pkg-config is not installed**. Otherwise, continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**.
+
+ If both pkg-config and devkitARM are already installed, go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos).
+
+### Installing pkg-config (macOS)
+
+ Note for advanced users...
+
+> This guide installs pkg-config via Homebrew as it is the easiest method, however advanced users can install pkg-config through other means if they so desire.
+
+
+1. Open the Terminal.
+2. If Homebrew is not installed, then install [Homebrew](https://brew.sh/) by following the instructions on the website.
+3. Run the following command to install libpng.
+
+ ```bash
+ brew install pkg-config
+ ```
+ pkg-config is now installed.
+
+ Continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**, otherwise, go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos).
### Installing devkitARM (macOS)
1. Download the `devkitpro-pacman-installer.pkg` package from [here](https://github.com/devkitPro/pacman/releases).
@@ -297,6 +367,18 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
4. After the tools are installed, devkitARM must now be made accessible from anywhere by the system. To do so, run the following commands:
+ ```bash
+ export DEVKITPRO=/opt/devkitpro
+ echo "export DEVKITPRO=$DEVKITPRO" >> ~/.zshrc
+ export DEVKITARM=$DEVKITPRO/devkitARM
+ echo "export DEVKITARM=$DEVKITARM" >> ~/.zshrc
+
+ echo "if [ -f ~/.zshrc ]; then . ~/.zshrc; fi" >> ~/.zprofile
+ ```
+ *Note: Starting with macOS 10.15, the default Unix shell is now zsh. If you migrated from an older version of macOS, you might still be using bash. You can check my running `echo $0` in the terminal.*
+
+ If your terminal is using bash instead of zsh...
+
```bash
export DEVKITPRO=/opt/devkitpro
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
@@ -305,15 +387,22 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile
```
+
-### Choosing where to store pokeemerald (macOS)
-At this point, you can choose a folder to store pokeemerald into. If you're okay with storing pokeemerald in the user folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald is stored when changing directory to the pokeemerald folder.
+### Installing Python (macOS)
+1. Download the latest Python package from [here](https://www.python.org/downloads/).
+2. Open the package to install Python.
-For example, if you want to store pokeemerald (and agbcc) in **~/Desktop/decomps**, enter this command to **change directory** to the desired folder:
+Python is now installed.
+
+### Choosing where to store pokeemerald Expansion (macOS)
+At this point, you can choose a folder to store pokeemerald Expansion into. If you're okay with storing pokeemerald Expansion in the user folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald Expansion is stored when changing directory to the pokeemerald-expansion folder.
+
+For example, if you want to store pokeemerald Expansion in **~/Desktop/decomps**, enter this command to **change directory** to the desired folder:
```bash
cd Desktop/decomps
```
-Note that the directory **must exist** in the folder system. If you want to store pokeemerald in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Finder) before executing the `cd` command.
+Note that the directory **must exist** in the folder system. If you want to store pokeemerald Expansion in a dedicated folder that doesn't exist (e.g. the example provided above), then create the folder (e.g. using Finder) before executing the `cd` command.
Note...
@@ -329,30 +418,69 @@ Open Terminal and enter the following commands, depending on which distro you're
### Debian/Ubuntu-based distributions
Run the following command to install the necessary packages:
```bash
-sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
+sudo apt install build-essential binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi git libpng-dev
```
-Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
+Then proceed to [Choosing where to store pokeemerald Expansion (Linux)](#choosing-where-to-store-pokeemerald-expansion-linux).
Note for legacy repos...
> If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
-> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to
+> then you will have to install devkitARM. Install all the above packages except for the arm-none-eabi packages, and follow the instructions to
> [install devkitARM on Debian/Ubuntu-based distributions](#installing-devkitarm-on-debianubuntu-based-distributions).
+### Installing devkitARM on Debian/Ubuntu-based distributions
+
+1. Change directory to somewhere you can download a packages, like a Downloads folder. Then, run the following commands to install devkitARM:
+
+ ```bash
+ wget https://apt.devkitpro.org/install-devkitpro-pacman
+ chmod +x ./install-devkitpro-pacman
+ sudo ./install-devkitpro-pacman
+ sudo dkp-pacman -S gba-dev
+ ```
+ The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
+
+4. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
+
+ ```bash
+ source /etc/profile.d/devkit-env.sh
+ ```
+
+devkitARM is now installed.
+
### Arch Linux
Run this command as root to install the necessary packages:
```bash
-pacman -S base-devel arm-none-eabi-binutils git libpng
+pacman -S base-devel arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib git libpng
```
-Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
-
- Note for legacy repos...
-> If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
-> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to
-> [install devkitARM on Arch Linux](#installing-devkitarm-on-arch-linux).
-
+### Installing devkitARM on Arch Linux
+
+1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages.
+2. Install `gba-dev`: run the following command as root.
+
+ ```console
+ pacman -S gba-dev
+ ```
+ This will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
+
+3. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
+
+ ```bash
+ source /etc/profile.d/devkit-env.sh
+ ```
+
+devkitARM is now installed.
+
+Then proceed to [Choosing where to store pokeemerald Expansion (Linux)](#choosing-where-to-store-pokeemerald-expansion-linux).
+
+### NixOS
+Run the following command to start an interactive shell with the necessary packages:
+```bash
+nix-shell -p pkgsCross.arm-embedded.stdenv.cc git pkg-config libpng
+```
+Then proceed to [Choosing where to store pokeemerald Expansion (Linux)](#choosing-where-to-store-pokeemerald-expansion-linux).
### Other distributions
_(Specific instructions for other distributions would be greatly appreciated!)_
@@ -374,8 +502,11 @@ _(Specific instructions for other distributions would be greatly appreciated!)_
The last command will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
-### Choosing where to store pokeemerald (Linux)
-At this point, you can choose a folder to store pokeemerald (and agbcc) into. If so, you'll have to account for the modified folder path when changing directory to the pokeemerald folder.
+### Installing Python in Linux
+Installing Python depends on your distribution, please refere to the instructions [here](https://docs.python-guide.org/starting/install3/linux/).
+
+### Choosing where to store pokeemerald Expansion (Linux)
+At this point, you can choose a folder to store pokeemerald Expansion into. If so, you'll have to account for the modified folder path when changing directory to the pokeemerald-expansion folder.
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Discord or IRC (see [README.md](README.md)).
@@ -384,12 +515,12 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
Note for Windows users...
-> Consider adding an exception for the `pokeemerald` and/or `decomps` folder in Windows Security using
+> Consider adding an exception for the `pokeemerald-expansion` and/or `decomps` folder in Windows Security using
> [these instructions](https://support.microsoft.com/help/4028485). This prevents Microsoft Defender from
> scanning them which might improve performance while building.
-1. If pokeemerald is not already downloaded (some users may prefer to download pokeemerald via a git client like GitHub Desktop), run:
+1. If pokeemerald Expansion is not already downloaded (some users may prefer to download pokeemerald Expansion via a git client like GitHub Desktop), run:
```bash
git clone https://github.com/rh-hideout/pokeemerald-expansion
@@ -403,54 +534,18 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
> cd
> sudo umount /mnt/c
> sudo mount -t drvfs C: /mnt/c -o metadata,noatime
- > cd
+ > cd
> ```
- > Where *\* is the path of the folder [where you chose to store pokeemerald](#Choosing-where-to-store-pokeemerald-WSL1). Then run the `git clone` command again.
+ > Where *\* is the path of the folder [where you chose to store pokeemerald Expansion](#Choosing-where-to-store-pokeemerald-expansion-WSL1). Then run the `git clone` command again.
+
+Now you're ready to build pokeemerald Expansion.
-2. Install agbcc into pokeemerald. 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 pokeemerald, run the following commands to build and install it into pokeemerald:
+## Build pokeemerald Expansion
- ```bash
- git clone https://github.com/pret/agbcc
- cd agbcc
- ./build.sh
- ./install.sh ../pokeemerald
- ```
-
-- **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 pokeemerald:
-
- ```bash
- cd agbcc
- git clean -fX
- ./build.sh
- ./install.sh ../pokeemerald
- ```
-
-- **Otherwise**, if agbcc has been built before on the same terminal, run the following commands to install agbcc into pokeemerald:
-
- ```bash
- cd agbcc
- ./install.sh ../pokeemerald
- ```
-
-
- Note...
-
- > If building agbcc or pokeemerald results in an error, try deleting the agbcc folder and re-installing agbcc as if it has not been built before.
-
-
-3. Once agbcc is installed, change directory back to the base directory where pokeemerald and agbcc are stored:
-
- ```bash
- cd ..
- ```
-
-Now you're ready to [build **pokeemerald**](#build-pokeemerald)
-## Build pokeemerald
-If you aren't in the pokeemerald directory already, then **change directory** to the pokeemerald folder:
+If you aren't in the pokeemerald-expansion directory already, then **change directory** to the pokeemerald-expansion folder:
```bash
-cd pokeemerald
+cd pokeemerald-expansion
```
To build **pokeemerald.gba** (Note: to speed up builds, see [Parallel builds](#parallel-builds)):
```bash
@@ -480,135 +575,76 @@ Replace `