document contents of BugFixes patch

This commit is contained in:
Martin Michelsen
2025-10-12 23:37:42 -07:00
parent d9d33c2d65
commit 90de571457
6 changed files with 1000 additions and 1221 deletions
+1 -1
View File
@@ -557,7 +557,7 @@ BugFixes
8000C6E8 807F0024 8000C6E8 807F0024 8000C6E8 807F0024 8000C6E8 807F0024 8000C6E8 807F0024 8000C6E8 807F0024 8000C6E8 807F0024 8000C6E8 807F0024 lwz r3, [r31 + 0x0024]
8000C6EC 48165AA0 8000C6EC 482147D4 8000C6EC 482156C0 8000C6EC 48215474 8000C6EC 482146F4 8000C6EC 482146F4 8000C6EC 482157A8 8000C6EC 48215040 b +0x002146F4 /* 80220DE0 */
8021D098 4BDEF638 8021D9FC 4BDEECD4 8021E8E8 4BDEDDE8 8021E69C 4BDEE034 8021D91C 4BDEEDB4 8021D91C 4BDEEDB4 8021E9D0 4BDEDD00 8021E268 4BDEE468 b -0x0021124C /* 8000C6D0 */
80172188 4BE9A558 80220EBC 4BDEB824 80221DA8 4BDEA938 80221B5C 4BDEAB84 80220DDC 4BDEB904 80220DDC 4BDEB904 80221E90 4BDEA850 80221728 4BDEAFB8 b -0x002146FC /* 8000C6E0 */
80220528 4BE9A558 80220EBC 4BDEB824 80221DA8 4BDEA938 80221B5C 4BDEAB84 80220DDC 4BDEB904 80220DDC 4BDEB904 80221E90 4BDEA850 80221728 4BDEAFB8 b -0x002146FC /* 8000C6E0 */
Dropped Mag Colour Bug Fix
BugFixes
+107 -70
View File
@@ -108,6 +108,111 @@ bool CompiledFunctionCode::is_big_endian() const {
return this->arch == Architecture::POWERPC;
}
static unordered_map<uint32_t, std::string> preprocess_function_code(const std::string& text) {
auto parse_specific_version_list = +[](std::string&& text) -> vector<uint32_t> {
phosg::strip_whitespace(text);
vector<uint32_t> ret;
for (auto& vers_token : phosg::split(text, ' ')) {
phosg::strip_whitespace(vers_token);
if (vers_token.empty()) {
continue;
}
if (vers_token.size() != 4) {
throw std::runtime_error("invalid specific_version: " + vers_token);
}
ret.emplace_back(*reinterpret_cast<const be_uint32_t*>(vers_token.data()));
}
return ret;
};
// Find a .versions directive and populate specific_versions
vector<uint32_t> specific_versions;
auto lines = phosg::split(text, '\n');
for (auto& line : lines) {
if (line.starts_with(".versions ")) {
if (!specific_versions.empty()) {
throw std::runtime_error("multiple .versions directives in file");
}
specific_versions = parse_specific_version_list(line.substr(10));
if (specific_versions.empty()) {
throw std::runtime_error(".versions directive does not specify any versions");
}
line.clear();
}
}
// If there's no .versions directive, just return the text as-is
if (specific_versions.empty()) {
return {{0, std::move(text)}};
}
vector<deque<string>> version_lines;
version_lines.resize(specific_versions.size());
size_t line_num = 1;
vector<uint32_t> current_only_versions;
unordered_set<uint32_t> current_only_versions_set;
for (auto& line : lines) {
phosg::strip_whitespace(line);
if (line.starts_with(".only_versions ")) {
current_only_versions = parse_specific_version_list(line.substr(15));
current_only_versions_set.clear();
for (uint32_t specific_version : current_only_versions) {
current_only_versions_set.emplace(specific_version);
}
} else if (line == ".all_versions") {
current_only_versions.clear();
current_only_versions_set.clear();
} else {
size_t vers_offset = line.find("<VERS ");
if (vers_offset == string::npos) {
for (size_t vers_index = 0; vers_index < specific_versions.size(); vers_index++) {
if (current_only_versions.empty() || current_only_versions_set.count(specific_versions[vers_index])) {
version_lines[vers_index].emplace_back(line);
} else {
version_lines[vers_index].emplace_back("");
}
}
} else {
size_t token_index = 0;
for (size_t vers_index = 0; vers_index < specific_versions.size(); vers_index++) {
if (current_only_versions.empty() || current_only_versions_set.count(specific_versions[vers_index])) {
string version_line = line;
size_t vers_offset = line.find("<VERS ");
while (vers_offset != string::npos) {
size_t end_offset = version_line.find('>', vers_offset + 6);
if (end_offset == string::npos) {
throw runtime_error(std::format("(line {}) unterminated <VERS> replacement", line_num));
}
auto tokens = phosg::split(version_line.substr(vers_offset + 6, end_offset - vers_offset - 6), ' ');
if (tokens.size() <= token_index) {
throw runtime_error(std::format("(line {}) invalid <VERS> replacement", line_num));
}
version_line = version_line.substr(0, vers_offset) + tokens.at(token_index) + version_line.substr(end_offset + 1);
vers_offset = version_line.find("<VERS ");
}
version_lines[vers_index].emplace_back(version_line);
token_index++;
} else {
version_lines[vers_index].emplace_back("");
}
}
}
}
line_num++;
}
unordered_map<uint32_t, string> ret;
for (size_t z = 0; z < specific_versions.size(); z++) {
ret.emplace(specific_versions[z], phosg::join(version_lines.at(z), "\n"));
}
return ret;
}
static vector<shared_ptr<CompiledFunctionCode>> compile_function_code(
CompiledFunctionCode::Architecture arch,
const string& function_directory,
@@ -169,78 +274,10 @@ static vector<shared_ptr<CompiledFunctionCode>> compile_function_code(
throw runtime_error("data not found for include: " + name + " (from " + asm_filename + " or " + bin_filename + ")");
};
// Handle VERS tokens
vector<uint32_t> specific_versions;
auto lines = phosg::split(text, '\n');
for (auto& line : lines) {
if (line.starts_with(".versions ")) {
if (!specific_versions.empty()) {
throw std::runtime_error("multiple .versions directives in file");
}
for (auto& vers_token : phosg::split(line.substr(10), ' ')) {
phosg::strip_whitespace(vers_token);
if (vers_token.empty()) {
continue;
}
if (vers_token.size() != 4) {
throw std::runtime_error("invalid token in .version directive: " + vers_token);
}
specific_versions.emplace_back(*reinterpret_cast<const be_uint32_t*>(vers_token.data()));
}
line.clear();
}
}
// Preprocess <VERS> tokens in the text if a .versions directive was given
vector<string> version_texts;
if (specific_versions.empty()) {
specific_versions.emplace_back(0);
version_texts.emplace_back(text);
} else {
vector<deque<string>> version_lines;
version_lines.resize(specific_versions.size());
size_t line_num = 1;
for (const auto& line : lines) {
size_t vers_offset = line.find("<VERS ");
if (vers_offset == string::npos) {
for (auto& lines : version_lines) {
lines.emplace_back(line);
}
} else {
for (size_t vers_index = 0; vers_index < specific_versions.size(); vers_index++) {
string version_line = line;
size_t vers_offset = line.find("<VERS ");
while (vers_offset != string::npos) {
size_t end_offset = version_line.find('>', vers_offset + 6);
if (end_offset == string::npos) {
throw runtime_error(std::format("(line {}) unterminated <VERS> replacement", line_num));
}
auto tokens = phosg::split(version_line.substr(vers_offset + 6, end_offset - vers_offset - 6), ' ');
if (tokens.size() != specific_versions.size()) {
throw runtime_error(std::format("(line {}) invalid <VERS> replacement", line_num));
}
version_line = version_line.substr(0, vers_offset) + tokens.at(vers_index) + version_line.substr(end_offset + 1);
vers_offset = version_line.find("<VERS ");
}
version_lines[vers_index].emplace_back(version_line);
}
}
line_num++;
}
for (const auto& lines : version_lines) {
version_texts.emplace_back(phosg::join(lines, "\n"));
}
}
auto version_texts = preprocess_function_code(text);
vector<shared_ptr<CompiledFunctionCode>> ret;
for (size_t vers_index = 0; vers_index < specific_versions.size(); vers_index++) {
uint32_t specific_version = specific_versions[vers_index];
const auto& version_text = version_texts.at(vers_index);
for (const auto& [specific_version, version_text] : version_texts) {
try {
ResourceDASM::EmulatorBase::AssembleResult assembled;
if (arch == CompiledFunctionCode::Architecture::POWERPC) {
+10 -6
View File
@@ -1714,19 +1714,23 @@ Action a_assemble_quest_script(
Action a_assemble_all_patches(
"assemble-all-patches", "\
assemble-all-patches\n\
assemble-all-patches [--skip-encrypted]\n\
Assemble all patches in the system/client-functions directory, and produce\n\
two compiled .bin files for each patch (one unencrypted, for most PSO\n\
versions, and one encrypted, for PSO GC JP v1.4, JP Ep3, and Ep3 Trial\n\
Edition). The output files are saved in system/client-functions.\n",
+[](phosg::Arguments&) {
+[](phosg::Arguments& args) {
auto fci = make_shared<FunctionCodeIndex>("system/client-functions");
auto process_code = +[](shared_ptr<const CompiledFunctionCode> code,
uint32_t checksum_addr,
uint32_t checksum_size,
uint32_t override_start_addr) -> void {
bool skip_encrypted = args.get<bool>("skip-encrypted");
auto process_code = [&](shared_ptr<const CompiledFunctionCode> code,
uint32_t checksum_addr,
uint32_t checksum_size,
uint32_t override_start_addr) -> void {
for (uint8_t encrypted = 0; encrypted < 2; encrypted++) {
if (encrypted && skip_encrypted) {
continue;
}
phosg::StringWriter w;
string data = prepare_send_function_call_data(
code, {}, nullptr, 0, checksum_addr, checksum_size, override_start_addr, encrypted);
@@ -1,590 +0,0 @@
.meta name="Bug fixes"
.meta description="Fixes many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever and Aleron Ives
# https://www.gc-forever.com/forums/viewtopic.php?t=2050
# https://www.gc-forever.com/forums/viewtopic.php?t=2049
.versions 3OE0 3OE1 3OJ2
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
.data 0x8000B088
.data 0x00000058
.data 0x7FA3EB78
.data 0x38800000
.data <VERS 0x481AEB11 0x481AEB11 0x481AE725>
.data 0x7FA3EB78
.data <VERS 0x481AEDE0 0x481AEDE0 0x481AE9F4>
.data 0x881F0000
.data 0x28090001
.data 0x4082000C
.data 0x881F0001
.data 0x3BFF0002
.data <VERS 0x48100B68 0x48100B68 0x481008C4>
.data 0x39200000
.data <VERS 0x48100AF9 0x48100AF9 0x48100855>
.data 0x7F43D378
.data 0x7F64DB78
.data 0x7F85E378
.data 0x7FA6EB78
.data 0x7FC7F378
.data 0x7FE8FB78
.data 0x39200001
.data <VERS 0x48100AD9 0x48100AD9 0x48100835>
.data <VERS 0x48102F64 0x48102F64 0x48102CC0>
.data 0x8000B5C8
.data 0x00000014
.data 0x80630098
.data <VERS 0x483D5999 0x483D59F1 0x483D46F5>
.data 0x807F042C
.data 0x809F0430
.data <VERS 0x48178C7C 0x48178C7C 0x481788C0>
.data 0x8000BBD0
.data 0x00000020
.data 0x809F0370
.data 0x3884FC00
.data 0x909F0370
.data 0x807F0014
.data 0x28030000
.data 0x41820008
.data 0x90830060
.data <VERS 0x48165428 0x48165428 0x4816506C>
.data 0x8000C3F8
.data 0x0000007C
.data 0x28040000
.data 0x4D820020
.data 0x9421FFF0
.data <VERS 0x481AD7A0 0x481AD7A0 0x481AD3B4>
.data 0x9421FFE0
.data 0x7C0802A6
.data 0x90010024
.data 0xBF410008
.data 0x7C7F1B78
.data 0x4BFFFFDD
.data 0x3BC00000
.data 0x3BBF0D04
.data 0x837F032C
.data 0x839D0000
.data 0x7F83E379
.data 0x41820018
.data 0x38800001
.data <VERS 0x480FED81 0x480FED81 0x480FEADD>
.data 0x7F83E378
.data 0x38800001
.data <VERS 0x480FEEF1 0x480FEEF1 0x480FEC4D>
.data 0x3BBD0004
.data 0x3BDE0001
.data 0x2C1E000D
.data 0x4180FFD4
.data 0x937F032C
.data 0xBB410008
.data 0x80010024
.data 0x7C0803A6
.data 0x38210020
.data 0x4E800020
.data 0x8000C640
.data 0x00000014
.data 0x54800673
.data 0x41820008
.data 0x38800000
.data 0x38040009
.data <VERS 0x4810C938 0x4810C938 0x4810C694>
.data 0x8000C6D0
.data 0x00000020
.data 0x38000001
.data 0x901D0054
.data 0x807D0024
.data <VERS 0x48211244 0x48211244 0x482109C0>
.data 0x38000001
.data 0x901F0378
.data 0x807F0024
.data <VERS 0x482146F4 0x482146F4 0x48165AA0>
.data 0x8000C8A0
.data 0x00000014
.data 0x1C00000A
.data 0x57E407BD
.data 0x41820008
.data 0x7FA00734
.data <VERS 0x4810605C 0x4810605C 0x48105DB8>
.data 0x8000C8C0
.data 0x00000010
.data 0x7000000F
.data 0x7000004F
.data 0x2C000004
.data 0x4E800020
.data 0x8000D980
.data 0x00000014
.data 0x807C0000
.data 0x2C030013
.data 0x40820008
.data 0x38600002
.data <VERS 0x482AE568 0x482AE5AC 0x482ADB24>
.data 0x8000D9A0
.data 0x00000018
.data <VERS 0xC042FC88 0xC042FC88 0xC042FC78>
.data 0x807E0030
.data 0x70630020
.data 0x41820008
.data <VERS 0xC042FCA0 0xC042FCA0 0xC042FC90>
.data <VERS 0x483280A0 0x483280E4 0x483276B0>
.data 0x8000E1E0
.data 0x0000001C
.data 0x7FC802A6
.data 0x38A00000
.data 0x38C0001E
.data 0x38E00040
.data <VERS 0x4807853D 0x4807853D 0x480782B1>
.data 0x7FC803A6
.data 0x4E800020
.data <VERS 0x80013084 0x80013084 0x8001306C>
.data 0x00000004
.data 0x4BFFFCC0
.data <VERS 0x800142F4 0x800142F4 0x800142DC>
.data 0x00000004
.data <VERS 0x4BFF85CD 0x4BFF85CD 0x4BFF85E5>
.data <VERS 0x80015D1C 0x80015D1C 0x80015D04>
.data 0x00000004
.data <VERS 0x4BFF6BA9 0x4BFF6BA9 0x4BFF6BC1>
.data <VERS 0x800917B4 0x800917B4 0x80091528>
.data 0x00000008
.data 0x4800024D
.data 0xB3C3032C
.data <VERS 0x800BC9E8 0x800BC9E8 0x800BC750>
.data 0x00000004
.data 0x48000010
.data <VERS 0x80101EB8 0x80101EB8 0x80101C14>
.data 0x00000004
.data 0x60000000
.data <VERS 0x80104DEC 0x80104DEC 0x80104B48>
.data 0x00000004
.data 0x4182000C
.data <VERS 0x8010771C 0x8010771C 0x80107478>
.data 0x00000004
.data 0x4800000C
.data <VERS 0x80107730 0x80107730 0x8010748C>
.data 0x00000004
.data 0x7C030378
.data <VERS 0x8010BC14 0x8010BC14 0x8010B970>
.data 0x00000004
.data <VERS 0x4BEFF488 0x4BEFF488 0x4BEFF72C>
.data <VERS 0x8010E03C 0x8010E03C 0x8010DD98>
.data 0x00000004
.data <VERS 0x4BEFD078 0x4BEFD078 0x4BEFD31C>
.data <VERS 0x80112908 0x80112908 0x80112664>
.data 0x00000004
.data <VERS 0x4BEF9F98 0x4BEF9F98 0x4BEFA23C>
.data <VERS 0x8011461C 0x8011461C 0x80114378>
.data 0x00000004
.data 0x38000012
.data <VERS 0x80118854 0x80118854 0x801185B0>
.data 0x00000004
.data 0x88040016
.data <VERS 0x80118860 0x80118860 0x801185BC>
.data 0x00000004
.data 0x88040017
.data <VERS 0x80118F84 0x80118F84 0x80118CE0>
.data 0x00000004
.data <VERS 0x4BEF36BC 0x4BEF36BC 0x4BEF3960>
.data <VERS 0x8011CD34 0x8011CD34 0x8011CA90>
.data 0x0000000C
.data 0x7C030378
.data 0x3863FFFF
.data 0x4BFFFFE8
.data <VERS 0x8011CDF0 0x8011CDF0 0x8011CB4C>
.data 0x0000000C
.data 0x7C030378
.data 0x3863FFFF
.data 0x4BFFFFE8
.data <VERS 0x8011CE40 0x8011CE40 0x8011CB9C>
.data 0x0000000C
.data 0x7C040378
.data 0x3884FFFF
.data 0x4BFFFFE8
.data <VERS 0x801666E0 0x801666E0 0x80166324>
.data 0x00000008
.data 0x3C604005
.data 0x4800009C
.data <VERS 0x8016677C 0x8016677C 0x801663C0>
.data 0x00000004
.data 0x4800001C
.data <VERS 0x80171010 0x80171010 0x80170C54>
.data 0x00000004
.data <VERS 0x4BE9ABC0 0x4BE9ABC0 0x4BE9AF7C>
.data <VERS 0x80171030 0x80171030 0x80170C74>
.data 0x00000004
.data 0x60800420
.data <VERS 0x80184250 0x80184250 0x80172188>
.data 0x00000004
.data <VERS 0x4BE87378 0x4BE87378 0x4BE9A558>
.data <VERS 0x80184290 0x80184290 0x80183E94>
.data 0x00000004
.data <VERS 0x60000000 0x60000000 0x4BE87734>
.data <VERS 0x80189E20 0x80189E20 0x80183ED4>
.data 0x00000004
.data 0x60000000
.data <VERS 0x801937A8 0x801937A8 0x80189A54>
.data 0x00000004
.data 0x60000000
.data <VERS 0x801B9BA0 0x801B9BA0 0x801933DC>
.data 0x00000004
.data <VERS 0x4BE52868 0x4BE52868 0x60000000>
.data <VERS 0x801B9E74 0x801B9E74 0x801B97B4>
.data 0x00000004
.data <VERS 0x4BE51214 0x4BE51214 0x4BE52C54>
.data <VERS 0x801C62C0 0x801C62C0 0x801B9A88>
.data 0x00000004
.data <VERS 0x389F02FC 0x389F02FC 0x4BE51600>
.data <VERS 0x801CA610 0x801CA610 0x801C5EA4>
.data 0x00000004
.data <VERS 0x48000010 0x48000010 0x389F02FC>
.data <VERS 0x8021D91C 0x8021D91C 0x801CA1F4>
.data 0x00000004
.data <VERS 0x4BDEEDB4 0x4BDEEDB4 0x48000010>
.data <VERS 0x80220DDC 0x80220DDC 0x8021D098>
.data 0x00000004
.data <VERS 0x4BDEB904 0x4BDEB904 0x4BDEF638>
.data <VERS 0x80229C10 0x80229C10 0x80229354>
.data 0x00000004
.data 0x2C000001
.data <VERS 0x8022A410 0x8022A410 0x80229B54>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8022A440 0x8022A440 0x80229B84>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8022A470 0x8022A470 0x80229BB4>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8022D10C 0x8022D10C 0x8022C850>
.data 0x00000004
.data 0x60000000
.data <VERS 0x8022D840 0x8022D840 0x8022CF84>
.data 0x00000004
.data 0x41810630
.data <VERS 0x8022DB34 0x8022DB34 0x8022D278>
.data 0x00000004
.data 0x4181033C
.data <VERS 0x8022DC28 0x8022DC28 0x8022D36C>
.data 0x00000004
.data 0x41810248
.data <VERS 0x8022EB64 0x8022EB64 0x8022E2A8>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8022EB94 0x8022EB94 0x8022E2D8>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8022EBC4 0x8022EBC4 0x8022E308>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8022F370 0x8022F370 0x8022EAB4>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8022F3A0 0x8022F3A0 0x8022EAE4>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8022F3D0 0x8022F3D0 0x8022EB14>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80230974 0x80230974 0x802300B8>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802309A4 0x802309A4 0x802300E8>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802309D4 0x802309D4 0x80230118>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x802316E4 0x802316E4 0x80230E08>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80231714 0x80231714 0x80230E38>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80231744 0x80231744 0x80230E68>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80231FD8 0x80231FD8 0x802316FC>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80232010 0x80232010 0x80231734>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80232048 0x80232048 0x8023176C>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80234084 0x80234084 0x802337A8>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802340B4 0x802340B4 0x802337D8>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802340E4 0x802340E4 0x80233808>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x802366B0 0x802366B0 0x80235DD4>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802366EC 0x802366EC 0x80235E10>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80236728 0x80236728 0x80235E4C>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80236E88 0x80236E88 0x802365AC>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80236EB8 0x80236EB8 0x802365DC>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80236EE8 0x80236EE8 0x8023660C>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8023789C 0x8023789C 0x80236FC0>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802378CC 0x802378CC 0x80236FF0>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802378FC 0x802378FC 0x80237020>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80238274 0x80238274 0x80237998>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802382A4 0x802382A4 0x802379C8>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802382D4 0x802382D4 0x802379F8>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8023BBA4 0x8023BBA4 0x8023B2C8>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8023BBD4 0x8023BBD4 0x8023B2F8>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8023BC04 0x8023BC04 0x8023B328>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80250AEC 0x80250AEC 0x80250264>
.data 0x00000004
.data 0x60000000
.data <VERS 0x80268788 0x80268788 0x80267DDC>
.data 0x00000004
.data 0x60000000
.data <VERS 0x8026E2D4 0x8026E2D4 0x8026DA74>
.data 0x00000004
.data 0x3884AAFA
.data <VERS 0x8026E3E8 0x8026E3E8 0x8026DB88>
.data 0x00000004
.data 0x3863AAFA
.data <VERS 0x8026E470 0x8026E470 0x8026DC10>
.data 0x00000004
.data 0x3883AAFA
.data <VERS 0x802BBEF4 0x802BBF38 0x802BB4B0>
.data 0x00000004
.data <VERS 0x4BD51A8C 0x4BD51A48 0x4BD524D0>
.data <VERS 0x802FC2F4 0x802FC338 0x802FB99C>
.data 0x00000004
.data 0x2C030001
.data <VERS 0x80301F58 0x80301F9C 0x80301600>
.data 0x0000001C
.data 0x48000020
.data 0x3863A830
.data <VERS 0x800DB9A4 0x800DB9A4 0x800DB98C>
.data 0x2C000023
.data 0x40820008
.data 0x3863FB28
.data 0x4800008C
.data <VERS 0x80301FF8 0x8030203C 0x803016A0>
.data 0x00000004
.data 0x4BFFFF64
.data <VERS 0x80335A50 0x80335A94 0x80335060>
.data 0x00000004
.data <VERS 0x4BCD7F50 0x4BCD7F0C 0x4BCD8940>
.data <VERS 0x80356814 0x80356858 0x80355960>
.data 0x00000004
.data 0x388001E8
.data <VERS 0x80356838 0x8035687C 0x80355984>
.data 0x00000004
.data <VERS 0x4BCB79A9 0x4BCB7965 0x4BCB885D>
.data <VERS 0x803568A8 0x803568EC 0x803559F4>
.data 0x00000004
.data 0x388001E8
.data <VERS 0x803568B8 0x803568FC 0x80355A04>
.data 0x00000004
.data <VERS 0x4BCB7929 0x4BCB78E5 0x4BCB87DD>
.data <VERS 0x804B3EF0 0x804B43D0 0x804B3738>
.data 0x00000008
.data 0x70808080
.data 0x60707070
.data <VERS 0x804C76B4 0x804C7B94 0x804C6EE4>
.data 0x00000004
.data 0x0000001E
.data <VERS 0x804C770C 0x804C7BEC 0x804C6F3C>
.data 0x00000004
.data 0x00000028
.data <VERS 0x804C7738 0x804C7C18 0x804C6F68>
.data 0x00000004
.data 0x00000032
.data <VERS 0x804C7764 0x804C7C44 0x804C6F94>
.data 0x00000004
.data 0x0000003C
.data <VERS 0x804C7774 0x804C7C54 0x804C6FA4>
.data 0x00000004
.data 0x0018003C
.data <VERS 0x804C79CC 0x804C7EAC 0x804C71FC>
.data 0x00000004
.data 0x00000028
.data <VERS 0x804CC310 0x804CC7F0 0x804CBB40>
.data 0x00000004
.data 0xFF0074EE
.data <VERS 0x805CA274 0x805D1294 0x805C996C>
.data 0x00000004
.data 0x435C0000
.data <VERS 0x805CBF10 0x805D2F30 0x805CB608>
.data 0x00000004
.data 0x46AFC800
.data <VERS 0x805CC1B0 0x805D31D0 0x805CB8A8>
.data 0x00000004
.data 0x43480000
# Belra arm bug fix (this part by fuzziqersoftware)
.data <VERS 0x800959B0 0x800959B0 0x80095724>
.data 0x00000004
.address <VERS 0x800959B0 0x800959B0 0x80095724>
bl belra_bugfix_hook1
.data <VERS 0x800959C0 0x800959C0 0x80095734>
.data 0x00000004
.address <VERS 0x800959C0 0x800959C0 0x80095734>
bl belra_bugfix_hook2
.data 0x8000B06C
.deltaof belra_bugfix_hook1, belra_bugfix_end
.address 0x8000B06C
belra_bugfix_hook1:
li r0, 1
stw [r13 - <VERS 0x2E30 0x2E30 0x2E48>], r0 # Anchor: 80039388 @ 3OE1
b [<VERS 803D4410 803D4468 803D3140>]
belra_bugfix_hook2:
li r4, 0
stw [r13 - <VERS 0x2E30 0x2E30 0x2E48>], r4
lwz r4, [r28 + 0x04]
blr
belra_bugfix_end:
.data 0x00000000
.data 0x00000000
@@ -1,554 +0,0 @@
.meta name="Bug fixes"
.meta description="Fixes many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever and Aleron Ives
# https://www.gc-forever.com/forums/viewtopic.php?t=2050
# https://www.gc-forever.com/forums/viewtopic.php?t=2049
.versions 3OE2 3OJ3 3OJ4 3OJ5 3OP0
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
.data 0x8000B088
.data 0x00000058
.data 0x7FA3EB78
.data 0x38800000
.data <VERS 0x481AECC1 0x481AEB91 0x481B1C09 0x481AEC5D 0x481AF17D>
.data 0x7FA3EB78
.data <VERS 0x481AEF90 0x481AEE60 0x481B1ED8 0x481AEF2C 0x481AF44C>
.data 0x881F0000
.data 0x28090001
.data 0x4082000C
.data 0x881F0001
.data 0x3BFF0002
.data <VERS 0x48100A54 0x48100AC4 0x48100B58 0x48100A44 0x48100C44>
.data 0x39200000
.data <VERS 0x481009E5 0x48100A55 0x48100AE9 0x481009D5 0x48100BD5>
.data 0x7F43D378
.data 0x7F64DB78
.data 0x7F85E378
.data 0x7FA6EB78
.data 0x7FC7F378
.data 0x7FE8FB78
.data 0x39200001
.data <VERS 0x481009C5 0x48100A35 0x48100AC9 0x481009B5 0x48100BB5>
.data <VERS 0x48102E5C 0x48102EC0 0x4810300C 0x48102E4C 0x48103040>
.data 0x8000B5C8
.data 0x00000014
.data 0x80630098
.data <VERS 0x483D90F1 0x483D70D1 0x483D8F71 0x483D8D21 0x483D7BE1>
.data 0x807F042C
.data 0x809F0430
.data <VERS 0x48178DB0 0x48178C88 0x48178DEC 0x48178D4C 0x48179274>
.data 0x8000BBD0
.data 0x00000020
.data 0x809F0370
.data 0x3884FC00
.data 0x909F0370
.data 0x807F0014
.data 0x28030000
.data 0x41820008
.data 0x90830060
.data <VERS 0x48165548 0x48165420 0x48165678 0x481654E4 0x48165A0C>
.data 0x8000C3F8
.data 0x0000007C
.data 0x28040000
.data 0x4D820020
.data 0x9421FFF0
.data <VERS 0x481AD950 0x481AD820 0x481B0898 0x481AD8EC 0x481ADE0C>
.data 0x9421FFE0
.data 0x7C0802A6
.data 0x90010024
.data 0xBF410008
.data 0x7C7F1B78
.data 0x4BFFFFDD
.data 0x3BC00000
.data 0x3BBF0D04
.data 0x837F032C
.data 0x839D0000
.data 0x7F83E379
.data 0x41820018
.data 0x38800001
.data <VERS 0x480FEC6D 0x480FECDD 0x480FEDC9 0x480FEC5D 0x480FEE5D>
.data 0x7F83E378
.data 0x38800001
.data <VERS 0x480FEDDD 0x480FEE4D 0x480FEF49 0x480FEDCD 0x480FEFCD>
.data 0x3BBD0004
.data 0x3BDE0001
.data 0x2C1E000D
.data 0x4180FFD4
.data 0x937F032C
.data 0xBB410008
.data 0x80010024
.data 0x7C0803A6
.data 0x38210020
.data 0x4E800020
.data 0x8000C640
.data 0x00000014
.data 0x54800673
.data 0x41820008
.data 0x38800000
.data 0x38040009
.data <VERS 0x4810C858 0x4810C8B0 0x4810C98C 0x4810C848 0x4810CA30>
.data 0x8000C6D0
.data 0x00000020
.data 0x38000001
.data 0x901D0054
.data 0x807D0024
.data <VERS 0x482122F8 0x48211324 0x48212210 0x48211FC4 0x48211B90>
.data 0x38000001
.data 0x901F0378
.data 0x807F0024
.data <VERS 0x482157A8 0x482147D4 0x482156C0 0x48215474 0x48215040>
.data 0x8000C8A0
.data 0x00000014
.data 0x1C00000A
.data 0x57E407BD
.data 0x41820008
.data 0x7FA00734
.data <VERS 0x48105F54 0x48105FB8 0x48106190 0x48105F44 0x48106138>
.data 0x8000C8C0
.data 0x00000010
.data 0x7000000F
.data 0x7000004F
.data 0x2C000004
.data 0x4E800020
.data 0x8000D980
.data 0x00000014
.data 0x807C0000
.data 0x2C030013
.data 0x40820008
.data 0x38600002
.data <VERS 0x482AFAE8 0x482AEA54 0x482AFB9C 0x482AF934 0x482AF27C>
.data 0x8000D9A0
.data 0x00000018
.data <VERS 0xC042FC88 0xC042FC80 0xC042FC80 0xC042FC80 0xC042FC88>
.data 0x807E0030
.data 0x70630020
.data 0x41820008
.data <VERS 0xC042FCA0 0xC042FC98 0xC042FC98 0xC042FC98 0xC042FCA0>
.data <VERS 0x48329BC0 0x4832871C 0x48329C38 0x483299EC 0x48329004>
.data 0x8000E1E0
.data 0x0000001C
.data 0x7FC802A6
.data 0x38A00000
.data 0x38C0001E
.data 0x38E00040
.data <VERS 0x480786D5 0x4807859D 0x48078715 0x480786C5 0x4807869D>
.data 0x7FC803A6
.data 0x4E800020
.data <VERS 0x8001304C 0x8001309C 0x80013364 0x8001304C 0x800130C4>
.data 0x00000004
.data 0x4BFFFCC0
.data <VERS 0x800142BC 0x8001430C 0x800146A4 0x800142BC 0x80014334>
.data 0x00000004
.data <VERS 0x4BFF8605 0x4BFF85B5 0x4BFF821D 0x4BFF8605 0x4BFF858D>
.data <VERS 0x80015CE4 0x80015D34 0x80016174 0x80015CE4 0x80015D5C>
.data 0x00000004
.data <VERS 0x4BFF6BE1 0x4BFF6B91 0x4BFF6751 0x4BFF6BE1 0x4BFF6B69>
.data <VERS 0x8009194C 0x80091814 0x8009198C 0x8009193C 0x80091914>
.data 0x00000008
.data 0x4800024D
.data 0xB3C3032C
.data <VERS 0x800BCB90 0x800BCA58 0x800BCBD0 0x800BCB80 0x800BCB58>
.data 0x00000004
.data 0x48000010
.data <VERS 0x80104CB4 0x80104D24 0x80104DE0 0x80104CA4 0x80104EA4>
.data 0x00000004
.data 0x4182000C
.data <VERS 0x801075E4 0x80107654 0x80107708 0x801075D4 0x801077D4>
.data 0x00000004
.data 0x4800000C
.data <VERS 0x801075F8 0x80107668 0x8010771C 0x801075E8 0x801077E8>
.data 0x00000004
.data 0x7C030378
.data <VERS 0x8010BB00 0x8010BB70 0x8010BC04 0x8010BAF0 0x8010BCF0>
.data 0x00000004
.data <VERS 0x4BEFF59C 0x4BEFF52C 0x4BEFF498 0x4BEFF5AC 0x4BEFF3AC>
.data <VERS 0x8010DF34 0x8010DF98 0x8010E0E4 0x8010DF24 0x8010E118>
.data 0x00000004
.data <VERS 0x4BEFD180 0x4BEFD11C 0x4BEFCFD0 0x4BEFD190 0x4BEFCF9C>
.data <VERS 0x80112800 0x80112864 0x80112A3C 0x801127F0 0x801129E4>
.data 0x00000004
.data <VERS 0x4BEFA0A0 0x4BEFA03C 0x4BEF9E64 0x4BEFA0B0 0x4BEF9EBC>
.data <VERS 0x80114534 0x8011458C 0x80114634 0x80114524 0x8011470C>
.data 0x00000004
.data 0x38000012
.data <VERS 0x80118774 0x801187CC 0x8011885C 0x80118764 0x8011894C>
.data 0x00000004
.data 0x88040016
.data <VERS 0x80118780 0x801187D8 0x80118868 0x80118770 0x80118958>
.data 0x00000004
.data 0x88040017
.data <VERS 0x80118EA4 0x80118EFC 0x80118FD8 0x80118E94 0x8011907C>
.data 0x00000004
.data <VERS 0x4BEF379C 0x4BEF3744 0x4BEF3668 0x4BEF37AC 0x4BEF35C4>
.data <VERS 0x8011CC7C 0x8011CCD4 0x8011CD0C 0x8011CC6C 0x8011CE54>
.data 0x0000000C
.data 0x7C030378
.data 0x3863FFFF
.data 0x4BFFFFE8
.data <VERS 0x8011CD38 0x8011CD90 0x8011CDC8 0x8011CD28 0x8011CF10>
.data 0x0000000C
.data 0x7C030378
.data 0x3863FFFF
.data 0x4BFFFFE8
.data <VERS 0x8011CD88 0x8011CDE0 0x8011CE18 0x8011CD78 0x8011CF60>
.data 0x0000000C
.data 0x7C040378
.data 0x3884FFFF
.data 0x4BFFFFE8
.data <VERS 0x80166800 0x801666D8 0x80166848 0x8016679C 0x80166CC4>
.data 0x00000008
.data 0x3C604005
.data 0x4800009C
.data <VERS 0x8016689C 0x80166774 0x801668E4 0x80166838 0x80166D60>
.data 0x00000004
.data 0x4800001C
.data <VERS 0x80171130 0x80171008 0x80171260 0x801710CC 0x801715F4>
.data 0x00000004
.data <VERS 0x4BE9AAA0 0x4BE9ABC8 0x4BE9A970 0x4BE9AB04 0x4BE9A5DC>
.data <VERS 0x80171150 0x80171028 0x80171280 0x801710EC 0x80171614>
.data 0x00000004
.data 0x60800420
.data <VERS 0x80184384 0x8018425C 0x801843C0 0x80184320 0x80184848>
.data 0x00000004
.data <VERS 0x4BE87244 0x4BE8736C 0x4BE87208 0x4BE872A8 0x4BE86D80>
.data <VERS 0x801843C4 0x8018429C 0x80184400 0x80184360 0x80184888>
.data 0x00000004
.data 0x60000000
.data <VERS 0x80189F54 0x80189E2C 0x80189F90 0x80189EF0 0x8018A418>
.data 0x00000004
.data 0x60000000
.data <VERS 0x801938D8 0x801937B0 0x80193914 0x80193874 0x80193D9C>
.data 0x00000004
.data 0x60000000
.data <VERS 0x801B9D50 0x801B9C20 0x801BCC98 0x801B9CEC 0x801BA20C>
.data 0x00000004
.data <VERS 0x4BE526B8 0x4BE527E8 0x4BE4F770 0x4BE5271C 0x4BE521FC>
.data <VERS 0x801BA024 0x801B9EF4 0x801BCF6C 0x801B9FC0 0x801BA4E0>
.data 0x00000004
.data <VERS 0x4BE51064 0x4BE51194 0x4BE4E11C 0x4BE510C8 0x4BE50BA8>
.data <VERS 0x801C6490 0x801C6360 0x801C6604 0x801C642C 0x801C694C>
.data 0x00000004
.data 0x389F02FC
.data <VERS 0x801CA810 0x801CA6E0 0x801CB5EC 0x801CA7AC 0x801CACCC>
.data 0x00000004
.data 0x48000010
.data <VERS 0x8021E9D0 0x8021D9FC 0x8021E8E8 0x8021E69C 0x8021E268>
.data 0x00000004
.data <VERS 0x4BDEDD00 0x4BDEECD4 0x4BDEDDE8 0x4BDEE034 0x4BDEE468>
.data <VERS 0x80221E90 0x80220EBC 0x80221DA8 0x80221B5C 0x80221728>
.data 0x00000004
.data <VERS 0x4BDEA850 0x4BDEB824 0x4BDEA938 0x4BDEAB84 0x4BDEAFB8>
.data <VERS 0x8022ACC4 0x80229CF0 0x8022ABDC 0x8022A990 0x8022A55C>
.data 0x00000004
.data 0x2C000001
.data <VERS 0x8022B4C4 0x8022A4F0 0x8022B3E0 0x8022B190 0x8022AD5C>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8022B4F4 0x8022A520 0x8022B410 0x8022B1C0 0x8022AD8C>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8022B524 0x8022A550 0x8022B440 0x8022B1F0 0x8022ADBC>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8022E1C0 0x8022D1EC 0x8022E128 0x8022DE8C 0x8022DA58>
.data 0x00000004
.data 0x60000000
.data <VERS 0x8022E8F4 0x8022D920 0x8022E85C 0x8022E5C0 0x8022E18C>
.data 0x00000004
.data 0x41810630
.data <VERS 0x8022FC18 0x8022EC44 0x8022FB30 0x8022F8E4 0x8022F4B0>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8022FC48 0x8022EC74 0x8022FB60 0x8022F914 0x8022F4E0>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8022FC78 0x8022ECA4 0x8022FB90 0x8022F944 0x8022F510>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80230424 0x8022F450 0x80230340 0x802300F0 0x8022FCBC>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80230454 0x8022F480 0x80230370 0x80230120 0x8022FCEC>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80230484 0x8022F4B0 0x802303A0 0x80230150 0x8022FD1C>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80231A28 0x80230A54 0x80231940 0x802316F4 0x802312C0>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80231A58 0x80230A84 0x80231970 0x80231724 0x802312F0>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80231A88 0x80230AB4 0x802319A0 0x80231754 0x80231320>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80232798 0x802317C4 0x802326B0 0x80232464 0x80232030>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802327C8 0x802317F4 0x802326E0 0x80232494 0x80232060>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802327F8 0x80231824 0x80232710 0x802324C4 0x80232090>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8023308C 0x802320B8 0x80232FA4 0x80232D58 0x80232924>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802330C4 0x802320F0 0x80232FDC 0x80232D90 0x8023295C>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802330FC 0x80232128 0x80233014 0x80232DC8 0x80232994>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80235138 0x80234164 0x80235050 0x80234E04 0x802349D0>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80235168 0x80234194 0x80235080 0x80234E34 0x80234A00>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80235198 0x802341C4 0x802350B0 0x80234E64 0x80234A30>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80237764 0x80236790 0x8023767C 0x80237430 0x80236FFC>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x802377A0 0x802367CC 0x802376B8 0x8023746C 0x80237038>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802377DC 0x80236808 0x802376F4 0x802374A8 0x80237074>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80237F3C 0x80236F68 0x80237E54 0x80237C08 0x802377D4>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80237F6C 0x80236F98 0x80237E84 0x80237C38 0x80237804>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80237F9C 0x80236FC8 0x80237EB4 0x80237C68 0x80237834>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80238950 0x8023797C 0x80238868 0x8023861C 0x802381E8>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80238980 0x802379AC 0x80238898 0x8023864C 0x80238218>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x802389B0 0x802379DC 0x802388C8 0x8023867C 0x80238248>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80239328 0x80238354 0x80239240 0x80238FF4 0x80238BC0>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x80239358 0x80238384 0x80239270 0x80239024 0x80238BF0>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x80239388 0x802383B4 0x802392A0 0x80239054 0x80238C20>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x8023CC58 0x8023BC84 0x8023CB70 0x8023C924 0x8023C4F0>
.data 0x00000004
.data 0x3880FF00
.data <VERS 0x8023CC88 0x8023BCB4 0x8023CBA0 0x8023C954 0x8023C520>
.data 0x00000004
.data 0x3880FE80
.data <VERS 0x8023CCB8 0x8023BCE4 0x8023CBD0 0x8023C984 0x8023C550>
.data 0x00000004
.data 0x3880FDB0
.data <VERS 0x80251C68 0x80250CB0 0x80251CA4 0x802519A4 0x802514B0>
.data 0x00000004
.data 0x60000000
.data <VERS 0x80269B5C 0x80268A88 0x80269AE4 0x80269898 0x802693A4>
.data 0x00000004
.data 0x60000000
.data <VERS 0x8026F6FC 0x8026E738 0x8026F794 0x8026F548 0x8026EF44>
.data 0x00000004
.data 0x3884AAFA
.data <VERS 0x8026F810 0x8026E84C 0x8026F8A8 0x8026F65C 0x8026F058>
.data 0x00000004
.data 0x3863AAFA
.data <VERS 0x8026F898 0x8026E8D4 0x8026F930 0x8026F6E4 0x8026F0E0>
.data 0x00000004
.data 0x3883AAFA
.data <VERS 0x802BD474 0x802BC3E0 0x802BD528 0x802BD2C0 0x802BCC08>
.data 0x00000004
.data <VERS 0x4BD5050C 0x4BD515A0 0x4BD50458 0x4BD506C0 0x4BD50D78>
.data <VERS 0x802FDD28 0x802FC968 0x802FDE60 0x802FDB6C 0x802FD100>
.data 0x00000004
.data 0x2C030001
.data <VERS 0x8030398C 0x803025CC 0x80303A1C 0x803037D0 0x80302D64>
.data 0x0000001C
.data 0x48000020
.data 0x3863A830
.data <VERS 0x800DB9C4 0x800DB994 0x800DB9B4 0x800DB9B4 0x800DBA04>
.data 0x2C000023
.data 0x40820008
.data 0x3863FB28
.data 0x4800008C
.data <VERS 0x80303A2C 0x8030266C 0x80303ABC 0x80303870 0x80302E04>
.data 0x00000004
.data 0x4BFFFF64
.data <VERS 0x80337570 0x803360CC 0x803375E8 0x8033739C 0x803369B4>
.data 0x00000004
.data <VERS 0x4BCD6430 0x4BCD78D4 0x4BCD63B8 0x4BCD6604 0x4BCD6FEC>
.data <VERS 0x80358440 0x80356D64 0x803582C0 0x80358074 0x80357834>
.data 0x00000004
.data 0x388001E8
.data <VERS 0x80358464 0x80356D88 0x803582E4 0x80358098 0x80357858>
.data 0x00000004
.data <VERS 0x4BCB5D7D 0x4BCB7459 0x4BCB5EFD 0x4BCB6149 0x4BCB6989>
.data <VERS 0x803584D4 0x80356DF8 0x80358354 0x80358108 0x803578C8>
.data 0x00000004
.data 0x388001E8
.data <VERS 0x803584E4 0x80356E08 0x80358364 0x80358118 0x803578D8>
.data 0x00000004
.data <VERS 0x4BCB5CFD 0x4BCB73D9 0x4BCB5E7D 0x4BCB60C9 0x4BCB6909>
.data <VERS 0x804B8990 0x804B6E58 0x804B92F8 0x804B90B8 0x804B8E10>
.data 0x00000008
.data 0x70808080
.data 0x60707070
.data <VERS 0x804CC1E4 0x804CA61C 0x804CCB6C 0x804CC90C 0x804CC5D4>
.data 0x00000004
.data 0x0000001E
.data <VERS 0x804CC23C 0x804CA674 0x804CCBC4 0x804CC964 0x804CC62C>
.data 0x00000004
.data 0x00000028
.data <VERS 0x804CC268 0x804CA6A0 0x804CCBF0 0x804CC990 0x804CC658>
.data 0x00000004
.data 0x00000032
.data <VERS 0x804CC294 0x804CA6CC 0x804CCC1C 0x804CC9BC 0x804CC684>
.data 0x00000004
.data 0x0000003C
.data <VERS 0x804CC2A4 0x804CA6DC 0x804CCC2C 0x804CC9CC 0x804CC694>
.data 0x00000004
.data 0x0018003C
.data <VERS 0x804CC4FC 0x804CA934 0x804CCE84 0x804CCC24 0x804CC8EC>
.data 0x00000004
.data 0x00000028
.data <VERS 0x804D0E58 0x804CF290 0x804D17E0 0x804D1580 0x804D1248>
.data 0x00000004
.data 0xFF0074EE
.data <VERS 0x805DAAB4 0x805D3F6C 0x805DB40C 0x805DB1AC 0x805D6CF4>
.data 0x00000004
.data 0x435C0000
.data <VERS 0x805DC750 0x805D5C08 0x805DD0A8 0x805DCE48 0x805D8990>
.data 0x00000004
.data 0x46AFC800
.data <VERS 0x805DC9F0 0x805D5EA8 0x805DD348 0x805DD0E8 0x805D8C30>
.data 0x00000004
.data 0x43480000
.data 0x00000000
.data 0x00000000
@@ -0,0 +1,882 @@
.meta name="Bug fixes"
.meta description="Fixes many minor\ngameplay, sound,\nand graphical bugs"
# Most original codes by Ralf @ GC-Forever and Aleron Ives, except where noted
# https://www.gc-forever.com/forums/viewtopic.php?t=2050
# https://www.gc-forever.com/forums/viewtopic.php?t=2049
.versions 3OJ2 3OJ3 3OJ4 3OJ5 3OE0 3OE1 3OE2 3OP0
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# Olga Flow Barta Bug Fix (makes barta work on ice weakness Olga Flow instead of damaging player)
.label g1_hook_call, <VERS 0x802BB4B0 0x802BC3E0 0x802BD528 0x802BD2C0 0x802BBEF4 0x802BBF38 0x802BD474 0x802BCC08>
.label g1_hook_loc, 0x8000D980
.data g1_hook_loc
.deltaof g1_hook_start, g1_hook_end
.address g1_hook_loc
g1_hook_start:
lwz r3, [r28]
cmpwi r3, 19
bnelr
li r3, 0x0002
blr
g1_hook_end:
.data g1_hook_call
.data 4
.address g1_hook_call
bl g1_hook_loc
# Morfos Frozen Player Bug Fix (stops Morfos Laser multi-hitting when player is frozen)
.label g2_hook_call, <VERS 0x80335060 0x803360CC 0x803375E8 0x8033739C 0x80335A50 0x80335A94 0x80337570 0x803369B4>
.label g2_hook_loc, 0x8000D9A0
.data g2_hook_loc
.deltaof g2_hook_start, g2_hook_end
.address g2_hook_loc
g2_hook_start:
lfs f2, [r2 - <VERS 0x0388 0x0380 0x0380 0x0380 0x0378 0x0378 0x0378 0x0378>]
lwz r3, [r30 + 0x0030]
andi. r3, r3, 0x0020
beqlr
lfs f2, [r2 - <VERS 0x0370 0x0368 0x0368 0x0368 0x0360 0x0360 0x0360 0x0360>]
blr
g2_hook_end:
.data g2_hook_call
.data 4
.address g2_hook_call
bl g2_hook_loc
# Tiny Grass Assassins Bug Fix
.data <VERS 0x800BC750 0x800BCA58 0x800BCBD0 0x800BCB80 0x800BC9E8 0x800BC9E8 0x800BCB90 0x800BCB58>
.data 4
b +0x10
# Bulclaw HP Bug Fix
.data <VERS 0x80091528 0x80091814 0x8009198C 0x8009193C 0x800917B4 0x800917B4 0x8009194C 0x80091914>
.data 8
bl +0x024C
sth [r3 + 0x032C], r30
# Control Tower: Delbiter Death SFX Bug Fix
.label g3_patch_loc, <VERS 0x80301600 0x803025CC 0x80303A1C 0x803037D0 0x80301F58 0x80301F9C 0x8030398C 0x80302D64>
.data g3_patch_loc
.deltaof g3_code_start, g3_code_end
.address g3_patch_loc
g3_code_start:
b +0x20
subi r3, r3, 0x57D0
lwz r0, [r13 - <VERS 0x4674 0x466C 0x464C 0x464C 0x465C 0x465C 0x463C 0x45FC>]
cmpwi r0, 35
bne g3_skip
subi r3, r3, 0x04D8
g3_skip:
b +0x8C
g3_code_end:
.data <VERS 0x803016A0 0x8030266C 0x80303ABC 0x80303870 0x80301FF8 0x8030203C 0x80303A2C 0x80302E04>
.data 0x00000004
b -0x9C
# Weapon Attributes Patch (allows attributes to work on minibosses and Olga Flow)
.label g4_hook_call1, <VERS 0x800142DC 0x8001430C 0x800146A4 0x800142BC 0x800142F4 0x800142F4 0x800142BC 0x80014334>
.label g4_hook_call2, <VERS 0x80015D04 0x80015D34 0x80016174 0x80015CE4 0x80015D1C 0x80015D1C 0x80015CE4 0x80015D5C>
.label g4_hook_loc, 0x8000C8C0
.data g4_hook_loc
.deltaof g4_hook_start, g4_hook_end
.address g4_hook_loc
g4_hook_start:
andi. r0, r0, 0x000F
g4_hook_entry2:
andi. r0, r0, 0x004F
cmpwi r0, 4
blr
g4_hook_end:
.data g4_hook_call1
.data 4
.address g4_hook_call1
bl g4_hook_start
.data g4_hook_call2
.data 4
.address g4_hook_call2
bl g4_hook_entry2
# Ruins Laser Fence SFX Bug Fix
.data <VERS 0x80166324 0x801666D8 0x80166848 0x8016679C 0x801666E0 0x801666E0 0x80166800 0x80166CC4>
.data 8
lis r3, 0x4005
b +0x9C
.data <VERS 0x801663C0 0x80166774 0x801668E4 0x80166838 0x8016677C 0x8016677C 0x8016689C 0x80166D60>
.data 4
b +0x1C
# SFX Cancellation Distance Bug Fix
.data <VERS 0x805CB608 0x805D5C08 0x805DD0A8 0x805DCE48 0x805CBF10 0x805D2F30 0x805DC750 0x805D8990>
.data 4
.float 22500
.data <VERS 0x805CB8A8 0x805D5EA8 0x805DD348 0x805DD0E8 0x805CC1B0 0x805D31D0 0x805DC9F0 0x805D8C30>
.data 4
.float 200
# Foie SFX Pitch Bug Fix
.data <VERS 0x8022E2A8 0x8022EC44 0x8022FB30 0x8022F8E4 0x8022EB64 0x8022EB64 0x8022FC18 0x8022F4B0>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x8022E2D8 0x8022EC74 0x8022FB60 0x8022F914 0x8022EB94 0x8022EB94 0x8022FC48 0x8022F4E0>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x8022E308 0x8022ECA4 0x8022FB90 0x8022F944 0x8022EBC4 0x8022EBC4 0x8022FC78 0x8022F510>
.data 4
li r4, 0xFFFFFDB0
# Gifoie SFX Pitch Bug Fix
.data <VERS 0x802300B8 0x80230A54 0x80231940 0x802316F4 0x80230974 0x80230974 0x80231A28 0x802312C0>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x802300E8 0x80230A84 0x80231970 0x80231724 0x802309A4 0x802309A4 0x80231A58 0x802312F0>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x80230118 0x80230AB4 0x802319A0 0x80231754 0x802309D4 0x802309D4 0x80231A88 0x80231320>
.data 4
li r4, 0xFFFFFDB0
# Rafoie SFX Pitch Bug Fix
.data <VERS 0x802365AC 0x80236F68 0x80237E54 0x80237C08 0x80236E88 0x80236E88 0x80237F3C 0x802377D4>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x802365DC 0x80236F98 0x80237E84 0x80237C38 0x80236EB8 0x80236EB8 0x80237F6C 0x80237804>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x8023660C 0x80236FC8 0x80237EB4 0x80237C68 0x80236EE8 0x80236EE8 0x80237F9C 0x80237834>
.data 4
li r4, 0xFFFFFDB0
.data <VERS 0x80236FC0 0x8023797C 0x80238868 0x8023861C 0x8023789C 0x8023789C 0x80238950 0x802381E8>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x80236FF0 0x802379AC 0x80238898 0x8023864C 0x802378CC 0x802378CC 0x80238980 0x80238218>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x80237020 0x802379DC 0x802388C8 0x8023867C 0x802378FC 0x802378FC 0x802389B0 0x80238248>
.data 4
li r4, 0xFFFFFDB0
# Barta SFX Pitch Bug Fix
.data <VERS 0x80229B54 0x8022A4F0 0x8022B3E0 0x8022B190 0x8022A410 0x8022A410 0x8022B4C4 0x8022AD5C>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x80229B84 0x8022A520 0x8022B410 0x8022B1C0 0x8022A440 0x8022A440 0x8022B4F4 0x8022AD8C>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x80229BB4 0x8022A550 0x8022B440 0x8022B1F0 0x8022A470 0x8022A470 0x8022B524 0x8022ADBC>
.data 4
li r4, 0xFFFFFDB0
# Gibarta SFX Pitch Bug Fix
.data <VERS 0x8022EAB4 0x8022F450 0x80230340 0x802300F0 0x8022F370 0x8022F370 0x80230424 0x8022FCBC>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x8022EAE4 0x8022F480 0x80230370 0x80230120 0x8022F3A0 0x8022F3A0 0x80230454 0x8022FCEC>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x8022EB14 0x8022F4B0 0x802303A0 0x80230150 0x8022F3D0 0x8022F3D0 0x80230484 0x8022FD1C>
.data 4
li r4, 0xFFFFFDB0
# Rabarta SFX Pitch Bug Fix
.data <VERS 0x80235DD4 0x80236790 0x8023767C 0x80237430 0x802366B0 0x802366B0 0x80237764 0x80236FFC>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x80235E10 0x802367CC 0x802376B8 0x8023746C 0x802366EC 0x802366EC 0x802377A0 0x80237038>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x80235E4C 0x80236808 0x802376F4 0x802374A8 0x80236728 0x80236728 0x802377DC 0x80237074>
.data 4
li r4, 0xFFFFFDB0
# Zonde SFX Pitch Bug Fix
.data <VERS 0x8023B2C8 0x8023BC84 0x8023CB70 0x8023C924 0x8023BBA4 0x8023BBA4 0x8023CC58 0x8023C4F0>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x8023B2F8 0x8023BCB4 0x8023CBA0 0x8023C954 0x8023BBD4 0x8023BBD4 0x8023CC88 0x8023C520>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x8023B328 0x8023BCE4 0x8023CBD0 0x8023C984 0x8023BC04 0x8023BC04 0x8023CCB8 0x8023C550>
.data 4
li r4, 0xFFFFFDB0
# Gizonde SFX Pitch Bug Fix
.data <VERS 0x80230E08 0x802317C4 0x802326B0 0x80232464 0x802316E4 0x802316E4 0x80232798 0x80232030>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x80230E38 0x802317F4 0x802326E0 0x80232494 0x80231714 0x80231714 0x802327C8 0x80232060>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x80230E68 0x80231824 0x80232710 0x802324C4 0x80231744 0x80231744 0x802327F8 0x80232090>
.data 4
li r4, 0xFFFFFDB0
# Razonde SFX Pitch Bug Fix
.data <VERS 0x80237998 0x80238354 0x80239240 0x80238FF4 0x80238274 0x80238274 0x80239328 0x80238BC0>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x802379C8 0x80238384 0x80239270 0x80239024 0x802382A4 0x802382A4 0x80239358 0x80238BF0>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x802379F8 0x802383B4 0x802392A0 0x80239054 0x802382D4 0x802382D4 0x80239388 0x80238C20>
.data 4
li r4, 0xFFFFFDB0
# Grants SFX Pitch Bug Fix
.data <VERS 0x802316FC 0x802320B8 0x80232FA4 0x80232D58 0x80231FD8 0x80231FD8 0x8023308C 0x80232924>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x80231734 0x802320F0 0x80232FDC 0x80232D90 0x80232010 0x80232010 0x802330C4 0x8023295C>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x8023176C 0x80232128 0x80233014 0x80232DC8 0x80232048 0x80232048 0x802330FC 0x80232994>
.data 4
li r4, 0xFFFFFDB0
# Megid SFX Pitch Bug Fix
.data <VERS 0x802337A8 0x80234164 0x80235050 0x80234E04 0x80234084 0x80234084 0x80235138 0x802349D0>
.data 4
li r4, 0xFFFFFF00
.data <VERS 0x802337D8 0x80234194 0x80235080 0x80234E34 0x802340B4 0x802340B4 0x80235168 0x80234A00>
.data 4
li r4, 0xFFFFFE80
.data <VERS 0x80233808 0x802341C4 0x802350B0 0x80234E64 0x802340E4 0x802340E4 0x80235198 0x80234A30>
.data 4
li r4, 0xFFFFFDB0
# Anti SFX Pitch Bug Fix
.data <VERS 0x80229354 0x80229CF0 0x8022ABDC 0x8022A990 0x80229C10 0x80229C10 0x8022ACC4 0x8022A55C>
.data 4
cmpwi r0, 1
# Shield DFP/EVP Bug Fix (allows shields to reach true max DFP/EVP values)
.data <VERS 0x801185B0 0x801187CC 0x8011885C 0x80118764 0x80118854 0x80118854 0x80118774 0x8011894C>
.data 4
lbz r0, [r4 + 0x0016]
.data <VERS 0x801185BC 0x801187D8 0x80118868 0x80118770 0x80118860 0x80118860 0x80118780 0x80118958>
.data 4
lbz r0, [r4 + 0x0017]
# VR Spaceship Item Drop Bug Fix (allows items to drop from enemies above a certain Y position)
.data <VERS 0x805C996C 0x805D3F6C 0x805DB40C 0x805DB1AC 0x805CA274 0x805D1294 0x805DAAB4 0x805D6CF4>
.data 4
.float 220
# Invalid Items Bug Fix
.data <VERS 0x8011CA90 0x8011CCD4 0x8011CD0C 0x8011CC6C 0x8011CD34 0x8011CD34 0x8011CC7C 0x8011CE54>
.data 0x0C
mr r3, r0
subi r3, r3, 0x0001
b -0x18
.data <VERS 0x8011CB4C 0x8011CD90 0x8011CDC8 0x8011CD28 0x8011CDF0 0x8011CDF0 0x8011CD38 0x8011CF10>
.data 0x0C
mr r3, r0
subi r3, r3, 0x0001
b -0x18
.data <VERS 0x8011CB9C 0x8011CDE0 0x8011CE18 0x8011CD78 0x8011CE40 0x8011CE40 0x8011CD88 0x8011CF60>
.data 0x0C
mr r4, r0
subi r4, r4, 0x0001
b -0x18
# Item Removal Maxed Stats Bug Fix
.label g5_hook1_call, <VERS 0x801B9A88 0x801B9EF4 0x801BCF6C 0x801B9FC0 0x801B9E74 0x801B9E74 0x801BA024 0x801BA4E0>
.label g5_hook1_ret, <VERS 0x801B9A8C 0x801B9EF8 0x801BCF70 0x801B9FC4 0x801B9E78 0x801B9E78 0x801BA028 0x801BA4E4>
.label g5_hook2_call, <VERS 0x8010B970 0x8010BB70 0x8010BC04 0x8010BAF0 0x8010BC14 0x8010BC14 0x8010BB00 0x8010BCF0>
.label g5_hook3_call, <VERS 0x8010DD98 0x8010DF98 0x8010E0E4 0x8010DF24 0x8010E03C 0x8010E03C 0x8010DF34 0x8010E118>
.label g5_hook3_ret, <VERS 0x8010DD9C 0x8010DF9C 0x8010E0E8 0x8010DF28 0x8010E040 0x8010E040 0x8010DF38 0x8010E11C>
.label g5_hook3_apply_bonuses, <VERS 0x8010B90C 0x8010BB0C 0x8010BBA0 0x8010BA8C 0x8010BBB0 0x8010BBB0 0x8010BA9C 0x8010BC8C>
.label g5_hooks_loc, 0x8000B088
.data g5_hooks_loc
.deltaof g5_hook1_start, g5_hooks_end
.address g5_hooks_loc
g5_hook1_start:
mr r3, r29
li r4, 0x0000
bl [<VERS 801B97B4 801B9C20 801BCC98 801B9CEC 801B9BA0 801B9BA0 801B9D50 801BA20C>]
mr r3, r29
b g5_hook1_ret
g5_hook2_start:
lbz r0, [r31]
cmplwi r9, 1
bnelr
lbz r0, [r31 + 1]
addi r31, r31, 2
blr
g5_hook3_start:
li r9, 0x0000
bl g5_hook3_apply_bonuses
mr r3, r26
mr r4, r27
mr r5, r28
mr r6, r29
mr r7, r30
mr r8, r31
li r9, 1
bl g5_hook3_apply_bonuses
b g5_hook3_ret
g5_hooks_end:
.data g5_hook1_call
.data 4
.address g5_hook1_call
b g5_hook1_start
.data g5_hook2_call
.data 4
.address g5_hook2_call
bl g5_hook2_start
.data g5_hook3_call
.data 4
.address g5_hook3_call
b g5_hook3_start
.label g5_hook4_loc, 0x8000C3F8
.label g5_hook4_call, <VERS 0x801B97B4 0x801B9C20 0x801BCC98 0x801B9CEC 0x801B9BA0 0x801B9BA0 0x801B9D50 0x801BA20C>
.label g5_hook4_ret, <VERS 0x801B97B8 0x801B9C24 0x801BCC9C 0x801B9CF0 0x801B9BA4 0x801B9BA4 0x801B9D54 0x801BA210>
.label TItemEquipBase_v16, <VERS 0x8010B094 0x8010B294 0x8010B390 0x8010B214 0x8010B338 0x8010B338 0x8010B224 0x8010B414>
.label TItemEquipBase_v17, <VERS 0x8010AF18 0x8010B118 0x8010B204 0x8010B098 0x8010B1BC 0x8010B1BC 0x8010B0A8 0x8010B298>
.data g5_hook4_loc
.deltaof g5_hook4_start, g5_hook4_end
.address g5_hook4_loc
g5_hook4_start:
cmplwi r4, 0
beqlr
stwu [r1 - 0x0010], r1
b g5_hook4_ret
g5_hook4_entry:
stwu [r1 - 0x20], r1
mflr r0
stw [r1 + 0x24], r0
stmw [r1 + 0x08], r26
mr r31, r3
bl g5_hook4_start
li r30, 0
addi r29, r31, 0x0D04
lwz r27, [r31 + 0x032C]
g5_hook4_again:
lwz r28, [r29]
mr. r3, r28
beq g5_hook4_skip
li r4, 1
bl TItemEquipBase_v17
mr r3, r28
li r4, 1
bl TItemEquipBase_v16
g5_hook4_skip:
addi r29, r29, 4
addi r30, r30, 1
cmpwi r30, 13
blt g5_hook4_again
stw [r31 + 0x032C], r27
lmw r26, [r1 + 0x08]
lwz r0, [r1 + 0x24]
mtlr r0
addi r1, r1, 0x0020
blr
g5_hook4_end:
.data g5_hook4_call
.data 4
.address g5_hook4_call
b g5_hook4_entry
# Unit Present Bug Fix
.label g6_hook_loc, 0x8000C640
.label g6_hook_call, <VERS 0x80118CE0 0x80118EFC 0x80118FD8 0x80118E94 0x80118F84 0x80118F84 0x80118EA4 0x8011907C>
.data g6_hook_loc
.deltaof g6_hook_start, g6_hook_end
.address g6_hook_loc
g6_hook_start:
rlwinm. r0, r4, 0, 25, 25
beq g6_hook_skip
li r4, 0x0000
g6_hook_skip:
addi r0, r4, 0x0009
blr
g6_hook_end:
.data g6_hook_call
.data 4
.address g6_hook_call
bl g6_hook_start
# Bank Item Stacking Bug Fix
.label g7_hook1_loc, 0x8000C6D0
.label g7_hook1_call, <VERS 0x8021D098 0x8021D9FC 0x8021E8E8 0x8021E69C 0x8021D91C 0x8021D91C 0x8021E9D0 0x8021E268>
.label g7_hook2_call, <VERS 0x80220528 0x80220EBC 0x80221DA8 0x80221B5C 0x80220DDC 0x80220DDC 0x80221E90 0x80221728>
.data g7_hook1_loc
.deltaof g7_hook1_start, g7_hooks_end
.address g7_hook1_loc
g7_hook1_start:
li r0, 1
stw [r29 + 0x54], r0
lwz r3, [r29 + 0x24]
blr
g7_hook2_start:
li r0, 1
stw [r31 + 0x0378], r0
lwz r3, [r31 + 0x24]
blr
g7_hooks_end:
.data g7_hook1_call
.data 4
.address g7_hook1_call
bl g7_hook1_start
.data g7_hook2_call
.data 4
.address g7_hook2_call
bl g7_hook2_start
# Dropped Mag Color Bug Fix
.data <VERS 0x80114378 0x8011458C 0x80114634 0x80114524 0x8011461C 0x8011461C 0x80114534 0x8011470C>
.data 4
li r0, 0x12
# Meseta Drop System Bug Fix
.data <VERS 0x80107478 0x80107654 0x80107708 0x801075D4 0x8010771C 0x8010771C 0x801075E4 0x801077D4>
.data 4
b +0x0C
.data <VERS 0x8010748C 0x80107668 0x8010771C 0x801075E8 0x80107730 0x80107730 0x801075F8 0x801077E8>
.data 4
mr r3, r0
# Present Color Bug Fix
.only_versions 3OJ2 3OE0 3OE1
.data <VERS 0x80101C14 0x80101EB8 0x80101EB8>
.data 4
nop
.all_versions
# Offline Quests Drop Table Bug Fix
.data <VERS 0x80104B48 0x80104D24 0x80104DE0 0x80104CA4 0x80104DEC 0x80104DEC 0x80104CB4 0x80104EA4>
.data 4
beq +0x0C
# Mag Revival Priority Bug Fix
.label g8_hook_loc, 0x8000C8A0
.label g8_hook_call, <VERS 0x80112664 0x80112864 0x80112A3C 0x801127F0 0x80112908 0x80112908 0x80112800 0x801129E4>
.data g8_hook_loc
.deltaof g8_hook_start, g8_hook_end
.address g8_hook_loc
g8_hook_start:
mulli r0, r0, 10
rlwinm. r4, r31, 0, 30, 30
beqlr
extsh r0, r29
blr
g8_hook_end:
.data g8_hook_call
.data 4
.address g8_hook_call
bl g8_hook_start
# Mag Revival Challenge & Quest Mode Bug Fix
.data <VERS 0x801CA1F4 0x801CA6E0 0x801CB5EC 0x801CA7AC 0x801CA610 0x801CA610 0x801CA810 0x801CACCC>
.data 4
b +0x10
# Chat Bubble Window TAB Bug Fix
.data <VERS 0x80250264 0x80250CB0 0x80251CA4 0x802519A4 0x80250AEC 0x80250AEC 0x80251C68 0x802514B0>
.data 4
nop
# Chat Log Window LF/Tab Bug Fix
.data <VERS 0x80267DDC 0x80268A88 0x80269AE4 0x80269898 0x80268788 0x80268788 0x80269B5C 0x802693A4>
.data 4
nop
# Dark/Hell Special GFX Bug Fix (makes Dark/Hell display graphic on success like in PSO BB)
.label g9_hook_loc, 0x8000E1E0
.label g9_hook_call1, <VERS 0x80355984 0x80356D88 0x803582E4 0x80358098 0x80356838 0x8035687C 0x80358464 0x80357858>
.label g9_hook_call2, <VERS 0x80355A04 0x80356E08 0x80358364 0x80358118 0x803568B8 0x803568FC 0x803584E4 0x803578D8>
.data g9_hook_loc
.deltaof g9_hook_start, g9_hook_end
.address g9_hook_loc
g9_hook_start:
mflr r30
li r5, 0x0000
li r6, 0x001E
li r7, 0x0040
bl [<VERS 800864A0 8008678C 80086904 800868B4 8008672C 8008672C 800868C4 8008688C>]
mtlr r30
blr
g9_hook_end:
.data g9_hook_call1
.data 4
.address g9_hook_call1
bl g9_hook_start
.data g9_hook_call2
.data 4
.address g9_hook_call2
bl g9_hook_start
.data <VERS 0x80355960 0x80356D64 0x803582C0 0x80358074 0x80356814 0x80356858 0x80358440 0x80357834>
.data 4
li r4, 0x01E8
.data <VERS 0x803559F4 0x80356DF8 0x80358354 0x80358108 0x803568A8 0x803568EC 0x803584D4 0x803578C8>
.data 4
li r4, 0x01E8
# Gol Dragon Camera Bug Fix (makes the camera after Gol Dragon display "normally")
.data <VERS 0x802FB99C 0x802FC968 0x802FDE60 0x802FDB6C 0x802FC2F4 0x802FC338 0x802FDD28 0x802FD100>
.data 4
cmpwi r3, 1
# Box/Fence Fadeout Bug Fix (stops boxes and other environmental objects fading in and out as you approach)
.data <VERS 0x80189A54 0x80189E2C 0x80189F90 0x80189EF0 0x80189E20 0x80189E20 0x80189F54 0x8018A418>
.data 4
nop
.data <VERS 0x801933DC 0x801937B0 0x80193914 0x80193874 0x801937A8 0x801937A8 0x801938D8 0x80193D9C>
.data 4
nop
# TP Bar Color Bug Fix
.data <VERS 0x8026DA74 0x8026E738 0x8026F794 0x8026F548 0x8026E2D4 0x8026E2D4 0x8026F6FC 0x8026EF44>
.data 4
subi r4, r4, 0x5506
.data <VERS 0x8026DB88 0x8026E84C 0x8026F8A8 0x8026F65C 0x8026E3E8 0x8026E3E8 0x8026F810 0x8026F058>
.data 4
subi r3, r3, 0x5506
.data <VERS 0x8026DC10 0x8026E8D4 0x8026F930 0x8026F6E4 0x8026E470 0x8026E470 0x8026F898 0x8026F0E0>
.data 4
subi r4, r3, 0x5506
.data <VERS 0x804CBB40 0x804CF290 0x804D17E0 0x804D1580 0x804CC310 0x804CC7F0 0x804D0E58 0x804D1248>
.data 4
.data 0xFF0074EE
# Devil's and Demon's Special Damage Display Bug Fix
.data <VERS 0x8001306C 0x8001309C 0x80013364 0x8001304C 0x80013084 0x80013084 0x8001304C 0x800130C4>
.data 4
b -0x0340
# Christmas Trees Bug Fix
.label g10_hook_loc, 0x8000B5C8
.label g10_hook_call, <VERS 0x80183E94 0x8018425C 0x801843C0 0x80184320 0x80184250 0x80184250 0x80184384 0x80184848>
.label g10_hook_ret, <VERS 0x80183E98 0x80184260 0x801843C4 0x80184324 0x80184254 0x80184254 0x80184388 0x8018484C>
.data g10_hook_loc
.deltaof g10_hook_start, g10_hook_end
.address g10_hook_loc
g10_hook_start:
lwz r3, [r3 + 0x98]
bl [<VERS 803DFCC0 803E269C 803E453C 803E42EC 803E0F64 803E0FBC 803E46BC 803E31AC>]
lwz r3, [r31 + 0x042C]
lwz r4, [r31 + 0x0430]
b g10_hook_ret
g10_hook_end:
.data g10_hook_call
.data 4
.address g10_hook_call
b g10_hook_start
.data <VERS 0x80183ED4 0x8018429C 0x80184400 0x80184360 0x80184290 0x80184290 0x801843C4 0x80184888>
.data 4
nop
# Rain Drops Color Bug Fix
.data <VERS 0x804B3738 0x804B6E58 0x804B92F8 0x804B90B8 0x804B3EF0 0x804B43D0 0x804B8990 0x804B8E10>
.data 8
.data 0x70808080
.data 0x60707070
# Reverser Target Lock Bug Fix
.data <VERS 0x801C5EA4 0x801C6360 0x801C6604 0x801C642C 0x801C62C0 0x801C62C0 0x801C6490 0x801C694C>
.data 4
addi r4, r31, 0x02FC
# Deband/Shifta/Resta Target Bug Fix
.data <VERS 0x8022CF84 0x8022D920 0x8022E85C 0x8022E5C0 0x8022D840 0x8022D840 0x8022E8F4 0x8022E18C>
.data 4
bgt +0x0630
.only_versions 3OJ2 3OE0 3OE1
.data <VERS 0x8022D278 0x8022DB34 0x8022DB34>
.data 4
bgt +0x033C
.data <VERS 0x8022D36C 0x8022DC28 0x8022DC28>
.data 4
bgt +0x0248
.all_versions
# Tech Auto Targeting Bug Fix
.data <VERS 0x8022C850 0x8022D1EC 0x8022E128 0x8022DE8C 0x8022D10C 0x8022D10C 0x8022E1C0 0x8022DA58>
.data 4
nop
.data <VERS 0x804C6EE4 0x804CA61C 0x804CCB6C 0x804CC90C 0x804C76B4 0x804C7B94 0x804CC1E4 0x804CC5D4>
.data 4
.data 0x0000001E
.data <VERS 0x804C6F3C 0x804CA674 0x804CCBC4 0x804CC964 0x804C770C 0x804C7BEC 0x804CC23C 0x804CC62C>
.data 4
.data 0x00000028
.data <VERS 0x804C6F68 0x804CA6A0 0x804CCBF0 0x804CC990 0x804C7738 0x804C7C18 0x804CC268 0x804CC658>
.data 4
.data 0x00000032
.data <VERS 0x804C6F94 0x804CA6CC 0x804CCC1C 0x804CC9BC 0x804C7764 0x804C7C44 0x804CC294 0x804CC684>
.data 4
.data 0x0000003C
.data <VERS 0x804C6FA4 0x804CA6DC 0x804CCC2C 0x804CC9CC 0x804C7774 0x804C7C54 0x804CC2A4 0x804CC694>
.data 4
.data 0x0018003C
.data <VERS 0x804C71FC 0x804CA934 0x804CCE84 0x804CCC24 0x804C79CC 0x804C7EAC 0x804CC4FC 0x804CC8EC>
.data 4
.data 0x00000028
# Enable Trap Animations
.label g11_hook_loc, 0x8000BBD0
.label g11_hook_call, <VERS 0x80170C54 0x80171008 0x80171260 0x801710CC 0x80171010 0x80171010 0x80171130 0x801715F4>
.data g11_hook_loc
.deltaof g11_hook_start, g11_hook_end
.address g11_hook_loc
g11_hook_start:
lwz r4, [r31 + 0x0370]
subi r4, r4, 0x0400
stw [r31 + 0x0370], r4
lwz r3, [r31 + 0x14]
cmplwi r3, 0
beqlr
stw [r3 + 0x0060], r4
blr
g11_hook_end:
.data g11_hook_call
.data 4
.address g11_hook_call
bl g11_hook_start
.data <VERS 0x80170C74 0x80171028 0x80171280 0x801710EC 0x80171030 0x80171030 0x80171150 0x80171614>
.data 4
ori r0, r4, 0x0420
# Belra arm bug fix (this part by fuzziqersoftware)
.only_versions 3OJ2 3OE0 3OE1
.label g12_hook1_call, <VERS 0x80095724 0x800959B0 0x800959B0>
.label g12_hook2_call, <VERS 0x80095734 0x800959C0 0x800959C0>
.label g12_hook_loc, 0x8000B06C
.data g12_hook_loc
.deltaof g12_hook1_start, g12_hook_end
.address g12_hook_loc
g12_hook1_start:
li r0, 1
stw [r13 - <VERS 0x2E48 0x2E30 0x2E30>], r0 # Anchor: 80039388 @ 3OE1
b [<VERS 803D3140 803D4410 803D4468>]
g12_hook2_start:
li r4, 0
stw [r13 - <VERS 0x2E48 0x2E30 0x2E30>], r4
lwz r4, [r28 + 0x04]
blr
g12_hook_end:
.data g12_hook1_call
.data 4
.address g12_hook1_call
bl g12_hook1_start
.data g12_hook2_call
.data 4
.address g12_hook2_call
bl g12_hook2_start
.all_versions
.data 0
.data 0