From 7aa63ea20051c46a3e37407b9ca3a4330295925f Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 21:18:17 -0800 Subject: [PATCH 01/18] pull in project-slippi/Ishiiruka/pull/245 Chat Animations --- Data/Sys/GameFiles/GALE01/MnSlChr.dat.diff | Bin 122306 -> 217897 bytes Data/Sys/GameFiles/GALE01/MnSlChr.usd.diff | Bin 117467 -> 228600 bytes Source/Core/Core/CMakeLists.txt | 1 + Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 68 +- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h | 8 + Source/Core/Core/Slippi/SlippiPremadeText.h | 679 +++++++++++++++++++ 6 files changed, 755 insertions(+), 1 deletion(-) create mode 100644 Source/Core/Core/Slippi/SlippiPremadeText.h diff --git a/Data/Sys/GameFiles/GALE01/MnSlChr.dat.diff b/Data/Sys/GameFiles/GALE01/MnSlChr.dat.diff index 3b642123f757a8ebd52f7d6f71fca0ab2f9de914..f528a9646ca52c2fadc1e5d0b7ff873f7569eda3 100644 GIT binary patch literal 217897 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 %vsl00#3}84TvL8W_xH&0sK} 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 Ks{$f&*8>0yh9wpN literal 122306 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 F1^~G!C+`3N diff --git a/Data/Sys/GameFiles/GALE01/MnSlChr.usd.diff b/Data/Sys/GameFiles/GALE01/MnSlChr.usd.diff index 1e0ec9013c9e4b08ef98bc245a5af47f950fb6a7..a04cf06cb9674a30ee6fde10177a2ab0fbdbdcb8 100644 GIT binary patch literal 228600 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 X^f`v7pm#+;K|xDZ!;Ho~qLZ8eVbq90 literal 117467 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

4_<$VkcDk=;NDqRc=DjygaRKpk; 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 + // If connection is 1v1 set index 0 for local and 1 for remote + if ((matchmaking && matchmaking->RemotePlayerCount() == 1) || !matchmaking) + { + chatMessagePlayerIdx = sentChatMessageId > 0 ? localPlayerIndex : remotePlayerIndex; + } // in CSS p1 is always current player and p2 is opponent localPlayerName = p1Name = userInfo.display_name; + INFO_LOG_FMT(SLIPPI, "chatMessagePlayerIdx {} {}", chatMessagePlayerIdx, + matchmaking ? matchmaking->RemotePlayerCount() : 0); } std::vector leftTeamPlayers = {}; @@ -2407,6 +2415,58 @@ void CEXISlippi::prepareGctLoad(u8* payload) m_read_queue.insert(m_read_queue.end(), gct.begin(), gct.end()); } +std::vector CEXISlippi::loadPremadeText(u8* payload) +{ + u8 textId = payload[0]; + std::vector premadeTextData; + auto spt = SlippiPremadeText(); + + if (textId >= SlippiPremadeText::SPT_CHAT_P1 && textId <= SlippiPremadeText::SPT_CHAT_P4) + { + auto port = textId - 1; + std::string playerName; + if (matchmaking) + playerName = matchmaking->GetPlayerName(port); +#ifdef LOCAL_TESTING + std::string defaultNames[] = {"Player 1", "lol u lost 2 dk", "Player 3", "Player 4"}; + playerName = defaultNames[port]; +#endif + + u8 paramId = payload[1] == 0x83 ? + 0x88 : + payload[1]; // TODO: Figure out what the hell is going on and fix this + + auto chatMessage = spt.premadeTextsParams[paramId]; + std::string param = ReplaceAll(chatMessage.c_str(), " ", ""); + playerName = ReplaceAll(playerName.c_str(), " ", ""); + premadeTextData = spt.GetPremadeTextData(textId, playerName.c_str(), param.c_str()); + } + else + { + premadeTextData = spt.GetPremadeTextData(textId); + } + + return premadeTextData; +} + +void CEXISlippi::preparePremadeTextLength(u8* payload) +{ + std::vector premadeTextData = loadPremadeText(payload); + + m_read_queue.clear(); + // Write size to output + appendWordToBuffer(&m_read_queue, static_cast(premadeTextData.size())); +} + +void CEXISlippi::preparePremadeTextLoad(u8* payload) +{ + std::vector premadeTextData = loadPremadeText(payload); + + m_read_queue.clear(); + // Write data to output + m_read_queue.insert(m_read_queue.end(), premadeTextData.begin(), premadeTextData.end()); +} + void CEXISlippi::handleChatMessage(u8* payload) { int messageId = payload[0]; @@ -2697,6 +2757,12 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize) case CMD_FILE_LOAD: prepareFileLoad(&memPtr[bufLoc + 1]); break; + case CMD_PREMADE_TEXT_LENGTH: + preparePremadeTextLength(&memPtr[bufLoc + 1]); + break; + case CMD_PREMADE_TEXT_LOAD: + preparePremadeTextLoad(&memPtr[bufLoc + 1]); + break; case CMD_OPEN_LOGIN: handleLogInRequest(); break; diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h index 90173c6a06..1f7efcbfc2 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h @@ -82,6 +82,8 @@ private: CMD_GCT_LENGTH = 0xD3, CMD_GCT_LOAD = 0xD4, CMD_GET_DELAY = 0xD5, + CMD_PREMADE_TEXT_LENGTH = 0xE1, + CMD_PREMADE_TEXT_LOAD = 0xE2, }; enum @@ -130,6 +132,8 @@ private: {CMD_GCT_LENGTH, 0x0}, {CMD_GCT_LOAD, 0x4}, {CMD_GET_DELAY, 0x0}, + {CMD_PREMADE_TEXT_LENGTH, 0x0}, + {CMD_PREMADE_TEXT_LOAD, 0x4}, }; struct WriteMessage @@ -198,6 +202,10 @@ private: void prepareGctLength(); void prepareGctLoad(u8* payload); void prepareDelayResponse(); + void preparePremadeTextLength(u8* payload); + void preparePremadeTextLoad(u8* payload); + std::vector loadPremadeText(u8* payload); + int getCharColor(u8 charId, u8 teamId); void FileWriteThread(void); diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h new file mode 100644 index 0000000000..c3908b9643 --- /dev/null +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -0,0 +1,679 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include "Common/CommonTypes.h" +#include "Common/Logging/Log.h" + +using namespace std; + +class SlippiPremadeText +{ +public: + enum + { + SPT_CHAT_P1 = 0x1, + SPT_CHAT_P2 = 0x2, + SPT_CHAT_P3 = 0x3, + SPT_CHAT_P4 = 0x4, + SPT_LOGOUT = 0x5, + + CHAT_MSG_U_PAD_LEFT = 0x81, + CHAT_MSG_U_PAD_RIGHT = 0x82, + CHAT_MSG_U_PAD_DOWN = 0x84, + CHAT_MSG_U_PAD_UP = 0x88, + + CHAT_MSG_L_PAD_LEFT = 0x11, + CHAT_MSG_L_PAD_RIGHT = 0x12, + CHAT_MSG_L_PAD_DOWN = 0x14, + CHAT_MSG_L_PAD_UP = 0x18, + + CHAT_MSG_R_PAD_LEFT = 0x21, + CHAT_MSG_R_PAD_RIGHT = 0x22, + CHAT_MSG_R_PAD_DOWN = 0x24, + CHAT_MSG_R_PAD_UP = 0x28, + + CHAT_MSG_D_PAD_LEFT = 0x41, + CHAT_MSG_D_PAD_RIGHT = 0x42, + CHAT_MSG_D_PAD_DOWN = 0x44, + CHAT_MSG_D_PAD_UP = 0x48, + }; + + unordered_map premadeTextsParams = { + + {CHAT_MSG_U_PAD_UP, "ggs"}, + {CHAT_MSG_U_PAD_LEFT, "one more"}, + {CHAT_MSG_U_PAD_RIGHT, "brb"}, + {CHAT_MSG_U_PAD_DOWN, "good luck"}, + + {CHAT_MSG_L_PAD_UP, "well played"}, + {CHAT_MSG_L_PAD_LEFT, "that was fun"}, + {CHAT_MSG_L_PAD_RIGHT, "thanks"}, + {CHAT_MSG_L_PAD_DOWN, "too good"}, + + {CHAT_MSG_R_PAD_UP, "oof"}, + {CHAT_MSG_R_PAD_LEFT, "my b"}, + {CHAT_MSG_R_PAD_RIGHT, "lol"}, + {CHAT_MSG_R_PAD_DOWN, "wow"}, + + {CHAT_MSG_D_PAD_UP, "okay"}, + {CHAT_MSG_D_PAD_LEFT, "thinking"}, + {CHAT_MSG_D_PAD_RIGHT, "lets play again later"}, + {CHAT_MSG_D_PAD_DOWN, "bad connection"}, + }; + + unordered_map premadeTexts = { + {SPT_CHAT_P1, "%s-%s"}, + {SPT_CHAT_P2, "%s-%s"}, + {SPT_CHAT_P3, "%s-%s"}, + {SPT_CHAT_P4, "%s-%s"}, + {SPT_LOGOUT, "AreYouSure?"}, + }; + + // TODO: use va_list to handle any no. or args + string GetPremadeTextString(u8 textId) { return premadeTexts[textId]; } + + vector GetPremadeTextData(u8 textId, ...) + { + string format = GetPremadeTextString(textId); + char str[400]; + va_list args; + va_start(args, textId); + vsprintf(str, format.c_str(), args); + va_end(args); + // INFO_LOG(SLIPPI, "%s", str); + + vector data = {}; + vector empty = {}; + + vector matches = vector(); + + // NOTE: This code is converted from HSDRaw C# code + // Fuck Regex, current cpp version does not support positive lookaheads to match this pattern + // "((?<=<).+?(?=>))|((?<=>*)([^>]+?)(?=<) Good ol' fashioned nested loop :) + auto splitted = split(str, ">"); + for (int i = 0; i < splitted.size(); i++) + { + auto splitted2 = split(splitted[i], "<"); + for (int j = 0; j < splitted2.size(); j++) + { + if (splitted2[j].length() > 0) + matches.push_back(splitted2[j]); + } + } + + string match; + for (int m = 0; m < matches.size(); m++) + { + match = matches[m]; + + auto splittedMatches = split(match, ","); + if (splittedMatches.size() == 0) + continue; + string firstMatch = splittedMatches[0]; + + pair> key = findCodeKey(firstMatch); + if (key.first != TEXT_OP_CODE::CUSTOM_NULL) + { + if (splittedMatches.size() - 1 != strlen(key.second.second.c_str())) + return empty; + + data.push_back((u8)key.first); + + string res; + string res2; + for (int j = 0; j < strlen(key.second.second.c_str()); j++) + { + switch (key.second.second.c_str()[j]) + { + case 'b': + res = splittedMatches[j + 1]; + trim(res); + if ((u8)atoi(res.c_str())) + data.push_back((u8)atoi(res.c_str())); + else + data.push_back(0); + break; + case 's': + res2 = splittedMatches[j + 1]; + trim(res2); + u16 sht = (u16)atoi(res2.c_str()); + if (sht) + { + data.push_back((u8)(sht >> 8)); + data.push_back((u8)(sht & 0xFF)); + } + else + { + data.push_back(0); + data.push_back(0); + } + break; + } + } + } + else + { + // process string otherwise + + if (splittedMatches.size() >= 2 && firstMatch == "CHR") + { + string res3 = splittedMatches[1]; + trim(res3); + u16 ch = (u16)atoi(res3.c_str()); + if (ch) + { + u16 sht = (u16)(((u16)TEXT_OP_CODE::SPECIAL_CHARACTER << 8) | ch); + u8 r = (u8)(sht >> 8); + u8 r2 = (u8)(sht & 0xFF); + data.push_back(r); + data.push_back(r2); + } + } + else + { + for (int c = 0; c < strlen(firstMatch.c_str()); c++) + { + char chr = firstMatch[c]; + + // Yup, fuck strchr and cpp too, I'm not in the mood to spend 4 more hours researching + // how to get Japanese characters properly working with a map, so I put everything on an + // int array in hex + int pos = -1; + for (int ccc = 0; ccc < 287; ccc++) + { + if ((char)CHAR_MAP[ccc] == chr) + { + pos = ccc; + break; + } + } + + if (pos >= 0) + { + u16 sht = (u16)(((u16)TEXT_OP_CODE::COMMON_CHARACTER << 8) | pos); + u8 r = (u8)(sht >> 8); + u8 r2 = (u8)(sht & 0xFF); + // INFO_LOG(SLIPPI, "%x %x %x %c", sht, r, r2, chr); + + data.push_back(r); + data.push_back(r2); + } + else + return empty; + } + } + } + } + + // INFO_LOG(SLIPPI, "DATA:"); + // for(int i=0;i>> OPCODES; + unordered_map> CODES = { + {TEXT_OP_CODE::CENTERED, pair("CENTER", "")}, + {TEXT_OP_CODE::RESET_CENTERED, pair("/CENTER", "")}, + {TEXT_OP_CODE::CLEAR_COLOR, pair("/COLOR", "")}, + {TEXT_OP_CODE::COLOR, pair("COLOR", "bbb")}, + {TEXT_OP_CODE::END, pair("END", "")}, + {TEXT_OP_CODE::FITTING, pair("FIT", "")}, + {TEXT_OP_CODE::KERNING, pair("KERN", "")}, + {TEXT_OP_CODE::LEFT_ALIGNED, pair("LEFT", "")}, + {TEXT_OP_CODE::LINE_BREAK, pair("BR", "")}, + {TEXT_OP_CODE::NO_FITTING, pair("/FIT", "")}, + {TEXT_OP_CODE::NO_KERNING, pair("/KERN", "")}, + {TEXT_OP_CODE::OFFSET, pair("OFFSET", "ss")}, + {TEXT_OP_CODE::RESET, pair("RESET", "")}, + {TEXT_OP_CODE::RESET_LEFT_ALIGN, pair("/LEFT", "")}, + {TEXT_OP_CODE::RESET_RIGHT_ALIGN, pair("/RIGHT", "")}, + {TEXT_OP_CODE::RESET_SCALING, pair("/SCALE", "")}, + {TEXT_OP_CODE::RESET_TEXTBOX, pair("/TEXTBOX", "")}, + {TEXT_OP_CODE::RIGHT_ALIGNED, pair("/RIGHT", "")}, + {TEXT_OP_CODE::SCALING, pair("SCALE", "bbbb")}, + {TEXT_OP_CODE::SET_TEXTBOX, pair("TEXTBOX", "ss")}, + {TEXT_OP_CODE::UNKNOWN_02, pair("UNK02", "")}, + {TEXT_OP_CODE::UNKNOWN_04, pair("UNK04", "")}, + {TEXT_OP_CODE::UNKNOWN_05, pair("UNK05", "s")}, + {TEXT_OP_CODE::UNKNOWN_06, pair("UNK06", "ss")}, + {TEXT_OP_CODE::UNKNOWN_08, pair("UNK08", "")}, + {TEXT_OP_CODE::UNKNOWN_09, pair("UNK09", "")}, + {TEXT_OP_CODE::SPACE, pair("S", "")}, + }; + + pair> findCodeKey(string p) + { + unordered_map>::iterator it; + + for (it = CODES.begin(); it != CODES.end(); it++) + { + if (it->second.first == p) + { + return *it; + } + } + return pair>(TEXT_OP_CODE::CUSTOM_NULL, + pair("", "")); + } + + vector>> DeserializeCodes(vector data) + { + vector>> d = vector>>(); + + for (int i = 0; i < data.size();) + { + auto opcode = (TEXT_OP_CODE)data[i++]; + vector param = vector(0); + + int textCode = (u8)opcode; + + if ((textCode >> 4) == 2) + param = vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; + else if ((textCode >> 4) == 4) + param = vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; + else if (!CODES.count(opcode)) + { + ERROR_LOG_FMT(SLIPPI, "Opcode Not Supported!"); + } + else + { + pair code = CODES[opcode]; + auto p = code.second.c_str(); + param = vector(strlen(p)); + for (int j = 0; j < param.size(); j++) + { + switch (p[j]) + { + case 'b': + param[j] = (u16)(data[i++] & 0xFF); + break; + case 's': + param[j] = (u16)(((data[i++] & 0xFF) << 8) | (data[i++] & 0xFF)); + break; + } + } + } + + pair> c = pair>(opcode, param); + d.push_back(c); + + if (opcode == TEXT_OP_CODE::END) + break; + } + + return d; + } + + // https://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring + // trim from start (in place) + static inline void ltrim(std::string& s) + { + s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) { return !std::isspace(ch); })); + } + + // trim from end (in place) + static inline void rtrim(std::string& s) + { + s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) { return !std::isspace(ch); }).base(), + s.end()); + } + + // trim from both ends (in place) + static inline void trim(std::string& s) + { + ltrim(s); + rtrim(s); + } + + vector split(const string& str, const string& delim) + { + vector tokens; + size_t prev = 0, pos = 0; + do + { + pos = str.find(delim, prev); + if (pos == string::npos) + pos = str.length(); + string token = str.substr(prev, pos - prev); + if (!token.empty()) + tokens.push_back(token); + prev = pos + delim.length(); + } while (pos < str.length() && prev < str.length()); + return tokens; + } + + // region CharMAPS + int CHAR_MAP[287] = { + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 0x0079 /*'y'*/, + 0x007a /*'z'*/, + 0x3041 /*'ぁ'*/, + 0x3042 /*'あ'*/, + 0x3043 /*'ぃ'*/, + 0x3044 /*'い'*/, + 0x3045 /*'ぅ'*/, + 0x3046 /*'う'*/, + 0x3047 /*'ぇ'*/, + 0x3048 /*'え'*/, + 0x3049 /*'ぉ'*/, + 0x304a /*'お'*/, + 0x304b /*'か'*/, + 0x304c /*'が'*/, + 0x304d /*'き'*/, + 0x304e /*'ぎ'*/, + 0x304f /*'く'*/, + 0x3050 /*'ぐ'*/, + 0x3051 /*'け'*/, + 0x3052 /*'げ'*/, + 0x3053 /*'こ'*/, + 0x3054 /*'ご'*/, + 0x3055 /*'さ'*/, + 0x3056 /*'ざ'*/, + 0x3057 /*'し'*/, + 0x3058 /*'じ'*/, + 0x3059 /*'す'*/, + 0x305a /*'ず'*/, + 0x305b /*'せ'*/, + 0x305c /*'ぜ'*/, + 0x305d /*'そ'*/, + 0x305e /*'ぞ'*/, + 0x305f /*'た'*/, + 0x3060 /*'だ'*/, + 0x3061 /*'ち'*/, + 0x3062 /*'ぢ'*/, + 0x3063 /*'っ'*/, + 0x3064 /*'つ'*/, + 0x3065 /*'づ'*/, + 0x3066 /*'て'*/, + 0x3067 /*'で'*/, + 0x3068 /*'と'*/, + 0x3069 /*'ど'*/, + 0x306a /*'な'*/, + 0x306b /*'に'*/, + 0x306c /*'ぬ'*/, + 0x306d /*'ね'*/, + 0x306e /*'の'*/, + 0x306f /*'は'*/, + 0x3070 /*'ば'*/, + 0x3071 /*'ぱ'*/, + 0x3072 /*'ひ'*/, + 0x3073 /*'び'*/, + 0x3074 /*'ぴ'*/, + 0x3075 /*'ふ'*/, + 0x3076 /*'ぶ'*/, + 0x3077 /*'ぷ'*/, + 0x3078 /*'へ'*/, + 0x3079 /*'べ'*/, + 0x307a /*'ぺ'*/, + 0x307b /*'ほ'*/, + 0x307c /*'ぼ'*/, + 0x307d /*'ぽ'*/, + 0x307e /*'ま'*/, + 0x307f /*'み'*/, + 0x3080 /*'む'*/, + 0x3081 /*'め'*/, + 0x3082 /*'も'*/, + 0x3083 /*'ゃ'*/, + 0x3084 /*'や'*/, + 0x3085 /*'ゅ'*/, + 0x3086 /*'ゆ'*/, + 0x3087 /*'ょ'*/, + 0x3088 /*'よ'*/, + 0x3089 /*'ら'*/, + 0x308a /*'り'*/, + 0x308b /*'る'*/, + 0x308c /*'れ'*/, + 0x308d /*'ろ'*/, + 0x308e /*'ゎ'*/, + 0x308f /*'わ'*/, + 0x3092 /*'を'*/, + 0x3093 /*'ん'*/, + 0x30a1 /*'ァ'*/, + 0x30a2 /*'ア'*/, + 0x30a3 /*'ィ'*/, + 0x30a4 /*'イ'*/, + 0x30a5 /*'ゥ'*/, + 0x30a6 /*'ウ'*/, + 0x30a7 /*'ェ'*/, + 0x30a8 /*'エ'*/, + 0x30a9 /*'ォ'*/, + 0x30aa /*'オ'*/, + 0x30ab /*'カ'*/, + 0x30ac /*'ガ'*/, + 0x30ad /*'キ'*/, + 0x30ae /*'ギ'*/, + 0x30af /*'ク'*/, + 0x30b0 /*'グ'*/, + 0x30b1 /*'ケ'*/, + 0x30b2 /*'ゲ'*/, + 0x30b3 /*'コ'*/, + 0x30b4 /*'ゴ'*/, + 0x30b5 /*'サ'*/, + 0x30b6 /*'ザ'*/, + 0x30b7 /*'シ'*/, + 0x30b8 /*'ジ'*/, + 0x30b9 /*'ス'*/, + 0x30ba /*'ズ'*/, + 0x30bb /*'セ'*/, + 0x30bc /*'ゼ'*/, + 0x30bd /*'ソ'*/, + 0x30be /*'ゾ'*/, + 0x30bf /*'タ'*/, + 0x30c0 /*'ダ'*/, + 0x30c1 /*'チ'*/, + 0x30c2 /*'ヂ'*/, + 0x30c3 /*'ッ'*/, + 0x30c4 /*'ツ'*/, + 0x30c5 /*'ヅ'*/, + 0x30c6 /*'テ'*/, + 0x30c7 /*'デ'*/, + 0x30c8 /*'ト'*/, + 0x30c9 /*'ド'*/, + 0x30ca /*'ナ'*/, + 0x30cb /*'ニ'*/, + 0x30cc /*'ヌ'*/, + 0x30cd /*'ネ'*/, + 0x30ce /*'ノ'*/, + 0x30cf /*'ハ'*/, + 0x30d0 /*'バ'*/, + 0x30d1 /*'パ'*/, + 0x30d2 /*'ヒ'*/, + 0x30d3 /*'ビ'*/, + 0x30d4 /*'ピ'*/, + 0x30d5 /*'フ'*/, + 0x30d6 /*'ブ'*/, + 0x30d7 /*'プ'*/, + 0x30d8 /*'ヘ'*/, + 0x30d9 /*'ベ'*/, + 0x30da /*'ペ'*/, + 0x30db /*'ホ'*/, + 0x30dc /*'ボ'*/, + 0x30dd /*'ポ'*/, + 0x30de /*'マ'*/, + 0x30df /*'ミ'*/, + 0x30e0 /*'ム'*/, + 0x30e1 /*'メ'*/, + 0x30e2 /*'モ'*/, + 0x30e3 /*'ャ'*/, + 0x30e4 /*'ヤ'*/, + 0x30e5 /*'ュ'*/, + 0x30e6 /*'ユ'*/, + 0x30e7 /*'ョ'*/, + 0x30e8 /*'ヨ'*/, + 0x30e9 /*'ラ'*/, + 0x30ea /*'リ'*/, + 0x30eb /*'ル'*/, + 0x30ec /*'レ'*/, + 0x30ed /*'ロ'*/, + 0x30ee /*'ヮ'*/, + 0x30ef /*'ワ'*/, + 0x30f2 /*'ヲ'*/, + 0x30f3 /*'ン'*/, + 0x30f4 /*'ヴ'*/, + 0x30f5 /*'ヵ'*/, + 0x30f6 /*'ヶ'*/, + 0x3000 /*' '*/, + 0x3001 /*'、'*/, + 0x3002 /*'。'*/, + 0x002c /*','*/, + 0x002e /*'.'*/, + 0x2022 /*'•'*/, + 0x002c /*','*/, + 0x003b /*';'*/, + 0x003f /*'?'*/, + 0x0021 /*'!'*/, + 0x005e /*'^'*/, + 0x005f /*'_'*/, + 0x2014 /*'—'*/, + 0x002f /*'/'*/, + 0x007e /*'~'*/, + 0x007c /*'|'*/, + 0x0027 /*'\''*/, + 0x0022 /*'"'*/, + 0x0028 /*'('*/, + 0x0029 /*')'*/, + 0x005b /*'['*/, + 0x005d /*']'*/, + 0x007b /*'{'*/, + 0x007d /*'}'*/, + 0x002b /*'+'*/, + '-', + 0x00d7 /*'×'*/, + 0x003d /*'='*/, + 0x003c /*'<'*/, + 0x003e /*'>'*/, + 0x00a5 /*'¥'*/, + 0x0024 /*'$'*/, + 0x0025 /*'%'*/, + 0x0023 /*'#'*/, + 0x0026 /*'&'*/, + 0x002a /*'*'*/, + 0x0040 /*'@'*/, + 0x6271 /*'扱'*/, + 0x62bc /*'押'*/, + 0x8ecd /*'軍'*/, + 0x6e90 /*'源'*/, + 0x500b /*'個'*/, + 0x8fbc /*'込'*/, + 0x6307 /*'指'*/, + 0x793a /*'示'*/, + 0x53d6 /*'取'*/, + 0x66f8 /*'書'*/, + 0x8a73 /*'詳'*/, + 0x4eba /*'人'*/, + 0x751f /*'生'*/, + 0x8aac /*'説'*/, + 0x4f53 /*'体'*/, + 0x56e3 /*'団'*/, + 0x96fb /*'電'*/, + 0x8aad /*'読'*/, + 0x767a /*'発'*/, + 0x629c /*'抜'*/, + 0x9591 /*'閑'*/, + 0x672c /*'本'*/, + 0x660e /*'明'*/, + }; +}; From 3b05d0a9d50ec0b67e2acc743f5ffbe68e286281 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 21:24:48 -0800 Subject: [PATCH 02/18] pull in project-slippi/Ishiiruka/pull/256 --- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 34 +- Source/Core/Core/Slippi/SlippiNetplay.cpp | 15 +- Source/Core/Core/Slippi/SlippiPremadeText.h | 326 ++----------------- 3 files changed, 76 insertions(+), 299 deletions(-) diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 16f0deb4b7..0955517557 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -2039,19 +2039,33 @@ void CEXISlippi::prepareOnlineMatchState() // Set chat message if any if (slippi_netplay) { - auto remoteMessageSelection = slippi_netplay->GetSlippiRemoteChatMessage(); - chatMessageId = remoteMessageSelection.messageId; - chatMessagePlayerIdx = remoteMessageSelection.playerIdx; + auto isSingleMode = matchmaking && matchmaking->RemotePlayerCount() == 1; sentChatMessageId = slippi_netplay->GetSlippiRemoteSentChatMessage(); - // If connection is 1v1 set index 0 for local and 1 for remote - if ((matchmaking && matchmaking->RemotePlayerCount() == 1) || !matchmaking) + // Prevent processing a message in the same frame + if (sentChatMessageId <= 0) + { + auto remoteMessageSelection = slippi_netplay->GetSlippiRemoteChatMessage(); + chatMessageId = remoteMessageSelection.messageId; + chatMessagePlayerIdx = remoteMessageSelection.playerIdx; + if (chatMessageId == SlippiPremadeText::CHAT_MSG_CHAT_DISABLED && !isSingleMode) + { + // Clear remote chat messages if we are on teams and the player has chat disabled. + // Could also be handled on SlippiNetplay if the instance had acccess to the current + // connection mode + chatMessageId = chatMessagePlayerIdx = 0; + } + } + else + { + chatMessagePlayerIdx = localPlayerIndex; + } + + if (isSingleMode || !matchmaking) { chatMessagePlayerIdx = sentChatMessageId > 0 ? localPlayerIndex : remotePlayerIndex; } // in CSS p1 is always current player and p2 is opponent localPlayerName = p1Name = userInfo.display_name; - INFO_LOG_FMT(SLIPPI, "chatMessagePlayerIdx {} {}", chatMessagePlayerIdx, - matchmaking ? matchmaking->RemotePlayerCount() : 0); } std::vector leftTeamPlayers = {}; @@ -2436,6 +2450,12 @@ std::vector CEXISlippi::loadPremadeText(u8* payload) 0x88 : payload[1]; // TODO: Figure out what the hell is going on and fix this + if (paramId == SlippiPremadeText::CHAT_MSG_CHAT_DISABLED) + { + return premadeTextData = + spt.GetPremadeTextData(SlippiPremadeText::SPT_CHAT_DISABLED, playerName.c_str()); + } + auto chatMessage = spt.premadeTextsParams[paramId]; std::string param = ReplaceAll(chatMessage.c_str(), " ", ""); playerName = ReplaceAll(playerName.c_str(), " ", ""); diff --git a/Source/Core/Core/Slippi/SlippiNetplay.cpp b/Source/Core/Core/Slippi/SlippiNetplay.cpp index 81eb7e2f09..f88f770cc2 100644 --- a/Source/Core/Core/Slippi/SlippiNetplay.cpp +++ b/Source/Core/Core/Slippi/SlippiNetplay.cpp @@ -13,6 +13,7 @@ #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/NetPlayProto.h" +#include "SlippiPremadeText.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/VideoConfig.h" @@ -358,8 +359,18 @@ unsigned int SlippiNetplayClient::OnData(sf::Packet& packet, ENetPeer* peer) case NetPlay::NP_MSG_SLIPPI_CHAT_MESSAGE: { auto playerSelection = ReadChatMessageFromPacket(packet); - INFO_LOG(SLIPPI_ONLINE, "[Netplay] Received chat message from opponent %d: %d", - playerSelection->playerIdx, playerSelection->messageId); + INFO_LOG_FMT(SLIPPI_ONLINE, "[Netplay] Received chat message from opponent {}: {}", + playerSelection->playerIdx, playerSelection->messageId); + // if chat is not enabled, automatically send back a message saying so + if (!SConfig::GetInstance().m_slippiEnableQuickChat) + { + auto packet = std::make_unique(); + remoteSentChatMessageId = SlippiPremadeText::CHAT_MSG_CHAT_DISABLED; + WriteChatMessageToPacket(*packet, remoteSentChatMessageId, LocalPlayerPort()); + SendAsync(std::move(packet)); + remoteSentChatMessageId = 0; + break; + } // set message id to netplay instance remoteChatMessageSelection = std::move(playerSelection); } diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h index c3908b9643..99ea438319 100644 --- a/Source/Core/Core/Slippi/SlippiPremadeText.h +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -1,4 +1,5 @@ #pragma once +// This file must be encoded in UTF-8 with signatures on Windows #include #include @@ -8,6 +9,7 @@ #include "Common/CommonTypes.h" #include "Common/Logging/Log.h" +#include "Common/StringUtil.h" using namespace std; @@ -21,6 +23,7 @@ public: SPT_CHAT_P3 = 0x3, SPT_CHAT_P4 = 0x4, SPT_LOGOUT = 0x5, + SPT_CHAT_DISABLED = 0x6, CHAT_MSG_U_PAD_LEFT = 0x81, CHAT_MSG_U_PAD_RIGHT = 0x82, @@ -41,6 +44,8 @@ public: CHAT_MSG_D_PAD_RIGHT = 0x42, CHAT_MSG_D_PAD_DOWN = 0x44, CHAT_MSG_D_PAD_UP = 0x48, + + CHAT_MSG_CHAT_DISABLED = 0x10, }; unordered_map premadeTextsParams = { @@ -64,6 +69,8 @@ public: {CHAT_MSG_D_PAD_LEFT, "thinking"}, {CHAT_MSG_D_PAD_RIGHT, "lets play again later"}, {CHAT_MSG_D_PAD_DOWN, "bad connection"}, + + {CHAT_MSG_CHAT_DISABLED, "player has chat disabled"}, }; unordered_map premadeTexts = { @@ -72,6 +79,8 @@ public: {SPT_CHAT_P3, "%s-%s"}, {SPT_CHAT_P4, "%s-%s"}, {SPT_LOGOUT, "AreYouSure?"}, + {SPT_CHAT_DISABLED, + "%shaschatdisabled"}, }; // TODO: use va_list to handle any no. or args @@ -115,6 +124,7 @@ public: if (splittedMatches.size() == 0) continue; string firstMatch = splittedMatches[0]; + auto utfMatch = UTF8ToUTF32(firstMatch); pair> key = findCodeKey(firstMatch); if (key.first != TEXT_OP_CODE::CUSTOM_NULL) @@ -176,9 +186,9 @@ public: } else { - for (int c = 0; c < strlen(firstMatch.c_str()); c++) + for (unsigned long c = 0; c < utfMatch.length(); c++) { - char chr = firstMatch[c]; + int chr = utfMatch[c]; // Yup, fuck strchr and cpp too, I'm not in the mood to spend 4 more hours researching // how to get Japanese characters properly working with a map, so I put everything on an @@ -186,7 +196,7 @@ public: int pos = -1; for (int ccc = 0; ccc < 287; ccc++) { - if ((char)CHAR_MAP[ccc] == chr) + if (static_cast(CHAR_MAP[ccc]) == chr) { pos = ccc; break; @@ -388,292 +398,28 @@ private: // region CharMAPS int CHAR_MAP[287] = { - '0', - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - 'A', - 'B', - 'C', - 'D', - 'E', - 'F', - 'G', - 'H', - 'I', - 'J', - 'K', - 'L', - 'M', - 'N', - 'O', - 'P', - 'Q', - 'R', - 'S', - 'T', - 'U', - 'V', - 'W', - 'X', - 'Y', - 'Z', - 'a', - 'b', - 'c', - 'd', - 'e', - 'f', - 'g', - 'h', - 'i', - 'j', - 'k', - 'l', - 'm', - 'n', - 'o', - 'p', - 'q', - 'r', - 's', - 't', - 'u', - 'v', - 'w', - 'x', - 0x0079 /*'y'*/, - 0x007a /*'z'*/, - 0x3041 /*'ぁ'*/, - 0x3042 /*'あ'*/, - 0x3043 /*'ぃ'*/, - 0x3044 /*'い'*/, - 0x3045 /*'ぅ'*/, - 0x3046 /*'う'*/, - 0x3047 /*'ぇ'*/, - 0x3048 /*'え'*/, - 0x3049 /*'ぉ'*/, - 0x304a /*'お'*/, - 0x304b /*'か'*/, - 0x304c /*'が'*/, - 0x304d /*'き'*/, - 0x304e /*'ぎ'*/, - 0x304f /*'く'*/, - 0x3050 /*'ぐ'*/, - 0x3051 /*'け'*/, - 0x3052 /*'げ'*/, - 0x3053 /*'こ'*/, - 0x3054 /*'ご'*/, - 0x3055 /*'さ'*/, - 0x3056 /*'ざ'*/, - 0x3057 /*'し'*/, - 0x3058 /*'じ'*/, - 0x3059 /*'す'*/, - 0x305a /*'ず'*/, - 0x305b /*'せ'*/, - 0x305c /*'ぜ'*/, - 0x305d /*'そ'*/, - 0x305e /*'ぞ'*/, - 0x305f /*'た'*/, - 0x3060 /*'だ'*/, - 0x3061 /*'ち'*/, - 0x3062 /*'ぢ'*/, - 0x3063 /*'っ'*/, - 0x3064 /*'つ'*/, - 0x3065 /*'づ'*/, - 0x3066 /*'て'*/, - 0x3067 /*'で'*/, - 0x3068 /*'と'*/, - 0x3069 /*'ど'*/, - 0x306a /*'な'*/, - 0x306b /*'に'*/, - 0x306c /*'ぬ'*/, - 0x306d /*'ね'*/, - 0x306e /*'の'*/, - 0x306f /*'は'*/, - 0x3070 /*'ば'*/, - 0x3071 /*'ぱ'*/, - 0x3072 /*'ひ'*/, - 0x3073 /*'び'*/, - 0x3074 /*'ぴ'*/, - 0x3075 /*'ふ'*/, - 0x3076 /*'ぶ'*/, - 0x3077 /*'ぷ'*/, - 0x3078 /*'へ'*/, - 0x3079 /*'べ'*/, - 0x307a /*'ぺ'*/, - 0x307b /*'ほ'*/, - 0x307c /*'ぼ'*/, - 0x307d /*'ぽ'*/, - 0x307e /*'ま'*/, - 0x307f /*'み'*/, - 0x3080 /*'む'*/, - 0x3081 /*'め'*/, - 0x3082 /*'も'*/, - 0x3083 /*'ゃ'*/, - 0x3084 /*'や'*/, - 0x3085 /*'ゅ'*/, - 0x3086 /*'ゆ'*/, - 0x3087 /*'ょ'*/, - 0x3088 /*'よ'*/, - 0x3089 /*'ら'*/, - 0x308a /*'り'*/, - 0x308b /*'る'*/, - 0x308c /*'れ'*/, - 0x308d /*'ろ'*/, - 0x308e /*'ゎ'*/, - 0x308f /*'わ'*/, - 0x3092 /*'を'*/, - 0x3093 /*'ん'*/, - 0x30a1 /*'ァ'*/, - 0x30a2 /*'ア'*/, - 0x30a3 /*'ィ'*/, - 0x30a4 /*'イ'*/, - 0x30a5 /*'ゥ'*/, - 0x30a6 /*'ウ'*/, - 0x30a7 /*'ェ'*/, - 0x30a8 /*'エ'*/, - 0x30a9 /*'ォ'*/, - 0x30aa /*'オ'*/, - 0x30ab /*'カ'*/, - 0x30ac /*'ガ'*/, - 0x30ad /*'キ'*/, - 0x30ae /*'ギ'*/, - 0x30af /*'ク'*/, - 0x30b0 /*'グ'*/, - 0x30b1 /*'ケ'*/, - 0x30b2 /*'ゲ'*/, - 0x30b3 /*'コ'*/, - 0x30b4 /*'ゴ'*/, - 0x30b5 /*'サ'*/, - 0x30b6 /*'ザ'*/, - 0x30b7 /*'シ'*/, - 0x30b8 /*'ジ'*/, - 0x30b9 /*'ス'*/, - 0x30ba /*'ズ'*/, - 0x30bb /*'セ'*/, - 0x30bc /*'ゼ'*/, - 0x30bd /*'ソ'*/, - 0x30be /*'ゾ'*/, - 0x30bf /*'タ'*/, - 0x30c0 /*'ダ'*/, - 0x30c1 /*'チ'*/, - 0x30c2 /*'ヂ'*/, - 0x30c3 /*'ッ'*/, - 0x30c4 /*'ツ'*/, - 0x30c5 /*'ヅ'*/, - 0x30c6 /*'テ'*/, - 0x30c7 /*'デ'*/, - 0x30c8 /*'ト'*/, - 0x30c9 /*'ド'*/, - 0x30ca /*'ナ'*/, - 0x30cb /*'ニ'*/, - 0x30cc /*'ヌ'*/, - 0x30cd /*'ネ'*/, - 0x30ce /*'ノ'*/, - 0x30cf /*'ハ'*/, - 0x30d0 /*'バ'*/, - 0x30d1 /*'パ'*/, - 0x30d2 /*'ヒ'*/, - 0x30d3 /*'ビ'*/, - 0x30d4 /*'ピ'*/, - 0x30d5 /*'フ'*/, - 0x30d6 /*'ブ'*/, - 0x30d7 /*'プ'*/, - 0x30d8 /*'ヘ'*/, - 0x30d9 /*'ベ'*/, - 0x30da /*'ペ'*/, - 0x30db /*'ホ'*/, - 0x30dc /*'ボ'*/, - 0x30dd /*'ポ'*/, - 0x30de /*'マ'*/, - 0x30df /*'ミ'*/, - 0x30e0 /*'ム'*/, - 0x30e1 /*'メ'*/, - 0x30e2 /*'モ'*/, - 0x30e3 /*'ャ'*/, - 0x30e4 /*'ヤ'*/, - 0x30e5 /*'ュ'*/, - 0x30e6 /*'ユ'*/, - 0x30e7 /*'ョ'*/, - 0x30e8 /*'ヨ'*/, - 0x30e9 /*'ラ'*/, - 0x30ea /*'リ'*/, - 0x30eb /*'ル'*/, - 0x30ec /*'レ'*/, - 0x30ed /*'ロ'*/, - 0x30ee /*'ヮ'*/, - 0x30ef /*'ワ'*/, - 0x30f2 /*'ヲ'*/, - 0x30f3 /*'ン'*/, - 0x30f4 /*'ヴ'*/, - 0x30f5 /*'ヵ'*/, - 0x30f6 /*'ヶ'*/, - 0x3000 /*' '*/, - 0x3001 /*'、'*/, - 0x3002 /*'。'*/, - 0x002c /*','*/, - 0x002e /*'.'*/, - 0x2022 /*'•'*/, - 0x002c /*','*/, - 0x003b /*';'*/, - 0x003f /*'?'*/, - 0x0021 /*'!'*/, - 0x005e /*'^'*/, - 0x005f /*'_'*/, - 0x2014 /*'—'*/, - 0x002f /*'/'*/, - 0x007e /*'~'*/, - 0x007c /*'|'*/, - 0x0027 /*'\''*/, - 0x0022 /*'"'*/, - 0x0028 /*'('*/, - 0x0029 /*')'*/, - 0x005b /*'['*/, - 0x005d /*']'*/, - 0x007b /*'{'*/, - 0x007d /*'}'*/, - 0x002b /*'+'*/, - '-', - 0x00d7 /*'×'*/, - 0x003d /*'='*/, - 0x003c /*'<'*/, - 0x003e /*'>'*/, - 0x00a5 /*'¥'*/, - 0x0024 /*'$'*/, - 0x0025 /*'%'*/, - 0x0023 /*'#'*/, - 0x0026 /*'&'*/, - 0x002a /*'*'*/, - 0x0040 /*'@'*/, - 0x6271 /*'扱'*/, - 0x62bc /*'押'*/, - 0x8ecd /*'軍'*/, - 0x6e90 /*'源'*/, - 0x500b /*'個'*/, - 0x8fbc /*'込'*/, - 0x6307 /*'指'*/, - 0x793a /*'示'*/, - 0x53d6 /*'取'*/, - 0x66f8 /*'書'*/, - 0x8a73 /*'詳'*/, - 0x4eba /*'人'*/, - 0x751f /*'生'*/, - 0x8aac /*'説'*/, - 0x4f53 /*'体'*/, - 0x56e3 /*'団'*/, - 0x96fb /*'電'*/, - 0x8aad /*'読'*/, - 0x767a /*'発'*/, - 0x629c /*'抜'*/, - 0x9591 /*'閑'*/, - 0x672c /*'本'*/, - 0x660e /*'明'*/, + U'0', U'1', U'2', U'3', U'4', U'5', U'6', U'7', U'8', U'9', U'A', U'B', U'C', + U'D', U'E', U'F', U'G', U'H', U'I', U'J', U'K', U'L', U'M', U'N', U'O', U'P', + U'Q', U'R', U'S', U'T', U'U', U'V', U'W', U'X', U'Y', U'Z', U'a', U'b', U'c', + U'd', U'e', U'f', U'g', U'h', U'i', U'j', U'k', U'l', U'm', U'n', U'o', U'p', + U'q', U'r', U's', U't', U'u', U'v', U'w', U'x', U'y', U'z', U'ぁ', U'あ', U'ぃ', + U'い', U'ぅ', U'う', U'ぇ', U'え', U'ぉ', U'お', U'か', U'が', U'き', U'ぎ', U'く', U'ぐ', + U'け', U'げ', U'こ', U'ご', U'さ', U'ざ', U'し', U'じ', U'す', U'ず', U'せ', U'ぜ', U'そ', + U'ぞ', U'た', U'だ', U'ち', U'ぢ', U'っ', U'つ', U'づ', U'て', U'で', U'と', U'ど', U'な', + U'に', U'ぬ', U'ね', U'の', U'は', U'ば', U'ぱ', U'ひ', U'び', U'ぴ', U'ふ', U'ぶ', U'ぷ', + U'へ', U'べ', U'ぺ', U'ほ', U'ぼ', U'ぽ', U'ま', U'み', U'む', U'め', U'も', U'ゃ', U'や', + U'ゅ', U'ゆ', U'ょ', U'よ', U'ら', U'り', U'る', U'れ', U'ろ', U'ゎ', U'わ', U'を', U'ん', + U'ァ', U'ア', U'ィ', U'イ', U'ゥ', U'ウ', U'ェ', U'エ', U'ォ', U'オ', U'カ', U'ガ', U'キ', + U'ギ', U'ク', U'グ', U'ケ', U'ゲ', U'コ', U'ゴ', U'サ', U'ザ', U'シ', U'ジ', U'ス', U'ズ', + U'セ', U'ゼ', U'ソ', U'ゾ', U'タ', U'ダ', U'チ', U'ヂ', U'ッ', U'ツ', U'ヅ', U'テ', U'デ', + U'ト', U'ド', U'ナ', U'ニ', U'ヌ', U'ネ', U'ノ', U'ハ', U'バ', U'パ', U'ヒ', U'ビ', U'ピ', + U'フ', U'ブ', U'プ', U'ヘ', U'ベ', U'ペ', U'ホ', U'ボ', U'ポ', U'マ', U'ミ', U'ム', U'メ', + U'モ', U'ャ', U'ヤ', U'ュ', U'ユ', U'ョ', U'ヨ', U'ラ', U'リ', U'ル', U'レ', U'ロ', U'ヮ', + U'ワ', U'ヲ', U'ン', U'ヴ', U'ヵ', U'ヶ', U' ', U'、', U'。', U',', U'.', U'•', U',', + U';', U'?', U'!', U'^', U'_', U'—', U'/', U'~', U'|', U'\'', U'"', U'(', U')', + U'[', U']', U'{', U'}', U'+', '-', U'×', U'=', U'<', U'>', U'¥', U'$', U'%', + U'#', U'&', U'*', U'@', U'扱', U'押', U'軍', U'源', U'個', U'込', U'指', U'示', U'取', + U'書', U'詳', U'人', U'生', U'説', U'体', U'団', U'電', U'読', U'発', U'抜', U'閑', U'本', + U'明', }; }; From 1f9217f7dfa0a64cbef7b839c128d1653c9dd4e3 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 21:36:05 -0800 Subject: [PATCH 03/18] pull in project-slippi/Ishiiruka/commit/8df16c43cfef689f1bcaca0da5526b334bfe3994 fix chat bug which could cause other EXI commands to run --- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 4 +--- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 0955517557..6ae1194dcb 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -2446,9 +2446,7 @@ std::vector CEXISlippi::loadPremadeText(u8* payload) playerName = defaultNames[port]; #endif - u8 paramId = payload[1] == 0x83 ? - 0x88 : - payload[1]; // TODO: Figure out what the hell is going on and fix this + u8 paramId = payload[1]; if (paramId == SlippiPremadeText::CHAT_MSG_CHAT_DISABLED) { diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h index 1f7efcbfc2..2b55c20e4f 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h @@ -132,8 +132,8 @@ private: {CMD_GCT_LENGTH, 0x0}, {CMD_GCT_LOAD, 0x4}, {CMD_GET_DELAY, 0x0}, - {CMD_PREMADE_TEXT_LENGTH, 0x0}, - {CMD_PREMADE_TEXT_LOAD, 0x4}, + {CMD_PREMADE_TEXT_LENGTH, 0x2}, + {CMD_PREMADE_TEXT_LOAD, 0x2}, }; struct WriteMessage From 1bc9f205f828ceacffb3dcc42254b2e1f4a019e1 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 21:38:57 -0800 Subject: [PATCH 04/18] pull in project-slippi/Ishiiruka/pull/275 --- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 12 ++++++-- Source/Core/Core/Slippi/SlippiPremadeText.h | 32 ++++++++++++++------ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 6ae1194dcb..d9188acf1e 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -2448,15 +2448,23 @@ std::vector CEXISlippi::loadPremadeText(u8* payload) u8 paramId = payload[1]; + for (auto it = spt.unsupportedStringMap.begin(); it != spt.unsupportedStringMap.end(); it++) + { + playerName = ReplaceAll(playerName.c_str(), it->second, ""); // Remove unsupported chars + playerName = ReplaceAll(playerName.c_str(), it->first, + it->second); // Remap delimiters for premade text + } + + // Replaces spaces with premade text space + playerName = ReplaceAll(playerName.c_str(), " ", ""); + if (paramId == SlippiPremadeText::CHAT_MSG_CHAT_DISABLED) { return premadeTextData = spt.GetPremadeTextData(SlippiPremadeText::SPT_CHAT_DISABLED, playerName.c_str()); } - auto chatMessage = spt.premadeTextsParams[paramId]; std::string param = ReplaceAll(chatMessage.c_str(), " ", ""); - playerName = ReplaceAll(playerName.c_str(), " ", ""); premadeTextData = spt.GetPremadeTextData(textId, playerName.c_str(), param.c_str()); } else diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h index 99ea438319..6e614181e4 100644 --- a/Source/Core/Core/Slippi/SlippiPremadeText.h +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -74,15 +74,21 @@ public: }; unordered_map premadeTexts = { - {SPT_CHAT_P1, "%s-%s"}, - {SPT_CHAT_P2, "%s-%s"}, - {SPT_CHAT_P3, "%s-%s"}, - {SPT_CHAT_P4, "%s-%s"}, + {SPT_CHAT_P1, "%s:%s"}, + {SPT_CHAT_P2, "%s:%s"}, + {SPT_CHAT_P3, "%s:%s"}, + {SPT_CHAT_P4, "%s:%s"}, {SPT_LOGOUT, "AreYouSure?"}, {SPT_CHAT_DISABLED, "%shaschatdisabled"}, }; + // This is just a map of delimiters and temporary replacements to remap them before the name is + // converted to Slippi Premade Text format + unordered_map unsupportedStringMap = { + {"<", "\\"}, {">", "`"}, {",", ""}, // DELETE U+007F + }; + // TODO: use va_list to handle any no. or args string GetPremadeTextString(u8 textId) { return premadeTexts[textId]; } @@ -190,6 +196,16 @@ public: { int chr = utfMatch[c]; + // We are manually replacing "<" for "\" and ">" for "`" because I don't want to handle + // vargs and we need to prevent "format injection" lol... + for (auto it = unsupportedStringMap.begin(); it != unsupportedStringMap.end(); it++) + { + if (it->second.find(chr) != std::string::npos || (chr == U'Ç' && it->first[0] == ',')) + { // Need to figure out how to find extended ascii chars (Ç) + chr = it->first[0]; + } + } + // Yup, fuck strchr and cpp too, I'm not in the mood to spend 4 more hours researching // how to get Japanese characters properly working with a map, so I put everything on an // int array in hex @@ -213,8 +229,7 @@ public: data.push_back(r); data.push_back(r2); } - else - return empty; + // otherwise ignore } } } @@ -415,11 +430,10 @@ private: U'ト', U'ド', U'ナ', U'ニ', U'ヌ', U'ネ', U'ノ', U'ハ', U'バ', U'パ', U'ヒ', U'ビ', U'ピ', U'フ', U'ブ', U'プ', U'ヘ', U'ベ', U'ペ', U'ホ', U'ボ', U'ポ', U'マ', U'ミ', U'ム', U'メ', U'モ', U'ャ', U'ヤ', U'ュ', U'ユ', U'ョ', U'ヨ', U'ラ', U'リ', U'ル', U'レ', U'ロ', U'ヮ', - U'ワ', U'ヲ', U'ン', U'ヴ', U'ヵ', U'ヶ', U' ', U'、', U'。', U',', U'.', U'•', U',', + U'ワ', U'ヲ', U'ン', U'ヴ', U'ヵ', U'ヶ', U' ', U'、', U'。', U',', U'.', U'•', U':', U';', U'?', U'!', U'^', U'_', U'—', U'/', U'~', U'|', U'\'', U'"', U'(', U')', U'[', U']', U'{', U'}', U'+', '-', U'×', U'=', U'<', U'>', U'¥', U'$', U'%', U'#', U'&', U'*', U'@', U'扱', U'押', U'軍', U'源', U'個', U'込', U'指', U'示', U'取', U'書', U'詳', U'人', U'生', U'説', U'体', U'団', U'電', U'読', U'発', U'抜', U'閑', U'本', - U'明', - }; + U'明'}; }; From 27b6a700b1014dd43f52f338023dc7b254b5bc77 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 22:29:05 -0800 Subject: [PATCH 05/18] pull in newest SlippiMatchmaking after project-slippi/Ishiiruka/pull/246 --- Source/Core/Core/Slippi/SlippiMatchmaking.cpp | 52 +++++++++++++------ Source/Core/Core/Slippi/SlippiMatchmaking.h | 4 +- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp index 78c44b4394..cdecb91a3f 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp @@ -129,7 +129,6 @@ int SlippiMatchmaking::receiveMessage(json& msg, int timeoutMs) netEvent.packet->data + netEvent.packet->dataLength); std::string str(buf.begin(), buf.end()); - INFO_LOG(SLIPPI_ONLINE, "[Matchmaking] Received: %s", str.c_str()); msg = json::parse(str); enet_packet_destroy(netEvent.packet); @@ -289,19 +288,31 @@ void SlippiMatchmaking::startMatchmaking() ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Trying to find match..."); - // if (!m_user->IsLoggedIn()) - // { - // ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Must be logged in to queue"); - // m_state = ProcessState::ERROR_ENCOUNTERED; - // m_errorMsg = "Must be logged in to queue. Go back to menu"; - // return; - // } + /*if (!m_user->IsLoggedIn()) + { + ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Must be logged in to queue"); + m_state = ProcessState::ERROR_ENCOUNTERED; + m_errorMsg = "Must be logged in to queue. Go back to menu"; + return; + }*/ + + // The following code attempts to fetch the LAN IP such that when remote IPs match, the + // LAN IP can be tried in order to establish a connection in the case where the players + // don't have NAT loopback which allows that type of connection. + // Right now though, the logic would replace the WAN IP with the LAN IP and if the LAN + // IP connection didn't work but WAN would have, the players can no longer connect. + // Two things need to happen to improtve this logic: + // 1. The connection must be changed to try both the LAN and WAN IPs in the case of + // matching WAN IPs + // 2. The process for fetching LAN IP must be improved. For me, the current method + // would always fetch my VirtualBox IP, which is not correct. I also think perhaps + // it didn't work on Linux/Mac but I haven't tested it. + // I left this logic on for now under the assumption that it will help more people than + // it will hurt + char lan_addr[30] = ""; - // Compute LAN IP, in case 2 people are connecting from one IP we can send them each other's local - // IP instead of public. Experimental to allow people from behind one router to connect. char host[256]; - char lan_addr[30]; - char* ip; + char* ip = static_cast(malloc(16)); struct hostent* host_entry; int hostname; hostname = gethostname(host, sizeof(host)); // find the host name @@ -312,15 +323,23 @@ void SlippiMatchmaking::startMatchmaking() else { host_entry = gethostbyname(host); // find host information - if (host_entry == NULL) + if (host_entry == NULL || host_entry->h_addrtype != AF_INET) { ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN host"); } else { - ip = inet_ntoa(*((struct in_addr*)host_entry->h_addr_list[0])); // Convert into IP string - INFO_LOG(SLIPPI_ONLINE, "[Matchmaking] LAN IP: %s", ip); + // Fetch the last IP (because that was correct for me, not sure if it will be for all) + int i = 0; + while (host_entry->h_addr_list[i] != 0) + { + ip = inet_ntoa(*((struct in_addr*)host_entry->h_addr_list[i])); + WARN_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] IP at idx {}: {}", i, ip); + i++; + } + sprintf(lan_addr, "%s:%d", ip, m_hostPort); + WARN_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Sending LAN address: {}", lan_addr); } } @@ -410,7 +429,7 @@ void SlippiMatchmaking::handleMatchmaking() { if (latestVersion != "") { - // Update file to get new version number when the mm server tells us our version is outdated + // Update version number when the mm server tells us our version is outdated m_user->OverwriteLatestVersion( latestVersion); // Force latest version for people whose file updates dont work } @@ -578,6 +597,7 @@ void SlippiMatchmaking::handleConnecting() { ipLog << m_remoteIps[i] << ", "; } + // INFO_LOG(SLIPPI_ONLINE, "[Matchmaking] My port: %d || %s", m_hostPort, ipLog.str()); // Is host is now used to specify who the decider is auto client = std::make_unique(addrs, ports, remotePlayerCount, m_hostPort, diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.h b/Source/Core/Core/Slippi/SlippiMatchmaking.h index 52b395478f..9e225f7c1a 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.h +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.h @@ -61,8 +61,8 @@ public: static bool IsFixedRulesMode(OnlinePlayMode mode); protected: - const std::string MM_HOST_DEV = "35.197.121.196"; // Dev host - const std::string MM_HOST_PROD = "35.247.98.48"; // Production host + const std::string MM_HOST_DEV = "mm2.slippi.gg"; // Dev host + const std::string MM_HOST_PROD = "mm.slippi.gg"; // Production host const u16 MM_PORT = 43113; std::string MM_HOST = ""; From 8b2dbb88289e0d689b45387a16413598ed6c1076 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 22:29:43 -0800 Subject: [PATCH 06/18] compiles --- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 22 ++++++++++---------- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h | 4 ++-- Source/Core/Core/Slippi/SlippiNetplay.cpp | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index d9188acf1e..6daded12c6 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -1974,13 +1974,13 @@ void CEXISlippi::prepareOnlineMatchState() { auto isDecider = slippi_netplay->IsDecider(); localPlayerIndex = isDecider ? 0 : 1; - remotePlayerIndex = isDecider ? 1 : 0; + m_remote_player_index = isDecider ? 1 : 0; } #endif auto isDecider = slippi_netplay->IsDecider(); localPlayerIndex = isDecider ? 0 : 1; - remotePlayerIndex = isDecider ? 1 : 0; + m_remote_player_index = isDecider ? 1 : 0; } else { @@ -2031,10 +2031,10 @@ void CEXISlippi::prepareOnlineMatchState() oppName = p2Name = "Player 2"; #endif - m_read_queue.push_back(localPlayerReady); // Local player ready - m_read_queue.push_back(remotePlayersReady); // Remote players ready - m_read_queue.push_back(localPlayerIndex); // Local player index - m_read_queue.push_back(remotePlayerIndex); // Remote player index + m_read_queue.push_back(localPlayerReady); // Local player ready + m_read_queue.push_back(remotePlayersReady); // Remote players ready + m_read_queue.push_back(m_local_player_index); // Local player index + m_read_queue.push_back(m_remote_player_index); // Remote player index // Set chat message if any if (slippi_netplay) @@ -2057,12 +2057,12 @@ void CEXISlippi::prepareOnlineMatchState() } else { - chatMessagePlayerIdx = localPlayerIndex; + chatMessagePlayerIdx = m_local_player_index; } if (isSingleMode || !matchmaking) { - chatMessagePlayerIdx = sentChatMessageId > 0 ? localPlayerIndex : remotePlayerIndex; + chatMessagePlayerIdx = sentChatMessageId > 0 ? m_local_player_index : m_remote_player_index; } // in CSS p1 is always current player and p2 is opponent localPlayerName = p1Name = userInfo.display_name; @@ -2276,11 +2276,11 @@ void CEXISlippi::prepareOnlineMatchState() } // Create the opponent string using the names of all players on opposing teams - int teamIdx = onlineMatchBlock[0x69 + localPlayerIndex * 0x24]; + int teamIdx = onlineMatchBlock[0x69 + m_local_player_index * 0x24]; std::string oppText = ""; for (int i = 0; i < 4; i++) { - if (i == localPlayerIndex) + if (i == m_local_player_index) continue; if (onlineMatchBlock[0x69 + i * 0x24] != teamIdx) @@ -2292,7 +2292,7 @@ void CEXISlippi::prepareOnlineMatchState() } } if (matchmaking->RemotePlayerCount() == 1) - oppText = matchmaking->GetPlayerName(remotePlayerIndex); + oppText = matchmaking->GetPlayerName(m_remote_player_index); oppName = ConvertStringForGame(oppText, MAX_NAME_LENGTH * 2 + 1); m_read_queue.insert(m_read_queue.end(), oppName.begin(), oppName.end()); diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h index 2b55c20e4f..d63b94d8c4 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h @@ -241,8 +241,8 @@ private: // We put these at the class level to preserve values in the case of a disconnect // while loading. Without this, someone could load into a game playing the wrong char - u8 localPlayerIndex = 0; - u8 remotePlayerIndex = 1; + u8 m_local_player_index = 0; + u8 m_remote_player_index = 1; // Frame skipping variables int framesToSkip = 0; diff --git a/Source/Core/Core/Slippi/SlippiNetplay.cpp b/Source/Core/Core/Slippi/SlippiNetplay.cpp index f88f770cc2..3a911afa2e 100644 --- a/Source/Core/Core/Slippi/SlippiNetplay.cpp +++ b/Source/Core/Core/Slippi/SlippiNetplay.cpp @@ -364,10 +364,10 @@ unsigned int SlippiNetplayClient::OnData(sf::Packet& packet, ENetPeer* peer) // if chat is not enabled, automatically send back a message saying so if (!SConfig::GetInstance().m_slippiEnableQuickChat) { - auto packet = std::make_unique(); + auto chat_packet = std::make_unique(); remoteSentChatMessageId = SlippiPremadeText::CHAT_MSG_CHAT_DISABLED; - WriteChatMessageToPacket(*packet, remoteSentChatMessageId, LocalPlayerPort()); - SendAsync(std::move(packet)); + WriteChatMessageToPacket(*chat_packet, remoteSentChatMessageId, LocalPlayerPort()); + SendAsync(std::move(chat_packet)); remoteSentChatMessageId = 0; break; } From b8e19b809d0d906553a8cc94cafbcde04918ad0f Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 22:56:17 -0800 Subject: [PATCH 07/18] Config: disable panic handlers by default --- Source/Core/Core/Config/MainSettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/Core/Config/MainSettings.cpp b/Source/Core/Core/Config/MainSettings.cpp index 1714836a65..56c5211147 100644 --- a/Source/Core/Core/Config/MainSettings.cpp +++ b/Source/Core/Core/Config/MainSettings.cpp @@ -160,7 +160,7 @@ const Info MAIN_NETWORK_SSL_DUMP_PEER_CERT{{System::Main, "Network", "SSLD const Info MAIN_USE_HIGH_CONTRAST_TOOLTIPS{ {System::Main, "Interface", "UseHighContrastTooltips"}, true}; -const Info MAIN_USE_PANIC_HANDLERS{{System::Main, "Interface", "UsePanicHandlers"}, true}; +const Info MAIN_USE_PANIC_HANDLERS{{System::Main, "Interface", "UsePanicHandlers"}, false}; const Info MAIN_OSD_MESSAGES{{System::Main, "Interface", "OnScreenDisplayMessages"}, true}; const Info MAIN_SKIP_NKIT_WARNING{{System::Main, "Interface", "SkipNKitWarning"}, false}; From 897be6692d125bcda14c18a4d41782da04a565b6 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Fri, 17 Dec 2021 23:06:23 -0800 Subject: [PATCH 08/18] pull in newest codeset in project-slippi/Ishiiruka/pull/246 --- Data/Sys/GameSettings/Netplay/GALE01r2.ini | 2283 ++++++++++---------- Data/Sys/GameSettings/Netplay/GALJ01r2.ini | 2283 ++++++++++---------- 2 files changed, 2402 insertions(+), 2164 deletions(-) diff --git a/Data/Sys/GameSettings/Netplay/GALE01r2.ini b/Data/Sys/GameSettings/Netplay/GALE01r2.ini index 96e8ce7751..6c641df8e3 100644 --- a/Data/Sys/GameSettings/Netplay/GALE01r2.ini +++ b/Data/Sys/GameSettings/Netplay/GALE01r2.ini @@ -11,6 +11,7 @@ $Required: General Codes $Required: Slippi Recording $Required: Slippi Online $Recommended: Normal Lag Reduction +$Recommended: Apply Delay to all In-Game Scenes [Gecko] $Required: General Codes [Achilles, Dan Salvato, Magus, UnclePunch, tauKhan, Ptomerty, Cilan, Zauron, Datel, donny2112, Jorgasms, strikebowler585, Myougi] @@ -225,242 +226,140 @@ FC0F0840 4081000C FC0F8840 41800010 C21F0318 FE0F802A D21F0318 00000000 -0425D22C 3BA00000 #External/UCF + Arduino Toggle UI/Disable KO Stars.asm -C206B028 00000037 #External/UCF + Arduino Toggle UI/Arduino/Arduino - Check for Toggle.asm -901F065C 897F0618 -3982F228 7D6C58AE -2C0B0002 408201A0 -48000025 00000000 -00000000 00000000 -00000000 3F39999A -BF300000 3C4CCCCD -3E4CCCCD 7D8802A6 -C01F0650 C0228874 -FC000840 418100A4 -38800070 7C840039 -2C040000 40820094 -38800E00 7C840039 -2C040000 40820138 -38800100 7C840039 -41A20010 80BF0660 -7CA52039 41820120 -C01F0624 FC000840 -40A20114 C01F0620 -FC000840 41820108 -FC000210 808DAEB4 -C044003C C0640000 -C0840008 FC001040 -40A000EC 889F0618 -1C840004 7C0C242E -FC400210 FC021840 -408000D4 C05F0620 -EC420028 FC401210 -FC022040 418000C0 -D03F0620 480000B8 -C01F0654 C05F0650 -EC0000B2 FC000840 -4181001C 38800070 -7C840038 801F0660 -7C840039 40820008 -4800008C C01F0620 -C05F0628 EC620032 -FC030840 40810078 -889F0670 2C040003 -4180006C C05F0624 -808DAEB4 C0640314 -FC021840 41A10058 -FC401050 C064003C -FC021840 40A00048 -C06C0018 FC800210 -EC83202A EC42182A -EC840132 EC4220BA -C0628954 FC021840 -40810024 C04C0010 -FC000840 4080000C -C0028958 EC4000B2 -D05F0620 C04C0014 -D05F0624 889F0618 -1C840004 C0030020 -7C0C252E 00000000 -C20C9A44 0000002F #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 Dashback - Check for Toggle.asm -D01F002C 889F0618 -3862F228 7C6320AE -2C030001 41820014 -3862F22C 7C6320AE -2C030001 40820150 -7C0802A6 90010004 -9421FF50 BE810008 -48000121 7FC802A6 -C03F0894 C05E0000 -FC011040 40820118 -808DAEB4 C03F0620 -FC200A10 C044003C -FC011040 41800100 -887F0670 2C030002 -408000F4 887F221F -54600739 408200E8 -3C60804C 60631F78 -8BA30001 387DFFFE -889F0618 4800008D -7C7C1B78 7FA3EB78 -889F0618 4800007D -7C7C1850 7C6319D6 -2C0315F9 408100B0 -38000001 901F2358 -901F2340 809F0004 -2C04000A 40A20098 -887F000C 38800001 -3D808003 618C418C -7D8903A6 4E800421 -2C030000 41820078 -8083002C 80841ECC -C03F002C D0240018 -C05E0004 FC011040 -4181000C 38600080 -48000008 3860007F -98640006 48000048 -7C852378 3863FFFF -2C030000 40800008 -38630005 3C808046 -6084B108 1C630030 -7C841A14 1C65000C -7C841A14 88640002 -7C630774 4E800020 -4E800021 40000000 -00000000 BA810008 -800100B4 382100B0 -7C0803A6 00000000 -C20998A4 0000002B #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 Shield Drop - Check for Toggle.asm +C20C9A44 0000002B #External/UCF 0.8/Logic/UCF DB.asm +D01F002C 7C0802A6 +90010004 9421FF50 +BE810008 48000121 +7FC802A6 C03F0894 +C05E0000 FC011040 +40820118 808DAEB4 +C03F0620 FC200A10 +C044003C FC011040 +41800100 887F0670 +2C030002 408000F4 +887F221F 54600739 +408200E8 3C60804C +60631F78 8BA30001 +387DFFFE 889F0618 +4800008D 7C7C1B78 +7FA3EB78 889F0618 +4800007D 7C7C1850 +7C6319D6 2C0315F9 +408100B0 38000001 +901F2358 901F2340 +809F0004 2C04000A +40A20098 887F000C +38800001 3D808003 +618C418C 7D8903A6 +4E800421 2C030000 +41820078 8083002C +80841ECC C03F002C +D0240018 C05E0004 +FC011040 4181000C +38600080 48000008 +3860007F 98640006 +48000048 7C852378 +3863FFFF 2C030000 +40800008 38630005 +3C808046 6084B108 +1C630030 7C841A14 +1C65000C 7C841A14 +88640002 7C630774 +4E800020 4E800021 +40000000 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C20998A4 00000026 #External/UCF 0.8/Logic/UCF SD.asm 7C0802A6 90010004 9421FF50 BE810008 7C7E1B78 83FE002C -48000101 7FA802A6 -889F0618 3862F228 -7C6320AE 2C030001 -41820014 3862F230 -7C6320AE 2C030001 -408200F8 C03F063C -806DAEB4 C0030314 -FC010040 408100E4 -C03F0620 48000071 -D0210090 C03F0624 -48000065 C0410090 -EC4200B2 EC210072 -EC21102A C05D000C -FC011040 418000B4 -889F0670 2C040003 -408100A8 C01D0010 -C03F0624 FC000840 -40800098 BA810008 -800100B4 382100B0 -7C0803A6 8061001C -83E10014 38210018 -38630008 7C6803A6 -4E800020 FC000A10 -C03D0000 EC000072 -C03D0004 EC000828 -FC00001E D8010080 -80610084 38630002 -3C004330 C85D0014 -6C638000 90010080 -90610084 C8210080 -EC011028 C03D0000 -EC200824 4E800020 -4E800021 42A00000 -37270000 43300000 -3F800000 BF4CCCCD -43300000 80000000 -7FC3F378 7FE4FB78 +480000DD 7FA802A6 +C03F063C 806DAEB4 +C0030314 FC010040 +408100E4 C03F0620 +48000071 D0210090 +C03F0624 48000065 +C0410090 EC4200B2 +EC210072 EC21102A +C05D000C FC011040 +418000B4 889F0670 +2C040003 408100A8 +C01D0010 C03F0624 +FC000840 40800098 BA810008 800100B4 382100B0 7C0803A6 -60000000 00000000 -C22652EC 0000002A #External/UCF + Arduino Toggle UI/UI/Create Text.asm +8061001C 83E10014 +38210018 38630008 +7C6803A6 4E800020 +FC000A10 C03D0000 +EC000072 C03D0004 +EC000828 FC00001E +D8010080 80610084 +38630002 3C004330 +C85D0014 6C638000 +90010080 90610084 +C8210080 EC011028 +C03D0000 EC200824 +4E800020 4E800021 +42A00000 37270000 +43300000 3F800000 +BF4CCCCD 43300000 +80000000 7FC3F378 +7FE4FB78 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C20908F4 00000017 #External/UCF 0.8/Logic/UCF Tumble.asm 7C0802A6 90010004 9421FF50 BE810008 -480000C9 7FC802A6 -38600000 38800000 -3D80803A 618C6754 -7D8903A6 4E800421 -7C7F1B78 7FA3EB78 -480000D1 C05E000C -EC2100B2 C05E0000 -EC21102A C05E0004 -7FE3FB78 480000A1 -7C8802A6 3D80803A -618C6B98 7D8903A6 -4E800421 7FA3EB78 -48000099 C05E000C -EC2100B2 C05E0010 -EC21102A C05E0014 -7FE3FB78 48000075 -7C8802A6 3D80803A -618C6B98 7D8903A6 -4E800421 38800001 -989F0049 38800001 -989F004A 38800001 -989F004D C03E0008 -D03F0024 D03F0028 -386DB060 1C9D0004 -7FE3212E 48000064 -4E800021 C3DC0000 -43EA0000 3D3851EC -43AC8000 C3DC0000 -43FA0000 4E800021 -46697865 733A0000 -4E800021 4F666600 -9421FF00 D0410008 -3C004330 C84298A8 -6C638000 900100F0 -906100F4 C82100F0 -EC211028 C0410008 -38210100 4E800020 +2C030001 4082008C +C03F0628 FC200A10 +806DAEB4 C0430210 +FC011040 40800074 +3F80804C 639C1F78 +8BDC0001 387EFFFE +889F0618 48000029 +7C7D1B78 7FC3F378 +889F0618 48000019 +7C7D1850 7C6319D6 +388015F9 7C041800 +48000038 7C852378 +3863FFFF 2C030000 +40800008 38630005 +809C0008 1C630030 +7C841A14 1C65000C +7C841A14 88640002 +7C630774 4E800020 BA810008 800100B4 382100B0 7C0803A6 -38600000 00000000 -C225E0E8 00000004 #External/UCF + Arduino Toggle UI/UI/UCF Indicator - Hide Text.asm -386DB060 1C9F0004 -7C63202E 38800001 -9883004D 386000BA -60000000 00000000 -C225E070 00000004 #External/UCF + Arduino Toggle UI/UI/UCF Indicator - Show Text.asm -386DB060 1C9F0004 -7C63202E 38800000 -9883004D 386000B9 -60000000 00000000 -C22604E8 00000021 #External/UCF + Arduino Toggle UI/UI/Update Text.asm -887F0004 1C630024 -3C80803F 60840E08 -7C632214 88630000 -2C030003 418200E0 -3C80804C 608420BC -88BF0004 1CA50044 -7C842A14 80640008 -546007BD 40820010 -546007FF 40820028 -48000058 889F0004 -38A2F228 7C6520AE -38630001 2C030002 -41810040 7C6521AE -48000024 889F0004 -38A2F228 7C6520AE -3863FFFF 2C030000 -41800020 7C6521AE -48000004 38600002 -3D808002 618C4030 -7D8903A6 4E800421 -88BF0004 1C650004 -388DB060 7C63202E -3882F228 7C8428AE -48000029 7CC802A6 -1C840008 7CA43214 -38800001 3D80803A -618C70A0 7D8903A6 -4E800421 48000020 -4E800021 4F666600 -00000000 55434600 -00000000 44776565 -6E000000 889F0004 60000000 00000000 +C22662D0 0000001A #External/UCF 0.8/Indicator/UCF Text.asm +7C0802A6 90010004 +9421FF50 BE810008 +48000089 7FC802A6 +38600000 38800000 +3DC0803A 61CE6754 +7DC903A6 4E800421 +7C7F1B78 38800001 +989F0049 38800001 +989F004A C03E000C +D03F0024 D03F0028 +7FE3FB78 48000059 +7C8802A6 C03E0000 +C05E0004 3DC0803A +61CE6B98 7DC903A6 +4E800421 7C641B78 +7FE3FB78 C03E0008 +C05E0008 3D80803A +618C7548 7D8903A6 +4E800421 48000024 +4E800021 42180000 +C3898000 3EE66666 +3DCCCCCD 4E800021 +55434620 302E3800 +BA810008 800100B4 +382100B0 7C0803A6 +38980000 00000000 C226325C 00000008 #External/DPad Down at CSS for Random Stage/DPad Down at CSS for Random Stage.asm 3C808045 6084BF17 54E0077B 4182001C @@ -533,7 +432,7 @@ C2266CE0 0000000C #External/Disable FoD During Doubles/Disable FoD During Double 41820010 2C030020 41820008 48000034 806DB610 88630018 -2C030001 48000014 +2C030001 41820014 38600001 50652EB4 90A60018 48000014 38600000 50652EB4 @@ -680,7 +579,7 @@ C23219EC 0000001C #Recording/FlushFrameBuffer.asm 80ADB61C 8885000D 2C040000 40820024 8885000C 2C040000 -40820018 808507B7 +40820018 808507B3 3884FF85 7C041800 40800008 7C832378 907C0005 3BBD0009 @@ -796,7 +695,7 @@ B07E0015 3860003D 3C60804D 80635F90 907E015A 3A82F228 3AA00000 3ADE015E -1EF50008 7C75A0AE +1EF50008 38600001 7C76B92E 3AF70004 7C76B92E 3AB50001 2C150004 4180FFE4 @@ -1095,6 +994,41 @@ C20055F4 00000007 #Common/IntToFloat.asm EC211028 C0410008 38210100 4E800020 60000000 00000000 +C20056A4 00000022 #Common/LoadPremadeText.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +3B800004 7F83E378 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7D1B78 7F84E378 +3D808000 618CC160 +7D8903A6 4E800421 +386000E1 48000055 +839D0000 7FA3EB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7F83E378 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7D1B78 +386000E2 4800001D +7FA3EB78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +987D0000 9BFD0001 +9BDD0002 7FA3EB78 +38800003 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FA3EB78 7F84E378 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 C20055EC 00000008 #Common/MultiplyRWithF.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -1104,7 +1038,8 @@ EC2100B2 BA810008 800100B4 382100B0 7C0803A6 4E800020 60000000 00000000 -C20056B4 00000040 #Common/SubtextFunctions.asm +C20056B4 00000059 #Common/SubtextFunctions.asm +2C050002 418201F8 7C0802A6 90010004 9421FF50 BE810008 7C751B78 7C962378 @@ -1113,50 +1048,29 @@ C20056B4 00000040 #Common/SubtextFunctions.asm 91210040 91410044 91610048 9181004C FEA00890 FEC01090 -FEE01890 FF002090 -FF202890 FF403090 -2C180001 418000FC -39E00004 FC20B890 -FC40C090 2C0F0001 -41820020 2C0F0002 -41820020 2C0F0003 -41820020 2C0F0004 -41820020 48000024 -EC21D028 4800001C -EC21D02A 48000014 -EC42D028 4800000C -EC42D02A 48000004 -7EA3AB78 80810038 -3D80803A 618C6B98 +FEE01890 FF202890 +FF403090 2C180001 +418000FC 39E00004 +FC20B090 FC40B890 +2C0F0001 41820020 +2C0F0002 41820020 +2C0F0003 41820020 +2C0F0004 41820020 +48000024 EC21D028 +4800001C EC21D02A +48000014 EC42D028 +4800000C EC42D02A +48000004 7EA3AB78 +80810038 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 7D8903A6 4E800421 -7C771B78 7EA3AB78 -7EE4BB78 FC20A890 -FC40B090 3D80803A -618C7548 7D8903A6 -4E800421 7F25CB78 -2C0F0000 40820008 -7EC5B378 7EA3AB78 -7EE4BB78 3D80803A -618C74F0 7D8903A6 -4E800421 7EA3AB78 -7EE4BB78 80A10038 -80C1003C 80E10040 -81010044 81210048 -8141004C 3D80803A -618C70A0 7D8903A6 -4E800421 2C0F0000 -4182000C 39EFFFFF -4BFFFF14 48000094 -7EA3AB78 80810038 -FC20B890 FC40C090 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C771B78 7EA3AB78 -7EE4BB78 FC20A890 -FC40B090 3D80803A -618C7548 7D8903A6 -4E800421 7EA3AB78 -7EE4BB78 7EC5B378 +7F25CB78 2C0F0000 +40820008 7EC5B378 +7EA3AB78 7EE4BB78 3D80803A 618C74F0 7D8903A6 4E800421 7EA3AB78 7EE4BB78 @@ -1165,10 +1079,55 @@ FC40B090 3D80803A 81210048 8141004C 3D80803A 618C70A0 7D8903A6 4E800421 -7EE3BB78 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -60000000 00000000 +2C0F0000 4182000C +39EFFFFF 4BFFFF14 +48000094 7EA3AB78 +80810038 FC20B090 +FC40B890 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 +7D8903A6 4E800421 +7EA3AB78 7EE4BB78 +7EC5B378 3D80803A +618C74F0 7D8903A6 +4E800421 7EA3AB78 +7EE4BB78 80A10038 +80C1003C 80E10040 +81010044 81210048 +8141004C 3D80803A +618C70A0 7D8903A6 +4E800421 7EE3BB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C7D1B78 +7C9C2378 7CDB3378 +FEC00890 FEE01090 +FF001890 FEA02090 +4800008D 7F4802A6 +38600000 7F64DB78 +C01A0000 FC20B090 +FC40B890 FC60C090 +C09A0004 C0BA0008 +3D80803A 618C5ACC +7D8903A6 4E800421 +7C751B78 2C1C0000 +41820010 38600001 +986DAFEC 7F86E378 +7EA3AB78 7FA4EB78 +FC00A890 D0030024 +D0030028 3D80803A +618C6368 7D8903A6 +4E800421 7EA3AB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +41100000 44160000 +41A00000 00000000 041D460C 809F00EC #Common/Preload Stadium Transformations/Core/GetPreloadedTransition.asm C21D14C8 00000002 #Common/Preload Stadium Transformations/Core/Init isLoaded Bool.asm 38600000 987F00F0 @@ -1271,15 +1230,15 @@ C21A4DB4 0000001C #Online/Core/ForceEngineOnRollback.asm 2C1B0000 41810014 888500D9 2C040000 41820038 3B600001 -888500D9 988507AD -808500DB 908507AE -888500DA 988507B2 -80850237 908507B3 +888500D9 988507A9 +808500DB 908507AA +888500DA 988507AE +80850237 908507AF 808500D5 80840002 -908507B7 48000028 -888507BB 2C040000 +908507B3 48000028 +888507B7 2C040000 4182001C 38800000 -988507BB 3D808001 +988507B7 3D808001 618C95FC 7D8903A6 4E800421 7F43D378 3D808034 618C738C @@ -1294,7 +1253,7 @@ C216D310 00000009 #Online/Core/HandleLRAS.asm 40820028 3C608046 6063B6A0 88630008 2C030007 40820014 -808DB61C 806407A9 +808DB61C 806407A5 7C6903A6 4E800421 8001003C 83E10034 60000000 00000000 @@ -1314,22 +1273,22 @@ BA810008 800100B4 800100B4 382100B0 7C0803A6 7C7D1B78 60000000 00000000 -C216E748 00000069 #Online/Core/InitOnlinePlay.asm +C216E748 00000066 #Online/Core/InitOnlinePlay.asm 3D808022 618C54B8 7D8903A6 4E800421 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E 2C030208 -40820304 386007C0 +408202E8 386007BC 3D808037 618CF1E4 7D8903A6 4E800421 -7C7B1B78 388007C0 +7C7B1B78 388007BC 3D808000 618CC160 7D8903A6 4E800421 936DB61C 38600001 -907B0003 48000201 -7C6802A6 907B07A9 +907B0003 480001ED +7C6802A6 907B07A5 38600012 3D808037 618CF1E4 7D8903A6 4E800421 907B00D1 @@ -1350,7 +1309,7 @@ C216E748 00000069 #Online/Core/InitOnlinePlay.asm 7D8903A6 4E800421 38800000 98830000 38800007 98830001 -93790005 386007C0 +93790005 386007BC 90790009 9359000D 3860010A 90790011 807B024E 90790015 @@ -1372,54 +1331,51 @@ C216E748 00000069 #Online/Core/InitOnlinePlay.asm 2C03000F 41810010 48000010 38600001 48000008 3860000F -987B001B 8062F228 -907B07A5 3C600101 -60630101 9062F228 -38A00000 3C60804C -606320BC 1C850044 -7C632214 38800000 -90830000 38A50001 -2C050004 4180FFE0 -38600004 38800007 -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 48000021 -7C8802A6 38A00000 -3D808038 618CFD54 +987B001B 38A00000 +3C60804C 606320BC +1C850044 7C632214 +38800000 90830000 +38A50001 2C050004 +4180FFE0 38600004 +38800007 38A00000 +3D808039 618C01F0 7D8903A6 4E800421 -480000F4 4E800021 -3C608048 80639D60 -5464803E 806DB61C -80630007 7C841A14 -3C60804D 90835F90 -4E800020 4E800021 -7C0802A6 90010004 -9421FF50 BE810008 -838DB61C 807C07A5 -9062F228 886DAFA0 -2C030001 4082008C -38600011 3D808037 -618CF1E4 7D8903A6 -4E800421 7C7E1B78 -386000BD 987E0000 -807C0003 907E0001 -3BE00000 3BBE0005 -7FE3FB78 3D808003 -618C1724 7D8903A6 -4E800421 38800001 -989D0000 8883008E -989D0001 80830D28 -909D0002 3BFF0001 -3BBD0006 2C1F0002 -4180FFC8 7FC3F378 -38800011 38A00001 -3D808000 618C55F0 +48000021 7C8802A6 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 480000EC +4E800021 3C608048 +80639D60 5464803E +806DB61C 80630007 +7C841A14 3C60804D +90835F90 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 838DB61C +886DAFA0 2C030001 +4082008C 38600011 +3D808037 618CF1E4 7D8903A6 4E800421 +7C7E1B78 386000BD +987E0000 807C0003 +907E0001 3BE00000 +3BBE0005 7FE3FB78 +3D808003 618C1724 +7D8903A6 4E800421 +38800001 989D0000 +8883008E 989D0001 +80830D28 909D0002 +3BFF0001 3BBD0006 +2C1F0002 4180FFC8 +7FC3F378 38800011 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 BA810008 800100B4 382100B0 7C0803A6 -4E800020 BA810008 -800100B4 382100B0 -7C0803A6 00000000 +60000000 00000000 C216E904 0000003F #Online/Core/InitPause.asm 3C608048 80639D30 5463443E 2C030208 @@ -1535,7 +1491,7 @@ A0840001 7C032000 9B9E0000 7FA3EB78 3D808034 618C738C 7D8903A6 4E800421 -8B7F07AD 2C1B0001 +8B7F07A9 2C1B0001 408200CC 48000025 BA810008 800100B4 382100B0 7C0803A6 @@ -1607,7 +1563,7 @@ C21A4DE4 0000005C #Online/Core/StartEngineLoop.asm 618C4030 7D8903A6 4E800421 4BFFFF51 7EE802A6 38600002 -809A07BC 3D80803A +809A07B8 3D80803A 618C6754 7D8903A6 4E800421 7C781B78 38800001 98980049 @@ -1627,10 +1583,10 @@ C0570010 3D80803A 3D80803A 618C74F0 7D8903A6 4E800421 38600001 987A000E -887A07AD 2C030000 -418200B8 887A07B2 +887A07A9 2C030000 +418200B8 887A07AE 2C030000 41820084 -807A024A 809A07B3 +807A024A 809A07AF 80BA024E 3D808000 618C560C 7D8903A6 4E800421 3D808001 @@ -1645,12 +1601,12 @@ C0570010 3D80803A 907A0003 38600000 987A0236 987A0247 987A0248 987A0249 -987A00DA 987A07B2 +987A00DA 987A07AE 3D808001 618C95FC 7D8903A6 4E800421 -807A07AE 7C1B1800 +807A07AA 7C1B1800 41800010 38600000 -987A00D9 987A07AD +987A00D9 987A07A9 887A0236 2C030000 4182002C 807A0237 7C1B1800 41800020 @@ -1666,7 +1622,7 @@ C0570010 3D80803A 887A000B 38630001 987A000B 2C030007 40810018 38600001 -987A000C 807A07A9 +987A000C 807A07A5 7C6903A6 4E800421 7F23CB78 3D808034 618C738C 7D8903A6 @@ -1983,6 +1939,19 @@ C2376304 0000000B #Online/Core/Hacks/ForceNoVideoAssert.asm 73206E6F 7420342E 2056616C 75653A20 25640A00 00000000 +C23A63A8 0000000C #Online/Core/Hacks/LoadPremadeTextDataFromDolphin.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C9D2378 7CDC3378 +886DAFEC 2C030000 +41820024 7FA3EB78 +7F84E378 3D808000 +618C56A4 7D8903A6 +4E800421 7C7E1B78 +93DF005C BA810008 +800100B4 382100B0 +7C0803A6 38600000 +986DAFEC 00000000 04321D70 38600000 #Online/Core/Hacks/PreventCharacterCrowdChants.asm C2019608 0000000E #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 9421FFF8 3C608048 @@ -1995,7 +1964,7 @@ C2019608 0000000E #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 4082002C 80ADB61C 886500D9 2C030000 4182001C 38600001 -986507BB 3D808001 +986507B7 3D808001 618C9618 7D8903A6 4E800420 38600000 60000000 00000000 @@ -2156,14 +2125,14 @@ C2260310 00000008 #Online/Menus/CSS/FetchMatchInfo.asm 618C5610 7D8903A6 4E800421 38000000 60000000 00000000 -C2263258 00000165 #Online/Menus/CSS/HandleInputsOnCSS.asm +C2263258 00000162 #Online/Menus/CSS/HandleInputsOnCSS.asm 41A20014 3D808026 618C3334 7D8903A6 4E800420 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E -2C030008 40820AE0 +2C030008 40820AC8 7CFB3B78 3F008000 63185614 83180000 83580000 3B800000 @@ -2174,77 +2143,80 @@ BE810008 3C608048 8878000E 889A0000 9898000E 2C030005 41820010 2C040005 -40820008 48000034 +40820008 48000024 2C030004 40820010 2C040004 41820008 -48000008 48000030 -38600000 3D808002 -618C4030 7D8903A6 -4E800421 48000018 +48000008 48000020 +38600000 48000008 38600003 3D808002 618C4030 7D8903A6 4E800421 887A0000 2C030000 40810020 -2C030003 40810078 -2C030004 4182007C -2C030005 418201BC -480009FC 576004E7 -418209F4 3C608048 -80639D60 2C030000 -418209E4 3860FFFF -986DAFC9 38600000 -986DAFCA 886DB657 -2C030000 418209C8 -886DAFA0 2C030001 -41820010 2C030002 -40800014 48000000 -3860FFFE 48000335 -480009A4 4800035D -4800099C 576006F7 -40820399 48000990 -3D80801A 618C3680 -7D8903A6 4E800421 -548006F7 41820024 -8878000F 38630001 -9878000F 2C030030 -40810014 9B98000F -48000361 48000958 -9B98000F 887A0001 -2C030000 408200D0 -576004E7 4082002C -886DAFA0 2C030002 -418000BC 886DAFC9 -2C030000 408200B0 -886DAFCA 2C030001 -408200A4 48000004 +2C030003 40810084 +2C030004 41820088 +2C030005 418201E4 +480009F4 88780010 +2C030000 408209E8 +576004E7 418209E0 +3C608048 80639D60 +2C030000 418209D0 +3860FFFF 986DAFC9 +38600000 986DAFCA 886DB657 2C030000 -41820094 3C608048 -80639D60 2C030000 -41820084 886DAFA0 +418209B4 886DAFA0 2C030001 41820010 2C030002 40800014 48000000 3860FFFE -48000151 48000060 +48000359 48000990 +48000381 48000988 +576006F7 408203BD +4800097C 3D80801A +618C3680 7D8903A6 +4E800421 548006F7 +41820024 8878000F +38630001 9878000F +2C030030 40810014 +9B98000F 48000385 +48000944 9B98000F +887A0001 2C030000 +408200EC 576004E7 +4082002C 886DAFA0 +2C030002 418000D8 886DAFC9 2C030000 -4182001C 2C030001 -41820008 48000000 -3860FFFF 4800012D -4800003C 886DAFCA -2C030000 41820018 -806D8840 38630598 -A063001E 4800010D -4800001C 38600001 +408200CC 886DAFCA +2C030001 408200C0 +48000004 886DB657 +2C030000 418200B0 +3C608048 80639D60 +2C030000 418200A0 +886DAFA0 2C030001 +41820010 2C030002 +40800014 48000000 +3860FFFE 4800016D +4800007C 886DAFC9 +2C030000 4182001C +2C030001 41820008 +48000000 3860FFFF +48000149 48000058 +886DAFCA 2C030000 +41820018 806D8840 +38630598 A063001E +48000129 48000038 +888DAFA0 2C040003 +38600000 40820008 +38600001 808DB610 +98640018 38600001 986DB656 480000F9 7C6802A6 906DAFE8 -4800087C 480002F1 +4800084C 480002F9 887A0001 889A0002 -7C632039 41820868 +7C632039 41820838 BA810008 800100B4 382100B0 7C0803A6 3D808026 618C3264 7D8903A6 4E800420 -576006F7 40820245 -4800083C 7C0802A6 +576006F7 4082024D +4800080C 7C0802A6 90010004 9421FF50 BE810008 38600014 3D808037 618CF1E4 @@ -2268,7 +2240,7 @@ BA810008 800100B4 4E800020 4E800021 7C0802A6 90010004 9421FF50 BE810008 -7C7F1B78 38600008 +7C7F1B78 38600009 3D808037 618CF1E4 7D8903A6 4E800421 7C791B78 386000B5 @@ -2282,7 +2254,7 @@ BA810008 800100B4 38600000 98790001 4800001C 3C608000 60635614 80630000 -88630014 3863FFFF +88630016 3863FFFF 98790001 2C1FFFFE 41820014 2C1FFFFF 41820018 2C1F0000 @@ -2292,7 +2264,8 @@ BA810008 800100B4 48000010 7FE3FB78 38800001 48000004 B0790005 98990007 -7F23CB78 38800008 +886DAFA0 98790008 +7F23CB78 38800009 38A00001 3D808000 618C55F0 7D8903A6 4E800421 7F23CB78 @@ -2303,8 +2276,8 @@ BA810008 800100B4 4E800020 4E800021 7C0802A6 90010004 9421FF50 BE810008 -8A980014 4BFFFED5 -4BFFFE25 BA810008 +8A980016 4BFFFECD +4BFFFE1D BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 90010004 @@ -2332,20 +2305,13 @@ BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 90010004 9421FF50 -BE810008 7F63DB78 -98780011 2C1B0001 -4182005C 2C1B0002 -41820054 2C1B0008 -4182004C 2C1B0004 -41820044 2C1B0041 -4182003C 2C1B0042 -41820034 2C1B0048 -4182002C 2C1B0044 -41820024 2C1B0021 -4182001C 2C1B0022 -41820014 2C1B0028 -4182000C 2C1B0024 -40820019 88780010 +BE810008 2C1B0200 +40820008 B3780011 +2C1B0001 4182001C +2C1B0002 41820014 +2C1B0008 4182000C +2C1B0004 4082001D +B3780011 88780010 2C030000 4082000C 7F63DB78 480000B9 BA810008 800100B4 @@ -2373,15 +2339,14 @@ BA810008 800100B4 4E800020 7C6E1B78 7C0802A6 90010004 9421FF50 BE810008 -48000379 7DE802A6 -386000B7 3880007F -38A00040 3D808002 -618C37A8 7D8903A6 +480003ED 7DE802A6 +38600002 3D808002 +618C4030 7D8903A6 4E800421 7DC37378 -98780010 38600006 +98780010 3860000A 3D808037 618CF1E4 7D8903A6 4E800421 -7C771B78 38800006 +7C771B78 3880000A 3D808000 618CC160 7D8903A6 4E800421 7DC37378 98770000 @@ -2393,8 +2358,10 @@ BA810008 800100B4 806DB614 80630018 3D808037 618C0E44 7D8903A6 4E800421 -7C751B78 C02F001C -C04F0020 D0230038 +7C751B78 C02F0024 +888DAFE0 2C040000 +41820008 C02F0028 +C04F002C D0230038 D043003C 7E83A378 38800004 7EA5AB78 3D808039 618C0A70 @@ -2420,94 +2387,93 @@ BA810008 800100B4 BE810008 820E002C 82EE0028 8A300000 8A500001 82700002 -82B00006 8AD50011 -2C130000 40820144 +82B00006 A2D50011 +38600000 B0750011 +2C130000 40820184 38600090 7C721B78 -98700001 480001E5 +98700001 48000249 7DE802A6 7E238B78 3D808000 618C56AC 7D8903A6 4E800421 -7C741B78 38600001 +7C741B78 38600000 +38800000 3D80803A +618C6754 7D8903A6 +4E800421 7C731B78 +92700002 38600001 38800000 C02F0000 -C04F0004 48000209 -7C731B78 92700002 -7E639B78 388F0028 -38A00000 38CF0024 -38EF002D 39140004 -C02F0014 C04F0014 -C06F0008 C08F0010 -3D808000 618C56B4 +C04F0004 98730049 +9893004A D0330008 +D0530024 D0530028 +C04F0008 886DAFE0 +2C030000 41820008 +C04F000C 7E639B78 +388F0034 38A00000 +38CF0030 38EF0038 +39140004 C02F001C +C06F0018 3D808000 +618C56B4 7D8903A6 +4E800421 7C641B78 +7C8A2378 7C8B2378 +386B0002 C04F0020 +3D808000 618C55EC 7D8903A6 4E800421 -7C641B78 7C8A2378 -7C8B2378 386B0002 -C04F0018 3D808000 -618C55EC 7D8903A6 -4E800421 C06F0010 -EC83082A 2C0B0000 -4182001C 2C0B0001 -4182002C 2C0B0002 -4182001C 2C0B0003 -4182000C 38800008 -48000018 38800004 -48000010 38800002 -48000008 38800001 -7E238B78 3D808000 -618C56AC 7D8903A6 -4E800421 7C872378 -7E639B78 388F0024 -38A00000 38CF0024 -C02F0014 C04F0014 -C06F000C 3D808000 +C06F0018 EC63082A +2C0B0000 4182001C +2C0B0001 4182002C +2C0B0002 4182001C +2C0B0003 4182000C +38800008 48000018 +38800004 48000010 +38800002 48000008 +38800001 7E238B78 +3D808000 618C56AC +7D8903A6 4E800421 +7C872378 C04F0010 +886DAFE0 2C030000 +41820008 C04F0014 +7E639B78 388F0030 +38A00000 38CF0030 +C02F001C 3D808000 618C56B4 7D8903A6 4E800421 7C6B1B78 386A0004 7C0B1800 -4082FF54 480000A0 -88700001 2C030086 -4181003C 2C160000 -41820034 88750012 -2C030004 40800028 -38600000 98700001 -7E238B78 7EC4B378 -38A00004 7C632830 -7C632214 4BFFFC49 -4800005C 2C120000 +4082FF48 480000C4 +88750014 2C030000 +41820010 88700001 +2C03008A 41810068 +2C160200 40820008 +48000070 2C160000 +41820054 88750014 +2C030003 40800034 +88750013 2C030005 +40800028 38600000 +98700001 7E238B78 +7EC4B378 38A00004 +7C632830 7C632214 +4BFFFBD5 4800005C +38600003 3D808002 +618C4030 7D8903A6 +4E800421 2C120000 41820010 3A52FFFF -9A500001 48000048 +9A500001 48000034 38600000 98750010 -7DC37378 3D808038 -618CFED4 7D8903A6 -4E800421 7DC37378 -3D808039 618C0228 +7DC37378 3D808039 +618C0228 7D8903A6 +4E800421 7E639B78 +3D80803A 618C5CC4 7D8903A6 4E800421 -7E639B78 3D80803A -618C5CC4 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 00000000 -3DCCCCCD C3960000 -C38E8000 429E0000 -3EE66666 41C80000 -C1A00000 C1840000 -FFFFFFFF FFEA2FFF -00436861 743A2025 -73002573 3A202573 -0047616D 65005500 -4C005200 4400817B -00000000 7C761B78 -7C972378 FEC00890 -FEE01090 7C0802A6 -90010004 9421FF50 -BE810008 38600000 -38800000 3D80803A -618C6754 7D8903A6 -4E800421 7C781B78 -9AD80049 9AF8004A -D2D80008 D2F80024 -D2F80028 7F03C378 BA810008 800100B4 382100B0 7C0803A6 -4E800020 BA810008 +4E800020 4E800021 +00000000 3DCCCCCD +C3960000 C3E20000 +C38E8000 C3DA8000 +429E0000 3EE66666 +41C80000 C1A00000 +C20C0000 C1840000 +FFFFFFFF FFEA2FFF +43686174 3A202573 +00000000 BA810008 800100B4 382100B0 7C0803A6 3D808026 618C3334 7D8903A6 @@ -2520,70 +2486,70 @@ C21A3F9C 00000005 #Online/Menus/CSS/IncreaseTextHeap.asm 4082000C 38604800 48000008 38602400 60000000 00000000 -C2264534 000001D3 #Online/Menus/CSS/InitCSS.asm +C2264534 000001D0 #Online/Menus/CSS/InitCSS.asm 3C608048 80639D30 5463443E 2C030008 -40820E7C 480001F8 +40820E68 480001F8 4E800021 00000000 -3DCCCCCD C39B0000 -C3848000 3EE66666 -3ECCCCCD 3F800000 -41C80000 428C0000 -41B80000 3F000000 -42B40000 42500000 -42960000 42C40000 -42500000 428C0000 -42B00000 42D40000 -3ECCCCCD 43048000 -43188000 42200000 -C2E00000 3F000000 +3DCCCCCD 404CCCCD +413CCCCD 3F4CCCCD +C1600000 41C00000 +00000000 41F00000 +42480000 C2320000 +C1EC0000 C1BA0000 +40A00000 3D23D70A +428C0000 41B80000 +3F000000 42B40000 +42500000 42960000 +42C40000 42500000 +428C0000 42B00000 +42D40000 3ECCCCCD +43048000 43188000 C3760000 C3020000 C2480000 3EE66666 33FF2FFF 3CBCFFFF -8E9196FF FF0000FF -FFFFFFFF D4D4D4FF -33FF2FFF 00000000 -00556E72 616E6B65 -64004469 72656374 -0052616E 6B656400 -5465616D 73002573 -204D6F64 65005365 -6C656374 20796F75 -72206368 61726163 -74657200 43686172 -61637465 72207365 -6C656374 65640050 -72657373 20535441 -52542074 6F202573 -006C6F63 6B20696E -00656E74 65722063 -6F646500 73656172 -63680073 656C6563 -74207374 61676500 -4C6F636B 65642069 -6E005365 61726368 -696E6720 666F7220 -25730043 6F6E6E65 -6374696E 6720746F -20257300 57616974 -696E6720 6F6E2025 -73006F70 706F6E65 -6E74002D 2D2F2F2D +8E9196FF FFFFFFFF +FF0000FF 00556E72 +616E6B65 64004469 +72656374 0052616E +6B656400 5465616D +73002573 204D6F64 +65005365 6C656374 +20796F75 72206368 +61726163 74657200 +43686172 61637465 +72207365 6C656374 +65640050 72657373 +20535441 52542074 +6F202573 006C6F63 +6B20696E 00656E74 +65722063 6F646500 +73656172 63680073 +656C6563 74207374 +61676500 4C6F636B +65642069 6E005365 +61726368 696E6720 +666F7220 25730043 +6F6E6E65 6374696E +6720746F 20257300 +57616974 696E6720 +6F6E2025 73006F70 +706F6E65 6E74002D 2D2F2F2D 2D2F2F2D -2D2F2F30 30004572 -726F7200 506C6179 -696E673A 00557365 -20442D50 61642074 -6F204368 61740050 -72657373 205A2074 -6F202573 00486F6C -64205A20 746F2025 -73006469 73636F6E -6E656374 0063616E -63656C00 636C6561 -72206572 726F7200 -25733A20 25730081 -7B00817E 00817C00 +2D2F2F2D 2D2F2F30 +30004572 726F7200 +506C6179 696E673A +00557365 20442D50 +61642074 6F204368 +61740050 72657373 +205A2074 6F202573 +00486F6C 64205A20 +746F2025 73006469 +73636F6E 6E656374 +0063616E 63656C00 +636C6561 72206572 +726F7200 817B0081 +7E00817C 00000000 4E800021 C2E00000 41A00000 00000000 3DCCCCCD 7C0802A6 @@ -2601,14 +2567,14 @@ BE810008 4BFFFDFD 38600004 38800005 38A00080 3D808039 618C01F0 7D8903A6 -4E800421 4800039D +4E800421 4800028D 7C8802A6 38A00004 3D808038 618CFD54 7D8903A6 4E800421 -38600016 3D808037 +38600018 3D808037 618CF1E4 7D8903A6 4E800421 7C7F1B78 -38800016 3D808000 +38800018 3D808000 618CC160 7D8903A6 4E800421 3C608000 60635614 93E30000 @@ -2623,107 +2589,73 @@ BE810008 4BFFFDFD 38800000 989C004A C03D0000 D03C0008 C03D0004 D03C0024 -D03C0028 C03D0020 -C05D0024 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7F83E378 C03D0028 -C05D0028 3D80803A -618C7548 7D8903A6 -4E800421 C05D0030 -4800019D C05D0034 -48000195 C05D0038 -4800018D C03D0020 -C05D0050 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 +D03C0028 7F83E378 +389D0090 38A00000 +C03D0044 C05D003C +C07D0040 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +C07D004C 480000F9 +C07D0050 480000F1 +C07D0054 480000E9 +7F83E378 389D008C +38A00000 C03D0068 +C05D003C C07D006C +38FD0098 3D808000 +618C56B4 7D8903A6 4E800421 7F83E378 -38800007 C03D004C -C05D004C 3D80803A -618C7548 7D8903A6 +389D008C 38A00000 +C03D0068 C05D003C +C07D0070 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7F83E378 389D008C +38A00000 C03D0044 +C05D0078 C07D0074 +38FD0098 3D808000 +618C56B4 7D8903A6 4E800421 7F83E378 -38800007 38BD007C -3D80803A 618C74F0 +389D0090 38A00000 +C03D0044 C05D007C +C07D0074 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 -C03D0020 C05D0054 -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7F83E378 38800008 -C03D004C C05D004C -3D80803A 618C7548 -7D8903A6 4E800421 -7F83E378 38800008 -38BD007C 3D80803A -618C74F0 7D8903A6 -4E800421 C03D0068 -C05D0064 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 -4E800421 7F83E378 -38800009 C03D0028 -C05D0028 3D80803A -618C7548 7D8903A6 -4E800421 7F83E378 -38800009 38BD007C -3D80803A 618C74F0 -7D8903A6 4E800421 -C03D006C C05D0064 -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7F83E378 3880000A -C03D0028 C05D0028 -3D80803A 618C7548 -7D8903A6 4E800421 -C05D003C 480000BD -C05D0040 480000B5 -C05D0044 480000AD -C05D0048 480000A5 +C07D0058 48000095 +C07D005C 4800008D +C07D0060 48000085 +C07D0064 4800007D BA810008 800100B4 382100B0 7C0803A6 -4800097C 7EA802A6 -FC601090 C03D002C -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C641B78 7F83E378 -C03D004C C05D004C -3D80803A 618C7548 -7D8903A6 4E800421 -C03D0020 FC401890 -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C641B78 7F83E378 -C03D0070 C05D0070 -3D80803A 618C7548 +48000A20 7EA802A6 +FDA01890 7F83E378 +389D0090 38A00000 +C03D0068 C05D0048 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 7F83E378 +389D0090 38A00000 +C03D0080 C05D003C +FC606890 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 7EA803A6 4E800020 7C0802A6 90010004 9421FF50 BE810008 -C03D0020 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 -4E800421 7C7B1B78 -7F83E378 7F64DB78 -C03D004C C05D004C -3D80803A 618C7548 +7F83E378 389D0094 +38A00000 C03D0068 +C05D003C 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 -7F83E378 7F64DB78 -38BD0080 3D80803A -618C74F0 7D8903A6 -4E800421 BA810008 +7C7B1B78 BA810008 800100B4 382100B0 7C0803A6 4E800020 4E800021 7C0802A6 90010004 9421FF50 -BE810008 4BFFF9E5 +BE810008 4BFFFAF5 7FA802A6 3FE08000 63FF5614 83FF0000 83DF0000 839F0004 -38FD015F 3CC0804A +38FD0163 3CC0804A 60C60740 38800000 38A00000 7C66222E 7C672B2E 38840003 @@ -2742,252 +2674,283 @@ BE810008 4BFFF9E5 7D8903A6 4E800421 887E0000 2C030004 41810054 38800000 -38BD00B2 886DAFA0 +38BD00B6 886DAFA0 2C030001 41820020 2C030002 41820020 2C030000 41820020 2C030003 41820020 -48000024 38DD0095 -48000020 38DD009E -48000018 38DD00A5 -48000010 38DD00AC -48000008 38BD0172 -48000735 887E000A -2C030000 41820010 +48000024 38DD0099 +48000020 38DD00A2 +48000018 38DD00A9 +48000010 38DD00B0 +48000008 38BD0176 +48000831 887E000A +2C030000 4182001C 3B3E0015 7C7A1B78 -48000024 887E000B -2C030000 41820110 -7C7A1B78 887E000C -1C63001F 38630034 -7F3E1A14 887F0013 -2C03000C 40810010 -38600000 987F0013 -418200E4 386000B7 -3880007F 38A00040 -3D808002 618C37A8 -7D8903A6 4E800421 -887F0012 38630001 -987F0012 3860000F -3D808037 618CF1E4 -7D8903A6 4E800421 -7C771B78 38800016 -3D808000 618CC160 -7D8903A6 4E800421 -386000AA 98770000 -7F43D378 98770001 -887F0013 98770002 +887F0014 38630001 +987F0014 48000014 +887E000B 2C030000 +418201D8 7C7A1B78 +887F0015 2C030009 +40810010 38600000 +987F0015 418201BC +386000B7 3880007F +38A00040 3D808002 +618C37A8 7D8903A6 +4E800421 887F0013 38630001 987F0013 -93370007 7FE3FB78 -9077000B 38600004 +3860000D 3D808037 +618CF1E4 7D8903A6 +4E800421 7C771B78 +38800018 3D808000 +618CC160 7D8903A6 +4E800421 38600014 +38800000 98770000 +98970001 7F43D378 +98770002 887F0015 +98770003 38630001 +987F0015 887E000C +98770008 7FE3FB78 +90770009 38600004 38800005 38A00080 3D808039 618C01F0 7D8903A6 4E800421 -7C6E1B78 38800004 -3CA08037 60A5F1B0 -7EE6BB78 3D808039 -618C0B68 7D8903A6 +7C6E1B78 806DB614 +80630084 82030010 +8063000C 3D808037 +618C0E44 7D8903A6 +4E800421 7C6F1B78 +822F0010 886DAFE0 +2C030000 4182000C +C03D0014 D02F0038 +7DC37378 38800004 +7DE57B78 3D808039 +618C0A70 7D8903A6 +4E800421 7E238B78 +7E048378 38A00000 +38C00000 3D808036 +618CFB5C 7D8903A6 +4E800421 8071007C +C03D0020 3D808036 +618C532C 7D8903A6 +4E800421 7DE37B78 +C03D001C 3D808036 +618CF8BC 7D8903A6 4E800421 7DC37378 -480003E1 7C8802A6 -38A00004 3D808038 -618CFD54 7D8903A6 -4E800421 887E0000 -2C030004 4182000C -38BD0094 48000008 -38BD0178 38800009 -480005E5 887E0000 -2C030004 4182000C -38BD0094 48000008 -38BE00B0 3880000A -480005C5 887E0000 -2C030004 4182000C -38BD0094 48000008 -38BD0181 38800008 -480005A5 887E0000 -2C030004 41820034 -2C030005 41820020 -2C030000 4181000C -38BD0094 48000024 -38BD0193 38DD01B9 -48000018 38BD0193 -38DD01C0 4800000C -38BD01A1 38DD01AE -38800007 48000559 -3B600001 7F64DB78 -38BD0094 48000549 -3B7B0002 2C1B0005 -4081FFEC 38800008 -38600000 7C7F21AE -38840001 2C04000A -4081FFF4 3B60000B -7F64DB78 38BD0094 -48000515 3B7B0001 -2C1B000E 4081FFEC -887E0000 2C030005 -408200A8 3B60000B -3B400000 3B200000 -3B000000 3AFE0117 -7ED7D0AE 56C00631 -41820010 3B5A0002 -3B390001 48000018 -2C160020 40820008 -7F58D378 3B5A0001 -3B390001 2C160000 -41820018 2C19001E -41810008 4800002C -38800000 7C97C1AE -7F64DB78 7EE5BB78 -48000495 3B7B0001 -7EF7C214 3AF70001 -3B400000 3B200000 -2C160000 41820020 -387E0208 7C97D214 -7C041800 40800010 -2C1B000E 41810008 -4BFFFF78 4800014C -3B600001 886DB657 -7F64DB78 2C030000 -40820018 38BD00BA -4800043D 38600001 -987F0008 48000124 -38BD00D0 48000429 -3B7B0002 38600002 -987F0008 887E0001 -7F64DB78 2C030000 -40820080 886DAFA0 -2C030002 41800034 +3C808039 60841070 +38A00003 38C00080 +3D808039 618C069C +7D8903A6 4E800421 +38800004 3CA08037 +60A5F1B0 7EE6BB78 +3D808039 618C0B68 +7D8903A6 4E800421 +7DC37378 480003E1 +7C8802A6 38A00004 +3D808038 618CFD54 +7D8903A6 4E800421 887E0000 2C030004 -40820028 886DAFC9 -2C030000 4082001C -886DAFCA 2C030000 -40820010 38BD00E3 -38DD010F 48000034 -38BD00E3 38DD00F5 +4182000C 38BD0098 +48000008 38BD017C +38800009 4800060D 887E0000 2C030004 -41820020 38BD00E3 -38DD0108 886DAFA0 -2C030002 4180000C -38BD00E3 38DD00FD -4800039D 38600001 -987F0009 48000084 -38BD011C 48000389 -3B7B0002 38600002 -987F0009 887E0000 -7F64DB78 2C030004 -4182004C 2C030003 -41820024 88ADAFA0 -2C050001 38BD0126 -38DD0156 41820038 -38BD0126 38DD015F -4800002C 88ADAFA0 -2C050001 38BD0137 -38DD0156 41820018 -38BD0137 38DD015F -4800000C 38BD0148 -38DD0156 48000319 -38600001 987F000A -3B400008 3B600002 -7C7FD0AE 2C030001 -40820044 A07F000B -3880000F 7C632396 -1C630003 386301D3 -7CBD1A14 7F64DB78 -480002DD 7F83E378 -7F64DB78 38BD0078 +4182000C 38BD0098 +48000008 38BE00B0 +3880000A 480005ED +887E0000 2C030004 +4182000C 38BD0098 +48000008 38BD0185 +38800008 480005CD +887E0000 2C030004 +41820034 2C030005 +41820020 2C030000 +4181000C 38BD0098 +48000024 38BD0197 +38DD01BD 48000018 +38BD0197 38DD01C4 +4800000C 38BD01A5 +38DD01B2 38800007 +48000581 3B600001 +7F64DB78 38BD0098 +48000571 3B7B0002 +2C1B0005 4081FFEC +38800008 38600000 +7C7F21AE 38840001 +2C04000A 4081FFF4 +3B60000B 7F64DB78 +38BD0098 4800053D +3B7B0001 2C1B000E +4081FFEC 887E0000 +2C030005 408200A8 +3B60000B 3B400000 +3B200000 3B000000 +3AFE0117 7ED7D0AE +56C00631 41820010 +3B5A0002 3B390001 +48000018 2C160020 +40820008 7F58D378 +3B5A0001 3B390001 +2C160000 41820018 +2C19001E 41810008 +4800002C 38800000 +7C97C1AE 7F64DB78 +7EE5BB78 480004BD +3B7B0001 7EF7C214 +3AF70001 3B400000 +3B200000 2C160000 +41820020 387E0208 +7C97D214 7C041800 +40800010 2C1B000E +41810008 4BFFFF78 +4800014C 3B600001 +886DB657 7F64DB78 +2C030000 40820018 +38BD00BE 48000465 +38600001 987F0008 +48000124 38BD00D4 +48000451 3B7B0002 +38600002 987F0008 +887E0001 7F64DB78 +2C030000 40820080 +886DAFA0 2C030002 +41800034 887E0000 +2C030004 40820028 +886DAFC9 2C030000 +4082001C 886DAFCA +2C030000 40820010 +38BD00E7 38DD0113 +48000034 38BD00E7 +38DD00F9 887E0000 +2C030004 41820020 +38BD00E7 38DD010C +886DAFA0 2C030002 +4180000C 38BD00E7 +38DD0101 480003C5 +38600001 987F0009 +48000084 38BD0120 +480003B1 3B7B0002 +38600002 987F0009 +887E0000 7F64DB78 +2C030004 4182004C +2C030003 41820024 +88ADAFA0 2C050001 +38BD012A 38DD015A +41820038 38BD012A +38DD0163 4800002C +88ADAFA0 2C050001 +38BD013B 38DD015A +41820018 38BD013B +38DD0163 4800000C +38BD014C 38DD015A +48000341 38600001 +987F000A 3B400008 +3B600002 7C7FD0AE +2C030001 40820044 +A07F000B 3880000F +7C632396 1C630003 +386301D0 7CBD1A14 +7F64DB78 48000305 +7F83E378 7F64DB78 +38BD0088 3D80803A +618C74F0 7D8903A6 +4E800421 48000044 +2C030002 40820030 +7F64DB78 38BD01D6 +480002D1 7F83E378 +7F64DB78 38BD0084 3D80803A 618C74F0 7D8903A6 4E800421 -48000044 2C030002 -40820030 7F64DB78 -38BD01D9 480002A9 -7F83E378 7F64DB78 -38BD0074 3D80803A -618C74F0 7D8903A6 -4E800421 48000010 -7F64DB78 38BD0094 -4800027D 3B7B0002 -3B5A0001 2C1A000A -4081FF68 A07F000B -38630001 2C03001E -41800008 38600000 -B07F000B BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 7C6E1B78 -7C0802A6 90010004 -9421FF50 BE810008 -4BFFF3D1 7FA802A6 -81EE002C 8A0F0000 -8A2F0001 8A4F0002 -826F0003 82AF0007 -83EF000B 2C130000 -4082013C 806DC2DC -38800003 9883000E -3C6080BD 60635C6C -38600000 38800000 -3D80803A 618C6754 -7D8903A6 4E800421 -7C731B78 926F0003 -806DC2DC 38800001 -9883000E 38800001 -98930049 38800000 -9893004A C03D0000 -D0330008 C03D0004 -D0330024 D0330028 -7E258B78 38800004 -7CA52430 7CA52030 -7C858850 7E238B78 -38A00004 7C632C30 -3D808000 618C56AC -7D8903A6 4E800421 -7C761B78 7C942378 -7E439378 3D808000 -618C55F4 7D8903A6 -4E800421 C09D001C -EC210132 FC600890 -C03D0008 C05D000C -EC42182A FDC00890 -FDE01090 3C608000 -60635614 80630000 -83C30000 387E0015 -7C03A800 4082000C -389D0088 48000008 -389D008C 7E639B78 -38A00001 38DD0090 -38FD01CC 7EA8AB78 -7E89A378 C03D0010 -C05D0010 FC607090 -FC807890 C0BD0014 -C0DD0018 3D808000 -618C56B4 7D8903A6 -4E800421 887F0012 -2C030006 41800028 -887F0013 7C039000 -4080000C 2C12000C -40810028 887F0013 -7C721850 2C030006 -41810018 2C100000 -41820010 3A10FFFF -9A0F0000 4800006C -7DC37378 3D808038 -618CFED4 7D8903A6 -4E800421 7DC37378 -3D808039 618C0228 -7D8903A6 4E800421 -7E639B78 3D80803A -618C5CC4 7D8903A6 -4E800421 887F0012 -3863FFFF 987F0012 -887F0013 7E449378 -38840001 7C032000 -41820008 4800000C -38600000 987F0013 +48000010 7F64DB78 +38BD0098 480002A5 +3B7B0002 3B5A0001 +2C1A000A 4081FF68 +A07F000B 38630001 +2C03001E 41800008 +38600000 B07F000B BA810008 800100B4 382100B0 7C0803A6 -4E800020 7EA802A6 -7F83E378 3D80803A -618C70A0 7D8903A6 -4E800421 7EA803A6 -4E800020 80CDB638 -60000000 00000000 +4E800020 4E800021 +7C6E1B78 7C0802A6 +90010004 9421FF50 +BE810008 4BFFF40D +7FA802A6 820E002C +8A300000 8A500001 +8A700002 8A900003 +82B00004 8AF00008 +83F00009 81EE0028 +81EF0010 7DE37B78 +3D808037 618C0928 +7D8903A6 4E800421 +2C150000 408200CC +7E83A378 3D808000 +618C55F4 7D8903A6 +4E800421 C05D0018 +C07D0008 EC6100F2 +EC421828 D04F003C +2C120000 4182009C +3A2000AA 9A300000 +3A400001 9A500001 +7C962378 7E83A378 +3D808000 618C55F4 +7D8903A6 4E800421 +C05D0030 C07D0008 +EC6100F2 EC42182A +FDE01090 806DC2DC +38800003 9883000E +C03D002C 886DAFE0 +2C030000 41820008 +C03D0028 38770001 +7E649B78 38A00002 +38C00000 C07D0034 +C09D0038 3D808000 +618C56B4 7D8903A6 +4E800421 90700004 +806DC2DC 38800001 +9883000E 48000004 +887F0013 2C030006 +41800028 887F0015 +7C03A000 4080000C +2C140009 408100AC +887F0015 7C741850 +2C030006 4181009C +2C110000 4082001C +2C120000 4182FF2C +2C120001 41820018 +2C120002 4182007C +3A31FFFF 9A300000 +480000CC 3A400002 +9A500001 3A200014 +9A300000 806F007C +C03D0024 3D808036 +618C532C 7D8903A6 +4E800421 7DE37B78 +C03D0020 3D808036 +618CF8BC 7D8903A6 +4E800421 8075005C +3D808037 618CF1B0 +7D8903A6 4E800421 +7EA3AB78 3D80803A +618C5CC4 7D8903A6 +4E800421 48000060 +7DC37378 3D808039 +618C0228 7D8903A6 +4E800421 809F0000 +88840003 7C172000 +40820010 887F0014 +3863FFFF 987F0014 +887F0013 3863FFFF +987F0013 887F0015 +7E84A378 38840001 +7C032000 41820008 +4800000C 38600000 +987F0015 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7EA802A6 7F83E378 +3D80803A 618C70A0 +7D8903A6 4E800421 +7EA803A6 4E800020 +80CDB638 00000000 C22652F0 0000007C #Online/Menus/CSS/InitSheikSelector.asm 3C608048 80639D30 5463443E 2C030008 @@ -3116,8 +3079,8 @@ C05F0040 FC011040 C22652F4 000000B8 #Online/Menus/CSS/InitTeamToggleButton.asm 3C608048 80639D30 5463443E 2C030008 -40820594 888DAFA0 -2C040003 40820588 +40820590 888DAFA0 +2C040003 40820584 4800002C 4E800021 C0200000 C0A00000 C1BC0000 C18C0000 @@ -3201,7 +3164,7 @@ FC20F890 3D808036 618C3C2C 7D8903A6 4E800421 BA810008 800100B4 382100B0 -7C0803A6 480002E8 +7C0803A6 480002E4 4E800021 7C0802A6 90010004 9421FF50 BE810008 7C741B78 @@ -3240,9 +3203,9 @@ C0DF000C FC021840 60840A48 7C832214 886403C2 1C63001C 7C832A14 8B4400DD -889E0014 38840001 +889E0016 38840001 2C040004 41800008 -38800001 989E0014 +38800001 989E0016 386D8844 98830000 7C992378 2C190003 4182001C 2C190002 @@ -3259,71 +3222,75 @@ C0DF000C FC021840 7D8903A6 4E800421 7C0802A6 90010004 9421FF00 BC610008 -7F23CB78 4800009D +7F23CB78 48000099 B8610008 80010104 38210100 7C0803A6 7F23CB78 7F64DB78 3D808000 618C56B0 7D8903A6 4E800421 7C781B78 886DB657 -2C030000 41820050 -80ADB610 9B1C0073 -3CA0803F 60A50E09 -9B050000 9B1E0015 -38600000 7F44D378 -7F05C378 38C00000 -3D808000 618C56BC -7D8903A6 4E800421 -38600002 3D808002 -618C4030 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -7C0802A6 90010004 -9421FF50 BE810008 -7C791B78 2C190003 -4182001C 2C190002 -4182000C 2C190001 -41820014 38800000 -48000014 38800001 -4800000C 38800002 -48000004 88ADB650 -386D9A38 7C632A14 -98830000 38600000 -3D808025 618CDB34 +2C030000 4182004C +9B1C0073 3CA0803F +60A50E09 9B050000 +9B1E0017 38600000 +7F44D378 7F05C378 +38C00000 3D808000 +618C56BC 7D8903A6 +4E800421 38600002 +3D808002 618C4030 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -4E800020 38600000 -38980000 3D80803A -618C6754 7D8903A6 -4E800421 00000000 -C2262004 00000009 #Online/Menus/CSS/PreventAPressCharUnselect.asm +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C791B78 +2C190003 4182001C +2C190002 4182000C +2C190001 41820014 +38800000 48000014 +38800001 4800000C +38800002 48000004 +88ADB650 386D9A38 +7C632A14 98830000 +38600000 3D808025 +618CDB34 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +38600000 38980000 +3D80803A 618C6754 +7D8903A6 4E800421 +60000000 00000000 +C2262004 0000000B #Online/Menus/CSS/PreventAPressCharUnselect.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +4082003C 3C608000 60635614 80630000 -80830000 88640001 -2C030000 41820014 -3D808026 618C2154 -7D8903A6 4E800420 -566015BA 00000000 -C22620AC 00000009 #Online/Menus/CSS/PreventBPressCharUnselect.asm +80830000 88630010 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 566015BA +60000000 00000000 +C22620AC 0000000B #Online/Menus/CSS/PreventBPressCharUnselect.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +4082003C 3C608000 60635614 80630000 -80830000 88640001 -2C030000 41820014 -3D808026 618C2154 -7D8903A6 4E800420 -88FF0004 00000000 +80830000 88630010 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 88FF0004 +60000000 00000000 C22600A8 0000000C #Online/Menus/CSS/PreventColorChange.asm 3C608048 80639D30 5463443E 2C030008 40820048 3C608000 60635614 80630000 -88630014 2C030000 +88630016 2C030000 40820020 3C608000 60635614 80630000 80630000 88630001 @@ -3364,7 +3331,7 @@ C2262478 00000016 #Online/Menus/CSS/Teams/AnimateCursorPort.asm 888DAFA0 2C040003 40820048 807E0000 88630001 2C030000 -40820038 8BFE0014 +40820038 8BFE0016 2C1F0003 41820008 3BFFFFFF 88CDB650 1CC60004 7FFF3214 @@ -3377,23 +3344,20 @@ BA810008 800100B4 38A00400 3CC08036 60C6410C 38E00001 60000000 00000000 -C226295C 00000010 #Online/Menus/CSS/Teams/AnimateToken.asm +C2262768 0000000D #Online/Menus/CSS/Teams/AnimateToken.asm 7C0802A6 90010004 9421FF50 BE810008 3F808000 639C5614 839C0000 3C608048 80639D30 5463443E -2C030008 40820038 +2C030008 40820024 888DAFA0 2C040003 -4082002C 807C0000 -88630001 2C030000 -4082001C 8B7C0014 +40820018 8B7C0016 2C1B0003 41820008 3B7BFFFF 9B7D0006 -48000004 BA810008 -800100B4 382100B0 -7C0803A6 881D0006 -60000000 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +387C0000 00000000 C2260C28 0000001C #Online/Menus/CSS/Teams/PreventColorResetCharHover.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -3402,7 +3366,7 @@ C2260C28 0000001C #Online/Menus/CSS/Teams/PreventColorResetCharHover.asm 80639D30 5463443E 2C030008 40820098 888DAFA0 2C040003 -4082008C 8BDF0014 +4082008C 8BDF0016 808DB610 886DB650 1C630024 7F441A14 887A0070 7C7D1B78 @@ -3438,7 +3402,7 @@ C2260B90 0000001A #Online/Menus/CSS/Teams/PreventColorResetRandomChar.asm 4082007C 808DB610 886DB650 1C630024 7F441A14 887A0070 -7C7D1B78 8BDF0014 +7C7D1B78 8BDF0016 7FC3F378 7FA4EB78 3D808000 618C56B0 7D8903A6 4E800421 @@ -3592,7 +3556,7 @@ BE810008 3C60804D 39400008 3D80803A 618C611C 7D8903A6 4E800421 7C7F1B78 -83CDB61C 93FE07BC +83CDB61C 93FE07B8 4BFFFE69 7F8802A6 38600000 3D808000 618C5610 7D8903A6 @@ -3814,7 +3778,7 @@ C34C0000 C31D0000 BA810008 800100B4 382100B0 7C0803A6 B9C10408 00000000 -C21B1040 00000172 #Online/Menus/TitleMenu/OnMenuPrep.asm +C21B1040 00000165 #Online/Menus/TitleMenu/OnMenuPrep.asm 7C0802A6 90010004 9421FF50 BE810008 480000B5 7C6802A6 @@ -3839,7 +3803,7 @@ C21B1040 00000172 #Online/Menus/TitleMenu/OnMenuPrep.asm 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -48000AC4 4E800021 +48000A5C 4E800021 3D808000 618C5618 7D8903A6 4E800421 7FC802A6 38000008 @@ -4026,9 +3990,9 @@ BE810008 806DB518 3C80803E 6084FA60 3D808038 618C0358 7D8903A6 4E800421 -7C7D1B78 480004C1 -7FC802A6 C2DE001C -C2FE0020 3AC00016 +7C7D1B78 48000465 +7FC802A6 C2DE0010 +C2FE0014 3AC00016 7EC3B378 3D808037 618CF1E4 7D8903A6 4E800421 7C771B78 @@ -4098,91 +4062,78 @@ FC20B090 3D808036 7C0803A6 4E800020 4E800021 7C0802A6 90010004 9421FF50 -BE810008 48000281 -7FC802A6 C2DE001C -C2FE0020 7C781B78 +BE810008 48000225 +7FC802A6 C2DE0010 +C2FE0014 7C781B78 83380028 8358002C 8B7A0000 839A0001 83BA0005 7F23CB78 3D808037 618C0928 7D8903A6 4E800421 -2C1D0000 40820070 -38600000 38800001 -C01E0008 C03E0000 -C05E0004 C07E000C -C09E0010 C0BE0014 -3D80803A 618C5ACC +2C1D0000 4082003C +3860013F 38800000 +38A00002 38C00001 +C03E0000 C05E0004 +C07E0008 C09E000C +3D808000 618C56B4 7D8903A6 4E800421 -7C7D1B78 7C7D1B78 -93BA0005 38000001 -3880013F 7FA3EB78 -C01E0018 D0030024 -D0030028 981D004A -3D80803A 618C6368 +907A0005 48000198 +7F23CB78 38810034 +38A00007 38C0FFFF +3D808001 618C1E24 7D8903A6 4E800421 -480001C0 7F23CB78 -38810034 38A00007 -38C0FFFF 3D808001 -618C1E24 7D8903A6 -4E800421 FC20B090 -2C1B0000 40820008 -FC20B890 80610034 -3D808036 618CF8BC +FC20B090 2C1B0000 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 7D8903A6 4E800421 -80610034 3D808037 -618C0928 7D8903A6 -4E800421 7F23CB78 -38810034 38A00006 -38C0FFFF 3D808001 -618C1E24 7D8903A6 -4E800421 FC20B090 -2C1B0001 40820008 -FC20B890 80610034 -3D808036 618CF8BC +7F23CB78 38810034 +38A00006 38C0FFFF +3D808001 618C1E24 7D8903A6 4E800421 -80610034 3D808037 -618C0928 7D8903A6 -4E800421 39C00000 -7DC37378 3D80801A -618C36A0 7D8903A6 -4E800421 2C030040 -4182002C 2C030080 -41820024 2C030001 -4182003C 2C030002 -41820064 39CE0001 -2C0E0004 4180FFC4 -480000C8 38600002 -3D808002 618C4030 +FC20B090 2C1B0001 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 7D8903A6 4E800421 -6B630001 987A0000 -480000A8 2C1B0001 -4082002C 388000B7 -806DAFC4 98830000 -38800001 38A00001 -3D808000 618C55F0 +39C00000 7DC37378 +3D80801A 618C36A0 7D8903A6 4E800421 -48000004 38600000 -3D808002 618C4030 -7D8903A6 4E800421 -7F23CB78 3D808036 -618CF6B4 7D8903A6 +2C030040 4182002C +2C030080 41820024 +2C030001 4182003C +2C030002 41820064 +39CE0001 2C0E0004 +4180FFC4 480000A0 +38600002 3D808002 +618C4030 7D8903A6 +4E800421 6B630001 +987A0000 48000080 +2C1B0001 4082002C +388000B7 806DAFC4 +98830000 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 48000004 +38600000 3D808002 +618C4030 7D8903A6 4E800421 7F03C378 -3D808038 618CFED4 +3D808039 618C0228 7D8903A6 4E800421 -7F03C378 3D808039 -618C0228 7D8903A6 -4E800421 7FA3EB78 -3D80803A 618C5CC4 -7D8903A6 4E800421 -3C600000 60630000 -907C0008 48000004 -BA810008 800100B4 -382100B0 7C0803A6 -4E800020 4E800021 -C0B00000 C0333333 -41100000 41B80000 -437A0000 41A00000 -3D4CCCCD 00000000 +7FA3EB78 3D80803A +618C5CC4 7D8903A6 +4E800421 3C600000 +60630000 907C0008 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 C0B00000 +C0333333 41B80000 +3D3851EC 00000000 3F800000 3C60804A 60000000 00000000 C222D88C 00000008 #Online/Menus/TitleMenu/OnlineModeOptionSelected.asm @@ -4201,10 +4152,10 @@ C21B3668 00000005 #Online/Menus/VSScreen/AllowP2ColorDuplicate.asm 41820014 3D808017 618CBEC8 7D8903A6 4E800421 00000000 -C2186EC4 00000078 #Online/Menus/VSScreen/InitVsSplash.asm +C2186EC4 00000077 #Online/Menus/VSScreen/InitVsSplash.asm 3C608048 80639D30 5463443E 2C030408 -408203A4 48000060 +4082039C 48000060 4E800021 00000000 3F800000 3F000000 3F19999A F15959FF @@ -4243,10 +4194,10 @@ D03E0024 D03E0028 389F0055 38BD0053 38C00000 C03F0020 480000F5 48000038 -807D000D 480001F1 +807D000D 480001E9 387F0010 389F0044 C03F001C 480000D9 -807D0011 480001D9 +807D0011 480001D1 387F0014 389F004B C03F0020 480000C1 48000004 38600000 @@ -4272,7 +4223,7 @@ D03E0008 3CA0803B 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -48000184 7C0802A6 +4800017C 7C0802A6 90010004 9421FF50 BE810008 FFE00890 7C761B78 7C942378 @@ -4287,22 +4238,21 @@ EC630072 EFDE1828 7FC3F378 389F0018 7EC4B378 38A00000 7E87A378 C03F0008 -C05F0008 FC60F890 -FC80F090 3D808000 -618C56B4 7D8903A6 -4E800421 39C00008 -39E00000 7C6E0A14 -80E30000 2C0F0000 -4182000C C07F003C -EFFF182A C09F0040 -EFDE202A 7FC3F378 -389F0018 38A00000 -C03F000C C05F000C -FC60F890 FC80F090 +FC40F890 FC60F090 +3D808000 618C56B4 +7D8903A6 4E800421 +39C00008 39E00000 +7C6E0A14 80E30000 +2C0F0000 4182000C +C07F003C EFFF182A +C09F0040 EFDE202A +7FC3F378 389F0018 +38A00000 C03F000C +FC40F890 FC60F090 3D808000 618C56B4 7D8903A6 4E800421 39CE0004 39EF0001 -7C0FD000 4180FFA8 +7C0FD000 4180FFAC BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 @@ -4402,14 +4352,15 @@ C21BFA20 00000012 #Online/Slippi Online Scene/boot.asm 3D80801B 618C136C 7D8903A6 4E800420 38600001 00000000 -C21A45B8 00000163 #Online/Slippi Online Scene/main.asm +C21A45B8 00000164 #Online/Slippi Online Scene/main.asm 3BA30004 7C0802A6 90010004 9421FF50 BE810008 3C80803E -6084DC1C 4800020D +6084DC1C 48000215 7C6802A6 38630000 90640008 38600000 986DAFA3 986DAFC8 +986DAFEC 986DAFE0 38600008 4800016D 7C8802A6 4800002D 48000AB4 80830000 @@ -4777,60 +4728,53 @@ C20056BC 00000012 #Online/Static/CSSUpdateCSP.asm 800100B4 382100B0 7C0803A6 4E800020 60000000 00000000 -C20056AC 00000035 #Online/Static/ChatMessages.asm +C20056AC 0000002E #Online/Static/ChatMessages.asm 7CA802A6 2C030008 4182001C 2C030004 41820020 2C030002 41820024 2C030001 -41820028 480000A9 +41820028 48000075 7C6802A6 48000024 -4800012D 7C6802A6 -48000018 480000FD +480000F9 7C6802A6 +48000018 480000C9 7C6802A6 4800000C -480000B1 7C6802A6 +4800007D 7C6802A6 88E30000 89030001 89230002 89430003 -2C040008 4182001C -2C040004 41820044 -2C040002 41820028 -2C040001 41820010 -38830004 7C843A14 -4800003C 38830004 -7C843A14 7C844214 -4800002C 38830004 -7C843A14 7C844214 -7C844A14 48000018 -38830004 7C843A14 -7C844214 7C844A14 -7C845214 7CA903A6 -4E800420 4E800021 -07040904 436F6D6D -6F6E0067 6773006F -6E65206D 6F726500 -62726200 676F6F64 -206C7563 6B000000 -4E800021 0C0C0D07 -436F6D70 6C696D65 -6E747300 77656C6C -20706C61 79656400 -74686174 20776173 -2066756E 00746861 -6E6B7300 746F6F20 -676F6F64 00000000 -4E800021 0A040504 -52656163 74696F6E -73006F6F 66006D79 -2062006C 6F6C0077 -6F770000 4E800021 -05050917 4D697363 -006F6B61 79007468 -696E6B69 6E67006C -65742773 20706C61 -79206167 61696E20 -6C617465 72006261 -6420636F 6E6E6563 -74696F6E 00000000 -60000000 00000000 +7C862378 38830004 +7C843A14 2C060008 +41820020 7C844214 +2C060001 41820014 +7C844A14 2C060002 +41820008 7C845214 +7CA903A6 4E800420 +4E800021 07040904 +436F6D6D 6F6E0067 +6773006F 6E65206D +6F726500 62726200 +676F6F64 206C7563 +6B000000 4E800021 +0C0C0D07 436F6D70 +6C696D65 6E747300 +77656C6C 20706C61 +79656400 74686174 +20776173 2066756E +00746861 6E6B7300 +746F6F20 676F6F64 +00000000 4E800021 +0A040504 52656163 +74696F6E 73006F6F +66006D79 2062006C +6F6C0077 6F770000 +4E800021 05050917 +4D697363 006F6B61 +79007468 696E6B69 +6E67006C 65742773 +20706C61 79206167 +61696E20 6C617465 +72006261 6420636F +6E6E6563 74696F6E +00000000 00000000 C20056B8 00000002 #Online/Static/GetCSSIconData.asm 3C60803F 60630A48 4E800020 00000000 @@ -5087,17 +5031,192 @@ C21A5018 00000005 618C5078 7D8903A6 4D820420 00000000 04218D68 C8228000 +C209E090 00000011 #Common/FastForward/DynamicsFix.asm +807B0028 48000009 +48000074 7C0802A6 +90010004 9421FFE8 +93E10014 7C7F1B78 +807F0014 54600211 +40820020 54600673 +41820018 7FE3FB78 +3D808037 618C3078 +7D8903A6 4E800421 +807F0010 2C030000 +41820008 4BFFFFB9 +807F0008 2C030000 +41820008 4BFFFFA9 +83E10014 8001001C +38210018 7C0803A6 +4E800020 BB010028 +60000000 00000000 $Recommended: Normal Lag Reduction [Hannes Mann] *Reduces input lag 043761EC 4800001C 04376238 48000018 +$Recommended: Apply Delay to all In-Game Scenes [Fizzi] +*Applies online delay to all in-game scenes. +*Dolphin netplay is no longer necessary for local practice +C2376A24 00000026 #Common/UseInGameDelay/ApplyInGameDelay.asm +3D808034 618CDA00 +7D8903A6 4E800421 +3D808000 618C561C +7D8903A6 4E800421 +2C030002 41820014 +2C030003 4182000C +2C030004 408200F8 +3C608048 88639D30 +2C030008 418200E8 +3C608047 60639D64 +80630000 2C030000 +408200D4 7C0802A6 +90010004 9421FF50 +BE810008 3C60802F +6063666C 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +83E30008 887F0000 +2C030000 40810080 +38610038 388100DC +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 887F0001 +1C630030 3BC30002 +386100DC 7C9FF214 +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 7C7FF214 +38810038 38A00030 +3D808000 618C31F4 +7D8903A6 4E800421 +889F0000 887F0001 +38630001 7C032000 +41800008 38600000 +987F0001 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C22F666C 0000005C #Common/UseInGameDelay/InitializeInGameDelay.asm +4800007C 4E800021 +80000000 4E800021 +00000000 3DCCCCCD +43870000 434F0000 +3EA8F5C3 44656C61 +793A2025 64660000 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C7F1B78 +880DB6CC 2C000001 +41820018 7FE3FB78 +3D808039 618C10D8 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C7F1B78 +3C608048 88639D30 +2C030008 4182024C +7C0802A6 90010004 +9421FF50 BE810008 +386002D2 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7F1B78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 4BFFFF39 +7C6802A6 93E30000 +386000D5 987F0000 +7FE3FB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FE3FB78 +38800002 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +8BDF0001 7FE3FB78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 2C1E0000 +41800010 2C1E000F +41810010 48000010 +3BC00000 48000008 +3BC0000F 9BDF0000 +2C1E0000 4081016C +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7A1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C791B78 +7F23CB78 888DC1AB +7F45D378 3D808039 +618C0A70 7D8903A6 +4E800421 7F23CB78 +4BFFFE51 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 90790024 +38600002 7F24CB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7B1B78 4BFFFDD1 +7FA802A6 38600002 +7F64DB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +38800001 989C0049 +38800002 989C004A +C03D0000 D03C0008 +C03D0004 D03C0024 +D03C0028 C03D0008 +C05D000C 7F83E378 +389D0014 7FC5F378 +3D80803A 618C6B98 +7D8903A6 4E800421 +7F83E378 38800000 +C03D0010 C05D0010 +3D80803A 618C7548 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +7FE3FB78 00000000 +C200561C 00000013 #Common/GetCommonMinorID/GetCommonMinorID.asm +7C0802A6 90010004 +9421FF50 BE810008 +3CA08048 8BC59D30 +8BE59D33 3FA0803D +63BDACA4 38800000 +1CA40014 7CBD2A14 +88C50001 7C06F000 +4082000C 80650010 +48000010 38840001 +2C04002C 4081FFDC +38800000 1CA40018 +7CA32A14 88C50000 +7C06F800 4082000C +8865000C 48000010 +38840001 2C0600FF +4082FFDC BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 + $Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch] *Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- *Will not cause desyncs when playing online 043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm -C236A4A8 00000006 #External/Widescreen/Overwrite CObj Values.asm +C236A4A8 00000007 #External/Widescreen/Overwrite CObj Values.asm +38600001 986DAFE0 C03F0034 4800001D 7C6802A6 C0430000 C0630004 EC2100B2 diff --git a/Data/Sys/GameSettings/Netplay/GALJ01r2.ini b/Data/Sys/GameSettings/Netplay/GALJ01r2.ini index 0f7c1caa9e..8f3a074668 100644 --- a/Data/Sys/GameSettings/Netplay/GALJ01r2.ini +++ b/Data/Sys/GameSettings/Netplay/GALJ01r2.ini @@ -11,6 +11,7 @@ $Required: General Codes $Required: Slippi Recording $Required: Slippi Online $Recommended: Normal Lag Reduction +$Recommended: Apply Delay to all In-Game Scenes [Gecko] $Required: General Codes [Achilles, Dan Salvato, Magus, UnclePunch, tauKhan, Ptomerty, Cilan, Zauron, Datel, donny2112, Jorgasms, strikebowler585, Myougi] @@ -225,242 +226,140 @@ FC0F0840 4081000C FC0F8840 41800010 C21F0318 FE0F802A D21F0318 00000000 -0425D22C 3BA00000 #External/UCF + Arduino Toggle UI/Disable KO Stars.asm -C206B028 00000037 #External/UCF + Arduino Toggle UI/Arduino/Arduino - Check for Toggle.asm -901F065C 897F0618 -3982F228 7D6C58AE -2C0B0002 408201A0 -48000025 00000000 -00000000 00000000 -00000000 3F39999A -BF300000 3C4CCCCD -3E4CCCCD 7D8802A6 -C01F0650 C0228874 -FC000840 418100A4 -38800070 7C840039 -2C040000 40820094 -38800E00 7C840039 -2C040000 40820138 -38800100 7C840039 -41A20010 80BF0660 -7CA52039 41820120 -C01F0624 FC000840 -40A20114 C01F0620 -FC000840 41820108 -FC000210 808DAEB4 -C044003C C0640000 -C0840008 FC001040 -40A000EC 889F0618 -1C840004 7C0C242E -FC400210 FC021840 -408000D4 C05F0620 -EC420028 FC401210 -FC022040 418000C0 -D03F0620 480000B8 -C01F0654 C05F0650 -EC0000B2 FC000840 -4181001C 38800070 -7C840038 801F0660 -7C840039 40820008 -4800008C C01F0620 -C05F0628 EC620032 -FC030840 40810078 -889F0670 2C040003 -4180006C C05F0624 -808DAEB4 C0640314 -FC021840 41A10058 -FC401050 C064003C -FC021840 40A00048 -C06C0018 FC800210 -EC83202A EC42182A -EC840132 EC4220BA -C0628954 FC021840 -40810024 C04C0010 -FC000840 4080000C -C0028958 EC4000B2 -D05F0620 C04C0014 -D05F0624 889F0618 -1C840004 C0030020 -7C0C252E 00000000 -C20C9A44 0000002F #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 Dashback - Check for Toggle.asm -D01F002C 889F0618 -3862F228 7C6320AE -2C030001 41820014 -3862F22C 7C6320AE -2C030001 40820150 -7C0802A6 90010004 -9421FF50 BE810008 -48000121 7FC802A6 -C03F0894 C05E0000 -FC011040 40820118 -808DAEB4 C03F0620 -FC200A10 C044003C -FC011040 41800100 -887F0670 2C030002 -408000F4 887F221F -54600739 408200E8 -3C60804C 60631F78 -8BA30001 387DFFFE -889F0618 4800008D -7C7C1B78 7FA3EB78 -889F0618 4800007D -7C7C1850 7C6319D6 -2C0315F9 408100B0 -38000001 901F2358 -901F2340 809F0004 -2C04000A 40A20098 -887F000C 38800001 -3D808003 618C418C -7D8903A6 4E800421 -2C030000 41820078 -8083002C 80841ECC -C03F002C D0240018 -C05E0004 FC011040 -4181000C 38600080 -48000008 3860007F -98640006 48000048 -7C852378 3863FFFF -2C030000 40800008 -38630005 3C808046 -6084B108 1C630030 -7C841A14 1C65000C -7C841A14 88640002 -7C630774 4E800020 -4E800021 40000000 -00000000 BA810008 -800100B4 382100B0 -7C0803A6 00000000 -C20998A4 0000002B #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 Shield Drop - Check for Toggle.asm +C20C9A44 0000002B #External/UCF 0.8/Logic/UCF DB.asm +D01F002C 7C0802A6 +90010004 9421FF50 +BE810008 48000121 +7FC802A6 C03F0894 +C05E0000 FC011040 +40820118 808DAEB4 +C03F0620 FC200A10 +C044003C FC011040 +41800100 887F0670 +2C030002 408000F4 +887F221F 54600739 +408200E8 3C60804C +60631F78 8BA30001 +387DFFFE 889F0618 +4800008D 7C7C1B78 +7FA3EB78 889F0618 +4800007D 7C7C1850 +7C6319D6 2C0315F9 +408100B0 38000001 +901F2358 901F2340 +809F0004 2C04000A +40A20098 887F000C +38800001 3D808003 +618C418C 7D8903A6 +4E800421 2C030000 +41820078 8083002C +80841ECC C03F002C +D0240018 C05E0004 +FC011040 4181000C +38600080 48000008 +3860007F 98640006 +48000048 7C852378 +3863FFFF 2C030000 +40800008 38630005 +3C808046 6084B108 +1C630030 7C841A14 +1C65000C 7C841A14 +88640002 7C630774 +4E800020 4E800021 +40000000 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C20998A4 00000026 #External/UCF 0.8/Logic/UCF SD.asm 7C0802A6 90010004 9421FF50 BE810008 7C7E1B78 83FE002C -48000101 7FA802A6 -889F0618 3862F228 -7C6320AE 2C030001 -41820014 3862F230 -7C6320AE 2C030001 -408200F8 C03F063C -806DAEB4 C0030314 -FC010040 408100E4 -C03F0620 48000071 -D0210090 C03F0624 -48000065 C0410090 -EC4200B2 EC210072 -EC21102A C05D000C -FC011040 418000B4 -889F0670 2C040003 -408100A8 C01D0010 -C03F0624 FC000840 -40800098 BA810008 -800100B4 382100B0 -7C0803A6 8061001C -83E10014 38210018 -38630008 7C6803A6 -4E800020 FC000A10 -C03D0000 EC000072 -C03D0004 EC000828 -FC00001E D8010080 -80610084 38630002 -3C004330 C85D0014 -6C638000 90010080 -90610084 C8210080 -EC011028 C03D0000 -EC200824 4E800020 -4E800021 42A00000 -37270000 43300000 -3F800000 BF4CCCCD -43300000 80000000 -7FC3F378 7FE4FB78 +480000DD 7FA802A6 +C03F063C 806DAEB4 +C0030314 FC010040 +408100E4 C03F0620 +48000071 D0210090 +C03F0624 48000065 +C0410090 EC4200B2 +EC210072 EC21102A +C05D000C FC011040 +418000B4 889F0670 +2C040003 408100A8 +C01D0010 C03F0624 +FC000840 40800098 BA810008 800100B4 382100B0 7C0803A6 -60000000 00000000 -C22652EC 0000002A #External/UCF + Arduino Toggle UI/UI/Create Text.asm +8061001C 83E10014 +38210018 38630008 +7C6803A6 4E800020 +FC000A10 C03D0000 +EC000072 C03D0004 +EC000828 FC00001E +D8010080 80610084 +38630002 3C004330 +C85D0014 6C638000 +90010080 90610084 +C8210080 EC011028 +C03D0000 EC200824 +4E800020 4E800021 +42A00000 37270000 +43300000 3F800000 +BF4CCCCD 43300000 +80000000 7FC3F378 +7FE4FB78 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C20908F4 00000017 #External/UCF 0.8/Logic/UCF Tumble.asm 7C0802A6 90010004 9421FF50 BE810008 -480000C9 7FC802A6 -38600000 38800000 -3D80803A 618C6754 -7D8903A6 4E800421 -7C7F1B78 7FA3EB78 -480000D1 C05E000C -EC2100B2 C05E0000 -EC21102A C05E0004 -7FE3FB78 480000A1 -7C8802A6 3D80803A -618C6B98 7D8903A6 -4E800421 7FA3EB78 -48000099 C05E000C -EC2100B2 C05E0010 -EC21102A C05E0014 -7FE3FB78 48000075 -7C8802A6 3D80803A -618C6B98 7D8903A6 -4E800421 38800001 -989F0049 38800001 -989F004A 38800001 -989F004D C03E0008 -D03F0024 D03F0028 -386DB060 1C9D0004 -7FE3212E 48000064 -4E800021 C3DC0000 -43EA0000 3D3851EC -43AC8000 C3DC0000 -43FA0000 4E800021 -46697865 733A0000 -4E800021 4F666600 -9421FF00 D0410008 -3C004330 C84298A8 -6C638000 900100F0 -906100F4 C82100F0 -EC211028 C0410008 -38210100 4E800020 +2C030001 4082008C +C03F0628 FC200A10 +806DAEB4 C0430210 +FC011040 40800074 +3F80804C 639C1F78 +8BDC0001 387EFFFE +889F0618 48000029 +7C7D1B78 7FC3F378 +889F0618 48000019 +7C7D1850 7C6319D6 +388015F9 7C041800 +48000038 7C852378 +3863FFFF 2C030000 +40800008 38630005 +809C0008 1C630030 +7C841A14 1C65000C +7C841A14 88640002 +7C630774 4E800020 BA810008 800100B4 382100B0 7C0803A6 -38600000 00000000 -C225E0E8 00000004 #External/UCF + Arduino Toggle UI/UI/UCF Indicator - Hide Text.asm -386DB060 1C9F0004 -7C63202E 38800001 -9883004D 386000BA -60000000 00000000 -C225E070 00000004 #External/UCF + Arduino Toggle UI/UI/UCF Indicator - Show Text.asm -386DB060 1C9F0004 -7C63202E 38800000 -9883004D 386000B9 -60000000 00000000 -C22604E8 00000021 #External/UCF + Arduino Toggle UI/UI/Update Text.asm -887F0004 1C630024 -3C80803F 60840E08 -7C632214 88630000 -2C030003 418200E0 -3C80804C 608420BC -88BF0004 1CA50044 -7C842A14 80640008 -546007BD 40820010 -546007FF 40820028 -48000058 889F0004 -38A2F228 7C6520AE -38630001 2C030002 -41810040 7C6521AE -48000024 889F0004 -38A2F228 7C6520AE -3863FFFF 2C030000 -41800020 7C6521AE -48000004 38600002 -3D808002 618C4030 -7D8903A6 4E800421 -88BF0004 1C650004 -388DB060 7C63202E -3882F228 7C8428AE -48000029 7CC802A6 -1C840008 7CA43214 -38800001 3D80803A -618C70A0 7D8903A6 -4E800421 48000020 -4E800021 4F666600 -00000000 55434600 -00000000 44776565 -6E000000 889F0004 60000000 00000000 +C22662D0 0000001A #External/UCF 0.8/Indicator/UCF Text.asm +7C0802A6 90010004 +9421FF50 BE810008 +48000089 7FC802A6 +38600000 38800000 +3DC0803A 61CE6754 +7DC903A6 4E800421 +7C7F1B78 38800001 +989F0049 38800001 +989F004A C03E000C +D03F0024 D03F0028 +7FE3FB78 48000059 +7C8802A6 C03E0000 +C05E0004 3DC0803A +61CE6B98 7DC903A6 +4E800421 7C641B78 +7FE3FB78 C03E0008 +C05E0008 3D80803A +618C7548 7D8903A6 +4E800421 48000024 +4E800021 42180000 +C3898000 3EE66666 +3DCCCCCD 4E800021 +55434620 302E3800 +BA810008 800100B4 +382100B0 7C0803A6 +38980000 00000000 C226325C 00000008 #External/DPad Down at CSS for Random Stage/DPad Down at CSS for Random Stage.asm 3C808045 6084BF17 54E0077B 4182001C @@ -533,7 +432,7 @@ C2266CE0 0000000C #External/Disable FoD During Doubles/Disable FoD During Double 41820010 2C030020 41820008 48000034 806DB610 88630018 -2C030001 48000014 +2C030001 41820014 38600001 50652EB4 90A60018 48000014 38600000 50652EB4 @@ -680,7 +579,7 @@ C23219EC 0000001C #Recording/FlushFrameBuffer.asm 80ADB61C 8885000D 2C040000 40820024 8885000C 2C040000 -40820018 808507B7 +40820018 808507B3 3884FF85 7C041800 40800008 7C832378 907C0005 3BBD0009 @@ -796,7 +695,7 @@ B07E0015 3860003D 3C60804D 80635F90 907E015A 3A82F228 3AA00000 3ADE015E -1EF50008 7C75A0AE +1EF50008 38600001 7C76B92E 3AF70004 7C76B92E 3AB50001 2C150004 4180FFE4 @@ -1095,6 +994,41 @@ C20055F4 00000007 #Common/IntToFloat.asm EC211028 C0410008 38210100 4E800020 60000000 00000000 +C20056A4 00000022 #Common/LoadPremadeText.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +3B800004 7F83E378 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7D1B78 7F84E378 +3D808000 618CC160 +7D8903A6 4E800421 +386000E1 48000055 +839D0000 7FA3EB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7F83E378 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7D1B78 +386000E2 4800001D +7FA3EB78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +987D0000 9BFD0001 +9BDD0002 7FA3EB78 +38800003 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FA3EB78 7F84E378 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 C20055EC 00000008 #Common/MultiplyRWithF.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -1104,7 +1038,8 @@ EC2100B2 BA810008 800100B4 382100B0 7C0803A6 4E800020 60000000 00000000 -C20056B4 00000040 #Common/SubtextFunctions.asm +C20056B4 00000059 #Common/SubtextFunctions.asm +2C050002 418201F8 7C0802A6 90010004 9421FF50 BE810008 7C751B78 7C962378 @@ -1113,50 +1048,29 @@ C20056B4 00000040 #Common/SubtextFunctions.asm 91210040 91410044 91610048 9181004C FEA00890 FEC01090 -FEE01890 FF002090 -FF202890 FF403090 -2C180001 418000FC -39E00004 FC20B890 -FC40C090 2C0F0001 -41820020 2C0F0002 -41820020 2C0F0003 -41820020 2C0F0004 -41820020 48000024 -EC21D028 4800001C -EC21D02A 48000014 -EC42D028 4800000C -EC42D02A 48000004 -7EA3AB78 80810038 -3D80803A 618C6B98 +FEE01890 FF202890 +FF403090 2C180001 +418000FC 39E00004 +FC20B090 FC40B890 +2C0F0001 41820020 +2C0F0002 41820020 +2C0F0003 41820020 +2C0F0004 41820020 +48000024 EC21D028 +4800001C EC21D02A +48000014 EC42D028 +4800000C EC42D02A +48000004 7EA3AB78 +80810038 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 7D8903A6 4E800421 -7C771B78 7EA3AB78 -7EE4BB78 FC20A890 -FC40B090 3D80803A -618C7548 7D8903A6 -4E800421 7F25CB78 -2C0F0000 40820008 -7EC5B378 7EA3AB78 -7EE4BB78 3D80803A -618C74F0 7D8903A6 -4E800421 7EA3AB78 -7EE4BB78 80A10038 -80C1003C 80E10040 -81010044 81210048 -8141004C 3D80803A -618C70A0 7D8903A6 -4E800421 2C0F0000 -4182000C 39EFFFFF -4BFFFF14 48000094 -7EA3AB78 80810038 -FC20B890 FC40C090 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C771B78 7EA3AB78 -7EE4BB78 FC20A890 -FC40B090 3D80803A -618C7548 7D8903A6 -4E800421 7EA3AB78 -7EE4BB78 7EC5B378 +7F25CB78 2C0F0000 +40820008 7EC5B378 +7EA3AB78 7EE4BB78 3D80803A 618C74F0 7D8903A6 4E800421 7EA3AB78 7EE4BB78 @@ -1165,10 +1079,55 @@ FC40B090 3D80803A 81210048 8141004C 3D80803A 618C70A0 7D8903A6 4E800421 -7EE3BB78 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -60000000 00000000 +2C0F0000 4182000C +39EFFFFF 4BFFFF14 +48000094 7EA3AB78 +80810038 FC20B090 +FC40B890 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 +7D8903A6 4E800421 +7EA3AB78 7EE4BB78 +7EC5B378 3D80803A +618C74F0 7D8903A6 +4E800421 7EA3AB78 +7EE4BB78 80A10038 +80C1003C 80E10040 +81010044 81210048 +8141004C 3D80803A +618C70A0 7D8903A6 +4E800421 7EE3BB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C7D1B78 +7C9C2378 7CDB3378 +FEC00890 FEE01090 +FF001890 FEA02090 +4800008D 7F4802A6 +38600000 7F64DB78 +C01A0000 FC20B090 +FC40B890 FC60C090 +C09A0004 C0BA0008 +3D80803A 618C5ACC +7D8903A6 4E800421 +7C751B78 2C1C0000 +41820010 38600001 +986DAFEC 7F86E378 +7EA3AB78 7FA4EB78 +FC00A890 D0030024 +D0030028 3D80803A +618C6368 7D8903A6 +4E800421 7EA3AB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +41100000 44160000 +41A00000 00000000 041D460C 809F00EC #Common/Preload Stadium Transformations/Core/GetPreloadedTransition.asm C21D14C8 00000002 #Common/Preload Stadium Transformations/Core/Init isLoaded Bool.asm 38600000 987F00F0 @@ -1271,15 +1230,15 @@ C21A4DB4 0000001C #Online/Core/ForceEngineOnRollback.asm 2C1B0000 41810014 888500D9 2C040000 41820038 3B600001 -888500D9 988507AD -808500DB 908507AE -888500DA 988507B2 -80850237 908507B3 +888500D9 988507A9 +808500DB 908507AA +888500DA 988507AE +80850237 908507AF 808500D5 80840002 -908507B7 48000028 -888507BB 2C040000 +908507B3 48000028 +888507B7 2C040000 4182001C 38800000 -988507BB 3D808001 +988507B7 3D808001 618C95FC 7D8903A6 4E800421 7F43D378 3D808034 618C738C @@ -1294,7 +1253,7 @@ C216D310 00000009 #Online/Core/HandleLRAS.asm 40820028 3C608046 6063B6A0 88630008 2C030007 40820014 -808DB61C 806407A9 +808DB61C 806407A5 7C6903A6 4E800421 8001003C 83E10034 60000000 00000000 @@ -1314,22 +1273,22 @@ BA810008 800100B4 800100B4 382100B0 7C0803A6 7C7D1B78 60000000 00000000 -C216E748 00000069 #Online/Core/InitOnlinePlay.asm +C216E748 00000066 #Online/Core/InitOnlinePlay.asm 3D808022 618C54B8 7D8903A6 4E800421 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E 2C030208 -40820304 386007C0 +408202E8 386007BC 3D808037 618CF1E4 7D8903A6 4E800421 -7C7B1B78 388007C0 +7C7B1B78 388007BC 3D808000 618CC160 7D8903A6 4E800421 936DB61C 38600001 -907B0003 48000201 -7C6802A6 907B07A9 +907B0003 480001ED +7C6802A6 907B07A5 38600012 3D808037 618CF1E4 7D8903A6 4E800421 907B00D1 @@ -1350,7 +1309,7 @@ C216E748 00000069 #Online/Core/InitOnlinePlay.asm 7D8903A6 4E800421 38800000 98830000 38800007 98830001 -93790005 386007C0 +93790005 386007BC 90790009 9359000D 3860010A 90790011 807B024E 90790015 @@ -1372,54 +1331,51 @@ C216E748 00000069 #Online/Core/InitOnlinePlay.asm 2C03000F 41810010 48000010 38600001 48000008 3860000F -987B001B 8062F228 -907B07A5 3C600101 -60630101 9062F228 -38A00000 3C60804C -606320BC 1C850044 -7C632214 38800000 -90830000 38A50001 -2C050004 4180FFE0 -38600004 38800007 -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 48000021 -7C8802A6 38A00000 -3D808038 618CFD54 +987B001B 38A00000 +3C60804C 606320BC +1C850044 7C632214 +38800000 90830000 +38A50001 2C050004 +4180FFE0 38600004 +38800007 38A00000 +3D808039 618C01F0 7D8903A6 4E800421 -480000F4 4E800021 -3C608048 80639D60 -5464803E 806DB61C -80630007 7C841A14 -3C60804D 90835F90 -4E800020 4E800021 -7C0802A6 90010004 -9421FF50 BE810008 -838DB61C 807C07A5 -9062F228 886DAFA0 -2C030001 4082008C -38600011 3D808037 -618CF1E4 7D8903A6 -4E800421 7C7E1B78 -386000BD 987E0000 -807C0003 907E0001 -3BE00000 3BBE0005 -7FE3FB78 3D808003 -618C1724 7D8903A6 -4E800421 38800001 -989D0000 8883008E -989D0001 80830D28 -909D0002 3BFF0001 -3BBD0006 2C1F0002 -4180FFC8 7FC3F378 -38800011 38A00001 -3D808000 618C55F0 +48000021 7C8802A6 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 480000EC +4E800021 3C608048 +80639D60 5464803E +806DB61C 80630007 +7C841A14 3C60804D +90835F90 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 838DB61C +886DAFA0 2C030001 +4082008C 38600011 +3D808037 618CF1E4 7D8903A6 4E800421 +7C7E1B78 386000BD +987E0000 807C0003 +907E0001 3BE00000 +3BBE0005 7FE3FB78 +3D808003 618C1724 +7D8903A6 4E800421 +38800001 989D0000 +8883008E 989D0001 +80830D28 909D0002 +3BFF0001 3BBD0006 +2C1F0002 4180FFC8 +7FC3F378 38800011 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 BA810008 800100B4 382100B0 7C0803A6 -4E800020 BA810008 -800100B4 382100B0 -7C0803A6 00000000 +60000000 00000000 C216E904 0000003F #Online/Core/InitPause.asm 3C608048 80639D30 5463443E 2C030208 @@ -1535,7 +1491,7 @@ A0840001 7C032000 9B9E0000 7FA3EB78 3D808034 618C738C 7D8903A6 4E800421 -8B7F07AD 2C1B0001 +8B7F07A9 2C1B0001 408200CC 48000025 BA810008 800100B4 382100B0 7C0803A6 @@ -1607,7 +1563,7 @@ C21A4DE4 0000005C #Online/Core/StartEngineLoop.asm 618C4030 7D8903A6 4E800421 4BFFFF51 7EE802A6 38600002 -809A07BC 3D80803A +809A07B8 3D80803A 618C6754 7D8903A6 4E800421 7C781B78 38800001 98980049 @@ -1627,10 +1583,10 @@ C0570010 3D80803A 3D80803A 618C74F0 7D8903A6 4E800421 38600001 987A000E -887A07AD 2C030000 -418200B8 887A07B2 +887A07A9 2C030000 +418200B8 887A07AE 2C030000 41820084 -807A024A 809A07B3 +807A024A 809A07AF 80BA024E 3D808000 618C560C 7D8903A6 4E800421 3D808001 @@ -1645,12 +1601,12 @@ C0570010 3D80803A 907A0003 38600000 987A0236 987A0247 987A0248 987A0249 -987A00DA 987A07B2 +987A00DA 987A07AE 3D808001 618C95FC 7D8903A6 4E800421 -807A07AE 7C1B1800 +807A07AA 7C1B1800 41800010 38600000 -987A00D9 987A07AD +987A00D9 987A07A9 887A0236 2C030000 4182002C 807A0237 7C1B1800 41800020 @@ -1666,7 +1622,7 @@ C0570010 3D80803A 887A000B 38630001 987A000B 2C030007 40810018 38600001 -987A000C 807A07A9 +987A000C 807A07A5 7C6903A6 4E800421 7F23CB78 3D808034 618C738C 7D8903A6 @@ -1983,6 +1939,19 @@ C2376304 0000000B #Online/Core/Hacks/ForceNoVideoAssert.asm 73206E6F 7420342E 2056616C 75653A20 25640A00 00000000 +C23A63A8 0000000C #Online/Core/Hacks/LoadPremadeTextDataFromDolphin.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C9D2378 7CDC3378 +886DAFEC 2C030000 +41820024 7FA3EB78 +7F84E378 3D808000 +618C56A4 7D8903A6 +4E800421 7C7E1B78 +93DF005C BA810008 +800100B4 382100B0 +7C0803A6 38600000 +986DAFEC 00000000 04321D70 38600000 #Online/Core/Hacks/PreventCharacterCrowdChants.asm C2019608 0000000E #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 9421FFF8 3C608048 @@ -1995,7 +1964,7 @@ C2019608 0000000E #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 4082002C 80ADB61C 886500D9 2C030000 4182001C 38600001 -986507BB 3D808001 +986507B7 3D808001 618C9618 7D8903A6 4E800420 38600000 60000000 00000000 @@ -2156,14 +2125,14 @@ C2260310 00000008 #Online/Menus/CSS/FetchMatchInfo.asm 618C5610 7D8903A6 4E800421 38000000 60000000 00000000 -C2263258 00000165 #Online/Menus/CSS/HandleInputsOnCSS.asm +C2263258 00000162 #Online/Menus/CSS/HandleInputsOnCSS.asm 41A20014 3D808026 618C3334 7D8903A6 4E800420 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E -2C030008 40820AE0 +2C030008 40820AC8 7CFB3B78 3F008000 63185614 83180000 83580000 3B800000 @@ -2174,77 +2143,80 @@ BE810008 3C608048 8878000E 889A0000 9898000E 2C030005 41820010 2C040005 -40820008 48000034 +40820008 48000024 2C030004 40820010 2C040004 41820008 -48000008 48000030 -38600000 3D808002 -618C4030 7D8903A6 -4E800421 48000018 +48000008 48000020 +38600000 48000008 38600003 3D808002 618C4030 7D8903A6 4E800421 887A0000 2C030000 40810020 -2C030003 40810078 -2C030004 4182007C -2C030005 418201BC -480009FC 576004E7 -418209F4 3C608048 -80639D60 2C030000 -418209E4 3860FFFF -986DAFC9 38600000 -986DAFCA 886DB657 -2C030000 418209C8 -886DAFA0 2C030001 -41820010 2C030002 -40800014 48000000 -3860FFFE 48000335 -480009A4 4800035D -4800099C 576006F7 -40820399 48000990 -3D80801A 618C3680 -7D8903A6 4E800421 -548006F7 41820024 -8878000F 38630001 -9878000F 2C030030 -40810014 9B98000F -48000361 48000958 -9B98000F 887A0001 -2C030000 408200D0 -576004E7 4082002C -886DAFA0 2C030002 -418000BC 886DAFC9 -2C030000 408200B0 -886DAFCA 2C030001 -408200A4 48000004 +2C030003 40810084 +2C030004 41820088 +2C030005 418201E4 +480009F4 88780010 +2C030000 408209E8 +576004E7 418209E0 +3C608048 80639D60 +2C030000 418209D0 +3860FFFF 986DAFC9 +38600000 986DAFCA 886DB657 2C030000 -41820094 3C608048 -80639D60 2C030000 -41820084 886DAFA0 +418209B4 886DAFA0 2C030001 41820010 2C030002 40800014 48000000 3860FFFE -48000151 48000060 +48000359 48000990 +48000381 48000988 +576006F7 408203BD +4800097C 3D80801A +618C3680 7D8903A6 +4E800421 548006F7 +41820024 8878000F +38630001 9878000F +2C030030 40810014 +9B98000F 48000385 +48000944 9B98000F +887A0001 2C030000 +408200EC 576004E7 +4082002C 886DAFA0 +2C030002 418000D8 886DAFC9 2C030000 -4182001C 2C030001 -41820008 48000000 -3860FFFF 4800012D -4800003C 886DAFCA -2C030000 41820018 -806D8840 38630598 -A063001E 4800010D -4800001C 38600001 +408200CC 886DAFCA +2C030001 408200C0 +48000004 886DB657 +2C030000 418200B0 +3C608048 80639D60 +2C030000 418200A0 +886DAFA0 2C030001 +41820010 2C030002 +40800014 48000000 +3860FFFE 4800016D +4800007C 886DAFC9 +2C030000 4182001C +2C030001 41820008 +48000000 3860FFFF +48000149 48000058 +886DAFCA 2C030000 +41820018 806D8840 +38630598 A063001E +48000129 48000038 +888DAFA0 2C040003 +38600000 40820008 +38600001 808DB610 +98640018 38600001 986DB656 480000F9 7C6802A6 906DAFE8 -4800087C 480002F1 +4800084C 480002F9 887A0001 889A0002 -7C632039 41820868 +7C632039 41820838 BA810008 800100B4 382100B0 7C0803A6 3D808026 618C3264 7D8903A6 4E800420 -576006F7 40820245 -4800083C 7C0802A6 +576006F7 4082024D +4800080C 7C0802A6 90010004 9421FF50 BE810008 38600014 3D808037 618CF1E4 @@ -2268,7 +2240,7 @@ BA810008 800100B4 4E800020 4E800021 7C0802A6 90010004 9421FF50 BE810008 -7C7F1B78 38600008 +7C7F1B78 38600009 3D808037 618CF1E4 7D8903A6 4E800421 7C791B78 386000B5 @@ -2282,7 +2254,7 @@ BA810008 800100B4 38600000 98790001 4800001C 3C608000 60635614 80630000 -88630014 3863FFFF +88630016 3863FFFF 98790001 2C1FFFFE 41820014 2C1FFFFF 41820018 2C1F0000 @@ -2292,7 +2264,8 @@ BA810008 800100B4 48000010 7FE3FB78 38800001 48000004 B0790005 98990007 -7F23CB78 38800008 +886DAFA0 98790008 +7F23CB78 38800009 38A00001 3D808000 618C55F0 7D8903A6 4E800421 7F23CB78 @@ -2303,8 +2276,8 @@ BA810008 800100B4 4E800020 4E800021 7C0802A6 90010004 9421FF50 BE810008 -8A980014 4BFFFED5 -4BFFFE25 BA810008 +8A980016 4BFFFECD +4BFFFE1D BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 90010004 @@ -2332,20 +2305,13 @@ BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 90010004 9421FF50 -BE810008 7F63DB78 -98780011 2C1B0001 -4182005C 2C1B0002 -41820054 2C1B0008 -4182004C 2C1B0004 -41820044 2C1B0041 -4182003C 2C1B0042 -41820034 2C1B0048 -4182002C 2C1B0044 -41820024 2C1B0021 -4182001C 2C1B0022 -41820014 2C1B0028 -4182000C 2C1B0024 -40820019 88780010 +BE810008 2C1B0200 +40820008 B3780011 +2C1B0001 4182001C +2C1B0002 41820014 +2C1B0008 4182000C +2C1B0004 4082001D +B3780011 88780010 2C030000 4082000C 7F63DB78 480000B9 BA810008 800100B4 @@ -2373,15 +2339,14 @@ BA810008 800100B4 4E800020 7C6E1B78 7C0802A6 90010004 9421FF50 BE810008 -48000379 7DE802A6 -386000B7 3880007F -38A00040 3D808002 -618C37A8 7D8903A6 +480003ED 7DE802A6 +38600002 3D808002 +618C4030 7D8903A6 4E800421 7DC37378 -98780010 38600006 +98780010 3860000A 3D808037 618CF1E4 7D8903A6 4E800421 -7C771B78 38800006 +7C771B78 3880000A 3D808000 618CC160 7D8903A6 4E800421 7DC37378 98770000 @@ -2393,8 +2358,10 @@ BA810008 800100B4 806DB614 80630018 3D808037 618C0E44 7D8903A6 4E800421 -7C751B78 C02F001C -C04F0020 D0230038 +7C751B78 C02F0024 +888DAFE0 2C040000 +41820008 C02F0028 +C04F002C D0230038 D043003C 7E83A378 38800004 7EA5AB78 3D808039 618C0A70 @@ -2420,94 +2387,93 @@ BA810008 800100B4 BE810008 820E002C 82EE0028 8A300000 8A500001 82700002 -82B00006 8AD50011 -2C130000 40820144 +82B00006 A2D50011 +38600000 B0750011 +2C130000 40820184 38600090 7C721B78 -98700001 480001E5 +98700001 48000249 7DE802A6 7E238B78 3D808000 618C56AC 7D8903A6 4E800421 -7C741B78 38600001 +7C741B78 38600000 +38800000 3D80803A +618C6754 7D8903A6 +4E800421 7C731B78 +92700002 38600001 38800000 C02F0000 -C04F0004 48000209 -7C731B78 92700002 -7E639B78 388F0028 -38A00000 38CF0024 -38EF002D 39140004 -C02F0014 C04F0014 -C06F0008 C08F0010 -3D808000 618C56B4 +C04F0004 98730049 +9893004A D0330008 +D0530024 D0530028 +C04F0008 886DAFE0 +2C030000 41820008 +C04F000C 7E639B78 +388F0034 38A00000 +38CF0030 38EF0038 +39140004 C02F001C +C06F0018 3D808000 +618C56B4 7D8903A6 +4E800421 7C641B78 +7C8A2378 7C8B2378 +386B0002 C04F0020 +3D808000 618C55EC 7D8903A6 4E800421 -7C641B78 7C8A2378 -7C8B2378 386B0002 -C04F0018 3D808000 -618C55EC 7D8903A6 -4E800421 C06F0010 -EC83082A 2C0B0000 -4182001C 2C0B0001 -4182002C 2C0B0002 -4182001C 2C0B0003 -4182000C 38800008 -48000018 38800004 -48000010 38800002 -48000008 38800001 -7E238B78 3D808000 -618C56AC 7D8903A6 -4E800421 7C872378 -7E639B78 388F0024 -38A00000 38CF0024 -C02F0014 C04F0014 -C06F000C 3D808000 +C06F0018 EC63082A +2C0B0000 4182001C +2C0B0001 4182002C +2C0B0002 4182001C +2C0B0003 4182000C +38800008 48000018 +38800004 48000010 +38800002 48000008 +38800001 7E238B78 +3D808000 618C56AC +7D8903A6 4E800421 +7C872378 C04F0010 +886DAFE0 2C030000 +41820008 C04F0014 +7E639B78 388F0030 +38A00000 38CF0030 +C02F001C 3D808000 618C56B4 7D8903A6 4E800421 7C6B1B78 386A0004 7C0B1800 -4082FF54 480000A0 -88700001 2C030086 -4181003C 2C160000 -41820034 88750012 -2C030004 40800028 -38600000 98700001 -7E238B78 7EC4B378 -38A00004 7C632830 -7C632214 4BFFFC49 -4800005C 2C120000 +4082FF48 480000C4 +88750014 2C030000 +41820010 88700001 +2C03008A 41810068 +2C160200 40820008 +48000070 2C160000 +41820054 88750014 +2C030003 40800034 +88750013 2C030005 +40800028 38600000 +98700001 7E238B78 +7EC4B378 38A00004 +7C632830 7C632214 +4BFFFBD5 4800005C +38600003 3D808002 +618C4030 7D8903A6 +4E800421 2C120000 41820010 3A52FFFF -9A500001 48000048 +9A500001 48000034 38600000 98750010 -7DC37378 3D808038 -618CFED4 7D8903A6 -4E800421 7DC37378 -3D808039 618C0228 +7DC37378 3D808039 +618C0228 7D8903A6 +4E800421 7E639B78 +3D80803A 618C5CC4 7D8903A6 4E800421 -7E639B78 3D80803A -618C5CC4 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 00000000 -3DCCCCCD C3960000 -C38E8000 429E0000 -3EE66666 41C80000 -C1A00000 C1840000 -FFFFFFFF FFEA2FFF -00436861 743A2025 -73002573 3A202573 -0047616D 65005500 -4C005200 4400817B -00000000 7C761B78 -7C972378 FEC00890 -FEE01090 7C0802A6 -90010004 9421FF50 -BE810008 38600000 -38800000 3D80803A -618C6754 7D8903A6 -4E800421 7C781B78 -9AD80049 9AF8004A -D2D80008 D2F80024 -D2F80028 7F03C378 BA810008 800100B4 382100B0 7C0803A6 -4E800020 BA810008 +4E800020 4E800021 +00000000 3DCCCCCD +C3960000 C3E20000 +C38E8000 C3DA8000 +429E0000 3EE66666 +41C80000 C1A00000 +C20C0000 C1840000 +FFFFFFFF FFEA2FFF +43686174 3A202573 +00000000 BA810008 800100B4 382100B0 7C0803A6 3D808026 618C3334 7D8903A6 @@ -2520,70 +2486,70 @@ C21A3F9C 00000005 #Online/Menus/CSS/IncreaseTextHeap.asm 4082000C 38604800 48000008 38602400 60000000 00000000 -C2264534 000001D3 #Online/Menus/CSS/InitCSS.asm +C2264534 000001D0 #Online/Menus/CSS/InitCSS.asm 3C608048 80639D30 5463443E 2C030008 -40820E7C 480001F8 +40820E68 480001F8 4E800021 00000000 -3DCCCCCD C39B0000 -C3848000 3EE66666 -3ECCCCCD 3F800000 -41C80000 428C0000 -41B80000 3F000000 -42B40000 42500000 -42960000 42C40000 -42500000 428C0000 -42B00000 42D40000 -3ECCCCCD 43048000 -43188000 42200000 -C2E00000 3F000000 +3DCCCCCD 404CCCCD +413CCCCD 3F4CCCCD +C1600000 41C00000 +00000000 41F00000 +42480000 C2320000 +C1EC0000 C1BA0000 +40A00000 3D23D70A +428C0000 41B80000 +3F000000 42B40000 +42500000 42960000 +42C40000 42500000 +428C0000 42B00000 +42D40000 3ECCCCCD +43048000 43188000 C3760000 C3020000 C2480000 3EE66666 33FF2FFF 3CBCFFFF -8E9196FF FF0000FF -FFFFFFFF D4D4D4FF -33FF2FFF 00000000 -00556E72 616E6B65 -64004469 72656374 -0052616E 6B656400 -5465616D 73002573 -204D6F64 65005365 -6C656374 20796F75 -72206368 61726163 -74657200 43686172 -61637465 72207365 -6C656374 65640050 -72657373 20535441 -52542074 6F202573 -006C6F63 6B20696E -00656E74 65722063 -6F646500 73656172 -63680073 656C6563 -74207374 61676500 -4C6F636B 65642069 -6E005365 61726368 -696E6720 666F7220 -25730043 6F6E6E65 -6374696E 6720746F -20257300 57616974 -696E6720 6F6E2025 -73006F70 706F6E65 -6E74002D 2D2F2F2D +8E9196FF FFFFFFFF +FF0000FF 00556E72 +616E6B65 64004469 +72656374 0052616E +6B656400 5465616D +73002573 204D6F64 +65005365 6C656374 +20796F75 72206368 +61726163 74657200 +43686172 61637465 +72207365 6C656374 +65640050 72657373 +20535441 52542074 +6F202573 006C6F63 +6B20696E 00656E74 +65722063 6F646500 +73656172 63680073 +656C6563 74207374 +61676500 4C6F636B +65642069 6E005365 +61726368 696E6720 +666F7220 25730043 +6F6E6E65 6374696E +6720746F 20257300 +57616974 696E6720 +6F6E2025 73006F70 +706F6E65 6E74002D 2D2F2F2D 2D2F2F2D -2D2F2F30 30004572 -726F7200 506C6179 -696E673A 00557365 -20442D50 61642074 -6F204368 61740050 -72657373 205A2074 -6F202573 00486F6C -64205A20 746F2025 -73006469 73636F6E -6E656374 0063616E -63656C00 636C6561 -72206572 726F7200 -25733A20 25730081 -7B00817E 00817C00 +2D2F2F2D 2D2F2F30 +30004572 726F7200 +506C6179 696E673A +00557365 20442D50 +61642074 6F204368 +61740050 72657373 +205A2074 6F202573 +00486F6C 64205A20 +746F2025 73006469 +73636F6E 6E656374 +0063616E 63656C00 +636C6561 72206572 +726F7200 817B0081 +7E00817C 00000000 4E800021 C2E00000 41A00000 00000000 3DCCCCCD 7C0802A6 @@ -2601,14 +2567,14 @@ BE810008 4BFFFDFD 38600004 38800005 38A00080 3D808039 618C01F0 7D8903A6 -4E800421 4800039D +4E800421 4800028D 7C8802A6 38A00004 3D808038 618CFD54 7D8903A6 4E800421 -38600016 3D808037 +38600018 3D808037 618CF1E4 7D8903A6 4E800421 7C7F1B78 -38800016 3D808000 +38800018 3D808000 618CC160 7D8903A6 4E800421 3C608000 60635614 93E30000 @@ -2623,107 +2589,73 @@ BE810008 4BFFFDFD 38800000 989C004A C03D0000 D03C0008 C03D0004 D03C0024 -D03C0028 C03D0020 -C05D0024 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7F83E378 C03D0028 -C05D0028 3D80803A -618C7548 7D8903A6 -4E800421 C05D0030 -4800019D C05D0034 -48000195 C05D0038 -4800018D C03D0020 -C05D0050 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 +D03C0028 7F83E378 +389D0090 38A00000 +C03D0044 C05D003C +C07D0040 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +C07D004C 480000F9 +C07D0050 480000F1 +C07D0054 480000E9 +7F83E378 389D008C +38A00000 C03D0068 +C05D003C C07D006C +38FD0098 3D808000 +618C56B4 7D8903A6 4E800421 7F83E378 -38800007 C03D004C -C05D004C 3D80803A -618C7548 7D8903A6 +389D008C 38A00000 +C03D0068 C05D003C +C07D0070 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7F83E378 389D008C +38A00000 C03D0044 +C05D0078 C07D0074 +38FD0098 3D808000 +618C56B4 7D8903A6 4E800421 7F83E378 -38800007 38BD007C -3D80803A 618C74F0 +389D0090 38A00000 +C03D0044 C05D007C +C07D0074 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 -C03D0020 C05D0054 -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7F83E378 38800008 -C03D004C C05D004C -3D80803A 618C7548 -7D8903A6 4E800421 -7F83E378 38800008 -38BD007C 3D80803A -618C74F0 7D8903A6 -4E800421 C03D0068 -C05D0064 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 -4E800421 7F83E378 -38800009 C03D0028 -C05D0028 3D80803A -618C7548 7D8903A6 -4E800421 7F83E378 -38800009 38BD007C -3D80803A 618C74F0 -7D8903A6 4E800421 -C03D006C C05D0064 -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7F83E378 3880000A -C03D0028 C05D0028 -3D80803A 618C7548 -7D8903A6 4E800421 -C05D003C 480000BD -C05D0040 480000B5 -C05D0044 480000AD -C05D0048 480000A5 +C07D0058 48000095 +C07D005C 4800008D +C07D0060 48000085 +C07D0064 4800007D BA810008 800100B4 382100B0 7C0803A6 -4800097C 7EA802A6 -FC601090 C03D002C -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C641B78 7F83E378 -C03D004C C05D004C -3D80803A 618C7548 -7D8903A6 4E800421 -C03D0020 FC401890 -7F83E378 389D0094 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C641B78 7F83E378 -C03D0070 C05D0070 -3D80803A 618C7548 +48000A20 7EA802A6 +FDA01890 7F83E378 +389D0090 38A00000 +C03D0068 C05D0048 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 7F83E378 +389D0090 38A00000 +C03D0080 C05D003C +FC606890 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 7EA803A6 4E800020 7C0802A6 90010004 9421FF50 BE810008 -C03D0020 7F83E378 -389D0094 3D80803A -618C6B98 7D8903A6 -4E800421 7C7B1B78 -7F83E378 7F64DB78 -C03D004C C05D004C -3D80803A 618C7548 +7F83E378 389D0094 +38A00000 C03D0068 +C05D003C 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 -7F83E378 7F64DB78 -38BD0080 3D80803A -618C74F0 7D8903A6 -4E800421 BA810008 +7C7B1B78 BA810008 800100B4 382100B0 7C0803A6 4E800020 4E800021 7C0802A6 90010004 9421FF50 -BE810008 4BFFF9E5 +BE810008 4BFFFAF5 7FA802A6 3FE08000 63FF5614 83FF0000 83DF0000 839F0004 -38FD015F 3CC0804A +38FD0163 3CC0804A 60C60740 38800000 38A00000 7C66222E 7C672B2E 38840003 @@ -2742,252 +2674,283 @@ BE810008 4BFFF9E5 7D8903A6 4E800421 887E0000 2C030004 41810054 38800000 -38BD00B2 886DAFA0 +38BD00B6 886DAFA0 2C030001 41820020 2C030002 41820020 2C030000 41820020 2C030003 41820020 -48000024 38DD0095 -48000020 38DD009E -48000018 38DD00A5 -48000010 38DD00AC -48000008 38BD0172 -48000735 887E000A -2C030000 41820010 +48000024 38DD0099 +48000020 38DD00A2 +48000018 38DD00A9 +48000010 38DD00B0 +48000008 38BD0176 +48000831 887E000A +2C030000 4182001C 3B3E0015 7C7A1B78 -48000024 887E000B -2C030000 41820110 -7C7A1B78 887E000C -1C63001F 38630034 -7F3E1A14 887F0013 -2C03000C 40810010 -38600000 987F0013 -418200E4 386000B7 -3880007F 38A00040 -3D808002 618C37A8 -7D8903A6 4E800421 -887F0012 38630001 -987F0012 3860000F -3D808037 618CF1E4 -7D8903A6 4E800421 -7C771B78 38800016 -3D808000 618CC160 -7D8903A6 4E800421 -386000AA 98770000 -7F43D378 98770001 -887F0013 98770002 +887F0014 38630001 +987F0014 48000014 +887E000B 2C030000 +418201D8 7C7A1B78 +887F0015 2C030009 +40810010 38600000 +987F0015 418201BC +386000B7 3880007F +38A00040 3D808002 +618C37A8 7D8903A6 +4E800421 887F0013 38630001 987F0013 -93370007 7FE3FB78 -9077000B 38600004 +3860000D 3D808037 +618CF1E4 7D8903A6 +4E800421 7C771B78 +38800018 3D808000 +618CC160 7D8903A6 +4E800421 38600014 +38800000 98770000 +98970001 7F43D378 +98770002 887F0015 +98770003 38630001 +987F0015 887E000C +98770008 7FE3FB78 +90770009 38600004 38800005 38A00080 3D808039 618C01F0 7D8903A6 4E800421 -7C6E1B78 38800004 -3CA08037 60A5F1B0 -7EE6BB78 3D808039 -618C0B68 7D8903A6 +7C6E1B78 806DB614 +80630084 82030010 +8063000C 3D808037 +618C0E44 7D8903A6 +4E800421 7C6F1B78 +822F0010 886DAFE0 +2C030000 4182000C +C03D0014 D02F0038 +7DC37378 38800004 +7DE57B78 3D808039 +618C0A70 7D8903A6 +4E800421 7E238B78 +7E048378 38A00000 +38C00000 3D808036 +618CFB5C 7D8903A6 +4E800421 8071007C +C03D0020 3D808036 +618C532C 7D8903A6 +4E800421 7DE37B78 +C03D001C 3D808036 +618CF8BC 7D8903A6 4E800421 7DC37378 -480003E1 7C8802A6 -38A00004 3D808038 -618CFD54 7D8903A6 -4E800421 887E0000 -2C030004 4182000C -38BD0094 48000008 -38BD0178 38800009 -480005E5 887E0000 -2C030004 4182000C -38BD0094 48000008 -38BE00B0 3880000A -480005C5 887E0000 -2C030004 4182000C -38BD0094 48000008 -38BD0181 38800008 -480005A5 887E0000 -2C030004 41820034 -2C030005 41820020 -2C030000 4181000C -38BD0094 48000024 -38BD0193 38DD01B9 -48000018 38BD0193 -38DD01C0 4800000C -38BD01A1 38DD01AE -38800007 48000559 -3B600001 7F64DB78 -38BD0094 48000549 -3B7B0002 2C1B0005 -4081FFEC 38800008 -38600000 7C7F21AE -38840001 2C04000A -4081FFF4 3B60000B -7F64DB78 38BD0094 -48000515 3B7B0001 -2C1B000E 4081FFEC -887E0000 2C030005 -408200A8 3B60000B -3B400000 3B200000 -3B000000 3AFE0117 -7ED7D0AE 56C00631 -41820010 3B5A0002 -3B390001 48000018 -2C160020 40820008 -7F58D378 3B5A0001 -3B390001 2C160000 -41820018 2C19001E -41810008 4800002C -38800000 7C97C1AE -7F64DB78 7EE5BB78 -48000495 3B7B0001 -7EF7C214 3AF70001 -3B400000 3B200000 -2C160000 41820020 -387E0208 7C97D214 -7C041800 40800010 -2C1B000E 41810008 -4BFFFF78 4800014C -3B600001 886DB657 -7F64DB78 2C030000 -40820018 38BD00BA -4800043D 38600001 -987F0008 48000124 -38BD00D0 48000429 -3B7B0002 38600002 -987F0008 887E0001 -7F64DB78 2C030000 -40820080 886DAFA0 -2C030002 41800034 +3C808039 60841070 +38A00003 38C00080 +3D808039 618C069C +7D8903A6 4E800421 +38800004 3CA08037 +60A5F1B0 7EE6BB78 +3D808039 618C0B68 +7D8903A6 4E800421 +7DC37378 480003E1 +7C8802A6 38A00004 +3D808038 618CFD54 +7D8903A6 4E800421 887E0000 2C030004 -40820028 886DAFC9 -2C030000 4082001C -886DAFCA 2C030000 -40820010 38BD00E3 -38DD010F 48000034 -38BD00E3 38DD00F5 +4182000C 38BD0098 +48000008 38BD017C +38800009 4800060D 887E0000 2C030004 -41820020 38BD00E3 -38DD0108 886DAFA0 -2C030002 4180000C -38BD00E3 38DD00FD -4800039D 38600001 -987F0009 48000084 -38BD011C 48000389 -3B7B0002 38600002 -987F0009 887E0000 -7F64DB78 2C030004 -4182004C 2C030003 -41820024 88ADAFA0 -2C050001 38BD0126 -38DD0156 41820038 -38BD0126 38DD015F -4800002C 88ADAFA0 -2C050001 38BD0137 -38DD0156 41820018 -38BD0137 38DD015F -4800000C 38BD0148 -38DD0156 48000319 -38600001 987F000A -3B400008 3B600002 -7C7FD0AE 2C030001 -40820044 A07F000B -3880000F 7C632396 -1C630003 386301D3 -7CBD1A14 7F64DB78 -480002DD 7F83E378 -7F64DB78 38BD0078 +4182000C 38BD0098 +48000008 38BE00B0 +3880000A 480005ED +887E0000 2C030004 +4182000C 38BD0098 +48000008 38BD0185 +38800008 480005CD +887E0000 2C030004 +41820034 2C030005 +41820020 2C030000 +4181000C 38BD0098 +48000024 38BD0197 +38DD01BD 48000018 +38BD0197 38DD01C4 +4800000C 38BD01A5 +38DD01B2 38800007 +48000581 3B600001 +7F64DB78 38BD0098 +48000571 3B7B0002 +2C1B0005 4081FFEC +38800008 38600000 +7C7F21AE 38840001 +2C04000A 4081FFF4 +3B60000B 7F64DB78 +38BD0098 4800053D +3B7B0001 2C1B000E +4081FFEC 887E0000 +2C030005 408200A8 +3B60000B 3B400000 +3B200000 3B000000 +3AFE0117 7ED7D0AE +56C00631 41820010 +3B5A0002 3B390001 +48000018 2C160020 +40820008 7F58D378 +3B5A0001 3B390001 +2C160000 41820018 +2C19001E 41810008 +4800002C 38800000 +7C97C1AE 7F64DB78 +7EE5BB78 480004BD +3B7B0001 7EF7C214 +3AF70001 3B400000 +3B200000 2C160000 +41820020 387E0208 +7C97D214 7C041800 +40800010 2C1B000E +41810008 4BFFFF78 +4800014C 3B600001 +886DB657 7F64DB78 +2C030000 40820018 +38BD00BE 48000465 +38600001 987F0008 +48000124 38BD00D4 +48000451 3B7B0002 +38600002 987F0008 +887E0001 7F64DB78 +2C030000 40820080 +886DAFA0 2C030002 +41800034 887E0000 +2C030004 40820028 +886DAFC9 2C030000 +4082001C 886DAFCA +2C030000 40820010 +38BD00E7 38DD0113 +48000034 38BD00E7 +38DD00F9 887E0000 +2C030004 41820020 +38BD00E7 38DD010C +886DAFA0 2C030002 +4180000C 38BD00E7 +38DD0101 480003C5 +38600001 987F0009 +48000084 38BD0120 +480003B1 3B7B0002 +38600002 987F0009 +887E0000 7F64DB78 +2C030004 4182004C +2C030003 41820024 +88ADAFA0 2C050001 +38BD012A 38DD015A +41820038 38BD012A +38DD0163 4800002C +88ADAFA0 2C050001 +38BD013B 38DD015A +41820018 38BD013B +38DD0163 4800000C +38BD014C 38DD015A +48000341 38600001 +987F000A 3B400008 +3B600002 7C7FD0AE +2C030001 40820044 +A07F000B 3880000F +7C632396 1C630003 +386301D0 7CBD1A14 +7F64DB78 48000305 +7F83E378 7F64DB78 +38BD0088 3D80803A +618C74F0 7D8903A6 +4E800421 48000044 +2C030002 40820030 +7F64DB78 38BD01D6 +480002D1 7F83E378 +7F64DB78 38BD0084 3D80803A 618C74F0 7D8903A6 4E800421 -48000044 2C030002 -40820030 7F64DB78 -38BD01D9 480002A9 -7F83E378 7F64DB78 -38BD0074 3D80803A -618C74F0 7D8903A6 -4E800421 48000010 -7F64DB78 38BD0094 -4800027D 3B7B0002 -3B5A0001 2C1A000A -4081FF68 A07F000B -38630001 2C03001E -41800008 38600000 -B07F000B BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 7C6E1B78 -7C0802A6 90010004 -9421FF50 BE810008 -4BFFF3D1 7FA802A6 -81EE002C 8A0F0000 -8A2F0001 8A4F0002 -826F0003 82AF0007 -83EF000B 2C130000 -4082013C 806DC2DC -38800003 9883000E -3C6080BD 60635C6C -38600000 38800000 -3D80803A 618C6754 -7D8903A6 4E800421 -7C731B78 926F0003 -806DC2DC 38800001 -9883000E 38800001 -98930049 38800000 -9893004A C03D0000 -D0330008 C03D0004 -D0330024 D0330028 -7E258B78 38800004 -7CA52430 7CA52030 -7C858850 7E238B78 -38A00004 7C632C30 -3D808000 618C56AC -7D8903A6 4E800421 -7C761B78 7C942378 -7E439378 3D808000 -618C55F4 7D8903A6 -4E800421 C09D001C -EC210132 FC600890 -C03D0008 C05D000C -EC42182A FDC00890 -FDE01090 3C608000 -60635614 80630000 -83C30000 387E0015 -7C03A800 4082000C -389D0088 48000008 -389D008C 7E639B78 -38A00001 38DD0090 -38FD01CC 7EA8AB78 -7E89A378 C03D0010 -C05D0010 FC607090 -FC807890 C0BD0014 -C0DD0018 3D808000 -618C56B4 7D8903A6 -4E800421 887F0012 -2C030006 41800028 -887F0013 7C039000 -4080000C 2C12000C -40810028 887F0013 -7C721850 2C030006 -41810018 2C100000 -41820010 3A10FFFF -9A0F0000 4800006C -7DC37378 3D808038 -618CFED4 7D8903A6 -4E800421 7DC37378 -3D808039 618C0228 -7D8903A6 4E800421 -7E639B78 3D80803A -618C5CC4 7D8903A6 -4E800421 887F0012 -3863FFFF 987F0012 -887F0013 7E449378 -38840001 7C032000 -41820008 4800000C -38600000 987F0013 +48000010 7F64DB78 +38BD0098 480002A5 +3B7B0002 3B5A0001 +2C1A000A 4081FF68 +A07F000B 38630001 +2C03001E 41800008 +38600000 B07F000B BA810008 800100B4 382100B0 7C0803A6 -4E800020 7EA802A6 -7F83E378 3D80803A -618C70A0 7D8903A6 -4E800421 7EA803A6 -4E800020 80CDB638 -60000000 00000000 +4E800020 4E800021 +7C6E1B78 7C0802A6 +90010004 9421FF50 +BE810008 4BFFF40D +7FA802A6 820E002C +8A300000 8A500001 +8A700002 8A900003 +82B00004 8AF00008 +83F00009 81EE0028 +81EF0010 7DE37B78 +3D808037 618C0928 +7D8903A6 4E800421 +2C150000 408200CC +7E83A378 3D808000 +618C55F4 7D8903A6 +4E800421 C05D0018 +C07D0008 EC6100F2 +EC421828 D04F003C +2C120000 4182009C +3A2000AA 9A300000 +3A400001 9A500001 +7C962378 7E83A378 +3D808000 618C55F4 +7D8903A6 4E800421 +C05D0030 C07D0008 +EC6100F2 EC42182A +FDE01090 806DC2DC +38800003 9883000E +C03D002C 886DAFE0 +2C030000 41820008 +C03D0028 38770001 +7E649B78 38A00002 +38C00000 C07D0034 +C09D0038 3D808000 +618C56B4 7D8903A6 +4E800421 90700004 +806DC2DC 38800001 +9883000E 48000004 +887F0013 2C030006 +41800028 887F0015 +7C03A000 4080000C +2C140009 408100AC +887F0015 7C741850 +2C030006 4181009C +2C110000 4082001C +2C120000 4182FF2C +2C120001 41820018 +2C120002 4182007C +3A31FFFF 9A300000 +480000CC 3A400002 +9A500001 3A200014 +9A300000 806F007C +C03D0024 3D808036 +618C532C 7D8903A6 +4E800421 7DE37B78 +C03D0020 3D808036 +618CF8BC 7D8903A6 +4E800421 8075005C +3D808037 618CF1B0 +7D8903A6 4E800421 +7EA3AB78 3D80803A +618C5CC4 7D8903A6 +4E800421 48000060 +7DC37378 3D808039 +618C0228 7D8903A6 +4E800421 809F0000 +88840003 7C172000 +40820010 887F0014 +3863FFFF 987F0014 +887F0013 3863FFFF +987F0013 887F0015 +7E84A378 38840001 +7C032000 41820008 +4800000C 38600000 +987F0015 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7EA802A6 7F83E378 +3D80803A 618C70A0 +7D8903A6 4E800421 +7EA803A6 4E800020 +80CDB638 00000000 C22652F0 0000007C #Online/Menus/CSS/InitSheikSelector.asm 3C608048 80639D30 5463443E 2C030008 @@ -3116,8 +3079,8 @@ C05F0040 FC011040 C22652F4 000000B8 #Online/Menus/CSS/InitTeamToggleButton.asm 3C608048 80639D30 5463443E 2C030008 -40820594 888DAFA0 -2C040003 40820588 +40820590 888DAFA0 +2C040003 40820584 4800002C 4E800021 C0200000 C0A00000 C1BC0000 C18C0000 @@ -3201,7 +3164,7 @@ FC20F890 3D808036 618C3C2C 7D8903A6 4E800421 BA810008 800100B4 382100B0 -7C0803A6 480002E8 +7C0803A6 480002E4 4E800021 7C0802A6 90010004 9421FF50 BE810008 7C741B78 @@ -3240,9 +3203,9 @@ C0DF000C FC021840 60840A48 7C832214 886403C2 1C63001C 7C832A14 8B4400DD -889E0014 38840001 +889E0016 38840001 2C040004 41800008 -38800001 989E0014 +38800001 989E0016 386D8844 98830000 7C992378 2C190003 4182001C 2C190002 @@ -3259,71 +3222,75 @@ C0DF000C FC021840 7D8903A6 4E800421 7C0802A6 90010004 9421FF00 BC610008 -7F23CB78 4800009D +7F23CB78 48000099 B8610008 80010104 38210100 7C0803A6 7F23CB78 7F64DB78 3D808000 618C56B0 7D8903A6 4E800421 7C781B78 886DB657 -2C030000 41820050 -80ADB610 9B1C0073 -3CA0803F 60A50E09 -9B050000 9B1E0015 -38600000 7F44D378 -7F05C378 38C00000 -3D808000 618C56BC -7D8903A6 4E800421 -38600002 3D808002 -618C4030 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -7C0802A6 90010004 -9421FF50 BE810008 -7C791B78 2C190003 -4182001C 2C190002 -4182000C 2C190001 -41820014 38800000 -48000014 38800001 -4800000C 38800002 -48000004 88ADB650 -386D9A38 7C632A14 -98830000 38600000 -3D808025 618CDB34 +2C030000 4182004C +9B1C0073 3CA0803F +60A50E09 9B050000 +9B1E0017 38600000 +7F44D378 7F05C378 +38C00000 3D808000 +618C56BC 7D8903A6 +4E800421 38600002 +3D808002 618C4030 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -4E800020 38600000 -38980000 3D80803A -618C6754 7D8903A6 -4E800421 00000000 -C2262004 00000009 #Online/Menus/CSS/PreventAPressCharUnselect.asm +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C791B78 +2C190003 4182001C +2C190002 4182000C +2C190001 41820014 +38800000 48000014 +38800001 4800000C +38800002 48000004 +88ADB650 386D9A38 +7C632A14 98830000 +38600000 3D808025 +618CDB34 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +38600000 38980000 +3D80803A 618C6754 +7D8903A6 4E800421 +60000000 00000000 +C2262004 0000000B #Online/Menus/CSS/PreventAPressCharUnselect.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +4082003C 3C608000 60635614 80630000 -80830000 88640001 -2C030000 41820014 -3D808026 618C2154 -7D8903A6 4E800420 -566015BA 00000000 -C22620AC 00000009 #Online/Menus/CSS/PreventBPressCharUnselect.asm +80830000 88630010 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 566015BA +60000000 00000000 +C22620AC 0000000B #Online/Menus/CSS/PreventBPressCharUnselect.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +4082003C 3C608000 60635614 80630000 -80830000 88640001 -2C030000 41820014 -3D808026 618C2154 -7D8903A6 4E800420 -88FF0004 00000000 +80830000 88630010 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 88FF0004 +60000000 00000000 C22600A8 0000000C #Online/Menus/CSS/PreventColorChange.asm 3C608048 80639D30 5463443E 2C030008 40820048 3C608000 60635614 80630000 -88630014 2C030000 +88630016 2C030000 40820020 3C608000 60635614 80630000 80630000 88630001 @@ -3364,7 +3331,7 @@ C2262478 00000016 #Online/Menus/CSS/Teams/AnimateCursorPort.asm 888DAFA0 2C040003 40820048 807E0000 88630001 2C030000 -40820038 8BFE0014 +40820038 8BFE0016 2C1F0003 41820008 3BFFFFFF 88CDB650 1CC60004 7FFF3214 @@ -3377,23 +3344,20 @@ BA810008 800100B4 38A00400 3CC08036 60C6410C 38E00001 60000000 00000000 -C226295C 00000010 #Online/Menus/CSS/Teams/AnimateToken.asm +C2262768 0000000D #Online/Menus/CSS/Teams/AnimateToken.asm 7C0802A6 90010004 9421FF50 BE810008 3F808000 639C5614 839C0000 3C608048 80639D30 5463443E -2C030008 40820038 +2C030008 40820024 888DAFA0 2C040003 -4082002C 807C0000 -88630001 2C030000 -4082001C 8B7C0014 +40820018 8B7C0016 2C1B0003 41820008 3B7BFFFF 9B7D0006 -48000004 BA810008 -800100B4 382100B0 -7C0803A6 881D0006 -60000000 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +387C0000 00000000 C2260C28 0000001C #Online/Menus/CSS/Teams/PreventColorResetCharHover.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -3402,7 +3366,7 @@ C2260C28 0000001C #Online/Menus/CSS/Teams/PreventColorResetCharHover.asm 80639D30 5463443E 2C030008 40820098 888DAFA0 2C040003 -4082008C 8BDF0014 +4082008C 8BDF0016 808DB610 886DB650 1C630024 7F441A14 887A0070 7C7D1B78 @@ -3438,7 +3402,7 @@ C2260B90 0000001A #Online/Menus/CSS/Teams/PreventColorResetRandomChar.asm 4082007C 808DB610 886DB650 1C630024 7F441A14 887A0070 -7C7D1B78 8BDF0014 +7C7D1B78 8BDF0016 7FC3F378 7FA4EB78 3D808000 618C56B0 7D8903A6 4E800421 @@ -3592,7 +3556,7 @@ BE810008 3C60804D 39400008 3D80803A 618C611C 7D8903A6 4E800421 7C7F1B78 -83CDB61C 93FE07BC +83CDB61C 93FE07B8 4BFFFE69 7F8802A6 38600000 3D808000 618C5610 7D8903A6 @@ -3814,7 +3778,7 @@ C34C0000 C31D0000 BA810008 800100B4 382100B0 7C0803A6 B9C10408 00000000 -C21B1040 00000172 #Online/Menus/TitleMenu/OnMenuPrep.asm +C21B1040 00000165 #Online/Menus/TitleMenu/OnMenuPrep.asm 7C0802A6 90010004 9421FF50 BE810008 480000B5 7C6802A6 @@ -3839,7 +3803,7 @@ C21B1040 00000172 #Online/Menus/TitleMenu/OnMenuPrep.asm 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -48000AC4 4E800021 +48000A5C 4E800021 3D808000 618C5618 7D8903A6 4E800421 7FC802A6 38000008 @@ -4026,9 +3990,9 @@ BE810008 806DB518 3C80803E 6084FA60 3D808038 618C0358 7D8903A6 4E800421 -7C7D1B78 480004C1 -7FC802A6 C2DE001C -C2FE0020 3AC00016 +7C7D1B78 48000465 +7FC802A6 C2DE0010 +C2FE0014 3AC00016 7EC3B378 3D808037 618CF1E4 7D8903A6 4E800421 7C771B78 @@ -4098,91 +4062,78 @@ FC20B090 3D808036 7C0803A6 4E800020 4E800021 7C0802A6 90010004 9421FF50 -BE810008 48000281 -7FC802A6 C2DE001C -C2FE0020 7C781B78 +BE810008 48000225 +7FC802A6 C2DE0010 +C2FE0014 7C781B78 83380028 8358002C 8B7A0000 839A0001 83BA0005 7F23CB78 3D808037 618C0928 7D8903A6 4E800421 -2C1D0000 40820070 -38600000 38800001 -C01E0008 C03E0000 -C05E0004 C07E000C -C09E0010 C0BE0014 -3D80803A 618C5ACC +2C1D0000 4082003C +3860013F 38800000 +38A00002 38C00001 +C03E0000 C05E0004 +C07E0008 C09E000C +3D808000 618C56B4 7D8903A6 4E800421 -7C7D1B78 7C7D1B78 -93BA0005 38000001 -3880013F 7FA3EB78 -C01E0018 D0030024 -D0030028 981D004A -3D80803A 618C6368 +907A0005 48000198 +7F23CB78 38810034 +38A00007 38C0FFFF +3D808001 618C1E24 7D8903A6 4E800421 -480001C0 7F23CB78 -38810034 38A00007 -38C0FFFF 3D808001 -618C1E24 7D8903A6 -4E800421 FC20B090 -2C1B0000 40820008 -FC20B890 80610034 -3D808036 618CF8BC +FC20B090 2C1B0000 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 7D8903A6 4E800421 -80610034 3D808037 -618C0928 7D8903A6 -4E800421 7F23CB78 -38810034 38A00006 -38C0FFFF 3D808001 -618C1E24 7D8903A6 -4E800421 FC20B090 -2C1B0001 40820008 -FC20B890 80610034 -3D808036 618CF8BC +7F23CB78 38810034 +38A00006 38C0FFFF +3D808001 618C1E24 7D8903A6 4E800421 -80610034 3D808037 -618C0928 7D8903A6 -4E800421 39C00000 -7DC37378 3D80801A -618C36A0 7D8903A6 -4E800421 2C030040 -4182002C 2C030080 -41820024 2C030001 -4182003C 2C030002 -41820064 39CE0001 -2C0E0004 4180FFC4 -480000C8 38600002 -3D808002 618C4030 +FC20B090 2C1B0001 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 7D8903A6 4E800421 -6B630001 987A0000 -480000A8 2C1B0001 -4082002C 388000B7 -806DAFC4 98830000 -38800001 38A00001 -3D808000 618C55F0 +39C00000 7DC37378 +3D80801A 618C36A0 7D8903A6 4E800421 -48000004 38600000 -3D808002 618C4030 -7D8903A6 4E800421 -7F23CB78 3D808036 -618CF6B4 7D8903A6 +2C030040 4182002C +2C030080 41820024 +2C030001 4182003C +2C030002 41820064 +39CE0001 2C0E0004 +4180FFC4 480000A0 +38600002 3D808002 +618C4030 7D8903A6 +4E800421 6B630001 +987A0000 48000080 +2C1B0001 4082002C +388000B7 806DAFC4 +98830000 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 48000004 +38600000 3D808002 +618C4030 7D8903A6 4E800421 7F03C378 -3D808038 618CFED4 +3D808039 618C0228 7D8903A6 4E800421 -7F03C378 3D808039 -618C0228 7D8903A6 -4E800421 7FA3EB78 -3D80803A 618C5CC4 -7D8903A6 4E800421 -3C600000 60630000 -907C0008 48000004 -BA810008 800100B4 -382100B0 7C0803A6 -4E800020 4E800021 -C0B00000 C0333333 -41100000 41B80000 -437A0000 41A00000 -3D4CCCCD 00000000 +7FA3EB78 3D80803A +618C5CC4 7D8903A6 +4E800421 3C600000 +60630000 907C0008 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 C0B00000 +C0333333 41B80000 +3D3851EC 00000000 3F800000 3C60804A 60000000 00000000 C222D88C 00000008 #Online/Menus/TitleMenu/OnlineModeOptionSelected.asm @@ -4201,10 +4152,10 @@ C21B3668 00000005 #Online/Menus/VSScreen/AllowP2ColorDuplicate.asm 41820014 3D808017 618CBEC8 7D8903A6 4E800421 00000000 -C2186EC4 00000078 #Online/Menus/VSScreen/InitVsSplash.asm +C2186EC4 00000077 #Online/Menus/VSScreen/InitVsSplash.asm 3C608048 80639D30 5463443E 2C030408 -408203A4 48000060 +4082039C 48000060 4E800021 00000000 3F800000 3F000000 3F19999A F15959FF @@ -4243,10 +4194,10 @@ D03E0024 D03E0028 389F0055 38BD0053 38C00000 C03F0020 480000F5 48000038 -807D000D 480001F1 +807D000D 480001E9 387F0010 389F0044 C03F001C 480000D9 -807D0011 480001D9 +807D0011 480001D1 387F0014 389F004B C03F0020 480000C1 48000004 38600000 @@ -4272,7 +4223,7 @@ D03E0008 3CA0803B 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -48000184 7C0802A6 +4800017C 7C0802A6 90010004 9421FF50 BE810008 FFE00890 7C761B78 7C942378 @@ -4287,22 +4238,21 @@ EC630072 EFDE1828 7FC3F378 389F0018 7EC4B378 38A00000 7E87A378 C03F0008 -C05F0008 FC60F890 -FC80F090 3D808000 -618C56B4 7D8903A6 -4E800421 39C00008 -39E00000 7C6E0A14 -80E30000 2C0F0000 -4182000C C07F003C -EFFF182A C09F0040 -EFDE202A 7FC3F378 -389F0018 38A00000 -C03F000C C05F000C -FC60F890 FC80F090 +FC40F890 FC60F090 +3D808000 618C56B4 +7D8903A6 4E800421 +39C00008 39E00000 +7C6E0A14 80E30000 +2C0F0000 4182000C +C07F003C EFFF182A +C09F0040 EFDE202A +7FC3F378 389F0018 +38A00000 C03F000C +FC40F890 FC60F090 3D808000 618C56B4 7D8903A6 4E800421 39CE0004 39EF0001 -7C0FD000 4180FFA8 +7C0FD000 4180FFAC BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 @@ -4402,14 +4352,15 @@ C21BFA20 00000012 #Online/Slippi Online Scene/boot.asm 3D80801B 618C136C 7D8903A6 4E800420 38600001 00000000 -C21A45B8 00000163 #Online/Slippi Online Scene/main.asm +C21A45B8 00000164 #Online/Slippi Online Scene/main.asm 3BA30004 7C0802A6 90010004 9421FF50 BE810008 3C80803E -6084DC1C 4800020D +6084DC1C 48000215 7C6802A6 38630000 90640008 38600000 986DAFA3 986DAFC8 +986DAFEC 986DAFE0 38600008 4800016D 7C8802A6 4800002D 48000AB4 80830000 @@ -4777,60 +4728,53 @@ C20056BC 00000012 #Online/Static/CSSUpdateCSP.asm 800100B4 382100B0 7C0803A6 4E800020 60000000 00000000 -C20056AC 00000035 #Online/Static/ChatMessages.asm +C20056AC 0000002E #Online/Static/ChatMessages.asm 7CA802A6 2C030008 4182001C 2C030004 41820020 2C030002 41820024 2C030001 -41820028 480000A9 +41820028 48000075 7C6802A6 48000024 -4800012D 7C6802A6 -48000018 480000FD +480000F9 7C6802A6 +48000018 480000C9 7C6802A6 4800000C -480000B1 7C6802A6 +4800007D 7C6802A6 88E30000 89030001 89230002 89430003 -2C040008 4182001C -2C040004 41820044 -2C040002 41820028 -2C040001 41820010 -38830004 7C843A14 -4800003C 38830004 -7C843A14 7C844214 -4800002C 38830004 -7C843A14 7C844214 -7C844A14 48000018 -38830004 7C843A14 -7C844214 7C844A14 -7C845214 7CA903A6 -4E800420 4E800021 -07040904 436F6D6D -6F6E0067 6773006F -6E65206D 6F726500 -62726200 676F6F64 -206C7563 6B000000 -4E800021 0C0C0D07 -436F6D70 6C696D65 -6E747300 77656C6C -20706C61 79656400 -74686174 20776173 -2066756E 00746861 -6E6B7300 746F6F20 -676F6F64 00000000 -4E800021 0A040504 -52656163 74696F6E -73006F6F 66006D79 -2062006C 6F6C0077 -6F770000 4E800021 -05050917 4D697363 -006F6B61 79007468 -696E6B69 6E67006C -65742773 20706C61 -79206167 61696E20 -6C617465 72006261 -6420636F 6E6E6563 -74696F6E 00000000 -60000000 00000000 +7C862378 38830004 +7C843A14 2C060008 +41820020 7C844214 +2C060001 41820014 +7C844A14 2C060002 +41820008 7C845214 +7CA903A6 4E800420 +4E800021 07040904 +436F6D6D 6F6E0067 +6773006F 6E65206D +6F726500 62726200 +676F6F64 206C7563 +6B000000 4E800021 +0C0C0D07 436F6D70 +6C696D65 6E747300 +77656C6C 20706C61 +79656400 74686174 +20776173 2066756E +00746861 6E6B7300 +746F6F20 676F6F64 +00000000 4E800021 +0A040504 52656163 +74696F6E 73006F6F +66006D79 2062006C +6F6C0077 6F770000 +4E800021 05050917 +4D697363 006F6B61 +79007468 696E6B69 +6E67006C 65742773 +20706C61 79206167 +61696E20 6C617465 +72006261 6420636F +6E6E6563 74696F6E +00000000 00000000 C20056B8 00000002 #Online/Static/GetCSSIconData.asm 3C60803F 60630A48 4E800020 00000000 @@ -5087,17 +5031,192 @@ C21A5018 00000005 618C5078 7D8903A6 4D820420 00000000 04218D68 C8228000 +C209E090 00000011 #Common/FastForward/DynamicsFix.asm +807B0028 48000009 +48000074 7C0802A6 +90010004 9421FFE8 +93E10014 7C7F1B78 +807F0014 54600211 +40820020 54600673 +41820018 7FE3FB78 +3D808037 618C3078 +7D8903A6 4E800421 +807F0010 2C030000 +41820008 4BFFFFB9 +807F0008 2C030000 +41820008 4BFFFFA9 +83E10014 8001001C +38210018 7C0803A6 +4E800020 BB010028 +60000000 00000000 $Recommended: Normal Lag Reduction [Hannes Mann] *Reduces input lag 043761EC 4800001C 04376238 48000018 +$Recommended: Apply Delay to all In-Game Scenes [Fizzi] +*Applies online delay to all in-game scenes. +*Dolphin netplay is no longer necessary for local practice +C2376A24 00000026 #Common/UseInGameDelay/ApplyInGameDelay.asm +3D808034 618CDA00 +7D8903A6 4E800421 +3D808000 618C561C +7D8903A6 4E800421 +2C030002 41820014 +2C030003 4182000C +2C030004 408200F8 +3C608048 88639D30 +2C030008 418200E8 +3C608047 60639D64 +80630000 2C030000 +408200D4 7C0802A6 +90010004 9421FF50 +BE810008 3C60802F +6063666C 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +83E30008 887F0000 +2C030000 40810080 +38610038 388100DC +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 887F0001 +1C630030 3BC30002 +386100DC 7C9FF214 +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 7C7FF214 +38810038 38A00030 +3D808000 618C31F4 +7D8903A6 4E800421 +889F0000 887F0001 +38630001 7C032000 +41800008 38600000 +987F0001 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C22F666C 0000005C #Common/UseInGameDelay/InitializeInGameDelay.asm +4800007C 4E800021 +80000000 4E800021 +00000000 3DCCCCCD +43870000 434F0000 +3EA8F5C3 44656C61 +793A2025 64660000 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C7F1B78 +880DB6CC 2C000001 +41820018 7FE3FB78 +3D808039 618C10D8 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C7F1B78 +3C608048 88639D30 +2C030008 4182024C +7C0802A6 90010004 +9421FF50 BE810008 +386002D2 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7F1B78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 4BFFFF39 +7C6802A6 93E30000 +386000D5 987F0000 +7FE3FB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FE3FB78 +38800002 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +8BDF0001 7FE3FB78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 2C1E0000 +41800010 2C1E000F +41810010 48000010 +3BC00000 48000008 +3BC0000F 9BDF0000 +2C1E0000 4081016C +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7A1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C791B78 +7F23CB78 888DC1AB +7F45D378 3D808039 +618C0A70 7D8903A6 +4E800421 7F23CB78 +4BFFFE51 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 90790024 +38600002 7F24CB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7B1B78 4BFFFDD1 +7FA802A6 38600002 +7F64DB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +38800001 989C0049 +38800002 989C004A +C03D0000 D03C0008 +C03D0004 D03C0024 +D03C0028 C03D0008 +C05D000C 7F83E378 +389D0014 7FC5F378 +3D80803A 618C6B98 +7D8903A6 4E800421 +7F83E378 38800000 +C03D0010 C05D0010 +3D80803A 618C7548 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +7FE3FB78 00000000 +C200561C 00000013 #Common/GetCommonMinorID/GetCommonMinorID.asm +7C0802A6 90010004 +9421FF50 BE810008 +3CA08048 8BC59D30 +8BE59D33 3FA0803D +63BDACA4 38800000 +1CA40014 7CBD2A14 +88C50001 7C06F000 +4082000C 80650010 +48000010 38840001 +2C04002C 4081FFDC +38800000 1CA40018 +7CA32A14 88C50000 +7C06F800 4082000C +8865000C 48000010 +38840001 2C0600FF +4082FFDC BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 + $Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch] *Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- *Will not cause desyncs when playing online 043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm -C236A4A8 00000006 #External/Widescreen/Overwrite CObj Values.asm +C236A4A8 00000007 #External/Widescreen/Overwrite CObj Values.asm +38600001 986DAFE0 C03F0034 4800001D 7C6802A6 C0430000 C0630004 EC2100B2 From 3b7d55f3c194ecdd4b9f43ab550efb9003f87cbb Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sat, 18 Dec 2021 20:28:28 -0800 Subject: [PATCH 09/18] refactor: avoid "using namespace" --- Source/Core/Core/Slippi/SlippiPremadeText.h | 126 ++++++++++---------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h index 6e614181e4..5f43cba06a 100644 --- a/Source/Core/Core/Slippi/SlippiPremadeText.h +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -11,8 +11,6 @@ #include "Common/Logging/Log.h" #include "Common/StringUtil.h" -using namespace std; - class SlippiPremadeText { public: @@ -48,7 +46,7 @@ public: CHAT_MSG_CHAT_DISABLED = 0x10, }; - unordered_map premadeTextsParams = { + std::unordered_map premadeTextsParams = { {CHAT_MSG_U_PAD_UP, "ggs"}, {CHAT_MSG_U_PAD_LEFT, "one more"}, @@ -73,7 +71,7 @@ public: {CHAT_MSG_CHAT_DISABLED, "player has chat disabled"}, }; - unordered_map premadeTexts = { + std::unordered_map premadeTexts = { {SPT_CHAT_P1, "%s:%s"}, {SPT_CHAT_P2, "%s:%s"}, {SPT_CHAT_P3, "%s:%s"}, @@ -85,16 +83,16 @@ public: // This is just a map of delimiters and temporary replacements to remap them before the name is // converted to Slippi Premade Text format - unordered_map unsupportedStringMap = { + std::unordered_map unsupportedStringMap = { {"<", "\\"}, {">", "`"}, {",", ""}, // DELETE U+007F }; // TODO: use va_list to handle any no. or args - string GetPremadeTextString(u8 textId) { return premadeTexts[textId]; } + std::string GetPremadeTextString(u8 textId) { return premadeTexts[textId]; } - vector GetPremadeTextData(u8 textId, ...) + std::vector GetPremadeTextData(u8 textId, ...) { - string format = GetPremadeTextString(textId); + std::string format = GetPremadeTextString(textId); char str[400]; va_list args; va_start(args, textId); @@ -102,10 +100,10 @@ public: va_end(args); // INFO_LOG(SLIPPI, "%s", str); - vector data = {}; - vector empty = {}; + std::vector data = {}; + std::vector empty = {}; - vector matches = vector(); + std::vector matches = std::vector(); // NOTE: This code is converted from HSDRaw C# code // Fuck Regex, current cpp version does not support positive lookaheads to match this pattern @@ -121,7 +119,7 @@ public: } } - string match; + std::string match; for (int m = 0; m < matches.size(); m++) { match = matches[m]; @@ -129,10 +127,10 @@ public: auto splittedMatches = split(match, ","); if (splittedMatches.size() == 0) continue; - string firstMatch = splittedMatches[0]; + std::string firstMatch = splittedMatches[0]; auto utfMatch = UTF8ToUTF32(firstMatch); - pair> key = findCodeKey(firstMatch); + std::pair> key = findCodeKey(firstMatch); if (key.first != TEXT_OP_CODE::CUSTOM_NULL) { if (splittedMatches.size() - 1 != strlen(key.second.second.c_str())) @@ -140,8 +138,8 @@ public: data.push_back((u8)key.first); - string res; - string res2; + std::string res; + std::string res2; for (int j = 0; j < strlen(key.second.second.c_str()); j++) { switch (key.second.second.c_str()[j]) @@ -174,11 +172,11 @@ public: } else { - // process string otherwise + // process std::string otherwise if (splittedMatches.size() >= 2 && firstMatch == "CHR") { - string res3 = splittedMatches[1]; + std::string res3 = splittedMatches[1]; trim(res3); u16 ch = (u16)atoi(res3.c_str()); if (ch) @@ -279,40 +277,40 @@ private: }; - vector>> OPCODES; - unordered_map> CODES = { - {TEXT_OP_CODE::CENTERED, pair("CENTER", "")}, - {TEXT_OP_CODE::RESET_CENTERED, pair("/CENTER", "")}, - {TEXT_OP_CODE::CLEAR_COLOR, pair("/COLOR", "")}, - {TEXT_OP_CODE::COLOR, pair("COLOR", "bbb")}, - {TEXT_OP_CODE::END, pair("END", "")}, - {TEXT_OP_CODE::FITTING, pair("FIT", "")}, - {TEXT_OP_CODE::KERNING, pair("KERN", "")}, - {TEXT_OP_CODE::LEFT_ALIGNED, pair("LEFT", "")}, - {TEXT_OP_CODE::LINE_BREAK, pair("BR", "")}, - {TEXT_OP_CODE::NO_FITTING, pair("/FIT", "")}, - {TEXT_OP_CODE::NO_KERNING, pair("/KERN", "")}, - {TEXT_OP_CODE::OFFSET, pair("OFFSET", "ss")}, - {TEXT_OP_CODE::RESET, pair("RESET", "")}, - {TEXT_OP_CODE::RESET_LEFT_ALIGN, pair("/LEFT", "")}, - {TEXT_OP_CODE::RESET_RIGHT_ALIGN, pair("/RIGHT", "")}, - {TEXT_OP_CODE::RESET_SCALING, pair("/SCALE", "")}, - {TEXT_OP_CODE::RESET_TEXTBOX, pair("/TEXTBOX", "")}, - {TEXT_OP_CODE::RIGHT_ALIGNED, pair("/RIGHT", "")}, - {TEXT_OP_CODE::SCALING, pair("SCALE", "bbbb")}, - {TEXT_OP_CODE::SET_TEXTBOX, pair("TEXTBOX", "ss")}, - {TEXT_OP_CODE::UNKNOWN_02, pair("UNK02", "")}, - {TEXT_OP_CODE::UNKNOWN_04, pair("UNK04", "")}, - {TEXT_OP_CODE::UNKNOWN_05, pair("UNK05", "s")}, - {TEXT_OP_CODE::UNKNOWN_06, pair("UNK06", "ss")}, - {TEXT_OP_CODE::UNKNOWN_08, pair("UNK08", "")}, - {TEXT_OP_CODE::UNKNOWN_09, pair("UNK09", "")}, - {TEXT_OP_CODE::SPACE, pair("S", "")}, + std::vector>> OPCODES; + std::unordered_map> CODES = { + {TEXT_OP_CODE::CENTERED, std::pair("CENTER", "")}, + {TEXT_OP_CODE::RESET_CENTERED, std::pair("/CENTER", "")}, + {TEXT_OP_CODE::CLEAR_COLOR, std::pair("/COLOR", "")}, + {TEXT_OP_CODE::COLOR, std::pair("COLOR", "bbb")}, + {TEXT_OP_CODE::END, std::pair("END", "")}, + {TEXT_OP_CODE::FITTING, std::pair("FIT", "")}, + {TEXT_OP_CODE::KERNING, std::pair("KERN", "")}, + {TEXT_OP_CODE::LEFT_ALIGNED, std::pair("LEFT", "")}, + {TEXT_OP_CODE::LINE_BREAK, std::pair("BR", "")}, + {TEXT_OP_CODE::NO_FITTING, std::pair("/FIT", "")}, + {TEXT_OP_CODE::NO_KERNING, std::pair("/KERN", "")}, + {TEXT_OP_CODE::OFFSET, std::pair("OFFSET", "ss")}, + {TEXT_OP_CODE::RESET, std::pair("RESET", "")}, + {TEXT_OP_CODE::RESET_LEFT_ALIGN, std::pair("/LEFT", "")}, + {TEXT_OP_CODE::RESET_RIGHT_ALIGN, std::pair("/RIGHT", "")}, + {TEXT_OP_CODE::RESET_SCALING, std::pair("/SCALE", "")}, + {TEXT_OP_CODE::RESET_TEXTBOX, std::pair("/TEXTBOX", "")}, + {TEXT_OP_CODE::RIGHT_ALIGNED, std::pair("/RIGHT", "")}, + {TEXT_OP_CODE::SCALING, std::pair("SCALE", "bbbb")}, + {TEXT_OP_CODE::SET_TEXTBOX, std::pair("TEXTBOX", "ss")}, + {TEXT_OP_CODE::UNKNOWN_02, std::pair("UNK02", "")}, + {TEXT_OP_CODE::UNKNOWN_04, std::pair("UNK04", "")}, + {TEXT_OP_CODE::UNKNOWN_05, std::pair("UNK05", "s")}, + {TEXT_OP_CODE::UNKNOWN_06, std::pair("UNK06", "ss")}, + {TEXT_OP_CODE::UNKNOWN_08, std::pair("UNK08", "")}, + {TEXT_OP_CODE::UNKNOWN_09, std::pair("UNK09", "")}, + {TEXT_OP_CODE::SPACE, std::pair("S", "")}, }; - pair> findCodeKey(string p) + std::pair> findCodeKey(std::string p) { - unordered_map>::iterator it; + std::unordered_map>::iterator it; for (it = CODES.begin(); it != CODES.end(); it++) { @@ -321,34 +319,35 @@ private: return *it; } } - return pair>(TEXT_OP_CODE::CUSTOM_NULL, - pair("", "")); + return std::pair>( + TEXT_OP_CODE::CUSTOM_NULL, std::pair("", "")); } - vector>> DeserializeCodes(vector data) + std::vector>> DeserializeCodes(std::vector data) { - vector>> d = vector>>(); + std::vector>> d = + std::vector>>(); for (int i = 0; i < data.size();) { auto opcode = (TEXT_OP_CODE)data[i++]; - vector param = vector(0); + std::vector param = std::vector(0); int textCode = (u8)opcode; if ((textCode >> 4) == 2) - param = vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; + param = std::vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; else if ((textCode >> 4) == 4) - param = vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; + param = std::vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; else if (!CODES.count(opcode)) { ERROR_LOG_FMT(SLIPPI, "Opcode Not Supported!"); } else { - pair code = CODES[opcode]; + std::pair code = CODES[opcode]; auto p = code.second.c_str(); - param = vector(strlen(p)); + param = std::vector(strlen(p)); for (int j = 0; j < param.size(); j++) { switch (p[j]) @@ -363,7 +362,8 @@ private: } } - pair> c = pair>(opcode, param); + std::pair> c = + std::pair>(opcode, param); d.push_back(c); if (opcode == TEXT_OP_CODE::END) @@ -394,16 +394,16 @@ private: rtrim(s); } - vector split(const string& str, const string& delim) + std::vector split(const std::string& str, const std::string& delim) { - vector tokens; + std::vector tokens; size_t prev = 0, pos = 0; do { pos = str.find(delim, prev); - if (pos == string::npos) + if (pos == std::string::npos) pos = str.length(); - string token = str.substr(prev, pos - prev); + std::string token = str.substr(prev, pos - prev); if (!token.empty()) tokens.push_back(token); prev = pos + delim.length(); From e81639ca0384451b6cbde75f7f81fee9a7ed4f8f Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 19 Dec 2021 10:44:53 -0800 Subject: [PATCH 10/18] refactor: prefer fmt logs --- Source/Core/Core/Slippi/SlippiMatchmaking.cpp | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp index cdecb91a3f..b358bfad14 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp @@ -56,7 +56,7 @@ void SlippiMatchmaking::FindMatch(MatchSearchSettings settings) { isMmConnected = false; - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Starting matchmaking..."); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Starting matchmaking..."); m_searchSettings = settings; @@ -222,7 +222,7 @@ void SlippiMatchmaking::startMatchmaking() m_hostPort = userInfo.port; else m_hostPort = 49000 + (generator() % 2000); - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Port to use: %d...", m_hostPort); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Port to use: {}...", m_hostPort); // We are explicitly setting the client address because we are trying to utilize our connection // to the matchmaking service in order to hole punch. This port will end up being the port @@ -240,7 +240,7 @@ void SlippiMatchmaking::startMatchmaking() // Failed to create client m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Failed to create mm client"; - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Failed to create client..."); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Failed to create client..."); return; } @@ -255,7 +255,7 @@ void SlippiMatchmaking::startMatchmaking() // Failed to connect to server m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Failed to start connection to mm server"; - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Failed to start connection to mm server..."); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Failed to start connection to mm server..."); return; } @@ -271,7 +271,7 @@ void SlippiMatchmaking::startMatchmaking() connectAttemptCount++; if (connectAttemptCount >= 20) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Failed to connect to mm server..."); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Failed to connect to mm server..."); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Failed to connect to mm server"; return; @@ -283,14 +283,14 @@ void SlippiMatchmaking::startMatchmaking() netEvent.peer->data = &userInfo.display_name; m_client->intercept = ENetUtil::InterceptCallback; isMmConnected = true; - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Connected to mm server..."); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Connected to mm server..."); } - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Trying to find match..."); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Trying to find match..."); /*if (!m_user->IsLoggedIn()) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Must be logged in to queue"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Must be logged in to queue"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Must be logged in to queue. Go back to menu"; return; @@ -318,14 +318,14 @@ void SlippiMatchmaking::startMatchmaking() hostname = gethostname(host, sizeof(host)); // find the host name if (hostname == -1) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN address"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN address"); } else { host_entry = gethostbyname(host); // find host information if (host_entry == NULL || host_entry->h_addrtype != AF_INET) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN host"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN host"); } else { @@ -361,8 +361,8 @@ void SlippiMatchmaking::startMatchmaking() int rcvRes = receiveMessage(response, 5000); if (rcvRes != 0) { - ERROR_LOG(SLIPPI_ONLINE, - "[Matchmaking] Did not receive response from server for create ticket"); + ERROR_LOG_FMT(SLIPPI_ONLINE, + "[Matchmaking] Did not receive response from server for create ticket"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Failed to join mm queue"; return; @@ -371,8 +371,8 @@ void SlippiMatchmaking::startMatchmaking() std::string respType = response["type"]; if (respType != MmMessageType::CREATE_TICKET_RESP) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Received incorrect response for create ticket"); - ERROR_LOG(SLIPPI_ONLINE, "%s", response.dump().c_str()); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Received incorrect response for create ticket"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "{}", response.dump().c_str()); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Invalid response when joining mm queue"; return; @@ -381,14 +381,14 @@ void SlippiMatchmaking::startMatchmaking() std::string err = response.value("error", ""); if (err.length() > 0) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Received error from server for create ticket"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Received error from server for create ticket"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = err; return; } m_state = ProcessState::MATCHMAKING; - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Request ticket success"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Request ticket success"); } void SlippiMatchmaking::handleMatchmaking() @@ -402,13 +402,13 @@ void SlippiMatchmaking::handleMatchmaking() int rcvRes = receiveMessage(getResp, 2000); if (rcvRes == -1) { - INFO_LOG(SLIPPI_ONLINE, "[Matchmaking] Have not yet received assignment"); + INFO_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Have not yet received assignment"); return; } else if (rcvRes != 0) { // Right now the only other code is -2 meaning the server died probably? - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Lost connection to the mm server"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Lost connection to the mm server"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Lost connection to the mm server"; return; @@ -417,7 +417,7 @@ void SlippiMatchmaking::handleMatchmaking() std::string respType = getResp["type"]; if (respType != MmMessageType::GET_TICKET_RESP) { - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Received incorrect response for get ticket"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Received incorrect response for get ticket"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Invalid response when getting mm status"; return; @@ -434,7 +434,7 @@ void SlippiMatchmaking::handleMatchmaking() latestVersion); // Force latest version for people whose file updates dont work } - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Received error from server for get ticket"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Received error from server for get ticket"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = err; return; @@ -536,8 +536,8 @@ void SlippiMatchmaking::handleMatchmaking() terminateMmConnection(); m_state = ProcessState::OPPONENT_CONNECTING; - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Opponent found. isDecider: %s", - m_isHost ? "true" : "false"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Opponent found. isDecider: {}", + m_isHost ? "true" : "false"); } int SlippiMatchmaking::LocalPlayerIndex() @@ -597,7 +597,7 @@ void SlippiMatchmaking::handleConnecting() { ipLog << m_remoteIps[i] << ", "; } - // INFO_LOG(SLIPPI_ONLINE, "[Matchmaking] My port: %d || %s", m_hostPort, ipLog.str()); + // INFO_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] My port: {} || {}", m_hostPort, ipLog.str()); // Is host is now used to specify who the decider is auto client = std::make_unique(addrs, ports, remotePlayerCount, m_hostPort, @@ -608,7 +608,7 @@ void SlippiMatchmaking::handleConnecting() auto status = client->GetSlippiConnectStatus(); if (status == SlippiNetplayClient::SlippiConnectStatus::NET_CONNECT_STATUS_INITIATED) { - INFO_LOG(SLIPPI_ONLINE, "[Matchmaking] Connection not yet successful"); + INFO_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Connection not yet successful"); Common::SleepCurrentThread(500); // Deal with class shut down @@ -622,7 +622,7 @@ void SlippiMatchmaking::handleConnecting() { // If we failed setting up a connection in teams mode, show a detailed error about who we had // issues connecting to. - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Failed to connect to players"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Failed to connect to players"); m_state = ProcessState::ERROR_ENCOUNTERED; m_errorMsg = "Timed out waiting for other players to connect"; auto failedConns = client->GetFailedConnections(); @@ -645,8 +645,8 @@ void SlippiMatchmaking::handleConnecting() } else if (status != SlippiNetplayClient::SlippiConnectStatus::NET_CONNECT_STATUS_CONNECTED) { - ERROR_LOG(SLIPPI_ONLINE, - "[Matchmaking] Connection attempt failed, looking for someone else."); + ERROR_LOG_FMT(SLIPPI_ONLINE, + "[Matchmaking] Connection attempt failed, looking for someone else."); // Return to the start to get a new ticket to find someone else we can hopefully connect with m_netplayClient = nullptr; @@ -654,7 +654,7 @@ void SlippiMatchmaking::handleConnecting() return; } - ERROR_LOG(SLIPPI_ONLINE, "[Matchmaking] Connection success!"); + ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Connection success!"); // Successful connection m_netplayClient = std::move(client); From 5df71eee422a6771c8fe5fba9ec779a811bd48a7 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 19 Dec 2021 10:45:27 -0800 Subject: [PATCH 11/18] refactor: use inet_ntop --- Source/Core/Core/Slippi/SlippiMatchmaking.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp index b358bfad14..daddd1636b 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp @@ -312,7 +312,7 @@ void SlippiMatchmaking::startMatchmaking() char lan_addr[30] = ""; char host[256]; - char* ip = static_cast(malloc(16)); + char ip[INET_ADDRSTRLEN] = ""; struct hostent* host_entry; int hostname; hostname = gethostname(host, sizeof(host)); // find the host name @@ -333,7 +333,7 @@ void SlippiMatchmaking::startMatchmaking() int i = 0; while (host_entry->h_addr_list[i] != 0) { - ip = inet_ntoa(*((struct in_addr*)host_entry->h_addr_list[i])); + inet_ntop(AF_INET, host_entry->h_addr_list[i], ip, INET_ADDRSTRLEN); WARN_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] IP at idx {}: {}", i, ip); i++; } From 4be71c5e2c20b257aaebc1f5a9a6eb553fa86db6 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 19 Dec 2021 10:47:50 -0800 Subject: [PATCH 12/18] refactor: make premade text maps const --- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 2 +- Source/Core/Core/Slippi/SlippiPremadeText.h | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 6daded12c6..005036381c 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -2463,7 +2463,7 @@ std::vector CEXISlippi::loadPremadeText(u8* payload) return premadeTextData = spt.GetPremadeTextData(SlippiPremadeText::SPT_CHAT_DISABLED, playerName.c_str()); } - auto chatMessage = spt.premadeTextsParams[paramId]; + auto chatMessage = spt.premadeTextsParams.at(paramId); std::string param = ReplaceAll(chatMessage.c_str(), " ", ""); premadeTextData = spt.GetPremadeTextData(textId, playerName.c_str(), param.c_str()); } diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h index 5f43cba06a..b8d4f991a6 100644 --- a/Source/Core/Core/Slippi/SlippiPremadeText.h +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once // This file must be encoded in UTF-8 with signatures on Windows #include @@ -46,7 +46,7 @@ public: CHAT_MSG_CHAT_DISABLED = 0x10, }; - std::unordered_map premadeTextsParams = { + const std::unordered_map premadeTextsParams = { {CHAT_MSG_U_PAD_UP, "ggs"}, {CHAT_MSG_U_PAD_LEFT, "one more"}, @@ -71,7 +71,7 @@ public: {CHAT_MSG_CHAT_DISABLED, "player has chat disabled"}, }; - std::unordered_map premadeTexts = { + const std::unordered_map premadeTexts = { {SPT_CHAT_P1, "%s:%s"}, {SPT_CHAT_P2, "%s:%s"}, {SPT_CHAT_P3, "%s:%s"}, @@ -83,12 +83,12 @@ public: // This is just a map of delimiters and temporary replacements to remap them before the name is // converted to Slippi Premade Text format - std::unordered_map unsupportedStringMap = { + const std::unordered_map unsupportedStringMap = { {"<", "\\"}, {">", "`"}, {",", ""}, // DELETE U+007F }; // TODO: use va_list to handle any no. or args - std::string GetPremadeTextString(u8 textId) { return premadeTexts[textId]; } + std::string GetPremadeTextString(u8 textId) { return premadeTexts.at(textId); } std::vector GetPremadeTextData(u8 textId, ...) { @@ -278,7 +278,7 @@ private: }; std::vector>> OPCODES; - std::unordered_map> CODES = { + const std::unordered_map> CODES = { {TEXT_OP_CODE::CENTERED, std::pair("CENTER", "")}, {TEXT_OP_CODE::RESET_CENTERED, std::pair("/CENTER", "")}, {TEXT_OP_CODE::CLEAR_COLOR, std::pair("/COLOR", "")}, @@ -310,9 +310,7 @@ private: std::pair> findCodeKey(std::string p) { - std::unordered_map>::iterator it; - - for (it = CODES.begin(); it != CODES.end(); it++) + for (auto it = CODES.begin(); it != CODES.end(); it++) { if (it->second.first == p) { @@ -345,7 +343,7 @@ private: } else { - std::pair code = CODES[opcode]; + std::pair code = CODES.at(opcode); auto p = code.second.c_str(); param = std::vector(strlen(p)); for (int j = 0; j < param.size(); j++) @@ -412,7 +410,7 @@ private: } // region CharMAPS - int CHAR_MAP[287] = { + const int CHAR_MAP[287] = { U'0', U'1', U'2', U'3', U'4', U'5', U'6', U'7', U'8', U'9', U'A', U'B', U'C', U'D', U'E', U'F', U'G', U'H', U'I', U'J', U'K', U'L', U'M', U'N', U'O', U'P', U'Q', U'R', U'S', U'T', U'U', U'V', U'W', U'X', U'Y', U'Z', U'a', U'b', U'c', From fd66a5becd01fcf8ac2105c422892f4d2beddf27 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 19 Dec 2021 10:55:03 -0800 Subject: [PATCH 13/18] refactor: prefer static casts --- Source/Core/Core/Slippi/SlippiPremadeText.h | 41 +++++++++------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h index b8d4f991a6..9b545362db 100644 --- a/Source/Core/Core/Slippi/SlippiPremadeText.h +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -147,19 +147,19 @@ public: case 'b': res = splittedMatches[j + 1]; trim(res); - if ((u8)atoi(res.c_str())) - data.push_back((u8)atoi(res.c_str())); + if (static_cast(atoi(res.c_str()))) + data.push_back(static_cast(atoi(res.c_str()))); else data.push_back(0); break; case 's': res2 = splittedMatches[j + 1]; trim(res2); - u16 sht = (u16)atoi(res2.c_str()); + u16 sht = static_cast(atoi(res2.c_str())); if (sht) { - data.push_back((u8)(sht >> 8)); - data.push_back((u8)(sht & 0xFF)); + data.push_back(static_cast(sht >> 8)); + data.push_back(static_cast(sht & 0xFF)); } else { @@ -178,12 +178,12 @@ public: { std::string res3 = splittedMatches[1]; trim(res3); - u16 ch = (u16)atoi(res3.c_str()); + u16 ch = static_cast(atoi(res3.c_str())); if (ch) { - u16 sht = (u16)(((u16)TEXT_OP_CODE::SPECIAL_CHARACTER << 8) | ch); - u8 r = (u8)(sht >> 8); - u8 r2 = (u8)(sht & 0xFF); + u16 sht = (static_cast(TEXT_OP_CODE::SPECIAL_CHARACTER) << 8) | ch; + u8 r = static_cast(sht >> 8); + u8 r2 = static_cast(sht & 0xFF); data.push_back(r); data.push_back(r2); } @@ -219,9 +219,9 @@ public: if (pos >= 0) { - u16 sht = (u16)(((u16)TEXT_OP_CODE::COMMON_CHARACTER << 8) | pos); - u8 r = (u8)(sht >> 8); - u8 r2 = (u8)(sht & 0xFF); + u16 sht = static_cast((TEXT_OP_CODE::COMMON_CHARACTER << 8) | pos); + u8 r = static_cast(sht >> 8); + u8 r2 = static_cast(sht & 0xFF); // INFO_LOG(SLIPPI, "%x %x %x %c", sht, r, r2, chr); data.push_back(r); @@ -232,11 +232,6 @@ public: } } } - - // INFO_LOG(SLIPPI, "DATA:"); - // for(int i=0;i param = std::vector(0); - int textCode = (u8)opcode; + u8 textCode = static_cast(opcode); - if ((textCode >> 4) == 2) - param = std::vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; - else if ((textCode >> 4) == 4) - param = std::vector{(u16)(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; + if ((textCode >> 4) == 2 || (textCode >> 4) == 4) + param = std::vector{static_cast(((textCode << 8) | (data[i++] & 0xFF)) & 0xFFF)}; else if (!CODES.count(opcode)) { ERROR_LOG_FMT(SLIPPI, "Opcode Not Supported!"); @@ -351,10 +344,10 @@ private: switch (p[j]) { case 'b': - param[j] = (u16)(data[i++] & 0xFF); + param[j] = static_cast(data[i++] & 0xFF); break; case 's': - param[j] = (u16)(((data[i++] & 0xFF) << 8) | (data[i++] & 0xFF)); + param[j] = static_cast(((data[i++] & 0xFF) << 8) | (data[i++] & 0xFF)); break; } } From 90c4c8ebfbeee1ed849a5d67239be80a4fdecaeb Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 19 Dec 2021 14:45:32 -0800 Subject: [PATCH 14/18] fix a variable name --- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 005036381c..509d202a7b 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -1926,7 +1926,7 @@ void CEXISlippi::prepareOnlineMatchState() if (mmState == SlippiMatchmaking::ProcessState::CONNECTION_SUCCESS) { - localPlayerIndex = matchmaking->LocalPlayerIndex(); + m_local_player_index = matchmaking->LocalPlayerIndex(); if (!slippi_netplay) { @@ -1973,13 +1973,13 @@ void CEXISlippi::prepareOnlineMatchState() if (remotePlayerCount == 1) { auto isDecider = slippi_netplay->IsDecider(); - localPlayerIndex = isDecider ? 0 : 1; + m_local_player_index = isDecider ? 0 : 1; m_remote_player_index = isDecider ? 1 : 0; } #endif auto isDecider = slippi_netplay->IsDecider(); - localPlayerIndex = isDecider ? 0 : 1; + m_local_player_index = isDecider ? 0 : 1; m_remote_player_index = isDecider ? 1 : 0; } else From de492779497e412f2d4fd34aad2fdf7583578a42 Mon Sep 17 00:00:00 2001 From: R2DLiu Date: Sun, 19 Dec 2021 20:06:33 -0500 Subject: [PATCH 15/18] compiles, working, playable matches. connect code history feature works --- Data/Sys/GameFiles/GALE01/slpCSS.dat | Bin 0 -> 129859 bytes Data/Sys/GameSettings/GALE01r2.ini | 4349 ++++++++----- Data/Sys/GameSettings/GALJ01r2.ini | 5527 +++++++++++++++++ Source/Core/Common/FileUtil.cpp | 1 + Source/Core/Common/FileUtil.h | 1 + Source/Core/Core/CMakeLists.txt | 7 +- Source/Core/Core/HW/EXI/EXI_Device.h | 2 +- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 140 +- Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h | 9 + Source/Core/Core/Slippi/SlippiDirectCodes.cpp | 241 + Source/Core/Core/Slippi/SlippiDirectCodes.h | 39 + Source/Core/Core/Slippi/SlippiNetplay.h | 14 +- Source/Core/Core/Slippi/SlippiPremadeText.h | 1 - 13 files changed, 8894 insertions(+), 1437 deletions(-) create mode 100644 Data/Sys/GameFiles/GALE01/slpCSS.dat create mode 100644 Data/Sys/GameSettings/GALJ01r2.ini create mode 100644 Source/Core/Core/Slippi/SlippiDirectCodes.cpp create mode 100644 Source/Core/Core/Slippi/SlippiDirectCodes.h diff --git a/Data/Sys/GameFiles/GALE01/slpCSS.dat b/Data/Sys/GameFiles/GALE01/slpCSS.dat new file mode 100644 index 0000000000000000000000000000000000000000..121d04b94feffacbe8586b5cb043d26b80734457 GIT binary patch literal 129859 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 da4<0bkYHf^5y8Ot12pyr&M3t>1#O*lhp+ literal 0 HcmV?d00001 diff --git a/Data/Sys/GameSettings/GALE01r2.ini b/Data/Sys/GameSettings/GALE01r2.ini index 49ffe0a418..540e651390 100644 --- a/Data/Sys/GameSettings/GALE01r2.ini +++ b/Data/Sys/GameSettings/GALE01r2.ini @@ -11,12 +11,24 @@ $Required: General Codes $Required: Slippi Recording $Required: Slippi Online $Recommended: Normal Lag Reduction -$Recommended: Polling drift fix + VB +$Recommended: Apply Delay to all In-Game Scenes [Gecko] $Required: General Codes [Achilles, Dan Salvato, Magus, UnclePunch, tauKhan, Ptomerty, Cilan, Zauron, Datel, donny2112, Jorgasms, strikebowler585, Myougi] -0445BF28 FFFFFFFF #Unlock All Characters and Stages [Datel] -0445BF2C FFFFFFFF +0415EE98 38600001 #Unlock All Characters and Stages [Datel] +0415EDDC 38600001 +04164B14 38600001 +041648F4 38600001 +0415EE4C 38600001 +0415EE14 38600001 +0415D968 38600001 +0415D9D8 38600001 +0417229C 38600000 +041737B0 38600000 +04164658 38600001 +041644E8 38600001 +0430490C 38600063 +043044F0 38600001 043D4A48 00340102 #Stock Mode [Magus] 043D4A4C 04000A00 #4 Stocks [Magus] 043D4A50 08010100 #8 Minutes [Magus] @@ -31,8 +43,6 @@ C21AF6F4 00000006 #External/Skip Memcard Prompt/Skip Memcard Prompt.asm 60000000 00000000 0415D94C 4E800020 #Disable Special Messages [Most] 0415D984 4E800020 #Disable Trophy Messages [Achilles] -0245C390 00000125 #Unlock All 293 Trophies [Datel] -0245C395 01266363 C21A5B14 0000000A #External/Salty Runback/Salty Runback.asm 3BA00000 7FA3EB78 3D80801A 618C3680 @@ -143,10 +153,10 @@ BA810008 800100B4 41200000 42700000 41200000 C1A00000 41200000 41A00000 -41200000 C1A00000 41200000 C2700000 -41200000 41A00000 +41200000 C1A00000 41200000 42700000 +41200000 41A00000 41200000 0000001F C21B3333 420CCCCD 421B3333 420CCCCD @@ -216,242 +226,140 @@ FC0F0840 4081000C FC0F8840 41800010 C21F0318 FE0F802A D21F0318 00000000 -0425D22C 3BA00000 #External/UCF + Arduino Toggle UI/Disable KO Stars.asm -C206B028 00000037 #External/UCF + Arduino Toggle UI/Arduino/Arduino - Check for Toggle.asm -901F065C 897F0618 -3982F228 7D6C58AE -2C0B0002 408201A0 -48000025 00000000 -00000000 00000000 -00000000 3F39999A -BF300000 3C4CCCCD -3E4CCCCD 7D8802A6 -C01F0650 C0228874 -FC000840 418100A4 -38800070 7C840039 -2C040000 40820094 -38800E00 7C840039 -2C040000 40820138 -38800100 7C840039 -41A20010 80BF0660 -7CA52039 41820120 -C01F0624 FC000840 -40A20114 C01F0620 -FC000840 41820108 -FC000210 808DAEB4 -C044003C C0640000 -C0840008 FC001040 -40A000EC 889F0618 -1C840004 7C0C242E -FC400210 FC021840 -408000D4 C05F0620 -EC420028 FC401210 -FC022040 418000C0 -D03F0620 480000B8 -C01F0654 C05F0650 -EC0000B2 FC000840 -4181001C 38800070 -7C840038 801F0660 -7C840039 40820008 -4800008C C01F0620 -C05F0628 EC620032 -FC030840 40810078 -889F0670 2C040003 -4180006C C05F0624 -808DAEB4 C0640314 -FC021840 41A10058 -FC401050 C064003C -FC021840 40A00048 -C06C0018 FC800210 -EC83202A EC42182A -EC840132 EC4220BA -C0628954 FC021840 -40810024 C04C0010 -FC000840 4080000C -C0028958 EC4000B2 -D05F0620 C04C0014 -D05F0624 889F0618 -1C840004 C0030020 -7C0C252E 00000000 -C20C9A44 0000002F #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 Dashback - Check for Toggle.asm -D01F002C 889F0618 -3862F228 7C6320AE -2C030001 41820014 -3862F22C 7C6320AE -2C030001 40820150 -7C0802A6 90010004 -9421FF50 BE810008 -48000121 7FC802A6 -C03F0894 C05E0000 -FC011040 40820118 -808DAEB4 C03F0620 -FC200A10 C044003C -FC011040 41800100 -887F0670 2C030002 -408000F4 887F221F -54600739 408200E8 -3C60804C 60631F78 -8BA30001 387DFFFE -889F0618 4800008D -7C7C1B78 7FA3EB78 -889F0618 4800007D -7C7C1850 7C6319D6 -2C0315F9 408100B0 -38000001 901F2358 -901F2340 809F0004 -2C04000A 40A20098 -887F000C 38800001 -3D808003 618C418C -7D8903A6 4E800421 -2C030000 41820078 -8083002C 80841ECC -C03F002C D0240018 -C05E0004 FC011040 -4181000C 38600080 -48000008 3860007F -98640006 48000048 -7C852378 3863FFFF -2C030000 40800008 -38630005 3C808046 -6084B108 1C630030 -7C841A14 1C65000C -7C841A14 88640002 -7C630774 4E800020 -4E800021 40000000 -00000000 BA810008 -800100B4 382100B0 -7C0803A6 00000000 -C20998A4 0000002B #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 Shield Drop - Check for Toggle.asm +C20C9A44 0000002B #External/UCF 0.8/Logic/UCF DB.asm +D01F002C 7C0802A6 +90010004 9421FF50 +BE810008 48000121 +7FC802A6 C03F0894 +C05E0000 FC011040 +40820118 808DAEB4 +C03F0620 FC200A10 +C044003C FC011040 +41800100 887F0670 +2C030002 408000F4 +887F221F 54600739 +408200E8 3C60804C +60631F78 8BA30001 +387DFFFE 889F0618 +4800008D 7C7C1B78 +7FA3EB78 889F0618 +4800007D 7C7C1850 +7C6319D6 2C0315F9 +408100B0 38000001 +901F2358 901F2340 +809F0004 2C04000A +40A20098 887F000C +38800001 3D808003 +618C418C 7D8903A6 +4E800421 2C030000 +41820078 8083002C +80841ECC C03F002C +D0240018 C05E0004 +FC011040 4181000C +38600080 48000008 +3860007F 98640006 +48000048 7C852378 +3863FFFF 2C030000 +40800008 38630005 +3C808046 6084B108 +1C630030 7C841A14 +1C65000C 7C841A14 +88640002 7C630774 +4E800020 4E800021 +40000000 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C20998A4 00000026 #External/UCF 0.8/Logic/UCF SD.asm 7C0802A6 90010004 9421FF50 BE810008 7C7E1B78 83FE002C -48000101 7FA802A6 -889F0618 3862F228 -7C6320AE 2C030001 -41820014 3862F230 -7C6320AE 2C030001 -408200F8 C03F063C -806DAEB4 C0030314 -FC010040 408100E4 -C03F0620 48000071 -D0210090 C03F0624 -48000065 C0410090 -EC4200B2 EC210072 -EC21102A C05D000C -FC011040 418000B4 -889F0670 2C040003 -408100A8 C01D0010 -C03F0624 FC000840 -40800098 BA810008 -800100B4 382100B0 -7C0803A6 8061001C -83E10014 38210018 -38630008 7C6803A6 -4E800020 FC000A10 -C03D0000 EC000072 -C03D0004 EC000828 -FC00001E D8010080 -80610084 38630002 -3C004330 C85D0014 -6C638000 90010080 -90610084 C8210080 -EC011028 C03D0000 -EC200824 4E800020 -4E800021 42A00000 -37270000 43300000 -3F800000 BF4CCCCD -43300000 80000000 -7FC3F378 7FE4FB78 +480000DD 7FA802A6 +C03F063C 806DAEB4 +C0030314 FC010040 +408100E4 C03F0620 +48000071 D0210090 +C03F0624 48000065 +C0410090 EC4200B2 +EC210072 EC21102A +C05D000C FC011040 +418000B4 889F0670 +2C040003 408100A8 +C01D0010 C03F0624 +FC000840 40800098 BA810008 800100B4 382100B0 7C0803A6 -60000000 00000000 -C22652EC 0000002A #External/UCF + Arduino Toggle UI/UI/Create Text.asm +8061001C 83E10014 +38210018 38630008 +7C6803A6 4E800020 +FC000A10 C03D0000 +EC000072 C03D0004 +EC000828 FC00001E +D8010080 80610084 +38630002 3C004330 +C85D0014 6C638000 +90010080 90610084 +C8210080 EC011028 +C03D0000 EC200824 +4E800020 4E800021 +42A00000 37270000 +43300000 3F800000 +BF4CCCCD 43300000 +80000000 7FC3F378 +7FE4FB78 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C20908F4 00000017 #External/UCF 0.8/Logic/UCF Tumble.asm 7C0802A6 90010004 9421FF50 BE810008 -480000C9 7FC802A6 -38600000 38800000 -3D80803A 618C6754 -7D8903A6 4E800421 -7C7F1B78 7FA3EB78 -480000D1 C05E000C -EC2100B2 C05E0000 -EC21102A C05E0004 -7FE3FB78 480000A1 -7C8802A6 3D80803A -618C6B98 7D8903A6 -4E800421 7FA3EB78 -48000099 C05E000C -EC2100B2 C05E0010 -EC21102A C05E0014 -7FE3FB78 48000075 -7C8802A6 3D80803A -618C6B98 7D8903A6 -4E800421 38800001 -989F0049 38800001 -989F004A 38800001 -989F004D C03E0008 -D03F0024 D03F0028 -386DB060 1C9D0004 -7FE3212E 48000064 -4E800021 C3DC0000 -43EA0000 3D3851EC -43AC8000 C3DC0000 -43FA0000 4E800021 -46697865 733A0000 -4E800021 4F666600 -9421FF00 D0410008 -3C004330 C84298A8 -6C638000 900100F0 -906100F4 C82100F0 -EC211028 C0410008 -38210100 4E800020 +2C030001 4082008C +C03F0628 FC200A10 +806DAEB4 C0430210 +FC011040 40800074 +3F80804C 639C1F78 +8BDC0001 387EFFFE +889F0618 48000029 +7C7D1B78 7FC3F378 +889F0618 48000019 +7C7D1850 7C6319D6 +388015F9 7C041800 +48000038 7C852378 +3863FFFF 2C030000 +40800008 38630005 +809C0008 1C630030 +7C841A14 1C65000C +7C841A14 88640002 +7C630774 4E800020 BA810008 800100B4 382100B0 7C0803A6 -38600000 00000000 -C225E0E8 00000004 #External/UCF + Arduino Toggle UI/UI/UCF Indicator - Hide Text.asm -386DB060 1C9F0004 -7C63202E 38800001 -9883004D 386000BA -60000000 00000000 -C225E070 00000004 #External/UCF + Arduino Toggle UI/UI/UCF Indicator - Show Text.asm -386DB060 1C9F0004 -7C63202E 38800000 -9883004D 386000B9 -60000000 00000000 -C22604E8 00000021 #External/UCF + Arduino Toggle UI/UI/Update Text.asm -887F0004 1C630024 -3C80803F 60840E08 -7C632214 88630000 -2C030003 418200E0 -3C80804C 608420BC -88BF0004 1CA50044 -7C842A14 80640008 -546007BD 40820010 -546007FF 40820028 -48000058 889F0004 -38A2F228 7C6520AE -38630001 2C030002 -41810040 7C6521AE -48000024 889F0004 -38A2F228 7C6520AE -3863FFFF 2C030000 -41800020 7C6521AE -48000004 38600002 -3D808002 618C4030 -7D8903A6 4E800421 -88BF0004 1C650004 -388DB060 7C63202E -3882F228 7C8428AE -48000029 7CC802A6 -1C840008 7CA43214 -38800001 3D80803A -618C70A0 7D8903A6 -4E800421 48000020 -4E800021 4F666600 -00000000 55434600 -00000000 44776565 -6E000000 889F0004 60000000 00000000 +C22662D0 0000001A #External/UCF 0.8/Indicator/UCF Text.asm +7C0802A6 90010004 +9421FF50 BE810008 +48000089 7FC802A6 +38600000 38800000 +3DC0803A 61CE6754 +7DC903A6 4E800421 +7C7F1B78 38800001 +989F0049 38800001 +989F004A C03E000C +D03F0024 D03F0028 +7FE3FB78 48000059 +7C8802A6 C03E0000 +C05E0004 3DC0803A +61CE6B98 7DC903A6 +4E800421 7C641B78 +7FE3FB78 C03E0008 +C05E0008 3D80803A +618C7548 7D8903A6 +4E800421 48000024 +4E800021 42180000 +C3898000 3EE66666 +3DCCCCCD 4E800021 +55434620 302E3800 +BA810008 800100B4 +382100B0 7C0803A6 +38980000 00000000 C226325C 00000008 #External/DPad Down at CSS for Random Stage/DPad Down at CSS for Random Stage.asm 3C808045 6084BF17 54E0077B 4182001C @@ -580,8 +488,77 @@ C216EA30 00000004 #Common/Winners Names are Gold on CSS/Remember Who LRA Started 04261B30 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm 042605FC 38C00003 #External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm 041239A8 60000000 #External/FreezeGlitchFix/FreezeGlitchFix.asm +C213C388 0000000A #Common/CostumeBoundCheck/PuffCostume.asm +83DC002C 887E000C +3D808003 618C2330 +7D8903A6 4E800421 +3D808016 618C9238 +7D8903A6 4E800421 +889E0619 7C041800 +40800008 48000014 +3D808013 618CC46C +7D8903A6 4E800420 +809C002C 00000000 +C216DED4 00000039 #Common/CostumeBoundCheck/main.asm +7C0802A6 90010004 +9421FF50 BE810008 +3BE00000 7FE3FB78 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820060 +7FE3FB78 3D808003 +618C3198 7D8903A6 +4E800421 7C7E1B78 +7FE3FB78 3D808003 +618C2330 7D8903A6 +4E800421 3D808016 +618C9238 7D8903A6 +4E800421 7C1E1800 +4180001C 7FE3FB78 +38800000 3D808003 +618C3208 7D8903A6 +4E800421 3BFF0001 +2C1F0006 4180FF80 +3BE00000 7FE3FB78 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 418200EC +7FE3FB78 3D808003 +618C2330 7D8903A6 +4E800421 7C7E1B78 +7FE3FB78 3D808003 +618C3198 7D8903A6 +4E800421 7C7D1B78 +7FE3FB78 3D808003 +618C3284 7D8903A6 +4E800421 7C7C1B78 +3B600000 7C1FD800 +4182008C 7F63DB78 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820070 +7F63DB78 3D808003 +618C2330 7D8903A6 +4E800421 7C03F000 +40820054 7F63DB78 +3D808003 618C3198 +7D8903A6 4E800421 +7C03E800 40820038 +7F63DB78 3D808003 +618C3284 7D8903A6 +4E800421 7C03E000 +4082001C 38830001 +7F63DB78 3D808003 +618C32F4 7D8903A6 +4E800421 3B7B0001 +2C1B0006 4180FF68 +3BFF0001 2C1F0006 +4180FEF4 BA810008 +800100B4 382100B0 +7C0803A6 8001001C +60000000 00000000 -$Required: Slippi Recording [Fizzi, Achilles, UnclePunch] +$Required: Slippi Recording [Fizzi, Achilles, UnclePunch, Nikki, jmlee337] *Saves replays, Slippi device must be in Slot B. *To disable saving replays, visit the Slippi settings in Config > GameCube 040679BC 38802600 #Recording/ExtendPlayerBlock.asm @@ -602,7 +579,7 @@ C23219EC 0000001C #Recording/FlushFrameBuffer.asm 80ADB61C 8885000D 2C040000 40820024 8885000C 2C040000 -40820018 808506FC +40820018 808507B3 3884FF85 7C041800 40800008 7C832378 907C0005 3BBD0009 @@ -643,34 +620,35 @@ C216D884 0000001C #Recording/SendGameEnd.asm 800100B4 382100B0 7C0803A6 819F2514 60000000 00000000 -C216E74C 000000BE #Recording/SendGameInfo.asm +C216E74C 000000E3 #Recording/SendGameInfo.asm 7C0802A6 90010004 9421FF50 BE810008 3D808000 618C5604 7D8903A6 4E800421 -2C030000 418205B4 +2C030000 418206DC 38600005 3D808037 618CF1E4 7D8903A6 -4E800421 7C791B78 -932DB64C 38800005 +4E800421 7C7B1B78 +936DB64C 38800005 3D808000 618CC160 7D8903A6 4E800421 -386006E2 3D808037 +38600702 3D808037 618CF1E4 7D8903A6 4E800421 7C7E1B78 -93D90000 38600000 -906DB650 3C608019 -606310E8 38800000 +93DB0000 38600000 +906DB650 3C608000 +60635600 80630000 +38630008 38800000 3D808000 618C55FC 7D8903A6 4E800421 7C7C1B78 38600035 987E0000 3860001C 987E0001 38600036 -987E0002 386001A4 +987E0002 38600248 B07E0003 38600037 987E0005 3860003F B07E0006 38600038 -987E0008 38600048 +987E0008 3860004C B07E0009 38600039 987E000B 38600002 B07E000C 3860003A @@ -684,7 +662,7 @@ B07E0015 3860003D 38600010 987E001A 38600204 B07E001B 38600036 987E001D -3C600307 60630000 +3C600309 60630000 907E001E 387E0022 7FE4FB78 38A00138 3D808000 618C31F4 @@ -717,7 +695,7 @@ B07E0015 3860003D 3C60804D 80635F90 907E015A 3A82F228 3AA00000 3ADE015E -1EF50008 7C75A0AE +1EF50008 38600001 7C76B92E 3AF70004 7C76B92E 3AB50001 2C150004 4180FFE4 @@ -742,30 +720,66 @@ B07E0015 3860003D 8862F23C 987E01BF 3C608048 80639D30 5463443E B07E01C0 -7FC3F378 388001C2 -38A00001 3D808000 -618C55F0 7D8903A6 -4E800421 38600205 -3D808037 618CF1E4 -7D8903A6 4E800421 -7C7B1B78 38600010 -987B0000 3860003D -987B0203 38600200 -B07B0201 38600000 -987B0204 3B400000 -7C7AE050 2C030200 -41810010 B07B0201 -38600001 987B0204 -387B0001 3C808019 -608410E8 7C84D214 -A0BB0201 3D808000 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C791B78 +3A800000 3ABF0060 +3AFE01C2 3B590034 +1C74001F 7F03BA14 +1ED40024 7ED6AA14 +88760001 2C030000 +40820028 1C74001F +7C83D214 7F03C378 +38A0001F 3D808000 618C31F4 7D8903A6 -4E800421 7F63DB78 +4E800421 4800001C +7F03C378 3880001F +3D808000 618CC160 +7D8903A6 4E800421 +3A940001 2C140004 +4180FFA0 3A800000 +3ABF0060 3AFE023E +3B5900EF 1C74000A +7F03BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820028 +1C74000A 7C83D214 +7F03C378 38A0000A +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +3880000A 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FFA0 +7F23CB78 3D808037 +618CF1B0 7D8903A6 +4E800421 7FC3F378 +38800266 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38600205 3D808037 +618CF1E4 7D8903A6 +4E800421 7C751B78 +3C608000 60635600 +80630000 3AE30008 +38600010 98750000 +3860003D 98750203 +38600200 B0750201 +38600000 98750204 +3AC00000 7C76E050 +2C030200 41810010 +B0750201 38600001 +98750204 38750001 +7EE4BB78 7C84B214 +A0B50201 3D808000 +618C31F4 7D8903A6 +4E800421 7EA3AB78 38800205 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -3B5A0200 7C1AE000 -4180FFA0 7F63DB78 +3AD60200 7C16E000 +4180FFA4 7EA3AB78 3D808037 618CF1B0 7D8903A6 4E800421 38600004 38800007 @@ -834,14 +848,14 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 3C608017 00000000 -C206DA34 00000034 #Recording/SendGamePostFrame.asm +C206DA34 00000035 #Recording/SendGamePostFrame.asm 7C0802A6 90010004 9421FF50 BE810008 3D808000 618C5604 7D8903A6 4E800421 -2C030000 41820160 +2C030000 41820168 887F221F 546306F7 -40820154 8B7F000C +4082015C 8B7F000C 806DB64C 83A30000 838DB650 7FBDE214 38600038 987D0000 @@ -882,7 +896,8 @@ B07D0030 887F1968 807F008C 907D003D 807F0090 907D0041 807F00EC 907D0045 -838DB650 3B9C0049 +807F195C 907D0049 +838DB650 3B9C004D 938DB650 BA810008 800100B4 382100B0 7C0803A6 8001001C @@ -948,51 +963,6 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm 38600000 987E25FF 807E00B0 00000000 -C20055F0 0000002C #Common/EXITransferBuffer.asm -7C0802A6 90010004 -9421FF50 BE810008 -7C7E1B78 7C9D2378 -7CBF2B78 3D808034 -618C7364 7D8903A6 -4E800421 7C7C1B78 -7FC3F378 7C9EEA14 -2C1F0000 4182001C -7C0018AC 38630020 -7C032000 4180FFF4 -7C0004AC 4C00012C -38600001 38800000 -3D808034 618C64C0 -7D8903A6 4E800421 -38600001 3D808034 -618C6D80 7D8903A6 -4E800421 38600001 -38800000 38A00005 -3D808034 618C6688 -7D8903A6 4E800421 -38600001 7FC4F378 -7FA5EB78 7FE6FB78 -38E00000 3D808034 -618C5E60 7D8903A6 -4E800421 38600001 -3D808034 618C5F4C -7D8903A6 4E800421 -38600001 3D808034 -618C67B4 7D8903A6 -4E800421 38600001 -3D808034 618C6E74 -7D8903A6 4E800421 -38600001 3D808034 -618C65CC 7D8903A6 -4E800421 2C1F0000 -4082001C 7C001BAC -38630020 7C032000 -4180FFEC 7C0004AC -4C00012C 7F83E378 -3D808034 618C738C -7D8903A6 4E800421 -BA810008 800100B4 -382100B0 7C0803A6 -4E800020 00000000 C20055F8 0000000F #Common/GetIsFollower.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -1016,6 +986,148 @@ C216D294 00000006 #Common/IncrementFrameIndex.asm 906DB654 48000010 806DB654 38630001 906DB654 00000000 +C20055F4 00000007 #Common/IntToFloat.asm +9421FF00 D0410008 +3C004330 C84298A8 +6C638000 900100F0 +906100F4 C82100F0 +EC211028 C0410008 +38210100 4E800020 +60000000 00000000 +C20056A4 00000022 #Common/LoadPremadeText.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +3B800004 7F83E378 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7D1B78 7F84E378 +3D808000 618CC160 +7D8903A6 4E800421 +386000E1 48000055 +839D0000 7FA3EB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7F83E378 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7D1B78 +386000E2 4800001D +7FA3EB78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +987D0000 9BFD0001 +9BDD0002 7FA3EB78 +38800003 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FA3EB78 7F84E378 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C20055EC 00000008 #Common/MultiplyRWithF.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C55F4 +7D8903A6 4E800421 +EC2100B2 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C20056B4 00000059 #Common/SubtextFunctions.asm +2C050002 418201F8 +7C0802A6 90010004 +9421FF50 BE810008 +7C751B78 7C962378 +7CB82B78 7CD93378 +90E10038 9101003C +91210040 91410044 +91610048 9181004C +FEA00890 FEC01090 +FEE01890 FF202890 +FF403090 2C180001 +418000FC 39E00004 +FC20B090 FC40B890 +2C0F0001 41820020 +2C0F0002 41820020 +2C0F0003 41820020 +2C0F0004 41820020 +48000024 EC21D028 +4800001C EC21D02A +48000014 EC42D028 +4800000C EC42D02A +48000004 7EA3AB78 +80810038 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 +7D8903A6 4E800421 +7F25CB78 2C0F0000 +40820008 7EC5B378 +7EA3AB78 7EE4BB78 +3D80803A 618C74F0 +7D8903A6 4E800421 +7EA3AB78 7EE4BB78 +80A10038 80C1003C +80E10040 81010044 +81210048 8141004C +3D80803A 618C70A0 +7D8903A6 4E800421 +2C0F0000 4182000C +39EFFFFF 4BFFFF14 +48000094 7EA3AB78 +80810038 FC20B090 +FC40B890 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 +7D8903A6 4E800421 +7EA3AB78 7EE4BB78 +7EC5B378 3D80803A +618C74F0 7D8903A6 +4E800421 7EA3AB78 +7EE4BB78 80A10038 +80C1003C 80E10040 +81010044 81210048 +8141004C 3D80803A +618C70A0 7D8903A6 +4E800421 7EE3BB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C7D1B78 +7C9C2378 7CDB3378 +FEC00890 FEE01090 +FF001890 FEA02090 +4800008D 7F4802A6 +38600000 7F64DB78 +C01A0000 FC20B090 +FC40B890 FC60C090 +C09A0004 C0BA0008 +3D80803A 618C5ACC +7D8903A6 4E800421 +7C751B78 2C1C0000 +41820010 38600001 +986DAFEC 7F86E378 +7EA3AB78 7FA4EB78 +FC00A890 D0030024 +D0030028 3D80803A +618C6368 7D8903A6 +4E800421 7EA3AB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +41100000 44160000 +41A00000 00000000 041D460C 809F00EC #Common/Preload Stadium Transformations/Core/GetPreloadedTransition.asm C21D14C8 00000002 #Common/Preload Stadium Transformations/Core/Init isLoaded Bool.asm 38600000 987F00F0 @@ -1077,41 +1189,6 @@ C216EBAC 0000000C #Common/CSS KO Stars/Asign KO Stars Upon Exiting Dairantou.asm 7D8903A6 4E800421 8001001C 83E10014 60000000 00000000 -C20055FC 00000022 #Common/Gecko/ProcessCodeList.asm -7C0802A6 90010004 -9421FF50 BE810008 -7C7D1B78 7C9E2378 -3B800000 807D0000 -5463463C 3B600008 -3B200000 2C0300C0 -41820044 2C0300C2 -4182004C 2C030004 -41820058 2C030006 -41820058 2C030008 -41820068 807D0000 -5463213E 2C03000F -40820010 807D0004 -2C030000 4182007C -4800004C 807D0004 -1C630008 3B630008 -4800003C 807D0004 -1C630008 3B630008 -3B200004 48000028 -3B200004 48000020 -807D0004 38630007 -54630038 3B630008 -833D0004 48000008 -3B600010 3B9C0001 -2C1E0000 4182001C -807D0000 5463463C -7FA4EB78 7F25CB78 -7FC903A6 4E800421 -7FBDDA14 4BFFFF38 -3C608019 606310E8 -7C63E850 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -60000000 00000000 $Required: Slippi Online [Fizzi, UnclePunch] *Adds online mode, Slippi device must be in Slot B. @@ -1141,63 +1218,42 @@ FC020840 4180000C 38600001 BA810008 800100B4 382100B0 7C0803A6 00000000 -C21A4DB4 00000031 #Online/Core/ForceEngineOnRollback.asm +C21A4DB4 0000001C #Online/Core/ForceEngineOnRollback.asm 3C608048 80639D30 5463443E 2C030208 -4082015C 3C608047 +408200B0 3C608047 60639D64 80630000 -2C030000 40820148 +2C030000 4082009C 3D808034 618C7364 7D8903A6 4E800421 7C7A1B78 80ADB61C 2C1B0000 41810014 888500D9 2C040000 41820038 3B600001 -888500D9 988506F2 -808500DB 908506F3 -888500DA 988506F7 -8085018B 908506F8 -808500D5 80840001 -908506FC 480000D4 -88850700 2C040000 -418200C8 38800000 -98850700 3D808001 +888500D9 988507A9 +808500DB 908507AA +888500DA 988507AE +80850237 908507AF +808500D5 80840002 +908507B3 48000028 +888507B7 2C040000 +4182001C 38800000 +988507B7 3D808001 618C95FC 7D8903A6 -4E800421 48000020 -4E800021 466F7263 -65642061 20706164 -2072656E 65772E2E -2E000000 7C0802A6 -90010004 9421FF00 -BC610008 60000000 -60000000 60000000 -60000000 60000000 -806DAFC4 38630003 -4BFFFFB9 7C8802A6 -4CC63242 3D808032 -618C3CF4 7D8903A6 -4E800421 806DAFC4 -388000D0 98830000 -38800000 98830001 -38800001 98830002 -38800080 38A00001 -3D808000 618C55F0 +4E800421 7F43D378 +3D808034 618C738C 7D8903A6 4E800421 -B8610008 80010104 -38210100 7C0803A6 -7F43D378 3D808034 -618C738C 7D8903A6 -4E800421 2C1B0000 -40820014 3D80801A -618C4DA8 7D8903A6 -4E800420 00000000 +2C1B0000 40820014 +3D80801A 618C4DA8 +7D8903A6 4E800420 +60000000 00000000 C216D310 00000009 #Online/Core/HandleLRAS.asm 3C608048 80639D30 5463443E 2C030208 40820028 3C608046 6063B6A0 88630008 2C030007 40820014 -808DB61C 806406EE +808DB61C 806407A5 7C6903A6 4E800421 8001003C 83E10034 60000000 00000000 @@ -1217,46 +1273,46 @@ BA810008 800100B4 800100B4 382100B0 7C0803A6 7C7D1B78 60000000 00000000 -C216E748 00000053 #Online/Core/InitOnlinePlay.asm +C216E748 00000070 #Online/Core/InitOnlinePlay.asm 3D808022 618C54B8 7D8903A6 4E800421 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E 2C030208 -40820250 38600705 +40820338 386007BC 3D808037 618CF1E4 7D8903A6 4E800421 -7C7B1B78 38800705 +7C7B1B78 388007BC 3D808000 618CC160 7D8903A6 4E800421 936DB61C 38600001 -907B0003 48000201 -7C6802A6 907B06EE +907B0003 4800023D +7C6802A6 907B07A5 38600012 3D808037 618CF1E4 7D8903A6 4E800421 907B00D1 -38600059 3D808037 +3860010A 3D808037 618CF1E4 7D8903A6 4E800421 907B00D5 -7C7A1B78 38800059 +7C7A1B78 3880010A 3D808000 618CC160 7D8903A6 4E800421 38600021 3D808037 618CF1E4 7D8903A6 4E800421 7C791B78 -933B018F 3860009E +933B024A 3860009E 3D808037 618CF1E4 7D8903A6 4E800421 -907B0193 3880009E +907B024E 3880009E 3D808000 618CC160 7D8903A6 4E800421 38800000 98830000 38800007 98830001 -93790005 38600705 +93790005 386007BC 90790009 9359000D -38600059 90790011 -807B0193 90790015 +3860010A 90790011 +807B024E 90790015 3860009E 90790019 38600000 9079001D 38600000 3D808000 @@ -1267,51 +1323,80 @@ C216E748 00000053 #Online/Core/InitOnlinePlay.asm 88780004 987B0001 80780005 907B0007 3C80804D 90645F90 -7FE3FB78 38980158 +7FE3FB78 38980208 38A00138 3D808000 618C31F4 7D8903A6 -4E800421 88780009 +4E800421 886DAFA0 +2C030003 40820048 +3AE00000 1CB70024 +38650069 7C7F18AE +38630001 38850060 +7C9F20AE 3D808000 +618C56B0 7D8903A6 +4E800421 1C970024 +38840063 7C7F21AE +3AF70001 2C170004 +4180FFC4 88780009 2C030001 41800010 2C03000F 41810010 48000010 38600001 48000008 3860000F -987B001B 8062F228 -907B06EA 3C600101 -60630101 9062F228 -38A00000 3C60804C -606320BC 1C850044 -7C632214 38800000 -90830000 38A50001 -2C050004 4180FFE0 -38600004 38800007 -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 48000021 -7C8802A6 38A00000 -3D808038 618CFD54 +987B001B 38A00000 +3C60804C 606320BC +1C850044 7C632214 +38800000 90830000 +38A50001 2C050004 +4180FFE0 38600004 +38800007 38A00000 +3D808039 618C01F0 7D8903A6 4E800421 -48000040 4E800021 -3C608048 80639D60 -5464803E 806DB61C -80630007 7C841A14 -3C60804D 90835F90 -4E800020 4E800021 -808DB61C 806406EA -9062F228 4E800020 +48000021 7C8802A6 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 480000EC +4E800021 3C608048 +80639D60 5464803E +806DB61C 80630007 +7C841A14 3C60804D +90835F90 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 838DB61C +886DAFA0 2C030001 +4082008C 38600011 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7E1B78 386000BD +987E0000 807C0003 +907E0001 3BE00000 +3BBE0005 7FE3FB78 +3D808003 618C1724 +7D8903A6 4E800421 +38800001 989D0000 +8883008E 989D0001 +80830D28 909D0002 +3BFF0001 3BBD0006 +2C1F0002 4180FFC8 +7FC3F378 38800011 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 BA810008 800100B4 382100B0 7C0803A6 60000000 00000000 -C216E904 0000003B #Online/Core/InitPause.asm +C216E904 0000003F #Online/Core/InitPause.asm 3C608048 80639D30 5463443E 2C030208 -408201C0 3D808046 +408201DC 3D808046 618CDB68 886C0002 54630739 41820028 48000029 7C6802A6 906C0040 38600000 986DAFC8 886C0002 38800000 50831F38 -986C0002 48000184 +986C0002 480001A0 4E800021 7C0802A6 90010004 9421FF50 BE810008 83ADB61C @@ -1330,37 +1415,41 @@ BE810008 83ADB61C 546005EF 4182000C 546004E7 40820020 886DAFC8 2C030000 -41820084 807F0008 -546004E7 40820048 -480000C8 38600002 +418200A0 807F0008 +546004E7 40820064 +480000E4 38600002 3D808002 618C4030 7D8903A6 4E800421 -7FC3F378 38800007 -3D808016 618CCF4C +3D808037 618C8330 7D8903A6 4E800421 -38600003 3C808046 -6084B6A0 98640000 -48000088 38600000 +3C608046 6063B6A0 +9BC30001 7FC3F378 +38800007 3D808016 +618CCF4C 7D8903A6 +4E800421 38600003 +3C808046 6084B6A0 +98640000 48000088 +38600000 986DAFC8 +3D80802F 618C33CC +7D8903A6 4E800421 +7FC3F378 3D80801A +618C10FC 7D8903A6 +4E800421 48000058 +807F0008 546004E7 +4182004C 38600001 986DAFC8 3D80802F -618C33CC 7D8903A6 +618C3394 7D8903A6 4E800421 7FC3F378 -3D80801A 618C10FC +38800005 3D80801A +618C0FEC 7D8903A6 +4E800421 38600005 +3D808002 618C4030 7D8903A6 4E800421 -48000058 807F0008 -546004E7 4182004C -38600001 986DAFC8 -3D80802F 618C3394 -7D8903A6 4E800421 -7FC3F378 38800005 -3D80801A 618C0FEC -7D8903A6 4E800421 -38600005 3D808002 -618C4030 7D8903A6 -4E800421 48000004 -3860FFFF BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -881F0001 00000000 +48000004 3860FFFF +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 881F0001 +60000000 00000000 C21A5014 0000004F #Online/Core/LoopEngineForRollback.asm 41A20014 3D80801A 618C5024 7D8903A6 @@ -1374,10 +1463,10 @@ C21A5014 0000004F #Online/Core/LoopEngineForRollback.asm BE810008 3D808034 618C7364 7D8903A6 4E800421 7C7D1B78 -83EDB61C 3BDF0197 +83EDB61C 3BDF0252 8B9E0000 3F008048 83189D60 3B18FFFF -82FF06E6 7C18B800 +82FF07A1 7C18B800 4181009C 7C78B850 38630001 8B9E0000 7F83E051 40800008 @@ -1406,13 +1495,13 @@ A0840001 7C032000 38800061 3D808000 618CC160 7D8903A6 4E800421 7C18B800 -4081001C 931F06E6 +4081001C 931F07A1 3B9C0001 2C1C0007 41800008 3B9CFFF9 9B9E0000 7FA3EB78 3D808034 618C738C 7D8903A6 4E800421 -8B7F06F2 2C1B0001 +8B7F07A9 2C1B0001 408200CC 48000025 BA810008 800100B4 382100B0 7C0803A6 @@ -1446,7 +1535,18 @@ C216EA30 00000004 #Online/Core/Remember Who LRA Started.asm 40820014 3C808046 6084B6A0 88840001 989E000C 00000000 -C21A4DE4 0000005B #Online/Core/StartEngineLoop.asm +C2376A20 0000000A #Online/Core/SkipNewInputFetchOnRollback.asm +3C608048 80639D30 +5463443E 2C030208 +40820038 3C608047 +60639D64 80630000 +2C030000 40820024 +806DB61C 886300D9 +2C030001 40820014 +3D808037 618C6A28 +7D8903A6 4E800420 +3861002C 00000000 +C21A4DE4 0000005C #Online/Core/StartEngineLoop.asm 3D808037 618CE214 7D8903A6 4E800421 48000030 4E800021 @@ -1459,9 +1559,9 @@ C21A4DE4 0000005B #Online/Core/StartEngineLoop.asm 9421FF50 BE810008 3C608048 80639D30 5463443E 2C030208 -40820260 3C608047 +4082026C 3C608047 60639D64 80630000 -2C030000 4082024C +2C030000 40820258 834DB61C 3F608048 837B9D60 3D808034 618C7364 7D8903A6 @@ -1473,7 +1573,7 @@ C21A4DE4 0000005B #Online/Core/StartEngineLoop.asm 618C4030 7D8903A6 4E800421 4BFFFF51 7EE802A6 38600002 -809A0701 3D80803A +809A07B8 3D80803A 618C6754 7D8903A6 4E800421 7C781B78 38800001 98980049 @@ -1493,11 +1593,11 @@ C0570010 3D80803A 3D80803A 618C74F0 7D8903A6 4E800421 38600001 987A000E -887A06F2 2C030000 -418200AC 887A06F7 -2C030000 41820078 -807A018F 809A06F8 -80BA0193 3D808000 +887A07A9 2C030000 +418200B8 887A07AE +2C030000 41820084 +807A024A 809A07AF +80BA024E 3D808000 618C560C 7D8903A6 4E800421 3D808001 618C9894 7D8903A6 @@ -1507,49 +1607,50 @@ C0570010 3D80803A 88650000 7C841A14 98850002 38600000 98650003 3F608048 -837B9D60 807A018B +837B9D60 807A0237 907A0003 38600000 -987A018A 987A00DA -987A06F7 3D808001 -618C95FC 7D8903A6 -4E800421 807A06F3 -7C1B1800 41800010 -38600000 987A00D9 -987A06F2 887A018A -2C030000 4182002C -807A018B 7C1B1800 -41800020 807A018F -7F64DB78 80BA0193 -3D808000 618C5608 +987A0236 987A0247 +987A0248 987A0249 +987A00DA 987A07AE +3D808001 618C95FC 7D8903A6 4E800421 -887A000C 2C030001 -4182004C 3C608046 -6063B6A0 88630008 -2C030000 40820010 -38600000 987A000B -4800002C 887A000B -38630001 987A000B -2C030007 40810018 -38600001 987A000C -807A06EE 7C6903A6 -4E800421 7F23CB78 -3D808034 618C738C -7D8903A6 4E800421 -BA810008 800100B4 -382100B0 7C0803A6 -60000000 00000000 -C2376A28 0000009B #Online/Core/TriggerSendInput.asm +807A07AA 7C1B1800 +41800010 38600000 +987A00D9 987A07A9 +887A0236 2C030000 +4182002C 807A0237 +7C1B1800 41800020 +807A024A 7F64DB78 +80BA024E 3D808000 +618C5608 7D8903A6 +4E800421 887A000C +2C030001 4182004C +3C608046 6063B6A0 +88630008 2C030000 +40820010 38600000 +987A000B 4800002C +887A000B 38630001 +987A000B 2C030007 +40810018 38600001 +987A000C 807A07A5 +7C6903A6 4E800421 +7F23CB78 3D808034 +618C738C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C2376A28 000000DD #Online/Core/TriggerSendInput.asm 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E 2C030208 -408204A0 3C608047 +408206B0 3C608047 60639D64 80630000 -2C030000 4082048C +2C030000 4082069C 836DB61C 833B00D1 -831B00D5 82FB018F +831B00D5 82FB024A 835B0003 887B00D9 -2C030001 418203E8 +2C030001 418205F8 887B001B 38800054 7C632050 2C1A0003 4080001C 386100DC @@ -1579,7 +1680,7 @@ C2376A28 0000009B #Online/Core/TriggerSendInput.asm 38800012 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -38780000 38800059 +38780000 3880010A 38A00000 3D808000 618C55F0 7D8903A6 4E800421 88780000 @@ -1615,65 +1716,131 @@ BA810008 800100B4 889B001B 887B001C 38630001 7C032000 41800008 38600000 -987B001C 887B018A -2C030000 41820110 -80780001 809B018B -7C641851 41800100 -1C63000C 38630005 -889B0134 1C84000C -38840136 7CD81A14 -7CFB2214 88660000 -88870000 546306FE -548406FE 7C032000 -4082009C 88660001 -88870001 5463067E -5484067E 7C032000 -40820084 80660002 -80870002 7C032000 -40820074 38A00005 -38A50001 2C050008 -40800028 7C6530AE -7C8538AE 2C03002A -4181000C 2C04002A -4081FFE0 7C032000 -40820044 4BFFFFD4 -807B018B 38630001 -907B018B 887B0134 +987B001C 887B0236 +2C030000 40820018 +38600000 987B0247 +987B0248 987B0249 +48000284 3A800000 +38D40247 7C66D8AE +2C030001 40820178 +1CD40004 38C60002 +7C66C02E 1CD40004 +38C6023B 7C86D82E +7C641851 41800158 +7C761B78 38D40134 +7C66D8AE 38D40137 +7C86D8AE 7EC3B378 +1C63000C 3863000E +1CD40054 7C633214 +38D40134 7C86D8AE +1C84000C 3884013A +1CB40054 7C842A14 +7CD81A14 7CFB2214 +88660000 88870000 +546306FE 548406FE +7C032000 408200BC +88660001 88870001 +5463067E 5484067E +7C032000 408200A4 +80660002 80870002 +7C032000 40820094 +38A00005 38A50001 +2C050008 40800028 +7C6530AE 7C8538AE +2C03002A 4181000C +2C04002A 4081FFE0 +7C032000 40820064 +4BFFFFD4 1CD40004 +38C6023B 7C66D82E +38630001 7C66D92E +38D40134 7C66D8AE 38630001 2C030007 41800008 3863FFF9 -987B0134 889B0135 -7C041800 4082FF34 -38600000 987B018A -48000034 38600001 +7C66D9AE 38D40134 +7C66D8AE 38D40137 +7C86D8AE 38D40134 +7C66D8AE 38D40137 +7C86D8AE 7C041800 +4082FEC0 48000040 +1CD40004 38C6023B +7C66D82E 38600001 987B00D9 987B00DA 935B00DB BA810008 800100B4 382100B0 7C0803A6 3D808037 618C6CEC 7D8903A6 -4E800420 80780001 +4E800420 3A940001 +2C140003 4180FE74 +3AA00000 3A800000 +807B0237 7C761B78 +7EC3B378 38D40247 +7C86D8AE 7C761B78 +7EC3B378 38D40247 +7C86D8AE 2C040001 +40820030 1CD40004 +38C6023B 7C86D82E +2C150000 4182000C +7C041800 40800014 +7C832378 7C761B78 +7EC3B378 3AA00001 +3A940001 2C140003 +4180FFAC 907B0237 +3A800000 38D40247 +7C86D8AE 2C040001 +40820038 38D40134 +7C66D8AE 38D40137 +7C86D8AE 38D40134 +7C66D8AE 38D40137 +7C86D8AE 7C041800 +40820010 38600000 +38D40247 7C66D9AE +3A940001 2C140003 +4180FFB4 3A800000 +38D40247 7C86D8AE +2C040001 41820018 +3A940001 2C140003 +4180FFE8 38600000 +987B0236 3A800000 +3AA00000 887B0000 +7C151800 40820008 +3AB50001 1CD40004 +38C60002 7C66C02E 7C7A1850 2C030000 -40800080 887B001B +408000D4 887B001B 38800054 7C632050 -7C1A1800 41800068 +7C1A1800 418000BC 887B000C 2C030001 -4182005C 8ADB0135 -1C76000C 38630136 -7C7B1A14 38980005 -38A0000C 3D808000 -618C31F4 7D8903A6 -4E800421 38760001 -2C030007 41800008 -3863FFF9 987B0135 -887B018A 2C030001 -41820014 935B018B -38600001 987B018A -9ADB0134 38600000 -1C63000C 38A30005 -887B0001 1C63000C +418200B0 38D40137 +7EC6D8AE 1C76000C +3863013A 1CB40054 +7C632A14 1CD40054 +38C6000E 7C7B1A14 +7C983214 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +38760001 2C030007 +41800008 3863FFF9 +38D40137 7C66D9AE +38D40134 7C66D8AE +38D40137 7C86D8AE +38D40247 7C66D8AE +2C030001 4182003C +1CD40004 38C6023B +7F46D92E 38600001 +38D40247 7C66D9AE +38D40134 7EC6D9AE +887B0236 2C030001 +41820010 935B0237 +38600001 987B0236 +38600000 1C63000C +38A3000E 1CD40054 +7CA53214 1C75000C 386300DC 7C611A14 7C982A14 38A0000C 3D808000 618C31F4 7D8903A6 4E800421 +3A940001 3AB50001 +2C140003 4180FEC8 48000080 807B00DB 7C1A1800 40810024 BA810008 800100B4 @@ -1689,7 +1856,7 @@ BA810008 800100B4 7C611A14 7C9B2214 38A0000C 3D808000 618C31F4 7D8903A6 -4E800421 4BFFFEC8 +4E800421 4BFFFE40 3B5A0001 935B0003 BA810008 800100B4 382100B0 7C0803A6 @@ -1782,42 +1949,32 @@ C2376304 0000000B #Online/Core/Hacks/ForceNoVideoAssert.asm 73206E6F 7420342E 2056616C 75653A20 25640A00 00000000 +C23A63A8 0000000C #Online/Core/Hacks/LoadPremadeTextDataFromDolphin.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C9D2378 7CDC3378 +886DAFEC 2C030000 +41820024 7FA3EB78 +7F84E378 3D808000 +618C56A4 7D8903A6 +4E800421 7C7E1B78 +93DF005C BA810008 +800100B4 382100B0 +7C0803A6 38600000 +986DAFEC 00000000 04321D70 38600000 #Online/Core/Hacks/PreventCharacterCrowdChants.asm -C2019608 00000025 #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm +C2019608 0000000E #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 9421FFF8 3C608048 80639D30 5463443E -2C030208 40820108 +2C030208 40820050 3C608047 60639D64 80630000 2C030000 -408200F4 3C608037 +4082003C 3C608037 60635E00 2C000003 -408200E4 80ADB61C +4082002C 80ADB61C 886500D9 2C030000 -418200D4 4800002C -4E800021 56492072 -65747261 63652043 -42206475 72696E67 -20726F6C 6C626163 -6B2E2E2E 00000000 -7C0802A6 90010004 -9421FF00 BC610008 -60000000 60000000 -60000000 60000000 -60000000 806DAFC4 -38630003 4BFFFFAD -7C8802A6 4CC63242 -3D808032 618C3CF4 -7D8903A6 4E800421 -806DAFC4 388000D0 -98830000 38800000 -98830001 38800001 -98830002 38800080 -38A00001 3D808000 -618C55F0 7D8903A6 -4E800421 B8610008 -80010104 38210100 -7C0803A6 38600001 -98650700 3D808001 +4182001C 38600001 +986507B7 3D808001 618C9618 7D8903A6 4E800420 38600000 60000000 00000000 @@ -1836,11 +1993,11 @@ C238D224 00000018 #Online/Core/Sound/AssignSoundInstanceId.asm 40820090 7C0802A6 90010004 9421FF50 BE810008 83EDB61C -3BDF0197 8B9E0000 +3BDF0252 8B9E0000 3C608048 80639D60 -809F06E6 7C032000 +809F07A1 7C032000 41810028 3C608048 -80639D60 809F06E6 +80639D60 809F07A1 7C632050 38630001 8B9E0000 7F83E051 40800008 3B9C0007 @@ -1858,12 +2015,12 @@ C2088224 0000001D #Online/Core/Sound/NoDestroyVoice.asm 408200CC 7C0802A6 90010004 9421FF50 BE810008 83EDB61C -3BBF0197 57DE043E +3BBF0252 57DE043E 8B9D0000 3C608048 -80639D60 809F06E6 +80639D60 809F07A1 7C032000 41810088 3C608048 80639D60 -809F06E6 7C632050 +809F07A1 7C632050 38630001 8B9D0000 7F83E051 40800008 3B9C0007 1C7C00C2 @@ -1888,12 +2045,12 @@ C20882B0 0000001D #Online/Core/Sound/NoDestroyVoice2.asm 408200CC 7C0802A6 90010004 9421FF50 BE810008 83EDB61C -3BBF0197 57DE043E +3BBF0252 57DE043E 8B9D0000 3C608048 -80639D60 809F06E6 +80639D60 809F07A1 7C032000 41810088 3C608048 80639D60 -809F06E6 7C632050 +809F07A1 7C632050 38630001 8B9D0000 7F83E051 40800008 3B9C0007 1C7C00C2 @@ -1920,13 +2077,13 @@ C238D0B0 0000002A #Online/Core/Sound/PreventDuplicateSounds.asm 2C030000 40820120 7C0802A6 90010004 9421FF50 BE810008 -83EDB61C 3BDF0197 +83EDB61C 3BDF0252 3BA00000 3B400000 56FB043E 8B9E0000 3C608048 80639D60 -809F06E6 7C032000 +809F07A1 7C032000 41810070 3C608048 -80639D60 809F06E6 +80639D60 809F07A1 7C632050 38630001 8B9E0000 7F83E051 40800008 3B9C0007 @@ -1978,144 +2135,165 @@ C2260310 00000008 #Online/Menus/CSS/FetchMatchInfo.asm 618C5610 7D8903A6 4E800421 38000000 60000000 00000000 -C2263258 000000A3 #Online/Menus/CSS/HandleInputsOnCSS.asm +C2263258 00000163 #Online/Menus/CSS/HandleInputsOnCSS.asm 41A20014 3D808026 618C3334 7D8903A6 4E800420 7C0802A6 90010004 9421FF50 BE810008 3C608048 80639D30 5463443E -2C030008 408204D0 +2C030008 40820ACC 7CFB3B78 3F008000 63185614 83180000 -83580000 8878000D -889A0001 9898000D -2C030001 40820010 -2C040000 40820008 -4800003C 8878000E -889A0000 9898000E -2C030005 41820010 -2C040005 40820008 -48000034 2C030004 -40820010 2C040004 -41820008 48000008 -48000030 38600000 -3D808002 618C4030 -7D8903A6 4E800421 -48000018 38600003 -3D808002 618C4030 -7D8903A6 4E800421 -887A0000 2C030000 -40810020 2C030003 -40810068 2C030004 -4182006C 2C030005 -4182016C 480003F0 -576004E7 418203E8 +83580000 3B800000 +88780011 889A0001 +98980011 2C030001 +40820010 2C040000 +40820008 4800003C +88780012 889A0000 +98980012 2C030005 +41820010 2C040005 +40820008 48000024 +2C030004 40820010 +2C040004 41820008 +48000008 48000020 +38600000 48000008 +38600003 3D808002 +618C4030 7D8903A6 +4E800421 887A0000 +2C030000 40810020 +2C030003 40810084 +2C030004 41820088 +2C030005 418201E4 +480009F8 88780014 +2C030000 408209EC +576004E7 418209E4 +3C608048 80639D60 +2C030000 418209D4 3860FFFF 986DAFC9 38600000 986DAFCA 886DB657 2C030000 -418203CC 886DAFA0 +418209B8 886DAFA0 2C030001 41820010 -2C030002 41820014 +2C030002 40800014 48000000 3860FFFE -480002C5 480003A8 -480002E9 480003A0 -576006F7 40820325 -48000394 576006F7 -4182000C 48000315 -48000384 887A0001 -2C030000 408200C0 -576004E7 4082002C -886DAFA0 2C030002 -408200AC 886DAFC9 -2C030000 408200A0 -886DAFCA 2C030001 -40820094 48000004 -886DB657 2C030000 -41820084 886DAFA0 -2C030001 41820010 -2C030002 41820014 -48000000 3860FFFE -4800014D 48000060 +48000359 48000994 +48000381 4800098C +576006F7 408203BD +48000980 3D80801A +618C3680 7D8903A6 +4E800421 548006F7 +41820024 88780013 +38630001 98780013 +2C030030 40810014 +9B980013 48000385 +48000948 9B980013 +887A0001 2C030000 +408200EC 576004E7 +4082002C 886DAFA0 +2C030002 418000D8 886DAFC9 2C030000 -4182001C 2C030001 -41820008 48000000 -3860FFFF 48000129 -4800003C 886DAFCA -2C030000 41820018 -806D8840 38630598 -A063001E 48000109 -4800001C 38600001 -986DB656 480000F5 +408200CC 886DAFCA +2C030001 408200C0 +48000004 886DB657 +2C030000 418200B0 +3C608048 80639D60 +2C030000 418200A0 +886DAFA0 2C030001 +41820010 2C030002 +40800014 48000000 +3860FFFE 4800016D +4800007C 886DAFC9 +2C030000 4182001C +2C030001 41820008 +48000000 3860FFFF +48000149 48000058 +886DAFCA 2C030000 +41820018 806D8840 +38630598 A063001E +48000129 48000038 +888DAFA0 2C040003 +38600000 40820008 +38600001 808DB610 +98640018 38600001 +986DB656 480000F9 7C6802A6 906DAFE8 -480002BC 887A0001 -889A0002 7C632039 -418202AC BA810008 -800100B4 382100B0 -7C0803A6 3D808026 -618C3264 7D8903A6 -4E800420 576006F7 -40820211 48000280 +48000850 480002F9 +887A0001 889A0002 +7C632039 4182083C +BA810008 800100B4 +382100B0 7C0803A6 +3D808026 618C3264 +7D8903A6 4E800420 +576006F7 4082024D +48000810 7C0802A6 +90010004 9421FF50 +BE810008 38600014 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C791B78 386000B4 +98790000 886DAFA0 +98790001 38F90002 +3CC0804A 60C60740 +38800000 38A00000 +7C66222E 7C672B2E +38840003 38A50002 +2C050012 4180FFEC +7F23CB78 38800014 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 7C0802A6 90010004 9421FF50 BE810008 -38600014 3D808037 -618CF1E4 7D8903A6 -4E800421 7C791B78 -386000B4 98790000 -886DAFA0 98790001 -38F90002 3CC0804A -60C60740 38800000 -38A00000 7C66222E -7C672B2E 38840003 -38A50002 2C050012 -4180FFEC 7F23CB78 -38800014 38A00001 -3D808000 618C55F0 +7C7F1B78 38600009 +3D808037 618CF1E4 7D8903A6 4E800421 -7F23CB78 3D808037 -618CF1B0 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 7C0802A6 -90010004 9421FF50 -BE810008 7C7F1B78 -38600007 3D808037 -618CF1E4 7D8903A6 -4E800421 7C791B78 -386000B5 98790000 -808DB610 886DAEF8 -1C630024 7C841A14 -88640070 98790001 -88640073 98790002 -38600001 98790003 -2C1FFFFE 41820014 -2C1FFFFF 41820018 -2C1F0000 4080001C -38600000 38800003 -4800001C 38600000 -38800000 48000010 -7FE3FB78 38800001 -48000004 B0790004 -98990006 7F23CB78 -38800007 38A00001 -3D808000 618C55F0 +7C791B78 386000B5 +98790000 808DB610 +886DAEF8 1C630024 +7C841A14 88640070 +98790002 88640073 +98790003 38600001 +98790004 886DAFA0 +2C030003 41820010 +38600000 98790001 +4800001C 3C608000 +60635614 80630000 +8863001A 3863FFFF +98790001 2C1FFFFE +41820014 2C1FFFFF +41820018 2C1F0000 +4080001C 38600000 +38800003 4800001C +38600000 38800000 +48000010 7FE3FB78 +38800001 48000004 +B0790005 98990007 +886DAFA0 98790008 +7F23CB78 38800009 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 7D8903A6 4E800421 -7F23CB78 3D808037 -618CF1B0 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 7C0802A6 -90010004 9421FF50 -BE810008 4BFFFF09 -4BFFFE59 BA810008 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +8A98001A 4BFFFECD +4BFFFE1D BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 90010004 9421FF50 BE810008 38600001 986DAFA3 -4BFFFFB9 7C6802A6 +4BFFFFB5 7C6802A6 906DAFE8 880DB650 980DB659 38000004 980DB656 BA810008 @@ -2135,324 +2313,673 @@ BE810008 4BFFFF09 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -4E800020 BA810008 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 2C1B0200 +40820008 B3780015 +2C1B0001 4182001C +2C1B0002 41820014 +2C1B0008 4182000C +2C1B0004 4082001D +B3780015 88780014 +2C030000 4082000C +7F63DB78 480000B9 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C6E1B78 +7C0802A6 90010004 +9421FF50 BE810008 +38600002 3D808037 +618CF1E4 7D8903A6 +4E800421 7C791B78 +386000BB 98790000 +7DC37378 98790001 +7F23CB78 38800002 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +386000B7 3880007F +38A00040 3D808002 +618C37A8 7D8903A6 +4E800421 7F63DB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C6E1B78 +7C0802A6 90010004 +9421FF50 BE810008 +480003F1 7DE802A6 +38600002 3D808002 +618C4030 7D8903A6 +4E800421 7DC37378 +98780014 3860000A +3D808037 618CF1E4 +7D8903A6 4E800421 +7C771B78 3880000A +3D808000 618CC160 +7D8903A6 4E800421 +7DC37378 98770000 +7F03C378 90770006 +38600004 38800005 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C741B78 +80780004 80630000 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C751B78 +C02F0024 888DAFE0 +2C040000 41820008 +C02F0028 C04F002C +D0230038 D043003C +7E83A378 38800004 +7EA5AB78 3D808039 +618C0A70 7D8903A6 +4E800421 7E83A378 +3C808039 60841070 +38A00001 38C00080 +3D808039 618C069C +7D8903A6 4E800421 +7E83A378 38800004 +3CA08037 60A5F1B0 +7EE6BB78 3D808039 +618C0B68 7D8903A6 +4E800421 7E83A378 +48000031 7C8802A6 +38A00004 3D808038 +618CFD54 7D8903A6 +4E800421 BA810008 800100B4 382100B0 -7C0803A6 3D808026 -618C3334 7D8903A6 -4E800420 BA810008 +7C0803A6 4E800020 +4E800021 7C6E1B78 +7C0802A6 90010004 +9421FF50 BE810008 +820E002C 82EE0028 +8A300000 8A500001 +82700002 82B00006 +A2D50015 38600000 +B0750015 2C130000 +40820184 38600090 +7C721B78 98700001 +48000249 7DE802A6 +7E238B78 3D808000 +618C56AC 7D8903A6 +4E800421 7C741B78 +38600000 38800000 +3D80803A 618C6754 +7D8903A6 4E800421 +7C731B78 92700002 +38600001 38800000 +C02F0000 C04F0004 +98730049 9893004A +D0330008 D0530024 +D0530028 C04F0008 +886DAFE0 2C030000 +41820008 C04F000C +7E639B78 388F0034 +38A00000 38CF0030 +38EF0038 39140004 +C02F001C C06F0018 +3D808000 618C56B4 +7D8903A6 4E800421 +7C641B78 7C8A2378 +7C8B2378 386B0002 +C04F0020 3D808000 +618C55EC 7D8903A6 +4E800421 C06F0018 +EC63082A 2C0B0000 +4182001C 2C0B0001 +4182002C 2C0B0002 +4182001C 2C0B0003 +4182000C 38800008 +48000018 38800004 +48000010 38800002 +48000008 38800001 +7E238B78 3D808000 +618C56AC 7D8903A6 +4E800421 7C872378 +C04F0010 886DAFE0 +2C030000 41820008 +C04F0014 7E639B78 +388F0030 38A00000 +38CF0030 C02F001C +3D808000 618C56B4 +7D8903A6 4E800421 +7C6B1B78 386A0004 +7C0B1800 4082FF48 +480000C4 88750018 +2C030000 41820010 +88700001 2C03008A +41810068 2C160200 +40820008 48000070 +2C160000 41820054 +88750018 2C030003 +40800034 88750017 +2C030005 40800028 +38600000 98700001 +7E238B78 7EC4B378 +38A00004 7C632830 +7C632214 4BFFFBD1 +4800005C 38600003 +3D808002 618C4030 +7D8903A6 4E800421 +2C120000 41820010 +3A52FFFF 9A500001 +48000034 38600000 +98750014 7DC37378 +3D808039 618C0228 +7D8903A6 4E800421 +7E639B78 3D80803A +618C5CC4 7D8903A6 +4E800421 BA810008 800100B4 382100B0 -7C0803A6 00000000 -C2264534 0000013A #Online/Menus/CSS/InitCSS.asm +7C0803A6 4E800020 +4E800021 00000000 +3DCCCCCD C3960000 +C3E20000 C38E8000 +C3DA8000 429E0000 +3EE66666 41C80000 +C1A00000 C20C0000 +C1840000 FFFFFFFF +FFEA2FFF 43686174 +3A202573 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +3D808026 618C3334 +7D8903A6 4E800420 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C21A3F9C 00000005 #Online/Menus/CSS/IncreaseTextHeap.asm 3C608048 80639D30 5463443E 2C030008 -408209B8 4800019C +4082000C 38604800 +48000008 38602400 +60000000 00000000 +C2264534 000001E6 #Online/Menus/CSS/InitCSS.asm +3C608048 80639D30 +5463443E 2C030008 +40820F18 48000208 4E800021 00000000 -3DCCCCCD 428C0000 -41B80000 3F000000 -42B40000 42500000 -42960000 42C40000 -42500000 428C0000 -42B00000 42D40000 -3ECCCCCD 43048000 +3DCCCCCD 404CCCCD +413CCCCD 3F4CCCCD +C1600000 41C00000 +00000000 41F00000 +42480000 C2320000 +C1EC0000 C1BA0000 +40A00000 3D23D70A +428C0000 41B80000 +3F000000 42B40000 +42500000 42960000 +42C40000 42500000 +428C0000 42B00000 +42D40000 3ECCCCCD +43048000 43188000 C3760000 C3020000 C2480000 3EE66666 33FF2FFF 3CBCFFFF -8E9196FF FF0000FF -00556E72 616E6B65 -64204D6F 64650044 -69726563 74204D6F -64650052 616E6B65 -64204D6F 64650053 -656C6563 7420796F -75722063 68617261 -63746572 00436861 -72616374 65722073 -656C6563 74656400 -50726573 73205354 -41525420 746F2025 -73006C6F 636B2069 -6E00656E 74657220 -636F6465 00736561 -72636800 73656C65 -63742073 74616765 -004C6F63 6B656420 -696E0053 65617263 -68696E67 20666F72 -20257300 436F6E6E -65637469 6E672074 -6F202573 00576169 -74696E67 206F6E20 -2573006F 70706F6E -656E7400 2D2D2F2F -2D2D2F2F 2D2D2F2F -2D2D2F2F 30300045 -72726F72 00506C61 -79696E67 3A005072 -65737320 5A20746F -20257300 64697363 -6F6E6E65 63740063 -616E6365 6C00636C -65617220 6572726F -7200817B 00817E00 -817C0000 4E800021 -C2E00000 41A00000 -00000000 3DCCCCCD -7C0802A6 90010004 -9421FF50 BE810008 -4BFFFE59 7FA802A6 +8E9196FF FFFFFFFF +FF0000FF 00556E72 +616E6B65 64004469 +72656374 0052616E +6B656400 5465616D +73002573 204D6F64 +65005365 6C656374 +20796F75 72206368 +61726163 74657200 +43686172 61637465 +72207365 6C656374 +65640050 72657373 +20535441 52542074 +6F202573 006C6F63 +6B20696E 00656E74 +65722063 6F646500 +73656172 63680073 +656C6563 74207374 +61676500 4C6F636B +65642069 6E005365 +61726368 696E6720 +666F7220 25730043 +6F6E6E65 6374696E +6720746F 20257300 +57616974 696E6720 +6F6E2025 73006F70 +706F6E65 6E74002D +2D2F2F2D 2D2F2F2D +2D2F2F2D 2D2F2F30 +30004572 726F7200 +506C6179 696E673A +00557365 20442D50 +61642074 6F204368 +61740050 72657373 +205A2074 6F202573 +00486F6C 64205A20 +746F2025 73006469 +73636F6E 6E656374 +0063616E 63656C00 +636C6561 72206572 +726F7200 817B0081 +7E00817C 00736C70 +4353532E 64617400 +736C7043 53530000 +4E800021 C2E00000 +41A00000 00000000 +3DCCCCCD 7C0802A6 +90010004 9421FF50 +BE810008 4BFFFDED +7FA802A6 3C60804D +606350D8 3C800200 +60840801 90830000 888DAFA0 2C040002 -38800001 40820008 -38800002 4BFFFFC1 +38800001 41800008 +38800002 4BFFFFAD 7C6802A6 3D808000 618C5618 7D8903A6 4E800421 4E800021 38600004 38800005 38A00080 3D808039 618C01F0 7D8903A6 -4E800421 48000341 -7C8802A6 38A00004 -3D808038 618CFD54 -7D8903A6 4E800421 -3860000F 3D808037 +4E800421 7C761B78 +38600004 3D808037 618CF1E4 7D8903A6 -4E800421 7C7F1B78 -3880000F 3D808000 -618CC160 7D8903A6 -4E800421 3C608000 -60635614 93E30000 -38600290 3D808037 -618CF1E4 7D8903A6 -4E800421 907F0000 -38600000 38800000 -3D80803A 618C6754 +4E800421 7C781B78 +38760000 38800004 +3CA08037 60A5F1B0 +38D80000 3D808039 +618C0B68 7D8903A6 +4E800421 38760000 +480002C1 7C8802A6 +38A00004 3D808038 +618CFD54 7D8903A6 +4E800421 3860001C +3D808037 618CF1E4 7D8903A6 4E800421 -7C7C1B78 939F0004 -38800001 989C0049 -38800000 989C004A -C03D0000 D03C0008 -C03D0004 D03C0024 -D03C0028 C03D0008 -C05D000C 7F83E378 -389D005C 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7F83E378 C03D0010 -C05D0010 3D80803A -618C7548 7D8903A6 -4E800421 C05D0018 -48000141 C05D001C -48000139 C05D0020 -48000131 C03D0008 -C05D0038 7F83E378 -389D005C 3D80803A -618C6B98 7D8903A6 +7C7F1B78 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +3C608000 60635614 +93E30000 38600340 +3D808037 618CF1E4 +7D8903A6 4E800421 +907F0000 38600000 +38800000 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +939F0008 38800001 +989C0049 38800000 +989C004A C03D0000 +D03C0008 C03D0004 +D03C0024 D03C0028 +7F83E378 389D0090 +38A00000 C03D0044 +C05D003C C07D0040 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 C07D004C +4800012D C07D0050 +48000125 C07D0054 +4800011D 7F83E378 +389D008C 38A00000 +C03D0068 C05D003C +C07D006C 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7F83E378 389D008C +38A00000 C03D0068 +C05D003C C07D0070 +38FD0098 3D808000 +618C56B4 7D8903A6 4E800421 7F83E378 -38800007 C03D0034 -C05D0034 3D80803A -618C7548 7D8903A6 -4E800421 7F83E378 -38800007 38BD0054 -3D80803A 618C74F0 +389D008C 38A00000 +C03D0044 C05D0078 +C07D0074 38FD0098 +3D808000 618C56B4 7D8903A6 4E800421 -C03D0040 C05D003C -7F83E378 389D005C -3D80803A 618C6B98 -7D8903A6 4E800421 -7F83E378 38800008 -C03D0010 C05D0010 -3D80803A 618C7548 -7D8903A6 4E800421 -7F83E378 38800008 -38BD0054 3D80803A -618C74F0 7D8903A6 -4E800421 C03D0044 -C05D003C 7F83E378 -389D005C 3D80803A -618C6B98 7D8903A6 -4E800421 7F83E378 -38800009 C03D0010 -C05D0010 3D80803A -618C7548 7D8903A6 -4E800421 C05D0024 -480000BD C05D0028 -480000B5 C05D002C -480000AD C05D0030 -480000A5 BA810008 -800100B4 382100B0 -7C0803A6 48000584 -7EA802A6 FC601090 -C03D0014 7F83E378 -389D005C 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7F83E378 C03D0034 -C05D0034 3D80803A -618C7548 7D8903A6 -4E800421 C03D0008 -FC401890 7F83E378 -389D005C 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7F83E378 C03D0048 -C05D0048 3D80803A -618C7548 7D8903A6 -4E800421 7EA803A6 -4E800020 7C0802A6 -90010004 9421FF50 -BE810008 C03D0008 -7F83E378 389D005C -3D80803A 618C6B98 -7D8903A6 4E800421 -7C7B1B78 7F83E378 -7F64DB78 C03D0034 -C05D0034 3D80803A -618C7548 7D8903A6 -4E800421 7F83E378 -7F64DB78 38BD0058 -3D80803A 618C74F0 +7F83E378 389D0090 +38A00000 C03D0044 +C05D007C C07D0074 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 C07D0058 +480000C9 C07D005C +480000C1 C07D0060 +480000B9 C07D0064 +480000B1 4BFFFB7D +7E8802A6 387401D9 +3D808001 618C6BE0 7D8903A6 4E800421 +389401E4 3D808038 +618C0358 7D8903A6 +4E800421 907F0004 BA810008 800100B4 382100B0 7C0803A6 -4E800020 4E800021 +48000A48 7EA802A6 +FDA01890 7F83E378 +389D0090 38A00000 +C03D0068 C05D0048 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 7F83E378 +389D0090 38A00000 +C03D0080 C05D003C +FC606890 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7EA803A6 4E800020 7C0802A6 90010004 9421FF50 BE810008 -4BFFFAB1 7FA802A6 -3FE08000 63FF5614 -83FF0000 83DF0000 -839F0004 38FD0128 +7F83E378 389D0094 +38A00000 C03D0068 +C05D003C 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7C7B1B78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 8363002C +4BFFFA69 7FA802A6 +3F808000 639C5614 +839C0000 83DC0000 +835C0008 38FD0163 3CC0804A 60C60740 38800000 38A00000 7C66222E 7C672B2E 38840003 38A50002 2C050012 4180FFEC +806DB620 38810080 +38A00024 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +80610080 3D808036 +618CF644 7D8903A6 +4E800421 80610080 +38800000 80BC0004 +80A50008 38C00000 +3D808036 618CFA10 +7D8903A6 4E800421 +C022AEC4 886DAFA0 +2C030003 40820008 +C022AEC8 80610080 +3D808036 618CF934 +7D8903A6 4E800421 +80610080 3D808037 +618C0780 7D8903A6 +4E800421 887E0000 +2C030004 41810054 +38800000 38BD00B6 +886DAFA0 2C030001 +41820020 2C030002 +41820020 2C030000 +41820020 2C030003 +41820020 48000024 +38DD0099 48000020 +38DD00A2 48000018 +38DD00A9 48000010 +38DD00B0 48000008 +38BD0176 4800081D +887E000A 2C030000 +4182001C 3B1E0015 +7C791B78 887C0018 +38630001 987C0018 +48000014 887E000B +2C030000 418201BC +7C791B78 887C0019 +2C030009 40810010 +38600000 987C0019 +418201A0 386000B7 +3880007F 38A00040 +3D808002 618C37A8 +7D8903A6 4E800421 +887C0017 38630001 +987C0017 3860000D +3D808037 618CF1E4 +7D8903A6 4E800421 +7C771B78 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +38600014 38800000 +98770000 98970001 +7F23CB78 98770002 +887C0019 98770003 +38630001 987C0019 +887E000C 98770008 +7F83E378 90770009 +38600004 38800005 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C761B78 +807C0004 80630004 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C651B78 +7EC3B378 888DC1A9 +3D808039 618C0A70 +7D8903A6 4E800421 +7EC3B378 3C808039 +60841070 38A00003 +38C00080 3D808039 +618C069C 7D8903A6 +4E800421 80760028 +809C0004 80840004 +38A00000 3D808016 +618C895C 7D8903A6 +4E800421 80760028 +C022AE28 3D808036 +618CF8BC 7D8903A6 +4E800421 886DAFE0 +2C030000 41820010 +C03D0014 80760028 +D0230038 7EC3B378 +38800004 3CA08037 +60A5F1B0 7EE6BB78 +3D808039 618C0B68 +7D8903A6 4E800421 +7EC3B378 480003E1 +7C8802A6 38A00004 +3D808038 618CFD54 +7D8903A6 4E800421 887E0000 2C030004 -4181003C 886DAFA0 -2C030001 41820018 -2C030002 41820018 -2C030000 41820018 -4800001C 38BD005D -4800001C 38BD006B -48000014 38BD0077 -4800000C 38BD013B -48000004 38800000 -480003A9 887E0000 -2C030004 4182000C -38BD005C 48000008 -38BD0141 38800008 -48000389 887E0000 -2C030004 4182000C -38BD005C 48000008 -38BE0048 38800009 -48000369 887E0000 -2C030004 41820034 -2C030005 41820020 -2C030000 4181000C -38BD005C 48000024 -38BD014A 38DD0163 -48000018 38BD014A -38DD016A 4800000C -38BD014A 38DD0158 -38800007 4800031D -3B600001 7F64DB78 -38BD005C 4800030D -3B7B0002 2C1B0005 -4081FFEC 38800008 -38600000 7C7F21AE -38840001 2C04000A -4081FFF4 3B60000A -7F64DB78 38BD005C -480002D9 3B7B0001 -2C1B000D 4081FFEC -887E0000 2C030005 -408200A8 3B60000A -3B400000 3B200000 -3B000000 3AFE0067 -7ED7D0AE 56C00631 -41820010 3B5A0002 -3B390001 48000018 -2C160020 40820008 -7F58D378 3B5A0001 -3B390001 2C160000 -41820018 2C19001E -41810008 4800002C -38800000 7C97C1AE -7F64DB78 7EE5BB78 -48000259 3B7B0001 -7EF7C214 3AF70001 -3B400000 3B200000 -2C160000 41820020 -387E0158 7C97D214 -7C041800 40800010 -2C1B000D 41810008 -4BFFFF78 4800014C -3B600001 886DB657 -7F64DB78 2C030000 -40820018 38BD0083 -48000201 38600001 -987F0008 48000124 -38BD0099 480001ED -3B7B0002 38600002 -987F0008 887E0001 -7F64DB78 2C030000 -40820080 886DAFA0 -2C030002 40820034 +4182000C 38BD0098 +48000008 38BD017C +38800009 48000615 887E0000 2C030004 -40820028 886DAFC9 -2C030000 4082001C -886DAFCA 2C030000 -40820010 38BD00AC -38DD00D8 48000034 -38BD00AC 38DD00BE +4182000C 38BD0098 +48000008 38BE00B0 +3880000A 480005F5 887E0000 2C030004 -41820020 38BD00AC -38DD00D1 886DAFA0 -2C030002 4082000C -38BD00AC 38DD00C6 -48000161 38600001 -987F0009 48000084 -38BD00E5 4800014D -3B7B0002 38600002 -987F0009 887E0000 -7F64DB78 2C030004 -4182004C 2C030003 -41820024 88ADAFA0 -2C050002 38BD00EF -38DD011F 40820038 -38BD00EF 38DD0128 -4800002C 88ADAFA0 -2C050002 38BD0100 -38DD011F 40820018 -38BD0100 38DD0128 -4800000C 38BD0111 -38DD011F 480000DD -38600001 987F000A -3B400008 3B600002 -7C7FD0AE 2C030001 -40820044 A07F000B -3880000F 7C632396 -1C630003 38630176 -7CBD1A14 7F64DB78 -480000A1 7F83E378 -7F64DB78 38BD0050 +4182000C 38BD0098 +48000008 38BD0185 +38800008 480005D5 +887E0000 2C030004 +41820034 2C030005 +41820020 2C030000 +4181000C 38BD0098 +48000024 38BD0197 +38DD01BD 48000018 +38BD0197 38DD01C4 +4800000C 38BD01A5 +38DD01B2 38800007 +48000589 3B600001 +7F64DB78 38BD0098 +48000579 3B7B0002 +2C1B0005 4081FFEC +3880000C 38600000 +7C7C21AE 38840001 +2C04000E 4081FFF4 +3B60000B 7F64DB78 +38BD0098 48000545 +3B7B0001 2C1B000E +4081FFEC 887E0000 +2C030005 408200A8 +3B60000B 3B200000 +3B000000 3AE00000 +3ADE0117 7EB6C8AE +56A00631 41820010 +3B390002 3B180001 +48000018 2C150020 +40820008 7F37CB78 +3B390001 3B180001 +2C150000 41820018 +2C18001E 41810008 +4800002C 38800000 +7C96B9AE 7F64DB78 +7EC5B378 480004C5 +3B7B0001 7ED6BA14 +3AD60001 3B200000 +3B000000 2C150000 +41820020 387E0208 +7C96CA14 7C041800 +40800010 2C1B000E +41810008 4BFFFF78 +4800014C 3B600001 +886DB657 7F64DB78 +2C030000 40820018 +38BD00BE 4800046D +38600001 987C000C +48000124 38BD00D4 +48000459 3B7B0002 +38600002 987C000C +887E0001 7F64DB78 +2C030000 40820080 +886DAFA0 2C030002 +41800034 887E0000 +2C030004 40820028 +886DAFC9 2C030000 +4082001C 886DAFCA +2C030000 40820010 +38BD00E7 38DD0113 +48000034 38BD00E7 +38DD00F9 887E0000 +2C030004 41820020 +38BD00E7 38DD010C +886DAFA0 2C030002 +4180000C 38BD00E7 +38DD0101 480003CD +38600001 987C000D +48000084 38BD0120 +480003B9 3B7B0002 +38600002 987C000D +887E0000 7F64DB78 +2C030004 4182004C +2C030003 41820024 +88ADAFA0 2C050001 +38BD012A 38DD015A +41820038 38BD012A +38DD0163 4800002C +88ADAFA0 2C050001 +38BD013B 38DD015A +41820018 38BD013B +38DD0163 4800000C +38BD014C 38DD015A +48000349 38600001 +987C000E 3B20000C +3B600002 7C7CC8AE +2C030001 40820044 +A07C000F 3880000F +7C632396 1C630003 +386301D0 7CBD1A14 +7F64DB78 4800030D +7F43D378 7F64DB78 +38BD0088 3D80803A +618C74F0 7D8903A6 +4E800421 48000044 +2C030002 40820030 +7F64DB78 38BD01D6 +480002D9 7F43D378 +7F64DB78 38BD0084 3D80803A 618C74F0 7D8903A6 4E800421 -48000044 2C030002 -40820030 7F64DB78 -38BD017C 4800006D -7F83E378 7F64DB78 -38BD004C 3D80803A -618C74F0 7D8903A6 -4E800421 48000010 -7F64DB78 38BD005C -48000041 3B7B0002 -3B5A0001 2C1A000A -4081FF68 A07F000B -38630001 2C03001E -41800008 38600000 -B07F000B BA810008 +48000010 7F64DB78 +38BD0098 480002AD +3B7B0002 3B390001 +2C19000E 4081FF68 +A07C000F 38630001 +2C03001E 41800008 +38600000 B07C000F +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +7C6E1B78 7C0802A6 +90010004 9421FF50 +BE810008 4BFFF365 +7FA802A6 820E002C +8A300000 8A500001 +8A700002 8A900003 +82B00004 8AF00008 +83900009 81EE0028 +81EF0010 7DE37B78 +3D808037 618C0928 +7D8903A6 4E800421 +2C150000 408200CC +7E83A378 3D808000 +618C55F4 7D8903A6 +4E800421 C05D0018 +C07D0008 EC6100F2 +EC421828 D04F003C +2C120000 4182009C +3A2000AA 9A300000 +3A400001 9A500001 +7C962378 7E83A378 +3D808000 618C55F4 +7D8903A6 4E800421 +C05D0030 C07D0008 +EC6100F2 EC42182A +FDE01090 806DC2DC +38800003 9883000E +C03D002C 886DAFE0 +2C030000 41820008 +C03D0028 38770001 +7E649B78 38A00002 +38C00000 C07D0034 +C09D0038 3D808000 +618C56B4 7D8903A6 +4E800421 90700004 +806DC2DC 38800001 +9883000E 48000004 +887C0017 2C030006 +41800028 887C0019 +7C03A000 4080000C +2C140009 408100B4 +887C0019 7C741850 +2C030006 418100A4 +2C110000 4082001C +2C120000 4182FF2C +2C120001 41820018 +2C120002 41820084 +3A31FFFF 9A300000 +480000D4 3A400002 +9A500001 3A200014 +9A300000 806E0028 +809C0004 80840004 +38A00001 3D808016 +618C895C 7D8903A6 +4E800421 806E0028 +C022AE28 3D808036 +618CF8BC 7D8903A6 +4E800421 8075005C +3D808037 618CF1B0 +7D8903A6 4E800421 +7EA3AB78 3D80803A +618C5CC4 7D8903A6 +4E800421 48000060 +7DC37378 3D808039 +618C0228 7D8903A6 +4E800421 809C0000 +88840003 7C172000 +40820010 887C0018 +3863FFFF 987C0018 +887C0017 3863FFFF +987C0017 887C0019 +7E84A378 38840001 +7C032000 41820008 +4800000C 38600000 +987C0019 BA810008 800100B4 382100B0 7C0803A6 4E800020 -7EA802A6 7F83E378 +7EA802A6 7F43D378 3D80803A 618C70A0 7D8903A6 4E800421 7EA803A6 4E800020 @@ -2582,30 +3109,222 @@ C05F0040 FC011040 7C0803A6 4E800020 38600000 38980000 60000000 00000000 -C2262004 00000009 #Online/Menus/CSS/PreventAPressCharUnselect.asm +C22652F4 000000B8 #Online/Menus/CSS/InitTeamToggleButton.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +40820590 888DAFA0 +2C040003 40820584 +4800002C 4E800021 +C0200000 C0A00000 +C1BC0000 C18C0000 +00000000 3F800000 +C19C0000 C0400000 +3DCCCCCD 7C0802A6 +90010004 9421FF50 +BE810008 3FC08000 +63DE5614 83DE0000 +4BFFFFBD 7FE802A6 +C3FF0010 C3DF0014 +38600004 3D808037 +618CF1E4 7D8903A6 +4E800421 7C771B78 +38800004 3D808000 +618CC160 7D8903A6 +4E800421 7FC3F378 +90770006 38600004 +38800005 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +7C741B78 806DB638 +80630030 80630008 +38800000 8063000C +38840001 2C040007 +4180FFF4 80630008 +3D808037 618C0E44 +7D8903A6 4E800421 +7C751B78 7EA3AB78 +809F0018 90830038 +809F001C 9083003C +809F0020 90830040 +806DB638 80630038 +80630000 38800000 +80630004 38840001 +2C040007 4180FFF4 +80A30000 7EA3AB78 +38800000 38C00000 +3D808036 618CFB5C +7D8903A6 4E800421 +7EA3AB78 FC20F890 +3D808036 618CF8BC +7D8903A6 4E800421 +7EA3AB78 3D808037 +618C0928 7D8903A6 +4E800421 7E83A378 +38800004 7EA5AB78 +3D808039 618C0A70 +7D8903A6 4E800421 +7E83A378 3C808039 +60841070 38A00002 +38C00080 3D808039 +618C069C 7D8903A6 +4E800421 7E83A378 +38800004 3CA08037 +60A5F1B0 7EE6BB78 +3D808039 618C0B68 +7D8903A6 4E800421 +7E83A378 480000CD +7C8802A6 38A00004 +3D808038 618CFD54 +7D8903A6 4E800421 +386D8844 89C30000 +39E00000 48000175 +39EF0001 7C0F7000 +4180FFF4 806DB620 +38810034 38A0002B +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3C80C040 60840000 +9083003C 806DB620 +38810034 38A00029 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3D808037 618C1BEC +7D8903A6 4E800421 +80630004 80630008 +FC20F890 3D808036 +618C3C2C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 480002E4 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C741B78 +82B40028 886DB656 +2C030000 40820098 +3FC08000 63DE5614 +83DE0000 807E0000 +88630001 2C030000 +4082007C 4BFFFD21 +7FE802A6 3BA00000 +3C80804A 60840BC0 +80840000 C024000C +C0440010 C07F0000 +C09F0004 C0BF0008 +C0DF000C FC021840 +41810044 FC022040 +4180003C FC012840 +41800034 FC013040 +4181002C 3BA00001 +3C80804C 608420BC +886DB650 1C630044 +7C641A14 80630008 +546305EF 41820008 +48000019 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +808DB610 886DB650 +1C630024 7F841A14 +887C0070 7C7B1B78 +3D808000 618C56B8 +7D8903A6 4E800421 +7C651B78 38600000 +1C630024 3C80803F +60840A48 7C832214 +886403C2 1C63001C +7C832A14 8B4400DD +889E001A 38840001 +2C040004 41800008 +38800001 989E001A +386D8844 98830000 +7C992378 2C190003 +4182001C 2C190002 +4182000C 2C190001 +40810014 38600000 +48000010 38600001 +48000008 38600002 +3D808000 618C55F4 +7D8903A6 4E800421 +7EA3AB78 3D808036 +618CF8BC 7D8903A6 +4E800421 7EA3AB78 +3D808037 618C0928 +7D8903A6 4E800421 +7C0802A6 90010004 +9421FF00 BC610008 +7F23CB78 48000099 +B8610008 80010104 +38210100 7C0803A6 +7F23CB78 7F64DB78 +3D808000 618C56B0 +7D8903A6 4E800421 +7C781B78 886DB657 +2C030000 4182004C +9B1C0073 3CA0803F +60A50E09 9B050000 +9B1E001B 38600000 +7F44D378 7F05C378 +38C00000 3D808000 +618C56BC 7D8903A6 +4E800421 38600002 +3D808002 618C4030 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C791B78 +2C190003 4182001C +2C190002 4182000C +2C190001 41820014 +38800000 48000014 +38800001 4800000C +38800002 48000004 +88ADB650 386D9A38 +7C632A14 98830000 +38600000 3D808025 +618CDB34 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +38600000 38980000 +3D80803A 618C6754 +7D8903A6 4E800421 +60000000 00000000 +C2262004 0000000B #Online/Menus/CSS/PreventAPressCharUnselect.asm +3C608048 80639D30 +5463443E 2C030008 +4082003C 3C608000 60635614 80630000 -80830000 88640001 -2C030000 41820014 -3D808026 618C2154 -7D8903A6 4E800420 -566015BA 00000000 -C22620AC 00000009 #Online/Menus/CSS/PreventBPressCharUnselect.asm +80830000 88630014 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 566015BA +60000000 00000000 +C22620AC 0000000B #Online/Menus/CSS/PreventBPressCharUnselect.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +4082003C 3C608000 60635614 80630000 -80830000 88640001 -2C030000 41820014 -3D808026 618C2154 -7D8903A6 4E800420 -88FF0004 00000000 -C22600A8 00000009 #Online/Menus/CSS/PreventColorChange.asm +80830000 88630014 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 88FF0004 +60000000 00000000 +C22600A8 0000000C #Online/Menus/CSS/PreventColorChange.asm 3C608048 80639D30 5463443E 2C030008 -40820030 3C608000 +40820048 3C608000 +60635614 80630000 +8863001A 2C030000 +40820020 3C608000 60635614 80630000 80630000 88630001 2C030000 41820014 @@ -2635,6 +3354,103 @@ BA810008 800100B4 BA810008 800100B4 382100B0 7C0803A6 54601838 00000000 +C2262478 00000016 #Online/Menus/CSS/Teams/AnimateCursorPort.asm +7C0802A6 90010004 +9421FF50 BE810008 +3FC08000 63DE5614 +83DE0000 3C608048 +80639D30 5463443E +2C030008 40820054 +888DAFA0 2C040003 +40820048 807E0000 +88630001 2C030000 +40820038 8BFE001A +2C1F0003 41820008 +3BFFFFFF 88CDB650 +1CC60004 7FFF3214 +7FE3FB78 3D808000 +618C55F4 7D8903A6 +4E800421 48000004 +BA810008 800100B4 +382100B0 7C0803A6 +8061003C 38800006 +38A00400 3CC08036 +60C6410C 38E00001 +60000000 00000000 +C2262768 0000000D #Online/Menus/CSS/Teams/AnimateToken.asm +7C0802A6 90010004 +9421FF50 BE810008 +3F808000 639C5614 +839C0000 3C608048 +80639D30 5463443E +2C030008 40820024 +888DAFA0 2C040003 +40820018 8B7C001A +2C1B0003 41820008 +3B7BFFFF 9B7D0006 +BA810008 800100B4 +382100B0 7C0803A6 +387C0000 00000000 +C2260C28 0000001C #Online/Menus/CSS/Teams/PreventColorResetCharHover.asm +7C0802A6 90010004 +9421FF50 BE810008 +3FE08000 63FF5614 +83FF0000 3C608048 +80639D30 5463443E +2C030008 40820098 +888DAFA0 2C040003 +4082008C 8BDF001A +808DB610 886DB650 +1C630024 7F441A14 +887A0070 7C7D1B78 +3D808000 618C56B8 +7D8903A6 4E800421 +7C651B78 38600000 +1C630024 3C80803F +60840A48 7C832214 +886403C2 1C63001C +7C832A14 8B8400DD +7FC3F378 7F84E378 +3D808000 618C56B0 +7D8903A6 4E800421 +7C7B1B78 80ADB610 +9B650073 3CA0803F +60A50E09 9B650000 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 9E9803C2 +60000000 00000000 +C2260E14 00000003 #Online/Menus/CSS/Teams/PreventColorResetLastChar.asm +3D808026 618C0B90 +7D8903A6 4E800420 +60000000 00000000 +C2260B90 0000001A #Online/Menus/CSS/Teams/PreventColorResetRandomChar.asm +7C0802A6 90010004 +9421FF50 BE810008 +3FE08000 63FF5614 +83FF0000 3C608048 +80639D30 5463443E +2C030008 40820088 +888DAFA0 2C040003 +4082007C 808DB610 +886DB650 1C630024 +7F441A14 887A0070 +7C7D1B78 8BDF001A +7FC3F378 7FA4EB78 +3D808000 618C56B0 +7D8903A6 4E800421 +7C7B1B78 80ADB610 +9B7A0073 3CA0803F +60A50E09 9B650000 +88650001 98650002 +38600000 7FA4EB78 +7F65DB78 38C00000 +3D808000 618C56BC +7D8903A6 4E800421 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 38000000 +60000000 00000000 0423C710 28030007 #Online/Menus/CSS/TextEntryScreen/Allow8Characters.asm 0423C320 28030007 #Online/Menus/CSS/TextEntryScreen/Allow8CharactersJapanese.asm C223E730 00000006 #Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect.asm @@ -2658,117 +3474,264 @@ C223E290 00000006 #Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect3. 4E800420 3D808000 618CAE90 7D8903A6 4E800421 00000000 -0423CF9C 2C1B0008 #Online/Menus/CSS/TextEntryScreen/Display8Characters.asm -C223B3AC 00000005 #Online/Menus/CSS/TextEntryScreen/HideDescriptionText.asm -886DAFA3 2C030000 +C223CCA4 00000045 #Online/Menus/CSS/TextEntryScreen/CheckTriggersAndZ.asm +48000014 4E800021 +48000100 00000000 +00000000 57400633 41820014 3D808023 -618CB3E4 7D8903A6 -4E800420 888DB514 -60000000 00000000 -C223E994 0000003C #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm -886DAFA3 2C030000 -418201D0 48000084 -4E800021 41880000 -3D883127 C3100000 -42E40000 42FA0000 -C28F0000 3EB33333 -FFCB00FF 456E7465 -7220796F 75722025 -73206162 6F76652E -00596F75 72206F70 -706F6E65 6E742077 -696C6C20 616C736F -206E6565 6420746F -20656E74 65722079 -6F757273 006F7070 -6F6E656E 74277320 -636F6E6E 65637420 -636F6465 00000000 +618CCCAC 7D8903A6 +4E800420 7C0802A6 +90010004 9421FF50 +BE810008 7C9A2378 +4BFFFFC5 7C6802A6 +83E30004 83DF0006 +886DB56C 5463063E +3D80801A 618C36A0 +7D8903A6 4E800421 +548006F7 41820194 +7F44D378 889C0058 +1C840003 7C64F22E +2C030000 4082001C +38600003 3D808002 +618C4030 7D8903A6 +4E800421 48000048 +38600001 3D808002 +618C4030 7D8903A6 +4E800421 887E0019 +987F0004 2C030007 +40810008 38600007 +987C0058 38600039 +B07A0002 3D808023 +618CCE4C 7D8903A6 +4E800421 7F44D378 +BA810008 800100B4 +382100B0 7C0803A6 +3D808023 618CCCFC +7D8903A6 4E800420 7C0802A6 90010004 9421FF50 BE810008 -4BFFFF71 7FE802A6 -38600000 38800000 -3D80803A 618C6754 +7C7D1B78 886DAFA3 +2C030000 418200C8 +4BFFFEDD 7C6802A6 +83E30004 83DF0006 +386000BE 987E0000 +387E0001 3C80804A +60840740 38A00018 +3D808000 618C31F4 7D8903A6 4E800421 -7C7E1B78 38800001 -989E0049 38800000 -989E004A C03F0000 -D03E0008 C03F0004 -D03E0024 D03E0028 -C03F0008 C05F000C -7FC3F378 389F0020 -38BF0061 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7FC3F378 C03F0018 -C05F0018 3D80803A -618C7548 7D8903A6 -4E800421 C03F0008 -C05F0010 7FC3F378 -389F0035 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7FC3F378 C03F0018 -C05F0018 3D80803A -618C7548 7D8903A6 -4E800421 C03F0014 -C05F000C 7FC3F378 -389F0061 3D80803A -618C6B98 7D8903A6 -4E800421 7C641B78 -7FC3F378 C03F0018 -C05F0018 3D80803A -618C7548 7D8903A6 -4E800421 7FC3F378 -38800002 38BF001C -3D80803A 618C74F0 +887F0004 987E0019 +807F0000 907E001A +9BBE001E 886DAFA0 +987E001F 7FC3F378 +38800020 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FC3F378 3880001E +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 3C60804A +60630740 389E0001 +38A00018 3D808000 +618C31F4 7D8903A6 +4E800421 807E001A +907F0000 3D808023 +618CCE4C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7F44D378 BA810008 +800100B4 382100B0 +7C0803A6 3D808023 +618CCD34 7D8903A6 +4E800420 00000000 +0423CF9C 2C1B0008 #Online/Menus/CSS/TextEntryScreen/Display8Characters.asm +C223CF80 0000000E #Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm +48000010 4E800021 +00000000 8E9196FF +88CDAFA3 2C060000 +4182004C 4BFFFFE9 +7CC802A6 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7CE32214 +80E7000C 88E70004 +7C1B3800 4180000C +3BA60004 48000008 +3BA60000 800D98D8 +60000000 00000000 +C223B3D0 00000006 #Online/Menus/CSS/TextEntryScreen/HandleDescriptionText.asm +888DAFA3 2C040000 +4182001C 38800057 +88ADAFA0 2C050003 +40820010 38800058 +48000008 7FE4FB78 +60000000 00000000 +C223E994 0000002A #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm +886DAFA3 2C030000 +41820140 38600001 +986DAFCB 48000004 +7C0802A6 90010004 +9421FF50 BE810008 +3C608023 6063CCA4 +80830000 5485863E +7CA50774 54A5801E +5484043A 7C842B78 +7F232214 3860000A +3D808037 618CF1E4 +7D8903A6 4E800421 +9079000C 3880000A +3D808000 618CC160 +7D8903A6 4E800421 +38600020 3D808037 +618CF1E4 7D8903A6 +4E800421 8099000C +90640006 38600001 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7B1B78 38600004 +38800005 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +7C7D1B78 3C608000 +60635614 80630000 +80630004 8063000C +3D808037 618C0E44 +7D8903A6 4E800421 +7C7C1B78 7FA3EB78 +38800004 7F85E378 +3D808039 618C0A70 +7D8903A6 4E800421 +7FA3EB78 3C808039 +60841070 38A00004 +38C00080 3D808039 +618C069C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 48000004 +38600000 00000000 +C223C588 0000000C #Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm +886DAFA3 2C030000 +41820050 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7CC32214 +80E6000C 88670005 +2C030000 4082001C +38600001 98670005 +38660008 7C6903A6 +38600003 4E800421 +886DB56C 00000000 +C223CD74 00000011 #Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm +886DAFA3 2C030000 +41820074 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +8083000C 88A40004 +2C050000 40810030 +38A5FFFF 98A40004 +98BC0058 38830008 +7C8903A6 38600003 +4E800421 3D808023 +618CCE38 7D8903A6 +4E800420 3D808023 +618CCD68 7D8903A6 +4E800420 88BC0058 +60000000 00000000 +C223CA50 00000003 #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonAPress.asm +3D808023 618CCC14 +7D8903A6 4E800420 +60000000 00000000 +C223CC14 0000001D #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm +886DAFA3 2C030000 +418200D8 7C0802A6 +90010004 9421FF50 +BE810008 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +83E3000C 887F0004 +2C030000 40820038 +38600003 3D808002 +618C4030 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 3D808023 +618CCE38 7D8903A6 +4E800420 887F0004 +2C030008 40800010 +1C830003 38A00000 +7CBE232E 38600001 +3D808002 618C4030 +7D8903A6 4E800421 +3860FFFE 818DAFE8 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -38600000 00000000 -C223E9C8 0000000A #Online/Menus/CSS/TextEntryScreen/KeepPreviousTag.asm -880DAFA3 2C000000 -38A00000 41820008 -88BF0000 38600000 -2C050000 4082000C -1C830003 7CBF21AE -1C830003 7CBF20AE -38630001 2C030008 -4180FFE0 3D808023 -618CE9E8 7D8903A6 -4E800420 00000000 -C223C588 0000000B #Online/Menus/CSS/TextEntryScreen/MaintainTagSync.asm -38600000 1C830003 -7C9E20AE 2C040000 -41820010 38630001 -2C030007 4180FFE8 -889C0058 7C032000 -41820028 987C0058 -3D808023 618CCE4C -7D8903A6 4E800421 -38600039 3C80804A -608404F2 B0640000 -886DB56C 00000000 -C223CA50 00000009 #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonAPress.asm -886DAFA3 2C030000 -41820038 38600001 -3D808002 618C4030 -7D8903A6 4E800421 -3860FFFE 818DAFE8 -7D8903A6 4E800421 -3D808023 618CCABC -7D8903A6 4E800420 -38000000 00000000 -C223CC14 00000009 #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonStartPress.asm -886DAFA3 2C030000 -41820038 38600001 -3D808002 618C4030 -7D8903A6 4E800421 -3860FFFE 818DAFE8 -7D8903A6 4E800421 3D808023 618CCC80 7D8903A6 4E800420 38000000 00000000 +C223C72C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterText.asm +886DAFA3 2C030000 +41820054 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +8083000C 88A40004 +2C050008 4080000C +38A50001 98A40004 +38830008 7C8903A6 +38600003 4E800421 +48000014 3D808023 +618CCE4C 7D8903A6 +4E800421 00000000 +C223C81C 00000003 #Online/Menus/CSS/TextEntryScreen/OnErasePress.asm +3D808023 618CCD3C +7D8903A6 4E800420 +60000000 00000000 +C223CCBC 0000000B #Online/Menus/CSS/TextEntryScreen/OnLPress.asm +886DAFA3 2C030000 +41820048 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +38630008 7C6903A6 +38600001 4E800421 +3D808023 618CCE38 +7D8903A6 4E800420 +887C0050 00000000 +C223CCE0 0000000B #Online/Menus/CSS/TextEntryScreen/OnRPress.asm +886DAFA3 2C030000 +41820048 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +38630008 7C6903A6 +38600002 4E800421 +3D808023 618CCE38 +7D8903A6 4E800420 +887C0050 00000000 +C223C928 0000000D #Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm +886DAFA3 2C030000 +41820048 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +8083000C 9BA40004 +9BBC0058 38830008 +7C8903A6 38600003 +4E800421 48000014 +3D808023 618CCE4C +7D8903A6 4E800421 +60000000 00000000 C23786A4 00000009 #Online/Menus/Hacks/VsSplashRumbleHack.asm 3D808048 818C9D30 558C443E 2C0C0408 @@ -2785,7 +3748,7 @@ C216E9B4 000000B3 #Online/Menus/InGame/InitInGame.asm 40820580 480000A8 4E800021 00000000 3DCCCCCD 43870000 -43420000 3EA8F5C3 +434F0000 3EA8F5C3 3EA8F5C3 000000FF 3F1EB852 3F466666 C1C07AE1 3C6F34D7 @@ -2833,7 +3796,7 @@ BE810008 3C60804D 39400008 3D80803A 618C611C 7D8903A6 4E800421 7C7F1B78 -83CDB61C 93FE0701 +83CDB61C 93FE07B8 4BFFFE69 7F8802A6 38600000 3D808000 618C5610 7D8903A6 @@ -2878,7 +3841,7 @@ D03D0008 C03C003C D03D000C D03D0010 4CC63242 C03C0044 C05C0044 7FA3EB78 -389A000A 1CB4001F +389A0034 1CB4001F 7C842A14 3D80803A 618C6B98 7D8903A6 4E800421 7FA3EB78 @@ -2988,25 +3951,27 @@ C222B044 00000006 #Online/Menus/TitleMenu/AllowSwapToSameSubmenu.asm 7D8903A6 4E800420 38600000 986DAFA2 60000000 00000000 -C22299F0 00000017 #Online/Menus/TitleMenu/HandleOnlineLockedOptions.asm -2C030008 408200A8 +C22299F0 00000019 #Online/Menus/TitleMenu/HandleOnlineLockedOptions.asm +2C030008 408200B8 886DAFA1 2C030000 41820014 2C030001 -41820038 2C030002 -4182004C 2C040000 -41820070 2C040001 -41820068 2C040002 -41820060 2C040004 -41820058 2C040005 -41820050 48000060 -2C040000 41820044 -2C040003 4182003C -2C040005 41820034 -48000044 2C040000 -41820028 2C040001 -41820020 2C040002 -41820018 2C040003 -41820010 2C040004 +41820040 2C030002 +41820054 2C040000 +41820080 2C040001 +41820078 2C040002 +41820070 2C040003 +41820068 2C040005 +41820060 2C040006 +41820058 48000068 +2C040000 4182004C +2C040004 41820044 +2C040006 4182003C +4800004C 2C040000 +41820030 2C040001 +41820028 2C040002 +41820020 2C040003 +41820018 2C040004 +41820010 2C040005 41820008 48000018 38600000 3D808022 618C99F4 7D8903A6 @@ -3053,7 +4018,7 @@ C34C0000 C31D0000 BA810008 800100B4 382100B0 7C0803A6 B9C10408 00000000 -C21B1040 000000BB #Online/Menus/TitleMenu/OnMenuPrep.asm +C21B1040 00000165 #Online/Menus/TitleMenu/OnMenuPrep.asm 7C0802A6 90010004 9421FF50 BE810008 480000B5 7C6802A6 @@ -3061,24 +4026,24 @@ C21B1040 000000BB #Online/Menus/TitleMenu/OnMenuPrep.asm 90640000 3C60803E 6063B750 48000209 7C8802A6 90830010 -48000571 7C8802A6 +480005AD 7C8802A6 38A00010 3D808000 618C31F4 7D8903A6 4E800421 3C60803E -6063B750 48000561 +6063B750 4800059D 7C8802A6 90830008 3C60803E 6063B66C 38800644 B0830004 480000B1 7C6802A6 906DB614 3D808000 618C5618 7D8903A6 -4E800421 7FC802A6 -399E0014 7D8903A6 -4E800421 399E000C +4E800421 7EA802A6 +39950014 7D8903A6 +4E800421 3995000C 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -4800050C 4E800021 +48000A5C 4E800021 3D808000 618C5618 7D8903A6 4E800421 7FC802A6 38000008 @@ -3127,12 +4092,14 @@ BA810008 800100B4 4E800020 4E800021 7C0802A6 90010004 9421FF50 BE810008 +7C731B78 80730008 +2C030000 40820354 3C60804A 3BA304F0 38600004 3D808022 618C9624 7D8903A6 4E800421 907D000C 3BC00000 93DD0008 -546006F7 41820160 +546006F7 4182018C 38000005 B00DB528 3BE00001 3B9E0000 9BFD0011 5783063E @@ -3147,99 +4114,267 @@ BA810008 800100B4 3D808016 618C77E8 7D8903A6 4E800421 A01D0002 2C000000 -41820030 2C000001 -41820040 2C000002 -41820040 2C000003 -41820040 2C000004 -41820054 2C000005 -41820054 48000258 +41820038 2C000001 +41820048 2C000002 +41820048 2C000003 +41820048 2C000004 +41820048 2C000005 +4182005C 2C000006 +41820078 4800027C 38600003 3D808002 618C4030 7D8903A6 -4E800421 48000240 -38600001 4800004C -38600002 48000044 +4E800421 48000264 +38600001 48000070 +38600002 48000068 +38600003 48000060 38600001 3D808002 618C4030 7D8903A6 4E800421 388000B6 -48000058 388000B7 -48000050 38600001 +48000074 386000BC +3880007F 38A00040 +3D808002 618C37A8 +7D8903A6 4E800421 +48000275 4800020C +38600001 3D808002 +618C4030 7D8903A6 +4E800421 388000B8 +48000034 986DAFA0 +38600001 3D808002 +618C4030 7D8903A6 +4E800421 38600008 +3D808022 618C9860 +7D8903A6 4E800421 +480001C0 806DAFC4 +98830000 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 4800019C +546006B5 418200D0 +38600000 3D808002 +618C4030 7D8903A6 +4E800421 9BDD0011 +38600005 38000001 +B06DB528 38600003 +889D0000 989D0001 +981D0000 38000002 +B01D0002 3D808022 +618CB3A0 7D8903A6 +4E800421 3D808039 +618C0CD4 7D8903A6 +4E800421 806DC17C +3D808039 618C0228 +7D8903A6 4E800421 +3C60803F 3863B6B0 +83830024 281C0000 +41820110 38600000 +38800001 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +389C0000 38A00000 +3D808038 618CFD54 +7D8903A6 4E800421 +808DC19C 8803000D +508026B6 9803000D +480000C8 546007FF +41820060 38600002 3D808002 618C4030 7D8903A6 4E800421 -388000B8 48000034 -986DAFA0 38600001 -3D808002 618C4030 -7D8903A6 4E800421 -38600008 3D808022 -618C9860 7D8903A6 -4E800421 480001C0 -806DAFC4 98830000 -38800001 38A00001 -3D808000 618C55F0 -7D8903A6 4E800421 -4800019C 546006B5 -418200D0 38600000 -3D808002 618C4030 -7D8903A6 4E800421 -9BDD0011 38600005 -38000001 B06DB528 -38600003 889D0000 -989D0001 981D0000 -38000002 B01D0002 -3D808022 618CB3A0 -7D8903A6 4E800421 -3D808039 618C0CD4 -7D8903A6 4E800421 -806DC17C 3D808039 -618C0228 7D8903A6 -4E800421 3C60803F -3863B6B0 83830024 -281C0000 41820110 -38600000 38800001 -38A00080 3D808039 -618C01F0 7D8903A6 -4E800421 389C0000 -38A00000 3D808038 -618CFD54 7D8903A6 -4E800421 808DC19C -8803000D 508026B6 -9803000D 480000C8 -546007FF 41820060 +3BE00006 3B9D0002 +A07C0000 28030000 +41820010 3803FFFF +B01C0000 48000008 +B3FC0000 38600008 +A09C0000 3D808022 +618C9938 7D8903A6 +4E800421 2C030000 +4182FFC8 48000064 +546007BD 4182005C 38600002 3D808002 618C4030 7D8903A6 -4E800421 3BE00005 -3B9D0002 A07C0000 -28030000 41820010 -3803FFFF B01C0000 -48000008 B3FC0000 -38600008 A09C0000 -3D808022 618C9938 +4E800421 3B9D0002 +A07C0000 28030006 +41820010 38030001 +B01C0000 48000008 +B3DC0000 38600008 +A09C0000 3D808022 +618C9938 7D8903A6 +4E800421 2C030000 +4182FFC8 48000004 +3D808000 618C5618 7D8903A6 4E800421 -2C030000 4182FFC8 -48000064 546007BD -4182005C 38600002 -3D808002 618C4030 -7D8903A6 4E800421 -3B9D0002 A07C0000 -28030005 41820010 -38030001 B01C0000 -48000008 B3DC0000 -38600008 A09C0000 -3D808022 618C9938 -7D8903A6 4E800421 -2C030000 4182FFC8 -48000004 3D808000 -618C5618 7D8903A6 -4E800421 7F6802A6 -387B0004 7C6903A6 -4E800421 387B0008 +7F6802A6 387B0004 7C6903A6 4E800421 -BA810008 800100B4 -382100B0 7C0803A6 -4E800021 803EB57C -430C0000 803EB684 -06000000 4E800021 -06450646 06470648 -0649064A 3C60804A +387B0008 7C6903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800021 +803EB57C 430C0000 +803EB684 07000000 +4E800021 06450646 +0647064B 06480649 +064A0000 7C0802A6 +90010004 9421FF50 +BE810008 806DB518 +3C80803E 6084FA0C +3D808038 618C0358 +7D8903A6 4E800421 +7C7A1B78 806DB518 +3C80803E 6084FA24 +3D808038 618C0358 +7D8903A6 4E800421 +7C7B1B78 806DB518 +3C80803E 6084FA40 +3D808038 618C0358 +7D8903A6 4E800421 +7C7C1B78 806DB518 +3C80803E 6084FA60 +3D808038 618C0358 +7D8903A6 4E800421 +7C7D1B78 48000465 +7FC802A6 C2DE0010 +C2FE0014 3AC00016 +7EC3B378 3D808037 +618CF1E4 7D8903A6 +4E800421 7C771B78 +7EC4B378 3D808000 +618CC160 7D8903A6 +4E800421 38600000 +98770000 7E639B78 +90770001 92F30008 +38600006 38800007 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C781B78 +7F43D378 3D808037 +618C0E44 7D8903A6 +4E800421 7C791B78 +7F03C378 38800003 +7F25CB78 3D808039 +618C0A70 7D8903A6 +4E800421 7F23CB78 +38810034 38A0000A +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +38800010 3D808037 +618C1D9C 7D8903A6 +4E800421 7F23CB78 +38810034 38A0000B +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +38800010 3D808037 +618C1D9C 7D8903A6 +4E800421 7F23CB78 +7F64DB78 7F85E378 +7FA6EB78 3D808036 +618CFB5C 7D8903A6 +4E800421 7F23CB78 +FC20B090 3D808036 +618CF8BC 7D8903A6 +4E800421 7F23CB78 +38810034 38A00006 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3C80C060 60840000 +90830038 7F23CB78 +38810034 38A00007 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3C80405C 60840000 +90830038 7F03C378 +3C808039 60841070 +38A00006 38C00080 +3D808039 618C069C +7D8903A6 4E800421 +7F03C378 38800004 +3CA08037 60A5F1B0 +7EE6BB78 3D808039 +618C0B68 7D8903A6 +4E800421 7F03C378 +48000031 7C8802A6 +38A0000F 3D808038 +618CFD54 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 48000225 +7FC802A6 C2DE0010 +C2FE0014 7C781B78 +83380028 8358002C +8B7A0000 839A0001 +83BA0005 7F23CB78 +3D808037 618C0928 +7D8903A6 4E800421 +2C1D0000 4082003C +3860013F 38800000 +38A00002 38C00001 +C03E0000 C05E0004 +C07E0008 C09E000C +3D808000 618C56B4 +7D8903A6 4E800421 +907A0005 48000198 +7F23CB78 38810034 +38A00007 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +FC20B090 2C1B0000 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 +7D8903A6 4E800421 +7F23CB78 38810034 +38A00006 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +FC20B090 2C1B0001 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 +7D8903A6 4E800421 +39C00000 7DC37378 +3D80801A 618C36A0 +7D8903A6 4E800421 +2C030040 4182002C +2C030080 41820024 +2C030001 4182003C +2C030002 41820064 +39CE0001 2C0E0004 +4180FFC4 480000A0 +38600002 3D808002 +618C4030 7D8903A6 +4E800421 6B630001 +987A0000 48000080 +2C1B0001 4082002C +388000B7 806DAFC4 +98830000 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 48000004 +38600000 3D808002 +618C4030 7D8903A6 +4E800421 7F03C378 +3D808039 618C0228 +7D8903A6 4E800421 +7FA3EB78 3D80803A +618C5CC4 7D8903A6 +4E800421 3C600000 +60630000 907C0008 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 C0B00000 +C0333333 41B80000 +3D3851EC 00000000 +3F800000 3C60804A 60000000 00000000 C222D88C 00000008 #Online/Menus/TitleMenu/OnlineModeOptionSelected.asm 40820038 38600001 @@ -3257,46 +4392,58 @@ C21B3668 00000005 #Online/Menus/VSScreen/AllowP2ColorDuplicate.asm 41820014 3D808017 618CBEC8 7D8903A6 4E800421 00000000 -C2186EC4 00000056 #Online/Menus/VSScreen/InitVsSplash.asm +C2186EC4 00000077 #Online/Menus/VSScreen/InitVsSplash.asm 3C608048 80639D30 5463443E 2C030408 -40820294 4800004C +4082039C 48000060 4E800021 00000000 3F800000 3F000000 3F19999A F15959FF -6565FEFF 42700000 -43C80000 436E0000 -42700000 43DC0000 -41F00000 43200000 -43960000 41B00000 -50310050 32000000 -7C0802A6 90010004 -9421FF50 BE810008 -38600000 3C80803F -608411A4 3CA0803F -60A51194 3D80803A -618C62A0 7D8903A6 -4E800421 38600000 -3D808000 618C5610 +6565FEFF FFFFFFFF +42700000 43C80000 +436E0000 42820000 +43DC0000 41F00000 +43200000 43960000 +41B00000 41B00000 +5465616D 20310054 +65616D20 32005031 +00503200 7C0802A6 +90010004 9421FF50 +BE810008 38600000 +3C80803F 608411A4 +3CA0803F 60A51194 +3D80803A 618C62A0 7D8903A6 4E800421 -7C7D1B78 4BFFFF6D -7FE802A6 38600000 -38800000 3D80803A -618C6754 7D8903A6 -4E800421 7C7E1B78 -38800001 989E0049 -38800000 989E004A -C03F0000 D03E0008 -C03F0004 D03E0024 -D03E0028 387F0010 -389F003C 38BD000A -C03F0018 480000D1 -387F0014 389F003F -38BD0029 C03F001C -480000BD 38600000 -38800000 C03F0020 -C05F0028 C07F002C -C09F0030 C0BF0034 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7D1B78 +4BFFFF59 7FE802A6 +38600000 38800000 +3D80803A 618C6754 +7D8903A6 4E800421 +7C7E1B78 38800001 +989E0049 38800000 +989E004A C03F0000 +D03E0008 C03F0004 +D03E0024 D03E0028 +887D0210 2C030001 +41820038 387F0010 +389F0052 38BD0034 +38C00000 C03F001C +4800010D 387F0014 +389F0055 38BD0053 +38C00000 C03F0020 +480000F5 48000038 +807D000D 480001E9 +387F0010 389F0044 +C03F001C 480000D9 +807D0011 480001D1 +387F0014 389F004B +C03F0020 480000C1 +48000004 38600000 +38800000 C03F0024 +C05F002C C07F0030 +C09F0034 C0BF0038 3D80803A 618C5ACC 7D8903A6 4E800421 7C7E1B78 C03F0004 @@ -3304,7 +4451,7 @@ D03E0024 D03E0028 38800001 989E004A 989E0049 C03F0000 D03E0008 3CA0803B -60A57808 A0DD0166 +60A57808 A0DD0216 38600000 1C830002 7C85222E 7C043000 41820014 38630001 @@ -3316,30 +4463,51 @@ D03E0008 3CA0803B 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 -480000D4 7C0802A6 +4800017C 7C0802A6 90010004 9421FF50 -BE810008 D0210080 -7C7D1B78 7CBC2B78 -C05F0024 7FC3F378 -3D80803A 618C6B98 +BE810008 FFE00890 +7C761B78 7C942378 +7CB92B78 7CDA3378 +7CF83B78 7D174378 +93210008 9301000C +92E10010 C3DF0028 +C07F0040 7F43D378 +3D808000 618C55F4 7D8903A6 4E800421 -7C7B1B78 7FC3F378 -7F64DB78 C03F0008 -C05F0008 3D80803A -618C7548 7D8903A6 -4E800421 7FC3F378 -7F64DB78 7FA5EB78 -3D80803A 618C74F0 +EC630072 EFDE1828 +7FC3F378 389F0018 +7EC4B378 38A00000 +7E87A378 C03F0008 +FC40F890 FC60F090 +3D808000 618C56B4 7D8903A6 4E800421 -C0210080 C05F0024 -C07F0038 EC42182A -7FC3F378 7F84E378 -3D80803A 618C6B98 -7D8903A6 4E800421 -7C641B78 7FC3F378 -C03F000C C05F000C -3D80803A 618C7548 +39C00008 39E00000 +7C6E0A14 80E30000 +2C0F0000 4182000C +C07F003C EFFF182A +C09F0040 EFDE202A +7FC3F378 389F0018 +38A00000 C03F000C +FC40F890 FC60F090 +3D808000 618C56B4 7D8903A6 4E800421 +39CE0004 39EF0001 +7C0FD000 4180FFAC +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 38A00008 +38C000FF 7C7A3039 +7C632C30 38E00008 +39200000 7C643039 +1C84001F 38840034 +7C84EA14 7D070A14 +90880000 7C632C30 +38E70004 39290001 +2C090003 4180FFD8 +7F46D378 80A10010 +80E1000C 81010008 BA810008 800100B4 382100B0 7C0803A6 4E800020 3800FFFF @@ -3353,7 +4521,7 @@ BE810008 38600000 3D808000 618C5610 7D8903A6 4E800421 7C7F1B78 887F0004 -1C630024 389F01B8 +1C630024 389F0268 7FC418AE 7FE3FB78 3D808037 618CF1B0 7D8903A6 4E800421 @@ -3424,17 +4592,18 @@ C21BFA20 00000012 #Online/Slippi Online Scene/boot.asm 3D80801B 618C136C 7D8903A6 4E800420 38600001 00000000 -C21A45B8 00000128 #Online/Slippi Online Scene/main.asm +C21A45B8 0000016E #Online/Slippi Online Scene/main.asm 3BA30004 7C0802A6 90010004 9421FF50 BE810008 3C80803E -6084DC1C 480001F5 +6084DC1C 48000215 7C6802A6 38630000 90640008 38600000 986DAFA3 986DAFC8 -38600008 48000155 +986DAFEC 986DAFE0 +38600008 4800016D 7C8802A6 4800002D -480008D8 80830000 +48000B04 80830000 5485467A 2C050048 40820014 548401BA 7C840734 7C841A14 @@ -3444,7 +4613,7 @@ BE810008 3C80803E 7C7F1B78 7C9E2378 3C80803D 6084AD30 48000081 7C6802A6 -90640004 480000BD +90640004 480000D5 7C6802A6 90640008 38600001 98640000 3C60803D 6063ACA4 @@ -3463,9 +4632,12 @@ BE810008 3C80803E 90010004 9421FF50 BE810008 3C808045 6084ABF0 886DAEF8 -98640006 38600013 -3C80803F 60840CC8 -98640001 BA810008 +98640006 3D808000 +618C56B8 7D8903A6 +4E800421 7C641B78 +3860000F 1C63001C +7C832214 38600013 +986400DD BA810008 800100B4 382100B0 7C0803A6 4E800020 4E800021 7C0802A6 @@ -3479,16 +4651,16 @@ BE810008 38600012 48000081 480000F5 08000000 80497758 80497758 01030000 -480001AD 480001DD +480001B5 480001E5 09000000 80480668 80480668 02030000 -801B1588 48000275 +801B1588 4800027D 02000000 80480530 80479D98 03030000 00000000 00000000 05000000 00000000 00000000 04030000 -4800039D 4800051D +48000411 48000731 20000000 80490880 804D68D0 FF000000 4E800021 81940000 @@ -3513,9 +4685,10 @@ BE810008 38600012 618CAAD0 7D8903A6 4E800421 809E0014 88840003 2C040002 -40820008 48000084 +40820008 4800008C 886DAFA0 2C030001 -41820014 2C030002 +4182001C 2C030002 +4182001C 2C030003 41820014 2C030000 41820008 48000038 48000034 886DAFC9 @@ -3524,7 +4697,7 @@ BE810008 38600012 4182001C 2C030000 40820000 886DAFCA 2C030000 41820020 -48000004 48000431 +48000004 4800063D 3C808047 60849D30 38600005 98640005 48000018 3C808047 @@ -3552,7 +4725,7 @@ BE810008 3D80801B 7D8903A6 4E800421 7C7E1B78 887E0001 889E0002 7C032000 -4082001C 48000351 +4082001C 4800055D 3C808047 60849D30 38600005 98640005 4800001C 38600000 @@ -3568,59 +4741,124 @@ BE810008 3D80801B 38600000 3D808000 618C5610 7D8903A6 4E800421 7C7F1B78 -3A800000 3AA00000 -7E83A378 480003A1 -2C030000 41820008 -3AB50001 3A940001 -2C140004 4180FFE4 -2C150001 4082001C -887F0003 48000379 -2C030000 4182000C -38600001 48000008 -38600000 986DAFC9 -38600000 986DAFCA -38600004 3D808037 -618CF1E4 7D8903A6 -4E800421 7C7E1B78 -386000BC 987E0000 -7FC3F378 38800001 -38A00001 3D808000 -618C55F0 7D8903A6 -4E800421 7FC3F378 -38800004 38A00000 +887F0003 480005B5 +986DAFC9 886DAFA0 +2C030003 40820020 +887F0003 38800001 +2C030000 40820008 +38800000 988DAFC9 +4800003C 3A800000 +3AA00000 7E83A378 +48000579 2C030000 +41820008 3AB50001 +3A940001 2C140004 +4180FFE4 2C150001 +4182000C 38600000 +986DAFC9 3E808047 +62949DA4 887F0003 +48000541 2C030000 +41820018 38600001 +98740000 38600000 +9874005D 48000014 +38600000 98740000 +38600001 9874005D +886DAFA0 2C030003 +4082000C 38600000 +98740004 38600000 +986DAFCA 38600004 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7E1B78 386000BC +987E0000 7FC3F378 +38800001 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -3C80804D 807E0000 -90645F90 7FC3F378 +7FC3F378 38800004 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 3C80804D +807E0000 90645F90 +7FC3F378 3D808037 +618CF1B0 7D8903A6 +4E800421 3C808047 +60849D30 38600001 +98640005 7FE3FB78 3D808037 618CF1B0 7D8903A6 4E800421 -3C808047 60849D30 -38600001 98640005 -7FE3FB78 3D808037 -618CF1B0 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -4E800021 01780101 -01FF2121 FF2121EE -0000EE00 7C0802A6 -90010004 9421FF50 -BE810008 83ED8840 -3BFF0598 3C608049 -60630888 4BFFFFCD -7C8802A6 38A00010 -3D808000 618C31F4 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +01780101 01FF2121 +FF2121EE 0000EE00 +7C0802A6 90010004 +9421FF50 BE810008 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7E1B78 +83ED8840 3BFF0598 +886DAFA0 2C030003 +40820048 3BA00000 +1CBD0024 38650069 +7C7F18AE 38630001 +38850060 7C9F20AE +3D808000 618C56B0 7D8903A6 4E800421 -3C808049 60840888 -887F0060 98640005 -887F0063 9864000B -887F0084 98640008 -887F0087 9864000E -3C808043 60842078 -887F0060 90640014 -887F0063 98640018 -887F0084 9064001C -887F0087 98640020 +1C9D0024 38840063 +7C7F21AE 3BBD0001 +2C1D0004 4180FFC4 +3C608049 60630888 +4BFFFF65 7C8802A6 +38A00010 3D808000 +618C31F4 7D8903A6 +4E800421 3C808049 +60840888 887F0060 +98640005 887F0063 +9864000B 887F0084 +98640008 887F0087 +9864000E 38600000 +9864FFFF 9864FFFB +887E0210 2C030000 +418200F4 887E0003 +1C630024 38630271 +7F7E18AE 38600002 +98640002 38600001 +9864FFFB 98640006 +98640007 98640009 +9864000A 9864000C +9864000D 9864000F +98640010 3BA00000 +3B800000 1C7D0024 +38630069 7C7F18AE +7C03D800 40820030 +1CBD0024 38A50060 +7CBF28AE 38DC0005 +7CA621AE 1CBD0024 +38A50063 7CBF28AE +38DC000B 7CA621AE +3B9C0001 3BBD0001 +2C1D0004 4180FFB8 +9B840003 3BA00000 +3B800000 1C7D0024 +38630069 7C7F18AE +7C03D800 41820030 +1CBD0024 38A50060 +7CBF28AE 38DC0008 +7CA621AE 1CBD0024 +38A50063 7CBF28AE +38DC000E 7CA621AE +3B9C0001 3BBD0001 +2C1D0004 4180FFB8 +9B840004 3C808043 +60842078 887F0060 +90640014 887F0063 +98640018 887F0084 +9064001C 887F0087 +98640020 887E0210 +2C030000 41820024 +887F00A8 90640024 +887F00AB 98640028 +887F00CC 9064002C +887F00CF 98640030 A07F000E 9064000C 3D808001 618C8254 7D8903A6 4E800421 @@ -3629,103 +4867,190 @@ A07F000E 9064000C 4E800421 38600004 3D808001 618C7700 7D8903A6 4E800421 -3A800000 1C140024 -7FF7FB78 7EF70214 -3AA00000 3AC00000 -88770060 7C630774 -3D808002 618C6E84 +3860001C 3D808002 +618C6F2C 7D8903A6 +4E800421 3A800000 +1C140024 7FF5FB78 +7EB50214 88750060 +7C630774 2C030021 +41820024 3C80803B +6084B3C0 1C630010 +7C6320AE 3D808000 +618C56A8 7D8903A6 +4E800421 3A940001 +2C140006 3AB50024 +4180FFC4 A07F000E +3D808022 618C519C 7D8903A6 4E800421 -3A940001 2C140006 -7ED62378 7EB51B78 -3AF70024 4180FFD4 -A07F000E 3D808002 -618C6EBC 7D8903A6 -4E800421 7C75AB78 -7C96B378 3860001C -3D808002 618C6F2C +3C80803B 6084B6B0 +1C630003 7C6320AE +3D808000 618C56A8 7D8903A6 4E800421 -38D60000 38B50000 -3860000C 3D808002 -618C702C 7D8903A6 -4E800421 3D808002 -618C7168 7D8903A6 +3D808002 618C7168 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 3C808047 +60849D30 38600003 +98640005 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7F1B78 +83CD8840 3BDE0598 +7FC3F378 389F0208 +38A00138 3D808000 +618C31F4 7D8903A6 +4E800421 3D808017 +618CEB30 7D8903A6 +4E800421 889F0268 +98830000 889F026B +98830001 38800000 +98830002 38800003 +98830005 38800078 +98830004 3C80803D +6084DEC8 8084000C +887F028C 98640002 +38602121 B0640003 +3C808049 60840880 +887F028F 98640016 +7FE3FB78 3D808037 +618CF1B0 7D8903A6 4E800421 BA810008 800100B4 382100B0 7C0803A6 4E800020 7C0802A6 90010004 9421FF50 BE810008 -3C808047 60849D30 -38600003 98640005 -BA810008 800100B4 -382100B0 7C0803A6 -4E800020 7C0802A6 -90010004 9421FF50 -BE810008 38600000 -3D808000 618C5610 -7D8903A6 4E800421 -7C7F1B78 83CD8840 -3BDE0598 7FC3F378 -389F0158 38A00138 -3D808000 618C31F4 -7D8903A6 4E800421 -3D808017 618CEB30 -7D8903A6 4E800421 -889F01B8 98830000 -889F01BB 98830001 -38800000 98830002 -38800003 98830005 -38800078 98830004 -3C80803D 6084DEC8 -8084000C 887F01DC -98640002 38602121 -B0640003 3C808049 -60840880 887F01DF -98640016 7FE3FB78 -3D808037 618CF1B0 -7D8903A6 4E800421 -BA810008 800100B4 -382100B0 7C0803A6 -4E800020 7C0802A6 -90010004 9421FF50 -BE810008 7C7D1B78 -3FE08047 63FF9DA4 -1FDD00A8 7FDEFA14 -887F0004 2C030000 -418200B0 3C608046 -6063B6A0 886324D0 -889F0006 7C032000 -40820098 887E0058 -2C030003 4182008C -887F0004 2C030007 -40820040 887F0006 -2C030001 40820024 -887F0000 1C6300A8 -7C63FA14 8863005F -889E005F 7C032000 -41820058 4800005C -887F0000 7C03E800 -41820048 4800004C +7C7D1B78 3FE08047 +63FF9DA4 1FDD00A8 +7FDEFA14 887F0004 +2C030000 418200B0 +3C608046 6063B6A0 +886324D0 889F0006 +7C032000 40820098 +887E0058 2C030003 +4182008C 887F0004 +2C030007 40820040 887F0006 2C030001 -40820028 7FE3FB78 -3D808016 618C54A0 +40820024 887F0000 +1C6300A8 7C63FA14 +8863005F 889E005F +7C032000 41820058 +4800005C 887F0000 +7C03E800 41820048 +4800004C 887F0006 +2C030001 40820028 +7FE3FB78 3D808016 +618C54A0 7D8903A6 +4E800421 889E005F +7C032000 41820020 +48000014 887E005D +2C030000 41820010 +48000004 38600000 +48000008 38600001 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 BA810008 +800100B4 382100B0 +7C0803A6 38600028 +987E0000 00000000 +C20056BC 00000012 #Online/Static/CSSUpdateCSP.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +7CBD2B78 7CDC3378 +3D808000 618C56B8 7D8903A6 4E800421 -889E005F 7C032000 -41820020 48000014 -887E005D 2C030000 -41820010 48000004 -38600000 48000008 -38600001 BA810008 +7C651B78 1C7F0024 +3C80803F 60840A48 +7C832214 886403C2 +1C63001C 7C832A14 +8BC400DC 1CBD001E +7C9E2A14 7FE3FB78 +7F85E378 3D808025 +618CD5AC 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C20056AC 0000002E #Online/Static/ChatMessages.asm +7CA802A6 2C030008 +4182001C 2C030004 +41820020 2C030002 +41820024 2C030001 +41820028 48000075 +7C6802A6 48000024 +480000F9 7C6802A6 +48000018 480000C9 +7C6802A6 4800000C +4800007D 7C6802A6 +88E30000 89030001 +89230002 89430003 +7C862378 38830004 +7C843A14 2C060008 +41820020 7C844214 +2C060001 41820014 +7C844A14 2C060002 +41820008 7C845214 +7CA903A6 4E800420 +4E800021 07040904 +436F6D6D 6F6E0067 +6773006F 6E65206D +6F726500 62726200 +676F6F64 206C7563 +6B000000 4E800021 +0C0C0D07 436F6D70 +6C696D65 6E747300 +77656C6C 20706C61 +79656400 74686174 +20776173 2066756E +00746861 6E6B7300 +746F6F20 676F6F64 +00000000 4E800021 +0A040504 52656163 +74696F6E 73006F6F +66006D79 2062006C +6F6C0077 6F770000 +4E800021 05050917 +4D697363 006F6B61 +79007468 696E6B69 +6E67006C 65742773 +20706C61 79206167 +61696E20 6C617465 +72006261 6420636F +6E6E6563 74696F6E +00000000 00000000 +C20056B8 00000002 #Online/Static/GetCSSIconData.asm +3C60803F 60630A48 +4E800020 00000000 +C20056B0 00000011 #Online/Static/GetTeamCostumeIndex.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +7FC3F378 2C1F0003 +41820028 2C1F0002 +4182000C 2C1F0001 +4182002C 3D808016 +618C92BC 7D8903A6 +4E800421 48000028 +3D808016 618C9290 +7D8903A6 4E800421 +48000014 3D808016 +618C9264 7D8903A6 +4E800421 BA810008 800100B4 382100B0 7C0803A6 4E800020 -BA810008 800100B4 -382100B0 7C0803A6 -38600028 987E0000 60000000 00000000 C2005610 00000012 #Online/Static/LoadMatchState.asm 7C0802A6 90010004 9421FF50 BE810008 2C030000 40820018 -38600290 3D808037 +38600340 3D808037 618CF1E4 7D8903A6 4E800421 7C7F1B78 386000B3 987F0000 @@ -3733,7 +5058,7 @@ C2005610 00000012 #Online/Static/LoadMatchState.asm 38A00001 3D808000 618C55F0 7D8903A6 4E800421 7FE3FB78 -38800290 38A00000 +38800340 38A00000 3D808000 618C55F0 7D8903A6 4E800421 7FE3FB78 BA810008 @@ -3763,6 +5088,12 @@ C200560C 00000016 #Online/Static/LoadState.asm BA810008 800100B4 382100B0 7C0803A6 4E800020 00000000 +C20056A8 00000005 #Online/Static/RequestSSMLoad.asm +2C030037 41820018 +3D808043 618C37C4 +38800001 1C630004 +7C83612E 4E800020 +60000000 00000000 C2005608 00000016 #Online/Static/SaveState.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -3936,14 +5267,6 @@ BA810008 800100B4 382100B0 7C0803A6 4E800020 00000000 043775B8 A0190000 #Online/Logging/LogInputOnCopy.asm - -$Recommended: Normal Lag Reduction [Hannes Mann] -*Reduces input lag -043761EC 4800001C -04376238 48000018 - -$Recommended: Polling drift fix + VB [Dan Salvato, tauKhan] -*Synchronizes polling rate with FPS. 041A4C24 C0429A7C #Polling Drift Fix + VB [tauKhan] 0401985C 3C60804C 04019860 91231F5C @@ -3958,12 +5281,192 @@ C21A5018 00000005 618C5078 7D8903A6 4D820420 00000000 04218D68 C8228000 +C209E090 00000011 #Common/FastForward/DynamicsFix.asm +807E0000 80630028 +48000009 48000074 +7C0802A6 90010004 +9421FFE8 93E10014 +7C7F1B78 807F0014 +54600211 40820020 +54600673 41820018 +7FE3FB78 3D808037 +618C3078 7D8903A6 +4E800421 807F0010 +2C030000 41820008 +4BFFFFB9 807F0008 +2C030000 41820008 +4BFFFFA9 83E10014 +8001001C 38210018 +7C0803A6 4E800020 +BB010028 00000000 + +$Recommended: Normal Lag Reduction [Hannes Mann] +*Reduces input lag +043761EC 4800001C +04376238 48000018 + +$Recommended: Apply Delay to all In-Game Scenes [Fizzi] +*Applies online delay to all in-game scenes. +*Dolphin netplay is no longer necessary for local practice +C2376A24 00000026 #Common/UseInGameDelay/ApplyInGameDelay.asm +3D808034 618CDA00 +7D8903A6 4E800421 +3D808000 618C561C +7D8903A6 4E800421 +2C030002 41820014 +2C030003 4182000C +2C030004 408200F8 +3C608048 88639D30 +2C030008 418200E8 +3C608047 60639D64 +80630000 2C030000 +408200D4 7C0802A6 +90010004 9421FF50 +BE810008 3C60802F +6063666C 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +83E30008 887F0000 +2C030000 40810080 +38610038 388100DC +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 887F0001 +1C630030 3BC30002 +386100DC 7C9FF214 +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 7C7FF214 +38810038 38A00030 +3D808000 618C31F4 +7D8903A6 4E800421 +889F0000 887F0001 +38630001 7C032000 +41800008 38600000 +987F0001 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C22F666C 0000005C #Common/UseInGameDelay/InitializeInGameDelay.asm +4800007C 4E800021 +80000000 4E800021 +00000000 3DCCCCCD +43870000 434F0000 +3EA8F5C3 44656C61 +793A2025 64660000 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C7F1B78 +880DB6CC 2C000001 +41820018 7FE3FB78 +3D808039 618C10D8 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C7F1B78 +3C608048 88639D30 +2C030008 4182024C +7C0802A6 90010004 +9421FF50 BE810008 +386002D2 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7F1B78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 4BFFFF39 +7C6802A6 93E30000 +386000D5 987F0000 +7FE3FB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FE3FB78 +38800002 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +8BDF0001 7FE3FB78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 2C1E0000 +41800010 2C1E000F +41810010 48000010 +3BC00000 48000008 +3BC0000F 9BDF0000 +2C1E0000 4081016C +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7A1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C791B78 +7F23CB78 888DC1AB +7F45D378 3D808039 +618C0A70 7D8903A6 +4E800421 7F23CB78 +4BFFFE51 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 90790024 +38600002 7F24CB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7B1B78 4BFFFDD1 +7FA802A6 38600002 +7F64DB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +38800001 989C0049 +38800002 989C004A +C03D0000 D03C0008 +C03D0004 D03C0024 +D03C0028 C03D0008 +C05D000C 7F83E378 +389D0014 7FC5F378 +3D80803A 618C6B98 +7D8903A6 4E800421 +7F83E378 38800000 +C03D0010 C05D0010 +3D80803A 618C7548 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +7FE3FB78 00000000 +C200561C 00000013 #Common/GetCommonMinorID/GetCommonMinorID.asm +7C0802A6 90010004 +9421FF50 BE810008 +3CA08048 8BC59D30 +8BE59D33 3FA0803D +63BDACA4 38800000 +1CA40014 7CBD2A14 +88C50001 7C06F000 +4082000C 80650010 +48000010 38840001 +2C04002C 4081FFDC +38800000 1CA40018 +7CA32A14 88C50000 +7C06F800 4082000C +8865000C 48000010 +38840001 2C0600FF +4082FFDC BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 $Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch] *Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- *Will not cause desyncs when playing online 043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm -C236A4A8 00000006 #External/Widescreen/Overwrite CObj Values.asm +C236A4A8 00000007 #External/Widescreen/Overwrite CObj Values.asm +38600001 986DAFE0 C03F0034 4800001D 7C6802A6 C0430000 C0630004 EC2100B2 diff --git a/Data/Sys/GameSettings/GALJ01r2.ini b/Data/Sys/GameSettings/GALJ01r2.ini new file mode 100644 index 0000000000..1886a98164 --- /dev/null +++ b/Data/Sys/GameSettings/GALJ01r2.ini @@ -0,0 +1,5527 @@ +# GALJ01 - Super Smash Bros. Melee NTSC-J 1.02 + +[Core] +CPUThread = True +GPUDeterminismMode = fake-completion +PollingMethod = OnSIRead +FastDiscSpeed = True + +[Gecko_Enabled] +$Required: General Codes +$Required: Slippi Recording +$Required: Slippi Online +$Recommended: Normal Lag Reduction +$Recommended: Apply Delay to all In-Game Scenes + +[Gecko] +$Required: General Codes [Achilles, Dan Salvato, Magus, UnclePunch, tauKhan, Ptomerty, Cilan, Zauron, Datel, donny2112, Jorgasms, strikebowler585, Myougi] +0415EE98 38600001 #Unlock All Characters and Stages [Datel] +0415EDDC 38600001 +04164B14 38600001 +041648F4 38600001 +0415EE4C 38600001 +0415EE14 38600001 +0415D968 38600001 +0415D9D8 38600001 +0417229C 38600000 +041737B0 38600000 +04164658 38600001 +041644E8 38600001 +0430490C 38600063 +043044F0 38600001 +043D4A48 00340102 #Stock Mode [Magus] +043D4A4C 04000A00 #4 Stocks [Magus] +043D4A50 08010100 #8 Minutes [Magus] +043D4A60 FF000000 #No Items [Magus] +043D4A78 E70000B0 #Singles Stages [Magus] +C21AF6F4 00000006 #External/Skip Memcard Prompt/Skip Memcard Prompt.asm +2C1D000F 41820010 +2C1D000D 41820008 +48000014 3D80801B +618C01AC 7D8903A6 +4E800420 2C1D0000 +60000000 00000000 +0415D94C 4E800020 #Disable Special Messages [Most] +0415D984 4E800020 #Disable Trophy Messages [Achilles] +C21A5B14 0000000A #External/Salty Runback/Salty Runback.asm +3BA00000 7FA3EB78 +3D80801A 618C3680 +7D8903A6 4E800421 +548005EF 4182000C +548005AD 40820014 +3BBD0001 2C1D0004 +4180FFD4 4800000C +3B600002 48000008 +3B600000 3BA00000 +60000000 00000000 +0416B480 60000000 #C-Stick in Single Player [Zauron] +0422D638 38000006 #Debug Menu [Magus, donny2112] +041B0A14 38600002 #Exiting Debug Menu Returns to CSS [Achilles] +C216E510 00000093 #External/NeutralSpawn/NeutralSpawn.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808016 618CB41C +7D8903A6 4E800421 +2C030000 40820458 +2C1C0005 40800450 +887F24D0 2C030001 +41820054 3B200000 +3B400000 7F43D378 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820010 +7C1CD000 41820014 +3B390001 3B5A0001 +2C1A0004 4081FFD0 +7F83E378 7F24CB78 +88BF24D0 48000115 +480003F4 3B400000 +3B000000 3B200000 +7F23CB78 3D808003 +618C241C 7D8903A6 +4E800421 2C030003 +41820024 7F23CB78 +3D808003 618C3370 +7D8903A6 4E800421 +7C03D000 40820008 +3B180001 3B390001 +2C190004 4180FFBC +2C180001 41820398 +2C180002 41810390 +3B5A0001 2C1A0003 +4180FF98 3B200000 +3B410080 3B000000 +3AC00000 3AE00000 +7EE3BB78 3D808003 +618C241C 7D8903A6 +4E800421 2C030003 +41820028 7EE3BB78 +3D808003 618C3370 +7D8903A6 4E800421 +7C03C800 4082000C +7EF8D1AE 3B180001 +3AF70001 2C170004 +4180FFB8 3B390001 +2C190003 4180FFA4 +3B200000 7C79D0AE +7C03E000 41820010 +3B390001 2C190004 +4180FFEC 7F83E378 +7F24CB78 88BF24D0 +48000009 480002E8 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +7CBD2B78 48000121 +7F8802A6 80CD9348 +38A00000 807C0000 +2C03FFFF 4182005C +7C033000 4182000C +3B9C0044 4BFFFFE8 +3B9C0004 1C7D0020 +7F9C1A14 1C7E0008 +7F9C1A14 38810080 +C03C0000 D0240000 +C03C0004 D0240004 +38600000 90640008 +7FE3FB78 3D808003 +618C2768 7D8903A6 +4E800421 48000054 +2C1D0001 4182000C +7FC3F378 48000014 +4800023D 7C6802A6 +7C63F0AE 48000004 +38810080 3D808022 +618C4E64 7D8903A6 +4E800421 7FE3FB78 +38810080 3D808003 +618C2768 7D8903A6 +4E800421 48000004 +7FE3FB78 38810080 +3D808003 618C26CC +7D8903A6 4E800421 +C0210080 C002A8E8 +FC010040 4081000C +C022A8F8 48000008 +C022A8CC 7FE3FB78 +3D808003 618C3094 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +00000020 C2700000 +41200000 42700000 +41200000 C1A00000 +41200000 41A00000 +41200000 C2700000 +41200000 C1A00000 +41200000 42700000 +41200000 41A00000 +41200000 0000001F +C21B3333 420CCCCD +421B3333 420CCCCD +00000000 41000000 +00000000 4279999A +C21B3333 420CCCCD +C21B3333 40A00000 +421B3333 420CCCCD +421B3333 40A00000 +00000008 C2280000 +41D4CCCD 42280000 +41E00000 00000000 +423B999A 00000000 +409CCCCD C2280000 +41D4CCCD C2280000 +40A00000 42280000 +41E00000 42280000 +40A00000 0000001C +C23A6666 4214CCCD +423D999A 42153333 +00000000 40E00000 +00000000 426A0000 +C23A6666 4214CCCD +C23A6666 40A00000 +423D999A 42153333 +423D999A 40A00000 +00000002 C2250000 +41A80000 42250000 +41D80000 00000000 +40A80000 00000000 +42400000 C2250000 +41A80000 C2250000 +40A00000 42250000 +41D80000 42250000 +40A00000 00000003 +C2200000 42000000 +42200000 42000000 +428C0000 40E00000 +C28C0000 40E00000 +C2200000 42000000 +C2200000 40A00000 +42200000 42000000 +42200000 40A00000 +FFFFFFFF 4E800021 +00030102 BA810008 +800100B4 382100B0 +7C0803A6 881F24D0 +60000000 00000000 +042641B0 38000001 #Faster CSS Load [UnclePunch] +0421AAE4 60000000 #Disable FD Background Transitions [Achilles, Dan Salvato] +0425B8BC 38600002 #L+R+A Returns to CSS during Stage Load [Jorgasms] +04452F54 42000000 #Unrestricted Camera while Paused [strikebowler585] +04452F58 42000000 +04452F5C 42000000 +04452F60 40200000 +04452F64 47000000 +C202CB34 0000000C #C-Stick Panning while Paused [Achilles] +7C040774 3E00804C +62101FD4 1DE00044 +7E107A14 C022C3D8 +FE200850 C1F00000 +FC0F0840 4081000C +FC0F8840 41800010 +C21F0314 FE0F802A +D21F0314 C1F00004 +FC0F0840 4081000C +FC0F8840 41800010 +C21F0318 FE0F802A +D21F0318 00000000 +C20C9A44 0000002B #External/UCF 0.8/Logic/UCF DB.asm +D01F002C 7C0802A6 +90010004 9421FF50 +BE810008 48000121 +7FC802A6 C03F0894 +C05E0000 FC011040 +40820118 808DAEB4 +C03F0620 FC200A10 +C044003C FC011040 +41800100 887F0670 +2C030002 408000F4 +887F221F 54600739 +408200E8 3C60804C +60631F78 8BA30001 +387DFFFE 889F0618 +4800008D 7C7C1B78 +7FA3EB78 889F0618 +4800007D 7C7C1850 +7C6319D6 2C0315F9 +408100B0 38000001 +901F2358 901F2340 +809F0004 2C04000A +40A20098 887F000C +38800001 3D808003 +618C418C 7D8903A6 +4E800421 2C030000 +41820078 8083002C +80841ECC C03F002C +D0240018 C05E0004 +FC011040 4181000C +38600080 48000008 +3860007F 98640006 +48000048 7C852378 +3863FFFF 2C030000 +40800008 38630005 +3C808046 6084B108 +1C630030 7C841A14 +1C65000C 7C841A14 +88640002 7C630774 +4E800020 4E800021 +40000000 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C20998A4 00000026 #External/UCF 0.8/Logic/UCF SD.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7E1B78 83FE002C +480000DD 7FA802A6 +C03F063C 806DAEB4 +C0030314 FC010040 +408100E4 C03F0620 +48000071 D0210090 +C03F0624 48000065 +C0410090 EC4200B2 +EC210072 EC21102A +C05D000C FC011040 +418000B4 889F0670 +2C040003 408100A8 +C01D0010 C03F0624 +FC000840 40800098 +BA810008 800100B4 +382100B0 7C0803A6 +8061001C 83E10014 +38210018 38630008 +7C6803A6 4E800020 +FC000A10 C03D0000 +EC000072 C03D0004 +EC000828 FC00001E +D8010080 80610084 +38630002 3C004330 +C85D0014 6C638000 +90010080 90610084 +C8210080 EC011028 +C03D0000 EC200824 +4E800020 4E800021 +42A00000 37270000 +43300000 3F800000 +BF4CCCCD 43300000 +80000000 7FC3F378 +7FE4FB78 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C20908F4 00000017 #External/UCF 0.8/Logic/UCF Tumble.asm +7C0802A6 90010004 +9421FF50 BE810008 +2C030001 4082008C +C03F0628 FC200A10 +806DAEB4 C0430210 +FC011040 40800074 +3F80804C 639C1F78 +8BDC0001 387EFFFE +889F0618 48000029 +7C7D1B78 7FC3F378 +889F0618 48000019 +7C7D1850 7C6319D6 +388015F9 7C041800 +48000038 7C852378 +3863FFFF 2C030000 +40800008 38630005 +809C0008 1C630030 +7C841A14 1C65000C +7C841A14 88640002 +7C630774 4E800020 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C22662D0 0000001A #External/UCF 0.8/Indicator/UCF Text.asm +7C0802A6 90010004 +9421FF50 BE810008 +48000089 7FC802A6 +38600000 38800000 +3DC0803A 61CE6754 +7DC903A6 4E800421 +7C7F1B78 38800001 +989F0049 38800001 +989F004A C03E000C +D03F0024 D03F0028 +7FE3FB78 48000059 +7C8802A6 C03E0000 +C05E0004 3DC0803A +61CE6B98 7DC903A6 +4E800421 7C641B78 +7FE3FB78 C03E0008 +C05E0008 3D80803A +618C7548 7D8903A6 +4E800421 48000024 +4E800021 42180000 +C3898000 3EE66666 +3DCCCCCD 4E800021 +55434620 302E3800 +BA810008 800100B4 +382100B0 7C0803A6 +38980000 00000000 +C226325C 00000008 #External/DPad Down at CSS for Random Stage/DPad Down at CSS for Random Stage.asm +3C808045 6084BF17 +54E0077B 4182001C +38600001 98640000 +3D808026 618C3264 +7D8903A6 4E800420 +54E004E7 4182000C +38600000 98640000 +54E004E7 00000000 +C21CBB90 00000005 #Lagless FoD [Achilles, Myougi, Dan Salvato] +9421FFF8 3CC0804A +80C6ED78 3CA00002 +60A5AE44 7CA53050 +88C50000 60C60004 +98C50000 00000000 +041CC8AC FC000028 +041CBE9C 60000000 +041CBEF0 60000000 +041CBF54 60000000 +04390838 60000000 +041CD250 60000000 +041CCDCC 480000B4 +041C26B0 38000032 #Random Stage Music [UnclePunch] +C215ECEC 0000000C #Random CSS Music v3 [UnclePunch] +38600003 3DC08038 +61CE0580 7DC903A6 +4E800421 2C030000 +41820014 2C030001 +41820014 2C030002 +41820014 38000034 +48000014 38000036 +4800000C 38000035 +48000004 981F0001 +3DC08015 61CEED1C +7DC903A6 4E800420 +60000000 00000000 +C216EBA8 00000003 +3DC08015 61CEECBC +7DC903A6 4E800421 +8001001C 00000000 +C21A45A8 00000003 +3DC08015 61CEECBC +7DC903A6 4E800421 +3800002D 00000000 +044DC47C C0200000 #External/CSS Player Hands Default to HMN Button/Change Default Hand Position.asm +C2261A6C 00000005 #External/CSS Player Hands Default to HMN Button/Fix A Button Buffer When Exiting Name Entry.asm +88BF0005 2C050002 +40820014 3D808026 +618C1B6C 7D8903A6 +4E800420 1C130024 +60000000 00000000 +C22FCCD8 0000000D #External/Hide Nametag When Invisible/Hide Nametag When Invisible.asm +3C608046 6063B6A0 +886324D0 2C030001 +41820050 887F0000 +3D808003 618C4110 +7D8903A6 4E800421 +8083002C 80640004 +2C030010 40820010 +80640010 2C0300EC +41820010 8864221E +54630631 41820014 +3D80802F 618CCCC8 +7D8903A6 4E800420 +281E0000 00000000 +C2266CE0 0000000C #External/Disable FoD During Doubles/Disable FoD During Doubles.asm +80CD8840 38C61CB0 +80A60018 3C60E700 +606300B0 7C632A79 +41820010 2C030020 +41820008 48000034 +806DB610 88630018 +2C030001 41820014 +38600001 50652EB4 +90A60018 48000014 +38600000 50652EB4 +90A60018 48000004 +38600001 00000000 +C2265220 00000028 #Common/Winners Names are Gold on CSS/Change Name Color.asm +7FA3EB78 48000039 +2C030000 4182012C +807B0000 38800000 +3CA0FFD7 60A50000 +90A10100 38A10100 +3D80803A 618C74F0 +7D8903A6 4E800421 +48000100 7C0802A6 +90010004 9421FF50 +BE810008 7C7D1B78 +3FE08047 63FF9DA4 +1FDD00A8 7FDEFA14 +887F0004 2C030000 +418200B0 3C608046 +6063B6A0 886324D0 +889F0006 7C032000 +40820098 887E0058 +2C030003 4182008C +887F0004 2C030007 +40820040 887F0006 +2C030001 40820024 +887F0000 1C6300A8 +7C63FA14 8863005F +889E005F 7C032000 +41820058 4800005C +887F0000 7C03E800 +41820048 4800004C +887F0006 2C030001 +40820028 7FE3FB78 +3D808016 618C54A0 +7D8903A6 4E800421 +889E005F 7C032000 +41820020 48000014 +887E005D 2C030000 +41820010 48000004 +38600000 48000008 +38600001 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +880DB655 00000000 +C216EA30 00000004 #Common/Winners Names are Gold on CSS/Remember Who LRA Started.asm +981E0010 2C000007 +40820014 3C808046 +6084B6A0 88840001 +989E000C 00000000 +04261B1C 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm +04261B30 60000000 #External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm +042605FC 38C00003 #External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm +041239A8 60000000 #External/FreezeGlitchFix/FreezeGlitchFix.asm +C213C388 0000000A #Common/CostumeBoundCheck/PuffCostume.asm +83DC002C 887E000C +3D808003 618C2330 +7D8903A6 4E800421 +3D808016 618C9238 +7D8903A6 4E800421 +889E0619 7C041800 +40800008 48000014 +3D808013 618CC46C +7D8903A6 4E800420 +809C002C 00000000 +C216DED4 00000039 #Common/CostumeBoundCheck/main.asm +7C0802A6 90010004 +9421FF50 BE810008 +3BE00000 7FE3FB78 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820060 +7FE3FB78 3D808003 +618C3198 7D8903A6 +4E800421 7C7E1B78 +7FE3FB78 3D808003 +618C2330 7D8903A6 +4E800421 3D808016 +618C9238 7D8903A6 +4E800421 7C1E1800 +4180001C 7FE3FB78 +38800000 3D808003 +618C3208 7D8903A6 +4E800421 3BFF0001 +2C1F0006 4180FF80 +3BE00000 7FE3FB78 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 418200EC +7FE3FB78 3D808003 +618C2330 7D8903A6 +4E800421 7C7E1B78 +7FE3FB78 3D808003 +618C3198 7D8903A6 +4E800421 7C7D1B78 +7FE3FB78 3D808003 +618C3284 7D8903A6 +4E800421 7C7C1B78 +3B600000 7C1FD800 +4182008C 7F63DB78 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820070 +7F63DB78 3D808003 +618C2330 7D8903A6 +4E800421 7C03F000 +40820054 7F63DB78 +3D808003 618C3198 +7D8903A6 4E800421 +7C03E800 40820038 +7F63DB78 3D808003 +618C3284 7D8903A6 +4E800421 7C03E000 +4082001C 38830001 +7F63DB78 3D808003 +618C32F4 7D8903A6 +4E800421 3B7B0001 +2C1B0006 4180FF68 +3BFF0001 2C1F0006 +4180FEF4 BA810008 +800100B4 382100B0 +7C0803A6 8001001C +60000000 00000000 + +$Required: Slippi Recording [Fizzi, Achilles, UnclePunch, Nikki, jmlee337] +*Saves replays, Slippi device must be in Slot B. +*To disable saving replays, visit the Slippi settings in Config > GameCube +040679BC 38802600 #Recording/ExtendPlayerBlock.asm +C23219EC 0000001C #Recording/FlushFrameBuffer.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 418200A0 +806DB64C 83C30000 +83ADB650 7F9EEA14 +2C1D0000 41820088 +3860003C 987C0000 +806DB654 907C0001 +3C608048 80639D30 +5463443E 2C030208 +806DB654 40820034 +80ADB61C 8885000D +2C040000 40820024 +8885000C 2C040000 +40820018 808507B3 +3884FF85 7C041800 +40800008 7C832378 +907C0005 3BBD0009 +7FC3F378 7FA4EB78 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 38600000 +906DB650 BA810008 +800100B4 382100B0 +7C0803A6 8001001C +60000000 00000000 +C216D884 0000001C #Recording/SendGameEnd.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 418200A0 +3F208046 6339B6A0 +8B590008 2C1A0000 +4182008C 830DB64C +88780004 2C030000 +4082007C 3C608048 +80639D30 5463443E +2C030208 4082001C +2C1A0002 40820014 +806DB61C 8863000C +2C030000 41820050 +83B80000 38600039 +987D0000 9B5D0001 +2C1A0007 4082000C +88790001 48000008 +3860FFFF 987D0002 +7FA3EB78 38800003 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 38600001 +98780004 BA810008 +800100B4 382100B0 +7C0803A6 819F2514 +60000000 00000000 +C216E74C 000000E3 #Recording/SendGameInfo.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 418206DC +38600005 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7B1B78 +936DB64C 38800005 +3D808000 618CC160 +7D8903A6 4E800421 +38600702 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7E1B78 +93DB0000 38600000 +906DB650 3C608000 +60635600 80630000 +38630008 38800000 +3D808000 618C55FC +7D8903A6 4E800421 +7C7C1B78 38600035 +987E0000 3860001C +987E0001 38600036 +987E0002 38600248 +B07E0003 38600037 +987E0005 3860003F +B07E0006 38600038 +987E0008 3860004C +B07E0009 38600039 +987E000B 38600002 +B07E000C 3860003A +987E000E 38600008 +B07E000F 3860003B +987E0011 3860002A +B07E0012 3860003C +987E0014 38600008 +B07E0015 3860003D +987E0017 B39E0018 +38600010 987E001A +38600204 B07E001B +38600036 987E001D +3C600309 60630000 +907E001E 387E0022 +7FE4FB78 38A00138 +3D808000 618C31F4 +7D8903A6 4E800421 +387E0062 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +387E0022 3AA30060 +3A800000 1ED40024 +7ED6AA14 88760001 +2C030000 40820034 +88760000 2C030012 +40820028 3C60804C +606320BC 1C940044 +7C632214 80630000 +546005EF 4182000C +38600013 98760000 +3A940001 2C140004 +4180FFB4 387E0022 +3AA30060 3A800000 +1ED40024 7ED6AA14 +88760001 2C030000 +4082002C 88760000 +3D808016 618C9238 +7D8903A6 4E800421 +88960003 7C041800 +4081000C 38600000 +98760003 3A940001 +2C140004 4180FFBC +3C60804D 80635F90 +907E015A 3A82F228 +3AA00000 3ADE015E +1EF50008 38600001 +7C76B92E 3AF70004 +7C76B92E 3AB50001 +2C150004 4180FFE4 +3A800000 3ABF0060 +3AFE017E 1F140010 +7F18BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820040 +8876000A 2C030078 +41820034 3D808023 +618C754C 7D8903A6 +4E800421 7C641B78 +7F03C378 38A00010 +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +38800010 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FF88 +8862F234 987E01BE +8862F23C 987E01BF +3C608048 80639D30 +5463443E B07E01C0 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C791B78 +3A800000 3ABF0060 +3AFE01C2 3B590034 +1C74001F 7F03BA14 +1ED40024 7ED6AA14 +88760001 2C030000 +40820028 1C74001F +7C83D214 7F03C378 +38A0001F 3D808000 +618C31F4 7D8903A6 +4E800421 4800001C +7F03C378 3880001F +3D808000 618CC160 +7D8903A6 4E800421 +3A940001 2C140004 +4180FFA0 3A800000 +3ABF0060 3AFE023E +3B5900EF 1C74000A +7F03BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820028 +1C74000A 7C83D214 +7F03C378 38A0000A +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +3880000A 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FFA0 +7F23CB78 3D808037 +618CF1B0 7D8903A6 +4E800421 7FC3F378 +38800266 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38600205 3D808037 +618CF1E4 7D8903A6 +4E800421 7C751B78 +3C608000 60635600 +80630000 3AE30008 +38600010 98750000 +3860003D 98750203 +38600200 B0750201 +38600000 98750204 +3AC00000 7C76E050 +2C030200 41810010 +B0750201 38600001 +98750204 38750001 +7EE4BB78 7C84B214 +A0B50201 3D808000 +618C31F4 7D8903A6 +4E800421 7EA3AB78 +38800205 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +3AD60200 7C16E000 +4180FFA4 7EA3AB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +38600004 38800007 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 48000021 +7C8802A6 38A00000 +3D808038 618CFD54 +7D8903A6 4E800421 +48000064 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +806DB64C 83A30000 +838DB650 7FBDE214 +3860003A 987D0000 +806DB654 907D0001 +3C60804D 80635F90 +907D0005 838DB650 +3B9C0009 938DB650 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 38600004 +38800007 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +48000021 7C8802A6 +38A0000F 3D808038 +618CFD54 7D8903A6 +4E800421 48000124 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 806DB64C +83E30000 83CDB650 +7FFFF214 3B600000 +806DC18C 83A30024 +2C1D0000 418200D8 +3B7B0001 2C1B000F +418100CC 839D002C +3860003B 987F0000 +806DB654 907F0001 +807C0010 B07F0005 +807C0024 987F0007 +807C002C 907F0008 +807C0040 907F000C +807C0044 907F0010 +807C004C 907F0014 +807C0050 907F0018 +807C0C9C B07F001C +807C0D44 907F001E +807C001C 907F0022 +887C0DD7 987F0026 +887C0DDB 987F0027 +887C0DEB 987F0028 +887C0DEF 987F0029 +807C0518 2C030000 +41820018 8063002C +2C030000 4182000C +8863000C 48000008 +3860FFFF 987F002A +83CDB650 3BDE002B +93CDB650 3BFF002B +83BD0008 2C1D0000 +4082FF30 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +BA810008 800100B4 +382100B0 7C0803A6 +3C608017 00000000 +C206DA34 00000035 #Recording/SendGamePostFrame.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820168 +887F221F 546306F7 +4082015C 8B7F000C +806DB64C 83A30000 +838DB650 7FBDE214 +38600038 987D0000 +806DB654 907D0001 +9B7D0005 7FE3FB78 +3D808000 618C55F8 +7D8903A6 4E800421 +987D0006 807F0004 +987D0007 807F0010 +B07D0008 807F00B0 +907D000A 807F00B4 +907D000E 807F002C +907D0012 807F1830 +907D0016 807F1998 +907D001A 807F208C +987D001E A07F2090 +987D001F 807F18C4 +987D0020 7F63DB78 +3D808003 618C3BD8 +7D8903A6 4E800421 +987D0021 807F0894 +907D0022 887F2218 +987D0026 887F221A +987D0027 887F221B +987D0028 887F221C +987D0029 887F221F +987D002A 807F2340 +907D002B 807F00E0 +987D002F 807F083C +B07D0030 887F1968 +809F0168 7C632050 +987D0032 887F25FF +987D0033 807F1988 +2C030000 40820008 +807F198C 987D0034 +807F0080 907D0035 +807F0084 907D0039 +807F008C 907D003D +807F0090 907D0041 +807F00EC 907D0045 +807F195C 907D0049 +838DB650 3B9C004D +938DB650 BA810008 +800100B4 382100B0 +7C0803A6 8001001C +60000000 00000000 +C206B0DC 0000002B #Recording/SendGamePreFrame.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820118 +8B7F000C 806DB64C +83A30000 838DB650 +7FBDE214 38600037 +987D0000 806DB654 +907D0001 9B7D0005 +7FE3FB78 3D808000 +618C55F8 7D8903A6 +4E800421 987D0006 +3C60804D 80635F90 +907D0007 807F0010 +B07D000B 807F00B0 +907D000D 807F00B4 +907D0011 807F002C +907D0015 807F0620 +907D0019 807F0624 +907D001D 807F0638 +907D0021 807F063C +907D0025 807F0650 +907D0029 807F065C +907D002D 3C60804C +60631FAC 1C9B0044 +7C832214 A0640002 +B07D0031 80640030 +907D0033 80640034 +907D0037 3C608046 +6063B108 3C80804C +60841F78 88840001 +3884FFFF 2C040000 +40A00008 38840005 +1C840030 7C632214 +1C9B000C 7C632214 +88630002 987D003B +807F1830 907D003C +838DB650 3B9C0040 +938DB650 BA810008 +800100B4 382100B0 +7C0803A6 881F2219 +60000000 00000000 +C2005604 00000007 #Recording/ShouldRecord.asm +3C608048 80639D30 +5463443E 2C030202 +41820014 2C030208 +4182000C 38600000 +4800000C 38600001 +48000004 4E800020 +60000000 00000000 +C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm +7C050000 4080000C +38E00001 48000008 +38E00002 8103002C +98E825FF 7C050000 +60000000 00000000 +C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm +38600000 987E25FF +807E00B0 00000000 +C20055F8 0000000F #Common/GetIsFollower.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7E1B78 3BE00000 +887E221F 5460EFFF +41820038 887E000C +3D808003 618C2330 +7D8903A6 4E800421 +3C80803B 6084CDE0 +1C030003 7C640214 +88030002 2C000000 +40820008 3BE00001 +7FE3FB78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C216D294 00000006 #Common/IncrementFrameIndex.asm +987F0008 3C608048 +80639D58 2C030000 +40820010 3860FF85 +906DB654 48000010 +806DB654 38630001 +906DB654 00000000 +C20055F4 00000007 #Common/IntToFloat.asm +9421FF00 D0410008 +3C004330 C84298A8 +6C638000 900100F0 +906100F4 C82100F0 +EC211028 C0410008 +38210100 4E800020 +60000000 00000000 +C20056A4 00000022 #Common/LoadPremadeText.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +3B800004 7F83E378 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7D1B78 7F84E378 +3D808000 618CC160 +7D8903A6 4E800421 +386000E1 48000055 +839D0000 7FA3EB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7F83E378 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7D1B78 +386000E2 4800001D +7FA3EB78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +987D0000 9BFD0001 +9BDD0002 7FA3EB78 +38800003 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FA3EB78 7F84E378 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C20055EC 00000008 #Common/MultiplyRWithF.asm +7C0802A6 90010004 +9421FF50 BE810008 +3D808000 618C55F4 +7D8903A6 4E800421 +EC2100B2 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C20056B4 00000059 #Common/SubtextFunctions.asm +2C050002 418201F8 +7C0802A6 90010004 +9421FF50 BE810008 +7C751B78 7C962378 +7CB82B78 7CD93378 +90E10038 9101003C +91210040 91410044 +91610048 9181004C +FEA00890 FEC01090 +FEE01890 FF202890 +FF403090 2C180001 +418000FC 39E00004 +FC20B090 FC40B890 +2C0F0001 41820020 +2C0F0002 41820020 +2C0F0003 41820020 +2C0F0004 41820020 +48000024 EC21D028 +4800001C EC21D02A +48000014 EC42D028 +4800000C EC42D02A +48000004 7EA3AB78 +80810038 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 +7D8903A6 4E800421 +7F25CB78 2C0F0000 +40820008 7EC5B378 +7EA3AB78 7EE4BB78 +3D80803A 618C74F0 +7D8903A6 4E800421 +7EA3AB78 7EE4BB78 +80A10038 80C1003C +80E10040 81010044 +81210048 8141004C +3D80803A 618C70A0 +7D8903A6 4E800421 +2C0F0000 4182000C +39EFFFFF 4BFFFF14 +48000094 7EA3AB78 +80810038 FC20B090 +FC40B890 3D80803A +618C6B98 7D8903A6 +4E800421 7C771B78 +7EA3AB78 7EE4BB78 +FC20A890 FC40A890 +3D80803A 618C7548 +7D8903A6 4E800421 +7EA3AB78 7EE4BB78 +7EC5B378 3D80803A +618C74F0 7D8903A6 +4E800421 7EA3AB78 +7EE4BB78 80A10038 +80C1003C 80E10040 +81010044 81210048 +8141004C 3D80803A +618C70A0 7D8903A6 +4E800421 7EE3BB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C7D1B78 +7C9C2378 7CDB3378 +FEC00890 FEE01090 +FF001890 FEA02090 +4800008D 7F4802A6 +38600000 7F64DB78 +C01A0000 FC20B090 +FC40B890 FC60C090 +C09A0004 C0BA0008 +3D80803A 618C5ACC +7D8903A6 4E800421 +7C751B78 2C1C0000 +41820010 38600001 +986DAFEC 7F86E378 +7EA3AB78 7FA4EB78 +FC00A890 D0030024 +D0030028 3D80803A +618C6368 7D8903A6 +4E800421 7EA3AB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +41100000 44160000 +41A00000 00000000 +041D460C 809F00EC #Common/Preload Stadium Transformations/Core/GetPreloadedTransition.asm +C21D14C8 00000002 #Common/Preload Stadium Transformations/Core/Init isLoaded Bool.asm +38600000 987F00F0 +3BA00001 00000000 +C21D45EC 00000019 #Common/Preload Stadium Transformations/Core/Load Transformation.asm +887F00F0 2C030000 +408200B8 38600004 +3D808038 618C0580 +7D8903A6 4E800421 +5460103A A87F00E2 +3C80803B 60847F9C +7C84002E 7C032000 +4182FFD4 909F00EC +2C040003 4082000C +38800000 48000034 +2C040004 4082000C +38800001 48000024 +2C040009 4082000C +38800002 48000014 +2C040006 40820000 +38800003 48000004 +3C60803E 60631248 +5480103A 7C630214 +806303D8 809F00CC +38BF00C8 3CC0801D +60C64220 38E00000 +3D808001 618C6580 +7D8903A6 4E800421 +38600001 987F00F0 +807F00D8 00000000 +C21D4F14 00000002 #Common/Preload Stadium Transformations/Core/Reset isLoaded.asm +38600000 987F00F0 +806DB2D8 00000000 +041D4610 4800004C #Common/Preload Stadium Transformations/Core/SkipNormalDecision1.asm +041D4724 4800003C #Common/Preload Stadium Transformations/Core/SkipNormalDecision2.asm +044DEC18 01000000 #Common/Preload Stadium Transformations/Toggle/PsPreloadToggleEnable.asm +C21C154C 00000004 #Common/Initialize Stage Data/Init Stage Data.asm +38800204 3D808000 +618CC160 7D8903A6 +4E800421 281A0000 +60000000 00000000 +C2068EEC 00000006 #Common/Initialize Player Data/Init Player Data.asm +3BC30000 3C808045 +60848FD0 80840020 +3D808000 618CC160 +7D8903A6 4E800421 +7FC3F378 3C808046 +60000000 00000000 +C216EBAC 0000000C #Common/CSS KO Stars/Asign KO Stars Upon Exiting Dairantou.asm +3C608047 60639D30 +88630000 2C030002 +40820040 3C60803D +6063DA00 3D80801A +618C5F00 7D8903A6 +4E800421 3C60803D +6063DA00 808D8840 +38840590 38A00001 +3D80801A 618C5F64 +7D8903A6 4E800421 +8001001C 83E10014 +60000000 00000000 + +$Required: Slippi Online [Fizzi, UnclePunch] +*Adds online mode, Slippi device must be in Slot B. +*Change settings in Config > GameCube +C206A880 00000018 #Online/Core/BrawlOffscreenDamage.asm +7C0802A6 90010004 +9421FF50 BE810008 +887F221F 54630673 +40820088 807F0010 +2C030004 4182007C +2C030006 41820074 +3D808022 618C4A54 +7D8903A6 4E800421 +C05F00B0 FC020840 +41800060 3D808022 +618C4A68 7D8903A6 +4E800421 C05F00B0 +FC020840 41810044 +3D808022 618C4A80 +7D8903A6 4E800421 +C05F00B4 FC020840 +41810028 3D808022 +618C4A98 7D8903A6 +4E800421 C05F00B4 +FC020840 4180000C +38600000 48000008 +38600001 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C21A4DB4 0000001C #Online/Core/ForceEngineOnRollback.asm +3C608048 80639D30 +5463443E 2C030208 +408200B0 3C608047 +60639D64 80630000 +2C030000 4082009C +3D808034 618C7364 +7D8903A6 4E800421 +7C7A1B78 80ADB61C +2C1B0000 41810014 +888500D9 2C040000 +41820038 3B600001 +888500D9 988507A9 +808500DB 908507AA +888500DA 988507AE +80850237 908507AF +808500D5 80840002 +908507B3 48000028 +888507B7 2C040000 +4182001C 38800000 +988507B7 3D808001 +618C95FC 7D8903A6 +4E800421 7F43D378 +3D808034 618C738C +7D8903A6 4E800421 +2C1B0000 40820014 +3D80801A 618C4DA8 +7D8903A6 4E800420 +60000000 00000000 +C216D310 00000009 #Online/Core/HandleLRAS.asm +3C608048 80639D30 +5463443E 2C030208 +40820028 3C608046 +6063B6A0 88630008 +2C030007 40820014 +808DB61C 806407A5 +7C6903A6 4E800421 +8001003C 83E10034 +60000000 00000000 +C234DED8 0000000F #Online/Core/HandleRumble.asm +3BA30000 3C608048 +80639D30 5463443E +2C030208 4082005C +7C0802A6 90010004 +9421FF50 BE810008 +83EDB61C 887F0000 +7C03E800 41820024 +BA810008 800100B4 +382100B0 7C0803A6 +3D808034 618CDF44 +7D8903A6 4E800420 +887F0002 BA810008 +800100B4 382100B0 +7C0803A6 7C7D1B78 +60000000 00000000 +C216E748 00000070 #Online/Core/InitOnlinePlay.asm +3D808022 618C54B8 +7D8903A6 4E800421 +7C0802A6 90010004 +9421FF50 BE810008 +3C608048 80639D30 +5463443E 2C030208 +40820338 386007BC +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7B1B78 388007BC +3D808000 618CC160 +7D8903A6 4E800421 +936DB61C 38600001 +907B0003 4800023D +7C6802A6 907B07A5 +38600012 3D808037 +618CF1E4 7D8903A6 +4E800421 907B00D1 +3860010A 3D808037 +618CF1E4 7D8903A6 +4E800421 907B00D5 +7C7A1B78 3880010A +3D808000 618CC160 +7D8903A6 4E800421 +38600021 3D808037 +618CF1E4 7D8903A6 +4E800421 7C791B78 +933B024A 3860009E +3D808037 618CF1E4 +7D8903A6 4E800421 +907B024E 3880009E +3D808000 618CC160 +7D8903A6 4E800421 +38800000 98830000 +38800007 98830001 +93790005 386007BC +90790009 9359000D +3860010A 90790011 +807B024E 90790015 +3860009E 90790019 +38600000 9079001D +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C781B78 +886DAEF8 987B0002 +88780003 987B0000 +88780004 987B0001 +80780005 907B0007 +3C80804D 90645F90 +7FE3FB78 38980208 +38A00138 3D808000 +618C31F4 7D8903A6 +4E800421 886DAFA0 +2C030003 40820048 +3AE00000 1CB70024 +38650069 7C7F18AE +38630001 38850060 +7C9F20AE 3D808000 +618C56B0 7D8903A6 +4E800421 1C970024 +38840063 7C7F21AE +3AF70001 2C170004 +4180FFC4 88780009 +2C030001 41800010 +2C03000F 41810010 +48000010 38600001 +48000008 3860000F +987B001B 38A00000 +3C60804C 606320BC +1C850044 7C632214 +38800000 90830000 +38A50001 2C050004 +4180FFE0 38600004 +38800007 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +48000021 7C8802A6 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 480000EC +4E800021 3C608048 +80639D60 5464803E +806DB61C 80630007 +7C841A14 3C60804D +90835F90 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 838DB61C +886DAFA0 2C030001 +4082008C 38600011 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7E1B78 386000BD +987E0000 807C0003 +907E0001 3BE00000 +3BBE0005 7FE3FB78 +3D808003 618C1724 +7D8903A6 4E800421 +38800001 989D0000 +8883008E 989D0001 +80830D28 909D0002 +3BFF0001 3BBD0006 +2C1F0002 4180FFC8 +7FC3F378 38800011 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C216E904 0000003F #Online/Core/InitPause.asm +3C608048 80639D30 +5463443E 2C030208 +408201DC 3D808046 +618CDB68 886C0002 +54630739 41820028 +48000029 7C6802A6 +906C0040 38600000 +986DAFC8 886C0002 +38800000 50831F38 +986C0002 480001A0 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 83ADB61C +8BDD0001 3C80804C +60841FAC 1C7E0044 +7C632214 80630000 +54600673 4182001C +546006B5 41820014 +546005EF 4182000C +546004E7 40820058 +8BDD0000 3C80804C +60841FAC 1C7E0044 +7FE32214 807F0000 +54600673 4182001C +546006B5 41820014 +546005EF 4182000C +546004E7 40820020 +886DAFC8 2C030000 +418200A0 807F0008 +546004E7 40820064 +480000E4 38600002 +3D808002 618C4030 +7D8903A6 4E800421 +3D808037 618C8330 +7D8903A6 4E800421 +3C608046 6063B6A0 +9BC30001 7FC3F378 +38800007 3D808016 +618CCF4C 7D8903A6 +4E800421 38600003 +3C808046 6084B6A0 +98640000 48000088 +38600000 986DAFC8 +3D80802F 618C33CC +7D8903A6 4E800421 +7FC3F378 3D80801A +618C10FC 7D8903A6 +4E800421 48000058 +807F0008 546004E7 +4182004C 38600001 +986DAFC8 3D80802F +618C3394 7D8903A6 +4E800421 7FC3F378 +38800005 3D80801A +618C0FEC 7D8903A6 +4E800421 38600005 +3D808002 618C4030 +7D8903A6 4E800421 +48000004 3860FFFF +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 881F0001 +60000000 00000000 +C21A5014 0000004F #Online/Core/LoopEngineForRollback.asm +41A20014 3D80801A +618C5024 7D8903A6 +4E800420 3C608048 +80639D30 5463443E +2C030208 40820250 +3C608047 60639D64 +80630000 2C030000 +4082023C 7C0802A6 +90010004 9421FF50 +BE810008 3D808034 +618C7364 7D8903A6 +4E800421 7C7D1B78 +83EDB61C 3BDF0252 +8B9E0000 3F008048 +83189D60 3B18FFFF +82FF07A1 7C18B800 +4181009C 7C78B850 +38630001 8B9E0000 +7F83E051 40800008 +3B9C0007 387E0001 +1C9C00C2 7F432214 +3B200000 48000060 +38DA0000 38E00000 +48000028 1C790006 +7C651A14 A0630001 +1C870006 7C862214 +A0840001 7C032000 +41820030 38E70001 +88660000 2C070003 +4180FFD4 1C790006 +7C651A14 80630003 +3D808002 618C36B8 +7D8903A6 4E800421 +3B390001 38BA0061 +88650000 7C191800 +4180FF98 387E0001 +1C9C00C2 7F432214 +387A0061 389A0000 +38A00061 3D808000 +618C31F4 7D8903A6 +4E800421 387A0000 +38800061 3D808000 +618CC160 7D8903A6 +4E800421 7C18B800 +4081001C 931F07A1 +3B9C0001 2C1C0007 +41800008 3B9CFFF9 +9B9E0000 7FA3EB78 +3D808034 618C738C +7D8903A6 4E800421 +8B7F07A9 2C1B0001 +408200CC 48000025 +BA810008 800100B4 +382100B0 7C0803A6 +3D80801A 618C4DE4 +7D8903A6 4E800420 +7C0802A6 90010004 +9421FF50 BE810008 +3D808003 618C0A50 +7D8903A6 4E800421 +3D808002 618CA4AC +7D8903A6 4E800421 +3D808003 618C0A50 +7D8903A6 4E800421 +80630028 3D808036 +618C8458 7D8903A6 +4E800421 806DC18C +82830020 4800002C +82B4002C 8875221F +546006F7 40820018 +7E83A378 3D808008 +618C6A8C 7D8903A6 +4E800421 82940008 +2C140000 4082FFD4 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C216EA30 00000004 #Online/Core/Remember Who LRA Started.asm +981E0010 2C000007 +40820014 3C808046 +6084B6A0 88840001 +989E000C 00000000 +C2376A20 0000000A #Online/Core/SkipNewInputFetchOnRollback.asm +3C608048 80639D30 +5463443E 2C030208 +40820038 3C608047 +60639D64 80630000 +2C030000 40820024 +806DB61C 886300D9 +2C030001 40820014 +3D808037 618C6A28 +7D8903A6 4E800420 +3861002C 00000000 +C21A4DE4 0000005C #Online/Core/StartEngineLoop.asm +3D808037 618CE214 +7D8903A6 4E800421 +48000030 4E800021 +00000000 3F800000 +3FA66666 C2340000 +3D8F5C29 FF0000FF +44495343 4F4E4E45 +43544544 00000000 +7C0802A6 90010004 +9421FF50 BE810008 +3C608048 80639D30 +5463443E 2C030208 +4082026C 3C608047 +60639D64 80630000 +2C030000 40820258 +834DB61C 3F608048 +837B9D60 3D808034 +618C7364 7D8903A6 +4E800421 7C791B78 +887A000E 2C030000 +408200D0 887A000D +2C030000 418200C4 +38600003 3D808002 +618C4030 7D8903A6 +4E800421 4BFFFF51 +7EE802A6 38600002 +809A07B8 3D80803A +618C6754 7D8903A6 +4E800421 7C781B78 +38800001 98980049 +38800001 9898004A +C0370000 D0380008 +C0370004 D0380024 +D0380028 C0370008 +C057000C 7F03C378 +38970018 3D80803A +618C6B98 7D8903A6 +4E800421 7F03C378 +38800000 C0370010 +C0570010 3D80803A +618C7548 7D8903A6 +4E800421 7F03C378 +38800000 38B70014 +3D80803A 618C74F0 +7D8903A6 4E800421 +38600001 987A000E +887A07A9 2C030000 +418200B8 887A07AE +2C030000 41820084 +807A024A 809A07AF +80BA024E 3D808000 +618C560C 7D8903A6 +4E800421 3D808001 +618C9894 7D8903A6 +4E800421 3CA0804C +60A51F78 88850002 +7C832051 4080000C +88650000 7C841A14 +98850002 38600000 +98650003 3F608048 +837B9D60 807A0237 +907A0003 38600000 +987A0236 987A0247 +987A0248 987A0249 +987A00DA 987A07AE +3D808001 618C95FC +7D8903A6 4E800421 +807A07AA 7C1B1800 +41800010 38600000 +987A00D9 987A07A9 +887A0236 2C030000 +4182002C 807A0237 +7C1B1800 41800020 +807A024A 7F64DB78 +80BA024E 3D808000 +618C5608 7D8903A6 +4E800421 887A000C +2C030001 4182004C +3C608046 6063B6A0 +88630008 2C030000 +40820010 38600000 +987A000B 4800002C +887A000B 38630001 +987A000B 2C030007 +40810018 38600001 +987A000C 807A07A5 +7C6903A6 4E800421 +7F23CB78 3D808034 +618C738C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C2376A28 000000DD #Online/Core/TriggerSendInput.asm +7C0802A6 90010004 +9421FF50 BE810008 +3C608048 80639D30 +5463443E 2C030208 +408206B0 3C608047 +60639D64 80630000 +2C030000 4082069C +836DB61C 833B00D1 +831B00D5 82FB024A +835B0003 887B00D9 +2C030001 418205F8 +887B001B 38800054 +7C632050 2C1A0003 +4080001C 386100DC +38800030 3D808000 +618CC160 7D8903A6 +4E800421 889B0002 +1C84000C 386400E6 +7C6118AE 7C630774 +2C03FFFD 40820024 +386400DC 7C611A14 +389B000F 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +889B0002 1C84000C +388400DC 387B000F +7C812214 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +386000B0 98790000 +93590001 887B001B +98790005 889B0002 +1C84000C 388400DC +38790006 7C812214 +38A0000C 3D808000 +618C31F4 7D8903A6 +4E800421 7F23CB78 +38800012 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38780000 3880010A +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 88780000 +2C030002 4182001C +2C030003 41820008 +48000030 38600001 +987B000D 48000024 +BA810008 800100B4 +382100B0 7C0803A6 +3D808037 618C6CEC +7D8903A6 4E800420 +889B001C 1C84000C +3884001D 887B0000 +1C63000C 386300DC +7C611A14 7C9B2214 +38A0000C 3D808000 +618C31F4 7D8903A6 +4E800421 887B00DF +1C63000C 386300E0 +889B0000 1C84000C +388400DC 7C7B1A14 +7C812214 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +887B00DF 38630001 +2C030007 41800008 +38600000 987B00DF +887B001C 1C63000C +3863001D 7C7B1A14 +38990006 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +889B001B 887B001C +38630001 7C032000 +41800008 38600000 +987B001C 887B0236 +2C030000 40820018 +38600000 987B0247 +987B0248 987B0249 +48000284 3A800000 +38D40247 7C66D8AE +2C030001 40820178 +1CD40004 38C60002 +7C66C02E 1CD40004 +38C6023B 7C86D82E +7C641851 41800158 +7C761B78 38D40134 +7C66D8AE 38D40137 +7C86D8AE 7EC3B378 +1C63000C 3863000E +1CD40054 7C633214 +38D40134 7C86D8AE +1C84000C 3884013A +1CB40054 7C842A14 +7CD81A14 7CFB2214 +88660000 88870000 +546306FE 548406FE +7C032000 408200BC +88660001 88870001 +5463067E 5484067E +7C032000 408200A4 +80660002 80870002 +7C032000 40820094 +38A00005 38A50001 +2C050008 40800028 +7C6530AE 7C8538AE +2C03002A 4181000C +2C04002A 4081FFE0 +7C032000 40820064 +4BFFFFD4 1CD40004 +38C6023B 7C66D82E +38630001 7C66D92E +38D40134 7C66D8AE +38630001 2C030007 +41800008 3863FFF9 +7C66D9AE 38D40134 +7C66D8AE 38D40137 +7C86D8AE 38D40134 +7C66D8AE 38D40137 +7C86D8AE 7C041800 +4082FEC0 48000040 +1CD40004 38C6023B +7C66D82E 38600001 +987B00D9 987B00DA +935B00DB BA810008 +800100B4 382100B0 +7C0803A6 3D808037 +618C6CEC 7D8903A6 +4E800420 3A940001 +2C140003 4180FE74 +3AA00000 3A800000 +807B0237 7C761B78 +7EC3B378 38D40247 +7C86D8AE 7C761B78 +7EC3B378 38D40247 +7C86D8AE 2C040001 +40820030 1CD40004 +38C6023B 7C86D82E +2C150000 4182000C +7C041800 40800014 +7C832378 7C761B78 +7EC3B378 3AA00001 +3A940001 2C140003 +4180FFAC 907B0237 +3A800000 38D40247 +7C86D8AE 2C040001 +40820038 38D40134 +7C66D8AE 38D40137 +7C86D8AE 38D40134 +7C66D8AE 38D40137 +7C86D8AE 7C041800 +40820010 38600000 +38D40247 7C66D9AE +3A940001 2C140003 +4180FFB4 3A800000 +38D40247 7C86D8AE +2C040001 41820018 +3A940001 2C140003 +4180FFE8 38600000 +987B0236 3A800000 +3AA00000 887B0000 +7C151800 40820008 +3AB50001 1CD40004 +38C60002 7C66C02E +7C7A1850 2C030000 +408000D4 887B001B +38800054 7C632050 +7C1A1800 418000BC +887B000C 2C030001 +418200B0 38D40137 +7EC6D8AE 1C76000C +3863013A 1CB40054 +7C632A14 1CD40054 +38C6000E 7C7B1A14 +7C983214 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +38760001 2C030007 +41800008 3863FFF9 +38D40137 7C66D9AE +38D40134 7C66D8AE +38D40137 7C86D8AE +38D40247 7C66D8AE +2C030001 4182003C +1CD40004 38C6023B +7F46D92E 38600001 +38D40247 7C66D9AE +38D40134 7EC6D9AE +887B0236 2C030001 +41820010 935B0237 +38600001 987B0236 +38600000 1C63000C +38A3000E 1CD40054 +7CA53214 1C75000C +386300DC 7C611A14 +7C982A14 38A0000C +3D808000 618C31F4 +7D8903A6 4E800421 +3A940001 3AB50001 +2C140003 4180FEC8 +48000080 807B00DB +7C1A1800 40810024 +BA810008 800100B4 +382100B0 7C0803A6 +3D808037 618C6CEC +7D8903A6 4E800420 +807B00DB 7C7A1850 +38630001 889B00DF +7C632051 40800008 +38630007 1C63000C +388300E0 887B0000 +1C63000C 386300DC +7C611A14 7C9B2214 +38A0000C 3D808000 +618C31F4 7D8903A6 +4E800421 4BFFFE40 +3B5A0001 935B0003 +BA810008 800100B4 +382100B0 7C0803A6 +2C1E0000 00000000 +C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm +38600080 3D808037 +618CF1E4 7D8903A6 +4E800421 906DAFC4 +38000000 00000000 +C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm +7C7E1B78 7C0802A6 +90010004 9421FF50 +BE810008 83EDAFC4 +2C1F0000 40820018 +BA810008 800100B4 +382100B0 7C0803A6 +480000A0 386000D1 +987F0000 387F0001 +7FC4F378 3D808032 +618C5A50 7D8903A6 +4E800421 7FC3F378 +3D808032 618C5B04 +7D8903A6 4E800421 +38830002 7FE3FB78 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FE3FB78 +38800004 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +7FE3FB78 BA810008 +800100B4 382100B0 +7C0803A6 80630000 +2C030000 40810014 +3D808001 618C6488 +7D8903A6 4E800420 +7FC3F378 00000000 +C20166B8 00000029 #Online/Core/EXIFileLoad/TransferFile.asm +7C7E1B78 7C0802A6 +90010004 9421FF50 +BE810008 83EDAFC4 +2C1F0000 41820110 +386000D1 987F0000 +387F0001 7FC4F378 +3D808032 618C5A50 +7D8903A6 4E800421 +7FC3F378 3D808032 +618C5B04 7D8903A6 +4E800421 38830002 +7FE3FB78 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FE3FB78 38800004 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 83BF0000 +2C1D0000 40810098 +93BC0000 386000D2 +987F0000 387F0001 +7FC4F378 3D808032 +618C5A50 7D8903A6 +4E800421 7FC3F378 +3D808032 618C5B04 +7D8903A6 4E800421 +38830002 7FE3FB78 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F63DB78 +7FA4EB78 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +38600001 3D808001 +618C674C 7D8903A6 +4E800420 BA810008 +800100B4 382100B0 +7C0803A6 7FC3F378 +60000000 00000000 +04019260 48000034 #Online/Core/Hacks/ForceNoDiskCrash.asm +C2376304 0000000B #Online/Core/Hacks/ForceNoVideoAssert.asm +48000031 7C6802A6 +7C040378 4CC63182 +3D808034 618C56A8 +7D8903A6 4E800421 +3D808037 618C6384 +7D8903A6 4E800420 +4E800021 58464220 +53746174 75732069 +73206E6F 7420342E +2056616C 75653A20 +25640A00 00000000 +C23A63A8 0000000C #Online/Core/Hacks/LoadPremadeTextDataFromDolphin.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C9D2378 7CDC3378 +886DAFEC 2C030000 +41820024 7FA3EB78 +7F84E378 3D808000 +618C56A4 7D8903A6 +4E800421 7C7E1B78 +93DF005C BA810008 +800100B4 382100B0 +7C0803A6 38600000 +986DAFEC 00000000 +04321D70 38600000 #Online/Core/Hacks/PreventCharacterCrowdChants.asm +C2019608 0000000E #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm +9421FFF8 3C608048 +80639D30 5463443E +2C030208 40820050 +3C608047 60639D64 +80630000 2C030000 +4082003C 3C608037 +60635E00 2C000003 +4082002C 80ADB61C +886500D9 2C030000 +4182001C 38600001 +986507B7 3D808001 +618C9618 7D8903A6 +4E800420 38600000 +60000000 00000000 +C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm +FFE00890 3D80801D +618C4FD8 7D8903A6 +4E800420 00000000 +04023FFC 38800000 #Online/Core/PreventFileAlarms/MuteMusic.asm +0438ADD0 4E800020 #Online/Core/PreventFileAlarms/PreventMusicAlarm.asm +C238D224 00000018 #Online/Core/Sound/AssignSoundInstanceId.asm +900DC0E8 3C608048 +80639D30 5463443E +2C030208 408200A4 +3C608047 60639D64 +80630000 2C030000 +40820090 7C0802A6 +90010004 9421FF50 +BE810008 83EDB61C +3BDF0252 8B9E0000 +3C608048 80639D60 +809F07A1 7C032000 +41810028 3C608048 +80639D60 809F07A1 +7C632050 38630001 +8B9E0000 7F83E051 +40800008 3B9C0007 +1C7C00C2 38DE0001 +7CC61A14 88660000 +3863FFFF 1C630006 +38A60001 7CA51A14 +807D000C 90650002 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C2088224 0000001D #Online/Core/Sound/NoDestroyVoice.asm +3C608048 80639D30 +5463443E 2C030208 +408200CC 7C0802A6 +90010004 9421FF50 +BE810008 83EDB61C +3BBF0252 57DE043E +8B9D0000 3C608048 +80639D60 809F07A1 +7C032000 41810088 +3C608048 80639D60 +809F07A1 7C632050 +38630001 8B9D0000 +7F83E051 40800008 +3B9C0007 1C7C00C2 +38DD0062 7CC61A14 +39000000 48000020 +1C680006 38A60001 +7CA51A14 A0650000 +7C1E1800 41820018 +39080001 88660000 +7C081800 4180FFDC +48000024 BA810008 +800100B4 382100B0 +7C0803A6 3D808008 +618C8244 7D8903A6 +4E800420 BA810008 +800100B4 382100B0 +7C0803A6 387F0000 +60000000 00000000 +C20882B0 0000001D #Online/Core/Sound/NoDestroyVoice2.asm +3C608048 80639D30 +5463443E 2C030208 +408200CC 7C0802A6 +90010004 9421FF50 +BE810008 83EDB61C +3BBF0252 57DE043E +8B9D0000 3C608048 +80639D60 809F07A1 +7C032000 41810088 +3C608048 80639D60 +809F07A1 7C632050 +38630001 8B9D0000 +7F83E051 40800008 +3B9C0007 1C7C00C2 +38DD0062 7CC61A14 +39000000 48000020 +1C680006 38A60001 +7CA51A14 A0650000 +7C1E1800 41820018 +39080001 88660000 +7C081800 4180FFDC +48000024 BA810008 +800100B4 382100B0 +7C0803A6 3D808008 +618C82D0 7D8903A6 +4E800420 BA810008 +800100B4 382100B0 +7C0803A6 387F0000 +60000000 00000000 +C238D0B0 0000002A #Online/Core/Sound/PreventDuplicateSounds.asm +3C608048 80639D30 +5463443E 2C030208 +40820134 3C608047 +60639D64 80630000 +2C030000 40820120 +7C0802A6 90010004 +9421FF50 BE810008 +83EDB61C 3BDF0252 +3BA00000 3B400000 +56FB043E 8B9E0000 +3C608048 80639D60 +809F07A1 7C032000 +41810070 3C608048 +80639D60 809F07A1 +7C632050 38630001 +8B9E0000 7F83E051 +40800008 3B9C0007 +1C7C00C2 38DE0062 +7CC61A14 39000000 +48000020 1C680006 +38A60001 7CA51A14 +A0650000 7C1B1800 +41820018 39080001 +88660000 7C081800 +4180FFDC 4800000C +83450002 3BA00001 +1C7C00C2 38DE0001 +7CC61A14 88660000 +2C030010 40800024 +1C630006 38A60001 +7CA51A14 B3650000 +93450002 88660000 +38630001 98660000 +2C1D0000 41820028 +7F43D378 BA810008 +800100B4 382100B0 +7C0803A6 3D808038 +618CD2A0 7D8903A6 +4E800420 BA810008 +800100B4 382100B0 +7C0803A6 2C1A0000 +60000000 00000000 +C2266BC4 00000006 #Online/Menus/CSS/DisableLRSTART.asm +3C608048 80639D30 +5463443E 2C030008 +40820014 3D808026 +618C6BF4 7D8903A6 +4E800420 38600000 +60000000 00000000 +C2261E5C 00000006 #Online/Menus/CSS/DisableNametagBox.asm +3C608048 80639D30 +5463443E 2C030008 +40820014 3D808026 +618C1F38 7D8903A6 +4E800420 C0210088 +60000000 00000000 +C2260310 00000008 #Online/Menus/CSS/FetchMatchInfo.asm +3C608048 80639D30 +5463443E 2C030008 +40820024 3C608000 +60635614 80630000 +80630000 3D808000 +618C5610 7D8903A6 +4E800421 38000000 +60000000 00000000 +C2263258 00000163 #Online/Menus/CSS/HandleInputsOnCSS.asm +41A20014 3D808026 +618C3334 7D8903A6 +4E800420 7C0802A6 +90010004 9421FF50 +BE810008 3C608048 +80639D30 5463443E +2C030008 40820ACC +7CFB3B78 3F008000 +63185614 83180000 +83580000 3B800000 +88780011 889A0001 +98980011 2C030001 +40820010 2C040000 +40820008 4800003C +88780012 889A0000 +98980012 2C030005 +41820010 2C040005 +40820008 48000024 +2C030004 40820010 +2C040004 41820008 +48000008 48000020 +38600000 48000008 +38600003 3D808002 +618C4030 7D8903A6 +4E800421 887A0000 +2C030000 40810020 +2C030003 40810084 +2C030004 41820088 +2C030005 418201E4 +480009F8 88780014 +2C030000 408209EC +576004E7 418209E4 +3C608048 80639D60 +2C030000 418209D4 +3860FFFF 986DAFC9 +38600000 986DAFCA +886DB657 2C030000 +418209B8 886DAFA0 +2C030001 41820010 +2C030002 40800014 +48000000 3860FFFE +48000359 48000994 +48000381 4800098C +576006F7 408203BD +48000980 3D80801A +618C3680 7D8903A6 +4E800421 548006F7 +41820024 88780013 +38630001 98780013 +2C030030 40810014 +9B980013 48000385 +48000948 9B980013 +887A0001 2C030000 +408200EC 576004E7 +4082002C 886DAFA0 +2C030002 418000D8 +886DAFC9 2C030000 +408200CC 886DAFCA +2C030001 408200C0 +48000004 886DB657 +2C030000 418200B0 +3C608048 80639D60 +2C030000 418200A0 +886DAFA0 2C030001 +41820010 2C030002 +40800014 48000000 +3860FFFE 4800016D +4800007C 886DAFC9 +2C030000 4182001C +2C030001 41820008 +48000000 3860FFFF +48000149 48000058 +886DAFCA 2C030000 +41820018 806D8840 +38630598 A063001E +48000129 48000038 +888DAFA0 2C040003 +38600000 40820008 +38600001 808DB610 +98640018 38600001 +986DB656 480000F9 +7C6802A6 906DAFE8 +48000850 480002F9 +887A0001 889A0002 +7C632039 4182083C +BA810008 800100B4 +382100B0 7C0803A6 +3D808026 618C3264 +7D8903A6 4E800420 +576006F7 4082024D +48000810 7C0802A6 +90010004 9421FF50 +BE810008 38600014 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C791B78 386000B4 +98790000 886DAFA0 +98790001 38F90002 +3CC0804A 60C60740 +38800000 38A00000 +7C66222E 7C672B2E +38840003 38A50002 +2C050012 4180FFEC +7F23CB78 38800014 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 38600009 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C791B78 386000B5 +98790000 808DB610 +886DAEF8 1C630024 +7C841A14 88640070 +98790002 88640073 +98790003 38600001 +98790004 886DAFA0 +2C030003 41820010 +38600000 98790001 +4800001C 3C608000 +60635614 80630000 +8863001A 3863FFFF +98790001 2C1FFFFE +41820014 2C1FFFFF +41820018 2C1F0000 +4080001C 38600000 +38800003 4800001C +38600000 38800000 +48000010 7FE3FB78 +38800001 48000004 +B0790005 98990007 +886DAFA0 98790008 +7F23CB78 38800009 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +8A98001A 4BFFFECD +4BFFFE1D BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +38600001 986DAFA3 +4BFFFFB5 7C6802A6 +906DAFE8 880DB650 +980DB659 38000004 +980DB656 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +38600001 3D808037 +618CF1E4 7D8903A6 +4E800421 7C791B78 +386000BA 98790000 +7F23CB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 2C1B0200 +40820008 B3780015 +2C1B0001 4182001C +2C1B0002 41820014 +2C1B0008 4182000C +2C1B0004 4082001D +B3780015 88780014 +2C030000 4082000C +7F63DB78 480000B9 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C6E1B78 +7C0802A6 90010004 +9421FF50 BE810008 +38600002 3D808037 +618CF1E4 7D8903A6 +4E800421 7C791B78 +386000BB 98790000 +7DC37378 98790001 +7F23CB78 38800002 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +386000B7 3880007F +38A00040 3D808002 +618C37A8 7D8903A6 +4E800421 7F63DB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C6E1B78 +7C0802A6 90010004 +9421FF50 BE810008 +480003F1 7DE802A6 +38600002 3D808002 +618C4030 7D8903A6 +4E800421 7DC37378 +98780014 3860000A +3D808037 618CF1E4 +7D8903A6 4E800421 +7C771B78 3880000A +3D808000 618CC160 +7D8903A6 4E800421 +7DC37378 98770000 +7F03C378 90770006 +38600004 38800005 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C741B78 +80780004 80630000 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C751B78 +C02F0024 888DAFE0 +2C040000 41820008 +C02F0028 C04F002C +D0230038 D043003C +7E83A378 38800004 +7EA5AB78 3D808039 +618C0A70 7D8903A6 +4E800421 7E83A378 +3C808039 60841070 +38A00001 38C00080 +3D808039 618C069C +7D8903A6 4E800421 +7E83A378 38800004 +3CA08037 60A5F1B0 +7EE6BB78 3D808039 +618C0B68 7D8903A6 +4E800421 7E83A378 +48000031 7C8802A6 +38A00004 3D808038 +618CFD54 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C6E1B78 +7C0802A6 90010004 +9421FF50 BE810008 +820E002C 82EE0028 +8A300000 8A500001 +82700002 82B00006 +A2D50015 38600000 +B0750015 2C130000 +40820184 38600090 +7C721B78 98700001 +48000249 7DE802A6 +7E238B78 3D808000 +618C56AC 7D8903A6 +4E800421 7C741B78 +38600000 38800000 +3D80803A 618C6754 +7D8903A6 4E800421 +7C731B78 92700002 +38600001 38800000 +C02F0000 C04F0004 +98730049 9893004A +D0330008 D0530024 +D0530028 C04F0008 +886DAFE0 2C030000 +41820008 C04F000C +7E639B78 388F0034 +38A00000 38CF0030 +38EF0038 39140004 +C02F001C C06F0018 +3D808000 618C56B4 +7D8903A6 4E800421 +7C641B78 7C8A2378 +7C8B2378 386B0002 +C04F0020 3D808000 +618C55EC 7D8903A6 +4E800421 C06F0018 +EC63082A 2C0B0000 +4182001C 2C0B0001 +4182002C 2C0B0002 +4182001C 2C0B0003 +4182000C 38800008 +48000018 38800004 +48000010 38800002 +48000008 38800001 +7E238B78 3D808000 +618C56AC 7D8903A6 +4E800421 7C872378 +C04F0010 886DAFE0 +2C030000 41820008 +C04F0014 7E639B78 +388F0030 38A00000 +38CF0030 C02F001C +3D808000 618C56B4 +7D8903A6 4E800421 +7C6B1B78 386A0004 +7C0B1800 4082FF48 +480000C4 88750018 +2C030000 41820010 +88700001 2C03008A +41810068 2C160200 +40820008 48000070 +2C160000 41820054 +88750018 2C030003 +40800034 88750017 +2C030005 40800028 +38600000 98700001 +7E238B78 7EC4B378 +38A00004 7C632830 +7C632214 4BFFFBD1 +4800005C 38600003 +3D808002 618C4030 +7D8903A6 4E800421 +2C120000 41820010 +3A52FFFF 9A500001 +48000034 38600000 +98750014 7DC37378 +3D808039 618C0228 +7D8903A6 4E800421 +7E639B78 3D80803A +618C5CC4 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 00000000 +3DCCCCCD C3960000 +C3E20000 C38E8000 +C3DA8000 429E0000 +3EE66666 41C80000 +C1A00000 C20C0000 +C1840000 FFFFFFFF +FFEA2FFF 43686174 +3A202573 00000000 +BA810008 800100B4 +382100B0 7C0803A6 +3D808026 618C3334 +7D8903A6 4E800420 +BA810008 800100B4 +382100B0 7C0803A6 +60000000 00000000 +C21A3F9C 00000005 #Online/Menus/CSS/IncreaseTextHeap.asm +3C608048 80639D30 +5463443E 2C030008 +4082000C 38604800 +48000008 38602400 +60000000 00000000 +C2264534 000001E6 #Online/Menus/CSS/InitCSS.asm +3C608048 80639D30 +5463443E 2C030008 +40820F18 48000208 +4E800021 00000000 +3DCCCCCD 404CCCCD +413CCCCD 3F4CCCCD +C1600000 41C00000 +00000000 41F00000 +42480000 C2320000 +C1EC0000 C1BA0000 +40A00000 3D23D70A +428C0000 41B80000 +3F000000 42B40000 +42500000 42960000 +42C40000 42500000 +428C0000 42B00000 +42D40000 3ECCCCCD +43048000 43188000 +C3760000 C3020000 +C2480000 3EE66666 +33FF2FFF 3CBCFFFF +8E9196FF FFFFFFFF +FF0000FF 00556E72 +616E6B65 64004469 +72656374 0052616E +6B656400 5465616D +73002573 204D6F64 +65005365 6C656374 +20796F75 72206368 +61726163 74657200 +43686172 61637465 +72207365 6C656374 +65640050 72657373 +20535441 52542074 +6F202573 006C6F63 +6B20696E 00656E74 +65722063 6F646500 +73656172 63680073 +656C6563 74207374 +61676500 4C6F636B +65642069 6E005365 +61726368 696E6720 +666F7220 25730043 +6F6E6E65 6374696E +6720746F 20257300 +57616974 696E6720 +6F6E2025 73006F70 +706F6E65 6E74002D +2D2F2F2D 2D2F2F2D +2D2F2F2D 2D2F2F30 +30004572 726F7200 +506C6179 696E673A +00557365 20442D50 +61642074 6F204368 +61740050 72657373 +205A2074 6F202573 +00486F6C 64205A20 +746F2025 73006469 +73636F6E 6E656374 +0063616E 63656C00 +636C6561 72206572 +726F7200 817B0081 +7E00817C 00736C70 +4353532E 64617400 +736C7043 53530000 +4E800021 C2E00000 +41A00000 00000000 +3DCCCCCD 7C0802A6 +90010004 9421FF50 +BE810008 4BFFFDED +7FA802A6 3C60804D +606350D8 3C800200 +60840801 90830000 +888DAFA0 2C040002 +38800001 41800008 +38800002 4BFFFFAD +7C6802A6 3D808000 +618C5618 7D8903A6 +4E800421 4E800021 +38600004 38800005 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C761B78 +38600004 3D808037 +618CF1E4 7D8903A6 +4E800421 7C781B78 +38760000 38800004 +3CA08037 60A5F1B0 +38D80000 3D808039 +618C0B68 7D8903A6 +4E800421 38760000 +480002C1 7C8802A6 +38A00004 3D808038 +618CFD54 7D8903A6 +4E800421 3860001C +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7F1B78 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +3C608000 60635614 +93E30000 38600340 +3D808037 618CF1E4 +7D8903A6 4E800421 +907F0000 38600000 +38800000 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +939F0008 38800001 +989C0049 38800000 +989C004A C03D0000 +D03C0008 C03D0004 +D03C0024 D03C0028 +7F83E378 389D0090 +38A00000 C03D0044 +C05D003C C07D0040 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 C07D004C +4800012D C07D0050 +48000125 C07D0054 +4800011D 7F83E378 +389D008C 38A00000 +C03D0068 C05D003C +C07D006C 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7F83E378 389D008C +38A00000 C03D0068 +C05D003C C07D0070 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 7F83E378 +389D008C 38A00000 +C03D0044 C05D0078 +C07D0074 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7F83E378 389D0090 +38A00000 C03D0044 +C05D007C C07D0074 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 C07D0058 +480000C9 C07D005C +480000C1 C07D0060 +480000B9 C07D0064 +480000B1 4BFFFB7D +7E8802A6 387401D9 +3D808001 618C6BE0 +7D8903A6 4E800421 +389401E4 3D808038 +618C0358 7D8903A6 +4E800421 907F0004 +BA810008 800100B4 +382100B0 7C0803A6 +48000A48 7EA802A6 +FDA01890 7F83E378 +389D0090 38A00000 +C03D0068 C05D0048 +38FD0098 3D808000 +618C56B4 7D8903A6 +4E800421 7F83E378 +389D0090 38A00000 +C03D0080 C05D003C +FC606890 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7EA803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +7F83E378 389D0094 +38A00000 C03D0068 +C05D003C 38FD0098 +3D808000 618C56B4 +7D8903A6 4E800421 +7C7B1B78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 8363002C +4BFFFA69 7FA802A6 +3F808000 639C5614 +839C0000 83DC0000 +835C0008 38FD0163 +3CC0804A 60C60740 +38800000 38A00000 +7C66222E 7C672B2E +38840003 38A50002 +2C050012 4180FFEC +806DB620 38810080 +38A00024 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +80610080 3D808036 +618CF644 7D8903A6 +4E800421 80610080 +38800000 80BC0004 +80A50008 38C00000 +3D808036 618CFA10 +7D8903A6 4E800421 +C022AEC4 886DAFA0 +2C030003 40820008 +C022AEC8 80610080 +3D808036 618CF934 +7D8903A6 4E800421 +80610080 3D808037 +618C0780 7D8903A6 +4E800421 887E0000 +2C030004 41810054 +38800000 38BD00B6 +886DAFA0 2C030001 +41820020 2C030002 +41820020 2C030000 +41820020 2C030003 +41820020 48000024 +38DD0099 48000020 +38DD00A2 48000018 +38DD00A9 48000010 +38DD00B0 48000008 +38BD0176 4800081D +887E000A 2C030000 +4182001C 3B1E0015 +7C791B78 887C0018 +38630001 987C0018 +48000014 887E000B +2C030000 418201BC +7C791B78 887C0019 +2C030009 40810010 +38600000 987C0019 +418201A0 386000B7 +3880007F 38A00040 +3D808002 618C37A8 +7D8903A6 4E800421 +887C0017 38630001 +987C0017 3860000D +3D808037 618CF1E4 +7D8903A6 4E800421 +7C771B78 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +38600014 38800000 +98770000 98970001 +7F23CB78 98770002 +887C0019 98770003 +38630001 987C0019 +887E000C 98770008 +7F83E378 90770009 +38600004 38800005 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C761B78 +807C0004 80630004 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C651B78 +7EC3B378 888DC1A9 +3D808039 618C0A70 +7D8903A6 4E800421 +7EC3B378 3C808039 +60841070 38A00003 +38C00080 3D808039 +618C069C 7D8903A6 +4E800421 80760028 +809C0004 80840004 +38A00000 3D808016 +618C895C 7D8903A6 +4E800421 80760028 +C022AE28 3D808036 +618CF8BC 7D8903A6 +4E800421 886DAFE0 +2C030000 41820010 +C03D0014 80760028 +D0230038 7EC3B378 +38800004 3CA08037 +60A5F1B0 7EE6BB78 +3D808039 618C0B68 +7D8903A6 4E800421 +7EC3B378 480003E1 +7C8802A6 38A00004 +3D808038 618CFD54 +7D8903A6 4E800421 +887E0000 2C030004 +4182000C 38BD0098 +48000008 38BD017C +38800009 48000615 +887E0000 2C030004 +4182000C 38BD0098 +48000008 38BE00B0 +3880000A 480005F5 +887E0000 2C030004 +4182000C 38BD0098 +48000008 38BD0185 +38800008 480005D5 +887E0000 2C030004 +41820034 2C030005 +41820020 2C030000 +4181000C 38BD0098 +48000024 38BD0197 +38DD01BD 48000018 +38BD0197 38DD01C4 +4800000C 38BD01A5 +38DD01B2 38800007 +48000589 3B600001 +7F64DB78 38BD0098 +48000579 3B7B0002 +2C1B0005 4081FFEC +3880000C 38600000 +7C7C21AE 38840001 +2C04000E 4081FFF4 +3B60000B 7F64DB78 +38BD0098 48000545 +3B7B0001 2C1B000E +4081FFEC 887E0000 +2C030005 408200A8 +3B60000B 3B200000 +3B000000 3AE00000 +3ADE0117 7EB6C8AE +56A00631 41820010 +3B390002 3B180001 +48000018 2C150020 +40820008 7F37CB78 +3B390001 3B180001 +2C150000 41820018 +2C18001E 41810008 +4800002C 38800000 +7C96B9AE 7F64DB78 +7EC5B378 480004C5 +3B7B0001 7ED6BA14 +3AD60001 3B200000 +3B000000 2C150000 +41820020 387E0208 +7C96CA14 7C041800 +40800010 2C1B000E +41810008 4BFFFF78 +4800014C 3B600001 +886DB657 7F64DB78 +2C030000 40820018 +38BD00BE 4800046D +38600001 987C000C +48000124 38BD00D4 +48000459 3B7B0002 +38600002 987C000C +887E0001 7F64DB78 +2C030000 40820080 +886DAFA0 2C030002 +41800034 887E0000 +2C030004 40820028 +886DAFC9 2C030000 +4082001C 886DAFCA +2C030000 40820010 +38BD00E7 38DD0113 +48000034 38BD00E7 +38DD00F9 887E0000 +2C030004 41820020 +38BD00E7 38DD010C +886DAFA0 2C030002 +4180000C 38BD00E7 +38DD0101 480003CD +38600001 987C000D +48000084 38BD0120 +480003B9 3B7B0002 +38600002 987C000D +887E0000 7F64DB78 +2C030004 4182004C +2C030003 41820024 +88ADAFA0 2C050001 +38BD012A 38DD015A +41820038 38BD012A +38DD0163 4800002C +88ADAFA0 2C050001 +38BD013B 38DD015A +41820018 38BD013B +38DD0163 4800000C +38BD014C 38DD015A +48000349 38600001 +987C000E 3B20000C +3B600002 7C7CC8AE +2C030001 40820044 +A07C000F 3880000F +7C632396 1C630003 +386301D0 7CBD1A14 +7F64DB78 4800030D +7F43D378 7F64DB78 +38BD0088 3D80803A +618C74F0 7D8903A6 +4E800421 48000044 +2C030002 40820030 +7F64DB78 38BD01D6 +480002D9 7F43D378 +7F64DB78 38BD0084 +3D80803A 618C74F0 +7D8903A6 4E800421 +48000010 7F64DB78 +38BD0098 480002AD +3B7B0002 3B390001 +2C19000E 4081FF68 +A07C000F 38630001 +2C03001E 41800008 +38600000 B07C000F +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +7C6E1B78 7C0802A6 +90010004 9421FF50 +BE810008 4BFFF365 +7FA802A6 820E002C +8A300000 8A500001 +8A700002 8A900003 +82B00004 8AF00008 +83900009 81EE0028 +81EF0010 7DE37B78 +3D808037 618C0928 +7D8903A6 4E800421 +2C150000 408200CC +7E83A378 3D808000 +618C55F4 7D8903A6 +4E800421 C05D0018 +C07D0008 EC6100F2 +EC421828 D04F003C +2C120000 4182009C +3A2000AA 9A300000 +3A400001 9A500001 +7C962378 7E83A378 +3D808000 618C55F4 +7D8903A6 4E800421 +C05D0030 C07D0008 +EC6100F2 EC42182A +FDE01090 806DC2DC +38800003 9883000E +C03D002C 886DAFE0 +2C030000 41820008 +C03D0028 38770001 +7E649B78 38A00002 +38C00000 C07D0034 +C09D0038 3D808000 +618C56B4 7D8903A6 +4E800421 90700004 +806DC2DC 38800001 +9883000E 48000004 +887C0017 2C030006 +41800028 887C0019 +7C03A000 4080000C +2C140009 408100B4 +887C0019 7C741850 +2C030006 418100A4 +2C110000 4082001C +2C120000 4182FF2C +2C120001 41820018 +2C120002 41820084 +3A31FFFF 9A300000 +480000D4 3A400002 +9A500001 3A200014 +9A300000 806E0028 +809C0004 80840004 +38A00001 3D808016 +618C895C 7D8903A6 +4E800421 806E0028 +C022AE28 3D808036 +618CF8BC 7D8903A6 +4E800421 8075005C +3D808037 618CF1B0 +7D8903A6 4E800421 +7EA3AB78 3D80803A +618C5CC4 7D8903A6 +4E800421 48000060 +7DC37378 3D808039 +618C0228 7D8903A6 +4E800421 809C0000 +88840003 7C172000 +40820010 887C0018 +3863FFFF 987C0018 +887C0017 3863FFFF +987C0017 887C0019 +7E84A378 38840001 +7C032000 41820008 +4800000C 38600000 +987C0019 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7EA802A6 7F43D378 +3D80803A 618C70A0 +7D8903A6 4E800421 +7EA803A6 4E800020 +80CDB638 00000000 +C22652F0 0000007C #Online/Menus/CSS/InitSheikSelector.asm +3C608048 80639D30 +5463443E 2C030008 +408203C0 48000058 +4E800021 00000000 +00000000 3DCCCCCD +C2C80000 43340000 +43520000 3F19999A +3ECCCCCD C0400000 +33FF2FFF FFFFFFFF +8E9196FF C193999A +C1AAE148 3FE3D70A +C1823D71 C15BAE14 +81692081 6A005300 +5A000000 7C0802A6 +90010004 9421FF50 +BE810008 38600004 +38800005 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +48000131 7C8802A6 +38A00004 3D808038 +618CFD54 7D8903A6 +4E800421 4BFFFF65 +7FE802A6 38600000 +38800000 3D80803A +618C6754 7D8903A6 +4E800421 7C7E1B78 +93DF0000 38800001 +989E0049 989E004A +989E004C 989E0048 +C03F0004 D03E0008 +C03F0008 D03E0024 +D03E0028 3860004A +C03F0010 48000025 +3860004C C03F0014 +48000019 BA810008 +800100B4 382100B0 +7C0803A6 480002A4 +7EE802A6 7C7A1B78 +FC600890 C03F000C +FC401890 7FC3F378 +389F0044 3D80803A +618C6B98 7D8903A6 +4E800421 7C641B78 +7FC3F378 C03F0018 +C05F0018 3D80803A +618C7548 7D8903A6 +4E800421 C03F0020 +EC43082A C03F000C +7FC3F378 7C9FD214 +3D80803A 618C6B98 +7D8903A6 4E800421 +7C641B78 7FC3F378 +C03F001C C05F001C +3D80803A 618C7548 +7D8903A6 4E800421 +7EE803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 4BFFFE3D +7FE802A6 83DF0000 +3C608043 6063208F +88630000 2C030012 +41820018 2C030013 +41820010 38600001 +987E004D 480001B0 +38600000 987E004D +808DB610 886DB650 +1C630024 7FA41A14 +3B800000 886DB656 +2C030000 408200EC +3C608000 60635614 +80630000 80630000 +88630001 2C030000 +408200D0 3C80804A +60840BC0 80840000 +C0240010 C05F0034 +887D0070 2C030013 +41820008 C05F0030 +FC011040 418100A4 +C07F0038 EC421828 +FC011040 41800094 +C024000C C05F003C +FC011040 41800084 +C05F0040 FC011040 +41810078 3B800001 +3C80804C 608420BC +886DB650 1C630044 +7C641A14 80630008 +546305EF 41820054 +887D0070 2C030013 +41820010 38600013 +987D0070 4800000C +38600012 987D0070 +3C80803F 60840CC8 +98640001 3D808016 +618C8C5C 7D8903A6 +4E800421 38600000 +3D808025 618CDB34 +7D8903A6 4E800421 +3B400000 3B3A0002 +887D0070 2C030013 +4182000C 3B200000 +3B590002 7FC3F378 +389A0000 38BF0024 +3D80803A 618C74F0 +7D8903A6 4E800421 +7FC3F378 389A0001 +38BF0028 3D80803A +618C74F0 7D8903A6 +4E800421 3B1F002C +2C1C0000 41820008 +3B1F0028 7FC3F378 +38990000 7F05C378 +3D80803A 618C74F0 +7D8903A6 4E800421 +7FC3F378 38990001 +7F05C378 3D80803A +618C74F0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +38600000 38980000 +60000000 00000000 +C22652F4 000000B8 #Online/Menus/CSS/InitTeamToggleButton.asm +3C608048 80639D30 +5463443E 2C030008 +40820590 888DAFA0 +2C040003 40820584 +4800002C 4E800021 +C0200000 C0A00000 +C1BC0000 C18C0000 +00000000 3F800000 +C19C0000 C0400000 +3DCCCCCD 7C0802A6 +90010004 9421FF50 +BE810008 3FC08000 +63DE5614 83DE0000 +4BFFFFBD 7FE802A6 +C3FF0010 C3DF0014 +38600004 3D808037 +618CF1E4 7D8903A6 +4E800421 7C771B78 +38800004 3D808000 +618CC160 7D8903A6 +4E800421 7FC3F378 +90770006 38600004 +38800005 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +7C741B78 806DB638 +80630030 80630008 +38800000 8063000C +38840001 2C040007 +4180FFF4 80630008 +3D808037 618C0E44 +7D8903A6 4E800421 +7C751B78 7EA3AB78 +809F0018 90830038 +809F001C 9083003C +809F0020 90830040 +806DB638 80630038 +80630000 38800000 +80630004 38840001 +2C040007 4180FFF4 +80A30000 7EA3AB78 +38800000 38C00000 +3D808036 618CFB5C +7D8903A6 4E800421 +7EA3AB78 FC20F890 +3D808036 618CF8BC +7D8903A6 4E800421 +7EA3AB78 3D808037 +618C0928 7D8903A6 +4E800421 7E83A378 +38800004 7EA5AB78 +3D808039 618C0A70 +7D8903A6 4E800421 +7E83A378 3C808039 +60841070 38A00002 +38C00080 3D808039 +618C069C 7D8903A6 +4E800421 7E83A378 +38800004 3CA08037 +60A5F1B0 7EE6BB78 +3D808039 618C0B68 +7D8903A6 4E800421 +7E83A378 480000CD +7C8802A6 38A00004 +3D808038 618CFD54 +7D8903A6 4E800421 +386D8844 89C30000 +39E00000 48000175 +39EF0001 7C0F7000 +4180FFF4 806DB620 +38810034 38A0002B +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3C80C040 60840000 +9083003C 806DB620 +38810034 38A00029 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3D808037 618C1BEC +7D8903A6 4E800421 +80630004 80630008 +FC20F890 3D808036 +618C3C2C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 480002E4 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C741B78 +82B40028 886DB656 +2C030000 40820098 +3FC08000 63DE5614 +83DE0000 807E0000 +88630001 2C030000 +4082007C 4BFFFD21 +7FE802A6 3BA00000 +3C80804A 60840BC0 +80840000 C024000C +C0440010 C07F0000 +C09F0004 C0BF0008 +C0DF000C FC021840 +41810044 FC022040 +4180003C FC012840 +41800034 FC013040 +4181002C 3BA00001 +3C80804C 608420BC +886DB650 1C630044 +7C641A14 80630008 +546305EF 41820008 +48000019 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +808DB610 886DB650 +1C630024 7F841A14 +887C0070 7C7B1B78 +3D808000 618C56B8 +7D8903A6 4E800421 +7C651B78 38600000 +1C630024 3C80803F +60840A48 7C832214 +886403C2 1C63001C +7C832A14 8B4400DD +889E001A 38840001 +2C040004 41800008 +38800001 989E001A +386D8844 98830000 +7C992378 2C190003 +4182001C 2C190002 +4182000C 2C190001 +40810014 38600000 +48000010 38600001 +48000008 38600002 +3D808000 618C55F4 +7D8903A6 4E800421 +7EA3AB78 3D808036 +618CF8BC 7D8903A6 +4E800421 7EA3AB78 +3D808037 618C0928 +7D8903A6 4E800421 +7C0802A6 90010004 +9421FF00 BC610008 +7F23CB78 48000099 +B8610008 80010104 +38210100 7C0803A6 +7F23CB78 7F64DB78 +3D808000 618C56B0 +7D8903A6 4E800421 +7C781B78 886DB657 +2C030000 4182004C +9B1C0073 3CA0803F +60A50E09 9B050000 +9B1E001B 38600000 +7F44D378 7F05C378 +38C00000 3D808000 +618C56BC 7D8903A6 +4E800421 38600002 +3D808002 618C4030 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C791B78 +2C190003 4182001C +2C190002 4182000C +2C190001 41820014 +38800000 48000014 +38800001 4800000C +38800002 48000004 +88ADB650 386D9A38 +7C632A14 98830000 +38600000 3D808025 +618CDB34 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +38600000 38980000 +3D80803A 618C6754 +7D8903A6 4E800421 +60000000 00000000 +C2262004 0000000B #Online/Menus/CSS/PreventAPressCharUnselect.asm +3C608048 80639D30 +5463443E 2C030008 +4082003C 3C608000 +60635614 80630000 +80830000 88630014 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 566015BA +60000000 00000000 +C22620AC 0000000B #Online/Menus/CSS/PreventBPressCharUnselect.asm +3C608048 80639D30 +5463443E 2C030008 +4082003C 3C608000 +60635614 80630000 +80830000 88630014 +2C030000 40820010 +88640001 2C030000 +41820014 3D808026 +618C2154 7D8903A6 +4E800420 88FF0004 +60000000 00000000 +C22600A8 0000000C #Online/Menus/CSS/PreventColorChange.asm +3C608048 80639D30 +5463443E 2C030008 +40820048 3C608000 +60635614 80630000 +8863001A 2C030000 +40820020 3C608000 +60635614 80630000 +80630000 88630001 +2C030000 41820014 +3D808026 618C028C +7D8903A6 4E800420 +3C60803F 00000000 +C2264110 00000016 #Online/Menus/CSS/SkipReturnToCssSound.asm +7C030378 7C0802A6 +90010004 9421FF50 +BE810008 7C7F1B78 +886DAFA3 2C030000 +40820044 38600000 +3D808000 618C5610 +7D8903A6 4E800421 +8BC30000 3D808037 +618CF1B0 7D8903A6 +4E800421 2C1E0004 +40820044 886DAFC9 +2C030000 41820010 +48000034 38600000 +986DAFA3 7FE3FB78 +BA810008 800100B4 +382100B0 7C0803A6 +7C601B78 3D808026 +618C41A8 7D8903A6 +4E800420 7FE3FB78 +BA810008 800100B4 +382100B0 7C0803A6 +54601838 00000000 +C2262478 00000016 #Online/Menus/CSS/Teams/AnimateCursorPort.asm +7C0802A6 90010004 +9421FF50 BE810008 +3FC08000 63DE5614 +83DE0000 3C608048 +80639D30 5463443E +2C030008 40820054 +888DAFA0 2C040003 +40820048 807E0000 +88630001 2C030000 +40820038 8BFE001A +2C1F0003 41820008 +3BFFFFFF 88CDB650 +1CC60004 7FFF3214 +7FE3FB78 3D808000 +618C55F4 7D8903A6 +4E800421 48000004 +BA810008 800100B4 +382100B0 7C0803A6 +8061003C 38800006 +38A00400 3CC08036 +60C6410C 38E00001 +60000000 00000000 +C2262768 0000000D #Online/Menus/CSS/Teams/AnimateToken.asm +7C0802A6 90010004 +9421FF50 BE810008 +3F808000 639C5614 +839C0000 3C608048 +80639D30 5463443E +2C030008 40820024 +888DAFA0 2C040003 +40820018 8B7C001A +2C1B0003 41820008 +3B7BFFFF 9B7D0006 +BA810008 800100B4 +382100B0 7C0803A6 +387C0000 00000000 +C2260C28 0000001C #Online/Menus/CSS/Teams/PreventColorResetCharHover.asm +7C0802A6 90010004 +9421FF50 BE810008 +3FE08000 63FF5614 +83FF0000 3C608048 +80639D30 5463443E +2C030008 40820098 +888DAFA0 2C040003 +4082008C 8BDF001A +808DB610 886DB650 +1C630024 7F441A14 +887A0070 7C7D1B78 +3D808000 618C56B8 +7D8903A6 4E800421 +7C651B78 38600000 +1C630024 3C80803F +60840A48 7C832214 +886403C2 1C63001C +7C832A14 8B8400DD +7FC3F378 7F84E378 +3D808000 618C56B0 +7D8903A6 4E800421 +7C7B1B78 80ADB610 +9B650073 3CA0803F +60A50E09 9B650000 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 9E9803C2 +60000000 00000000 +C2260E14 00000003 #Online/Menus/CSS/Teams/PreventColorResetLastChar.asm +3D808026 618C0B90 +7D8903A6 4E800420 +60000000 00000000 +C2260B90 0000001A #Online/Menus/CSS/Teams/PreventColorResetRandomChar.asm +7C0802A6 90010004 +9421FF50 BE810008 +3FE08000 63FF5614 +83FF0000 3C608048 +80639D30 5463443E +2C030008 40820088 +888DAFA0 2C040003 +4082007C 808DB610 +886DB650 1C630024 +7F441A14 887A0070 +7C7D1B78 8BDF001A +7FC3F378 7FA4EB78 +3D808000 618C56B0 +7D8903A6 4E800421 +7C7B1B78 80ADB610 +9B7A0073 3CA0803F +60A50E09 9B650000 +88650001 98650002 +38600000 7FA4EB78 +7F65DB78 38C00000 +3D808000 618C56BC +7D8903A6 4E800421 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 38000000 +60000000 00000000 +0423C710 28030007 #Online/Menus/CSS/TextEntryScreen/Allow8Characters.asm +0423C320 28030007 #Online/Menus/CSS/TextEntryScreen/Allow8CharactersJapanese.asm +C223E730 00000006 #Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect.asm +898DAFA3 2C0C0000 +41820014 3D808023 +618CE73C 7D8903A6 +4E800420 3D808000 +618CAE90 7D8903A6 +4E800421 00000000 +C223E924 00000006 #Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect2.asm +898DAFA3 2C0C0000 +41820014 3D808023 +618CE930 7D8903A6 +4E800420 3D808000 +618CAE90 7D8903A6 +4E800421 00000000 +C223E290 00000006 #Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect3.asm +898DAFA3 2C0C0000 +41820014 3D808023 +618CE29C 7D8903A6 +4E800420 3D808000 +618CAE90 7D8903A6 +4E800421 00000000 +C223CCA4 00000045 #Online/Menus/CSS/TextEntryScreen/CheckTriggersAndZ.asm +48000014 4E800021 +48000100 00000000 +00000000 57400633 +41820014 3D808023 +618CCCAC 7D8903A6 +4E800420 7C0802A6 +90010004 9421FF50 +BE810008 7C9A2378 +4BFFFFC5 7C6802A6 +83E30004 83DF0006 +886DB56C 5463063E +3D80801A 618C36A0 +7D8903A6 4E800421 +548006F7 41820194 +7F44D378 889C0058 +1C840003 7C64F22E +2C030000 4082001C +38600003 3D808002 +618C4030 7D8903A6 +4E800421 48000048 +38600001 3D808002 +618C4030 7D8903A6 +4E800421 887E0019 +987F0004 2C030007 +40810008 38600007 +987C0058 38600039 +B07A0002 3D808023 +618CCE4C 7D8903A6 +4E800421 7F44D378 +BA810008 800100B4 +382100B0 7C0803A6 +3D808023 618CCCFC +7D8903A6 4E800420 +7C0802A6 90010004 +9421FF50 BE810008 +7C7D1B78 886DAFA3 +2C030000 418200C8 +4BFFFEDD 7C6802A6 +83E30004 83DF0006 +386000BE 987E0000 +387E0001 3C80804A +60840740 38A00018 +3D808000 618C31F4 +7D8903A6 4E800421 +887F0004 987E0019 +807F0000 907E001A +9BBE001E 886DAFA0 +987E001F 7FC3F378 +38800020 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FC3F378 3880001E +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 3C60804A +60630740 389E0001 +38A00018 3D808000 +618C31F4 7D8903A6 +4E800421 807E001A +907F0000 3D808023 +618CCE4C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7F44D378 BA810008 +800100B4 382100B0 +7C0803A6 3D808023 +618CCD34 7D8903A6 +4E800420 00000000 +0423CF9C 2C1B0008 #Online/Menus/CSS/TextEntryScreen/Display8Characters.asm +C223CF80 0000000E #Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm +48000010 4E800021 +00000000 8E9196FF +88CDAFA3 2C060000 +4182004C 4BFFFFE9 +7CC802A6 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7CE32214 +80E7000C 88E70004 +7C1B3800 4180000C +3BA60004 48000008 +3BA60000 800D98D8 +60000000 00000000 +C223B3D0 00000006 #Online/Menus/CSS/TextEntryScreen/HandleDescriptionText.asm +888DAFA3 2C040000 +4182001C 38800057 +88ADAFA0 2C050003 +40820010 38800058 +48000008 7FE4FB78 +60000000 00000000 +C223E994 0000002A #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm +886DAFA3 2C030000 +41820140 38600001 +986DAFCB 48000004 +7C0802A6 90010004 +9421FF50 BE810008 +3C608023 6063CCA4 +80830000 5485863E +7CA50774 54A5801E +5484043A 7C842B78 +7F232214 3860000A +3D808037 618CF1E4 +7D8903A6 4E800421 +9079000C 3880000A +3D808000 618CC160 +7D8903A6 4E800421 +38600020 3D808037 +618CF1E4 7D8903A6 +4E800421 8099000C +90640006 38600001 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7B1B78 38600004 +38800005 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +7C7D1B78 3C608000 +60635614 80630000 +80630004 8063000C +3D808037 618C0E44 +7D8903A6 4E800421 +7C7C1B78 7FA3EB78 +38800004 7F85E378 +3D808039 618C0A70 +7D8903A6 4E800421 +7FA3EB78 3C808039 +60841070 38A00004 +38C00080 3D808039 +618C069C 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 48000004 +38600000 00000000 +C223C588 0000000C #Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm +886DAFA3 2C030000 +41820050 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7CC32214 +80E6000C 88670005 +2C030000 4082001C +38600001 98670005 +38660008 7C6903A6 +38600003 4E800421 +886DB56C 00000000 +C223CD74 00000011 #Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm +886DAFA3 2C030000 +41820074 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +8083000C 88A40004 +2C050000 40810030 +38A5FFFF 98A40004 +98BC0058 38830008 +7C8903A6 38600003 +4E800421 3D808023 +618CCE38 7D8903A6 +4E800420 3D808023 +618CCD68 7D8903A6 +4E800420 88BC0058 +60000000 00000000 +C223CA50 00000003 #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonAPress.asm +3D808023 618CCC14 +7D8903A6 4E800420 +60000000 00000000 +C223CC14 0000001D #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm +886DAFA3 2C030000 +418200D8 7C0802A6 +90010004 9421FF50 +BE810008 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +83E3000C 887F0004 +2C030000 40820038 +38600003 3D808002 +618C4030 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 3D808023 +618CCE38 7D8903A6 +4E800420 887F0004 +2C030008 40800010 +1C830003 38A00000 +7CBE232E 38600001 +3D808002 618C4030 +7D8903A6 4E800421 +3860FFFE 818DAFE8 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +3D808023 618CCC80 +7D8903A6 4E800420 +38000000 00000000 +C223C72C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterText.asm +886DAFA3 2C030000 +41820054 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +8083000C 88A40004 +2C050008 4080000C +38A50001 98A40004 +38830008 7C8903A6 +38600003 4E800421 +48000014 3D808023 +618CCE4C 7D8903A6 +4E800421 00000000 +C223C81C 00000003 #Online/Menus/CSS/TextEntryScreen/OnErasePress.asm +3D808023 618CCD3C +7D8903A6 4E800420 +60000000 00000000 +C223CCBC 0000000B #Online/Menus/CSS/TextEntryScreen/OnLPress.asm +886DAFA3 2C030000 +41820048 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +38630008 7C6903A6 +38600001 4E800421 +3D808023 618CCE38 +7D8903A6 4E800420 +887C0050 00000000 +C223CCE0 0000000B #Online/Menus/CSS/TextEntryScreen/OnRPress.asm +886DAFA3 2C030000 +41820048 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +38630008 7C6903A6 +38600002 4E800421 +3D808023 618CCE38 +7D8903A6 4E800420 +887C0050 00000000 +C223C928 0000000D #Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm +886DAFA3 2C030000 +41820048 3C608023 +6063CCA4 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +8083000C 9BA40004 +9BBC0058 38830008 +7C8903A6 38600003 +4E800421 48000014 +3D808023 618CCE4C +7D8903A6 4E800421 +60000000 00000000 +C23786A4 00000009 #Online/Menus/Hacks/VsSplashRumbleHack.asm +3D808048 818C9D30 +558C443E 2C0C0408 +4182001C 3D808048 +818C9D30 558C443E +2C0C0108 41820008 +48000014 3D808037 +618C86AC 7D8903A6 +4E800420 28000000 +60000000 00000000 +C216E9B4 000000B3 #Online/Menus/InGame/InitInGame.asm +3C608048 80639D30 +5463443E 2C030208 +40820580 480000A8 +4E800021 00000000 +3DCCCCCD 43870000 +434F0000 3EA8F5C3 +3EA8F5C3 000000FF +3F1EB852 3F466666 +C1C07AE1 3C6F34D7 +3F4CCCCD 41A51EB8 +00000000 3D75C28F +43160000 3F0A3D71 +00000000 44656C61 +793A2025 64660000 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C7F1B78 +880DB6CC 2C000001 +41820018 7FE3FB78 +3D808039 618C10D8 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 3C60804D +60636D5C 80630000 +3C80803F 608494D0 +3D808038 618C0358 +7D8903A6 4E800421 +80630004 80630000 +3D808036 618CA590 +7D8903A6 4E800421 +7C7E1B78 38600013 +38800014 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +7C7D1B78 7FA3EB78 +888DC1AB 7FC5F378 +3D808039 618C0A70 +7D8903A6 4E800421 +7FA3EB78 4BFFFF25 +7C8802A6 38A00008 +3D808039 618C075C +7D8903A6 4E800421 +3C600000 60631000 +907D0024 38600002 +7FA4EB78 38A00009 +38C0000D 38E00000 +3900000C 39200050 +39400008 3D80803A +618C611C 7D8903A6 +4E800421 7C7F1B78 +83CDB61C 93FE07B8 +4BFFFE69 7F8802A6 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7A1B78 +38600002 7FE4FB78 +3D80803A 618C6754 +7D8903A6 4E800421 +7C7D1B78 38800001 +989D0049 38800002 +989D004A C03C0000 +D03D0008 C03C0004 +D03D0024 D03D0028 +C03C0008 C05C000C +7FA3EB78 389C0048 +88BE001B 3D80803A +618C6B98 7D8903A6 +4E800421 7FA3EB78 +38800000 C03C0010 +C05C0010 3D80803A +618C7548 7D8903A6 +4E800421 3A800000 +3EA0804A 62B50FF0 +7E83A378 3D808003 +618C241C 7D8903A6 +4E800421 2C030003 +418202E8 7E83A378 +3D80802F 618C3424 +7D8903A6 4E800421 +C0230000 D0210070 +38600002 7FE4FB78 +3D80803A 618C6754 +7D8903A6 4E800421 +7C7D1B78 38800001 +989D0048 989D004A +989D004C 989D0049 +C03C0038 D03D0024 +D03D0028 C0210070 +C05C002C EC21102A +D03D0000 C03C0030 +D03D0004 C03C0034 +D03D0008 C03C003C +D03D000C D03D0010 +4CC63242 C03C0044 +C05C0044 7FA3EB78 +389A0034 1CB4001F +7C842A14 3D80803A +618C6B98 7D8903A6 +4E800421 7FA3EB78 +38800000 C03C0040 +C05C0040 3D80803A +618C7548 7D8903A6 +4E800421 3860000E +3880000F 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +7C771B78 3C60804A +60631ED0 80630000 +3D808037 618C0E44 +7D8903A6 4E800421 +7C761B78 7EE3BB78 +888DC1A9 7EC5B378 +3D808039 618C0A70 +7D8903A6 4E800421 +7EE3BB78 3C808039 +60841070 38A0000C +38C00000 3D808039 +618C069C 7D8903A6 +4E800421 7E83A378 +3D80802F 618C3424 +7D8903A6 4E800421 +C0230000 C05C0020 +EC21102A D0360038 +C03C0024 D036003C +C03C001C D0360030 +7EC3B378 38810080 +38A00001 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +80610080 38800000 +90830040 80610080 +80630018 80830014 +60840001 90830014 +80630004 80830014 +60840001 90830014 +80630004 80630008 +8063000C C03C0014 +D023000C 809C0018 +90830004 3B200000 +807D005C 38800000 +3D80803A 618C6FEC +7D8903A6 4E800421 +3943000F 3D808040 +618CCB00 887D004F +1C630004 3C80804D +60841124 7C63202E +81630004 886A0000 +2C03000B 41820064 +2C030020 4182001C +2C030040 41820034 +886A0000 2C03000F +41820050 48000044 +886A0001 1C630002 +7C6360AE 38800014 +7C632050 7F391A14 +394A0002 4BFFFFB8 +886A0001 1C630002 +7C6358AE 38800014 +7C632050 7F391A14 +394A0002 4BFFFF98 +394A0001 4BFFFF90 +2C19003C 40800008 +3B20003C 2C190090 +40810008 3B200090 +3C004330 C84298A8 +6F238000 90010080 +90610084 C8210080 +EC211028 C05C0028 +EC2100B2 D036002C +3A940001 2C140006 +4180FCF8 7F43D378 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +8001001C 00000000 +043A69C0 4800003C #Online/Menus/InGame/ParseNumbersBetter.asm +C225B8A4 00000006 #Online/Menus/SSS/DisableLRSTART.asm +3C608048 80639D30 +5463443E 2C030108 +40820014 3D808025 +618CB8CC 7D8903A6 +4E800420 38600000 +60000000 00000000 +C2259CC8 0000000D #Online/Menus/SSS/ExitSSSUponStageSelect.asm +3C608048 80639D30 +5463443E 2C030108 +40820050 38600001 +3D808002 618C4030 +7D8903A6 4E800421 +886DB60E 3D808025 +618CBC08 7D8903A6 +4E800421 818DAFE8 +7D8903A6 4E800421 +38600002 986DB60F +3D808025 618C9D6C +7D8903A6 4E800420 +38600004 00000000 +C222B044 00000006 #Online/Menus/TitleMenu/AllowSwapToSameSubmenu.asm +40820020 886DAFA2 +2C030000 40820014 +3D808022 618CB11C +7D8903A6 4E800420 +38600000 986DAFA2 +60000000 00000000 +C22299F0 00000019 #Online/Menus/TitleMenu/HandleOnlineLockedOptions.asm +2C030008 408200B8 +886DAFA1 2C030000 +41820014 2C030001 +41820040 2C030002 +41820054 2C040000 +41820080 2C040001 +41820078 2C040002 +41820070 2C040003 +41820068 2C040005 +41820060 2C040006 +41820058 48000068 +2C040000 4182004C +2C040004 41820044 +2C040006 4182003C +4800004C 2C040000 +41820030 2C040001 +41820028 2C040002 +41820020 2C040003 +41820018 2C040004 +41820010 2C040005 +41820008 48000018 +38600000 3D808022 +618C99F4 7D8903A6 +4E800420 38600001 +60000000 00000000 +C222E93C 00000028 #Online/Menus/TitleMenu/OnMenuLoad.asm +48000020 4E800021 +C34C0000 C31D0000 +41880000 3D75C28F +4E800021 01000000 +7C0802A6 90010004 +9421FF50 BE810008 +4BFFFFD5 7C6802A6 +38800001 3D808000 +618C5618 7D8903A6 +4E800421 7FC802A6 +4E800021 4BFFFFC5 +7FA802A6 887D0000 +2C030000 41820074 +3D808002 618C6F2C +7D8903A6 4E800421 +38600002 38A00000 +38C00008 3D808002 +618C702C 7D8903A6 +4E800421 3D808002 +618C7168 7D8903A6 +4E800421 3D808002 +618C7648 7D8903A6 +4E800421 38607535 +3880007F 38A00040 +3D808002 618C37A8 +7D8903A6 4E800421 +38600000 987D0000 +38600001 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7C1B78 +386000BA 987C0000 +7F83E378 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7F83E378 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +B9C10408 00000000 +C21B1040 00000165 #Online/Menus/TitleMenu/OnMenuPrep.asm +7C0802A6 90010004 +9421FF50 BE810008 +480000B5 7C6802A6 +3C80803D 6084D908 +90640000 3C60803E +6063B750 48000209 +7C8802A6 90830010 +480005AD 7C8802A6 +38A00010 3D808000 +618C31F4 7D8903A6 +4E800421 3C60803E +6063B750 4800059D +7C8802A6 90830008 +3C60803E 6063B66C +38800644 B0830004 +480000B1 7C6802A6 +906DB614 3D808000 +618C5618 7D8903A6 +4E800421 7EA802A6 +39950014 7D8903A6 +4E800421 3995000C +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +48000A5C 4E800021 +3D808000 618C5618 +7D8903A6 4E800421 +7FC802A6 38000008 +981F0000 38600008 +888DAFA0 3D808022 +618C9938 7D8903A6 +4E800421 2C030000 +886DAFA0 40820010 +399E0010 7D8903A6 +4E800421 987F0001 +3D80801B 618C136C +7D8903A6 4E800420 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 3FE0804A +63FF04F0 3FC0803E +63DEAE68 38000005 +B00DB528 3D808000 +618C5618 7D8903A6 +4E800421 7C6802A6 +39830010 7D8903A6 +4E800421 7C601B78 +38800008 88BF0000 +38600001 98BF0001 +989F0000 B01F0002 +3D808022 618CB3A0 +7D8903A6 4E800421 +3D808039 618C0CD4 +7D8903A6 4E800421 +806DC17C 3D808039 +618C0228 7D8903A6 +4E800421 837E08F8 +281B0000 41820000 +38600000 38800001 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 389B0000 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 808DC19C +8803000D 508026B6 +9803000D 38600001 +986DAFA2 7F63DB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +7C731B78 80730008 +2C030000 40820354 +3C60804A 3BA304F0 +38600004 3D808022 +618C9624 7D8903A6 +4E800421 907D000C +3BC00000 93DD0008 +546006F7 4182018C +38000005 B00DB528 +3BE00001 3B9E0000 +9BFD0011 5783063E +3D80801A 618C36A0 +7D8903A6 4E800421 +7C60F838 7C84F038 +7C83F278 7C00F278 +7C600379 4182000C +5783063E 48000014 +3B9C0001 2C1C0004 +4180FFC4 38600000 +3D808016 618C77E8 +7D8903A6 4E800421 +A01D0002 2C000000 +41820038 2C000001 +41820048 2C000002 +41820048 2C000003 +41820048 2C000004 +41820048 2C000005 +4182005C 2C000006 +41820078 4800027C +38600003 3D808002 +618C4030 7D8903A6 +4E800421 48000264 +38600001 48000070 +38600002 48000068 +38600003 48000060 +38600001 3D808002 +618C4030 7D8903A6 +4E800421 388000B6 +48000074 386000BC +3880007F 38A00040 +3D808002 618C37A8 +7D8903A6 4E800421 +48000275 4800020C +38600001 3D808002 +618C4030 7D8903A6 +4E800421 388000B8 +48000034 986DAFA0 +38600001 3D808002 +618C4030 7D8903A6 +4E800421 38600008 +3D808022 618C9860 +7D8903A6 4E800421 +480001C0 806DAFC4 +98830000 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 4800019C +546006B5 418200D0 +38600000 3D808002 +618C4030 7D8903A6 +4E800421 9BDD0011 +38600005 38000001 +B06DB528 38600003 +889D0000 989D0001 +981D0000 38000002 +B01D0002 3D808022 +618CB3A0 7D8903A6 +4E800421 3D808039 +618C0CD4 7D8903A6 +4E800421 806DC17C +3D808039 618C0228 +7D8903A6 4E800421 +3C60803F 3863B6B0 +83830024 281C0000 +41820110 38600000 +38800001 38A00080 +3D808039 618C01F0 +7D8903A6 4E800421 +389C0000 38A00000 +3D808038 618CFD54 +7D8903A6 4E800421 +808DC19C 8803000D +508026B6 9803000D +480000C8 546007FF +41820060 38600002 +3D808002 618C4030 +7D8903A6 4E800421 +3BE00006 3B9D0002 +A07C0000 28030000 +41820010 3803FFFF +B01C0000 48000008 +B3FC0000 38600008 +A09C0000 3D808022 +618C9938 7D8903A6 +4E800421 2C030000 +4182FFC8 48000064 +546007BD 4182005C +38600002 3D808002 +618C4030 7D8903A6 +4E800421 3B9D0002 +A07C0000 28030006 +41820010 38030001 +B01C0000 48000008 +B3DC0000 38600008 +A09C0000 3D808022 +618C9938 7D8903A6 +4E800421 2C030000 +4182FFC8 48000004 +3D808000 618C5618 +7D8903A6 4E800421 +7F6802A6 387B0004 +7C6903A6 4E800421 +387B0008 7C6903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800021 +803EB57C 430C0000 +803EB684 07000000 +4E800021 06450646 +0647064B 06480649 +064A0000 7C0802A6 +90010004 9421FF50 +BE810008 806DB518 +3C80803E 6084FA0C +3D808038 618C0358 +7D8903A6 4E800421 +7C7A1B78 806DB518 +3C80803E 6084FA24 +3D808038 618C0358 +7D8903A6 4E800421 +7C7B1B78 806DB518 +3C80803E 6084FA40 +3D808038 618C0358 +7D8903A6 4E800421 +7C7C1B78 806DB518 +3C80803E 6084FA60 +3D808038 618C0358 +7D8903A6 4E800421 +7C7D1B78 48000465 +7FC802A6 C2DE0010 +C2FE0014 3AC00016 +7EC3B378 3D808037 +618CF1E4 7D8903A6 +4E800421 7C771B78 +7EC4B378 3D808000 +618CC160 7D8903A6 +4E800421 38600000 +98770000 7E639B78 +90770001 92F30008 +38600006 38800007 +38A00080 3D808039 +618C01F0 7D8903A6 +4E800421 7C781B78 +7F43D378 3D808037 +618C0E44 7D8903A6 +4E800421 7C791B78 +7F03C378 38800003 +7F25CB78 3D808039 +618C0A70 7D8903A6 +4E800421 7F23CB78 +38810034 38A0000A +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +38800010 3D808037 +618C1D9C 7D8903A6 +4E800421 7F23CB78 +38810034 38A0000B +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +38800010 3D808037 +618C1D9C 7D8903A6 +4E800421 7F23CB78 +7F64DB78 7F85E378 +7FA6EB78 3D808036 +618CFB5C 7D8903A6 +4E800421 7F23CB78 +FC20B090 3D808036 +618CF8BC 7D8903A6 +4E800421 7F23CB78 +38810034 38A00006 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3C80C060 60840000 +90830038 7F23CB78 +38810034 38A00007 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610034 +3C80405C 60840000 +90830038 7F03C378 +3C808039 60841070 +38A00006 38C00080 +3D808039 618C069C +7D8903A6 4E800421 +7F03C378 38800004 +3CA08037 60A5F1B0 +7EE6BB78 3D808039 +618C0B68 7D8903A6 +4E800421 7F03C378 +48000031 7C8802A6 +38A0000F 3D808038 +618CFD54 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 48000225 +7FC802A6 C2DE0010 +C2FE0014 7C781B78 +83380028 8358002C +8B7A0000 839A0001 +83BA0005 7F23CB78 +3D808037 618C0928 +7D8903A6 4E800421 +2C1D0000 4082003C +3860013F 38800000 +38A00002 38C00001 +C03E0000 C05E0004 +C07E0008 C09E000C +3D808000 618C56B4 +7D8903A6 4E800421 +907A0005 48000198 +7F23CB78 38810034 +38A00007 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +FC20B090 2C1B0000 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 +7D8903A6 4E800421 +7F23CB78 38810034 +38A00006 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +FC20B090 2C1B0001 +40820008 FC20B890 +80610034 3D808036 +618CF8BC 7D8903A6 +4E800421 80610034 +3D808037 618C0928 +7D8903A6 4E800421 +39C00000 7DC37378 +3D80801A 618C36A0 +7D8903A6 4E800421 +2C030040 4182002C +2C030080 41820024 +2C030001 4182003C +2C030002 41820064 +39CE0001 2C0E0004 +4180FFC4 480000A0 +38600002 3D808002 +618C4030 7D8903A6 +4E800421 6B630001 +987A0000 48000080 +2C1B0001 4082002C +388000B7 806DAFC4 +98830000 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 48000004 +38600000 3D808002 +618C4030 7D8903A6 +4E800421 7F03C378 +3D808039 618C0228 +7D8903A6 4E800421 +7FA3EB78 3D80803A +618C5CC4 7D8903A6 +4E800421 3C600000 +60630000 907C0008 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 C0B00000 +C0333333 41B80000 +3D3851EC 00000000 +3F800000 3C60804A +60000000 00000000 +C222D88C 00000008 #Online/Menus/TitleMenu/OnlineModeOptionSelected.asm +40820038 38600001 +3D808002 618C4030 +7D8903A6 4E800421 +806DB614 7C6903A6 +4E800421 7C7B1B78 +3D808022 618CDAFC +7D8903A6 4E800420 +60000000 00000000 +042299C4 38600001 #Online/Menus/TitleMenu/ShowHidden1pOption.asm +C21B3668 00000005 #Online/Menus/VSScreen/AllowP2ColorDuplicate.asm +3D808048 818C9D30 +558C443E 2C0C0408 +41820014 3D808017 +618CBEC8 7D8903A6 +4E800421 00000000 +C2186EC4 00000077 #Online/Menus/VSScreen/InitVsSplash.asm +3C608048 80639D30 +5463443E 2C030408 +4082039C 48000060 +4E800021 00000000 +3F800000 3F000000 +3F19999A F15959FF +6565FEFF FFFFFFFF +42700000 43C80000 +436E0000 42820000 +43DC0000 41F00000 +43200000 43960000 +41B00000 41B00000 +5465616D 20310054 +65616D20 32005031 +00503200 7C0802A6 +90010004 9421FF50 +BE810008 38600000 +3C80803F 608411A4 +3CA0803F 60A51194 +3D80803A 618C62A0 +7D8903A6 4E800421 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7D1B78 +4BFFFF59 7FE802A6 +38600000 38800000 +3D80803A 618C6754 +7D8903A6 4E800421 +7C7E1B78 38800001 +989E0049 38800000 +989E004A C03F0000 +D03E0008 C03F0004 +D03E0024 D03E0028 +887D0210 2C030001 +41820038 387F0010 +389F0052 38BD0034 +38C00000 C03F001C +4800010D 387F0014 +389F0055 38BD0053 +38C00000 C03F0020 +480000F5 48000038 +807D000D 480001E9 +387F0010 389F0044 +C03F001C 480000D9 +807D0011 480001D1 +387F0014 389F004B +C03F0020 480000C1 +48000004 38600000 +38800000 C03F0024 +C05F002C C07F0030 +C09F0034 C0BF0038 +3D80803A 618C5ACC +7D8903A6 4E800421 +7C7E1B78 C03F0004 +D03E0024 D03E0028 +38800001 989E004A +989E0049 C03F0000 +D03E0008 3CA0803B +60A57808 A0DD0216 +38600000 1C830002 +7C85222E 7C043000 +41820014 38630001 +2C03001D 4180FFE8 +38600000 3C80803E +6084D488 7C841A14 +8884005C 7FC3F378 +3D80803A 618C6368 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4800017C 7C0802A6 +90010004 9421FF50 +BE810008 FFE00890 +7C761B78 7C942378 +7CB92B78 7CDA3378 +7CF83B78 7D174378 +93210008 9301000C +92E10010 C3DF0028 +C07F0040 7F43D378 +3D808000 618C55F4 +7D8903A6 4E800421 +EC630072 EFDE1828 +7FC3F378 389F0018 +7EC4B378 38A00000 +7E87A378 C03F0008 +FC40F890 FC60F090 +3D808000 618C56B4 +7D8903A6 4E800421 +39C00008 39E00000 +7C6E0A14 80E30000 +2C0F0000 4182000C +C07F003C EFFF182A +C09F0040 EFDE202A +7FC3F378 389F0018 +38A00000 C03F000C +FC40F890 FC60F090 +3D808000 618C56B4 +7D8903A6 4E800421 +39CE0004 39EF0001 +7C0FD000 4180FFAC +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 38A00008 +38C000FF 7C7A3039 +7C632C30 38E00008 +39200000 7C643039 +1C84001F 38840034 +7C84EA14 7D070A14 +90880000 7C632C30 +38E70004 39290001 +2C090003 4180FFD8 +7F46D378 80A10010 +80E1000C 81010008 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 3800FFFF +60000000 00000000 +C2184DE4 00000010 #Online/Menus/VSScreen/PlayOpponentCharAnnouncer.asm +3D808048 818C9D30 +558C443E 2C0C0408 +40820068 7C0802A6 +90010004 9421FF50 +BE810008 38600000 +3D808000 618C5610 +7D8903A6 4E800421 +7C7F1B78 887F0004 +1C630024 389F0268 +7FC418AE 7FE3FB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7FC3F378 BA810008 +800100B4 382100B0 +7C0803A6 48000008 +887E00F4 00000000 +C21B3650 00000004 #Online/Menus/VSScreen/PreventP2Color.asm +3C808048 80849D30 +5484443E 2C040408 +41820008 98790016 +60000000 00000000 +C2185060 00000013 #Online/Menus/VSScreen/HideStageDisplay/HideAllJObjs.asm +3D808048 818C9D30 +558C443E 2C0C0408 +40820078 7C0802A6 +90010004 9421FF50 +BE810008 83E30028 +3BC00000 7FE3FB78 +38810080 7FC5F378 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80810080 +80640014 60630010 +90640014 3BDE0001 +2C1E001B 4180FFC8 +BA810008 800100B4 +382100B0 7C0803A6 +3D808018 618C51AC +7D8903A6 4E800420 +3C608047 3BE335A8 +60000000 00000000 +04185050 60000000 #Online/Menus/VSScreen/HideStageDisplay/PreventEarlyR3Overwrite.asm +C2184ADC 00000010 #Online/Menus/VSScreen/HideStageText/HideLetterJObjs.asm +3D808048 818C9D30 +558C443E 2C0C0408 +40820068 7C0802A6 +90010004 9421FF50 +BE810008 3BE00009 +7F63DB78 38810080 +7FE5FB78 38C0FFFF +3D808001 618C1E24 +7D8903A6 4E800421 +80610080 3D808036 +618CF6B4 7D8903A6 +4E800421 3BFF0001 +2C1F000E 4180FFC4 +BA810008 800100B4 +382100B0 7C0803A6 +3BBE0038 00000000 +04184B1C 480001D8 #Online/Menus/VSScreen/HideStageText/SkipStageNumberShow.asm +C21BFA20 00000012 #Online/Slippi Online Scene/boot.asm +3C80803D 6084D8E8 +48000011 7C6802A6 +906400A0 48000074 +4E800021 3D808000 +618C5618 7D8903A6 +4E800421 7FC802A6 +399E0014 7D8903A6 +4E800421 399E000C +7D8903A6 4E800421 +38000008 981F0000 +399E0010 7D8903A6 +4E800421 7C601B78 +981F0001 3C80803D +6084D8E8 3C60801B +60631360 906400A0 +3D80801B 618C136C +7D8903A6 4E800420 +38600001 00000000 +C21A45B8 0000016E #Online/Slippi Online Scene/main.asm +3BA30004 7C0802A6 +90010004 9421FF50 +BE810008 3C80803E +6084DC1C 48000215 +7C6802A6 38630000 +90640008 38600000 +986DAFA3 986DAFC8 +986DAFEC 986DAFE0 +38600008 4800016D +7C8802A6 4800002D +48000B04 80830000 +5485467A 2C050048 +40820014 548401BA +7C840734 7C841A14 +90830000 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +3C80803D 6084AD30 +48000081 7C6802A6 +90640004 480000D5 +7C6802A6 90640008 +38600001 98640000 +3C60803D 6063ACA4 +88830001 7C04F800 +4182000C 38630014 +4BFFFFF0 93C30010 +7FD4F378 88740000 +7C630774 2C03FFFF +4182001C 38740004 +4BFFFF65 38740008 +4BFFFF5D 3A940018 +4BFFFFDC BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 3C808045 +6084ABF0 886DAEF8 +98640006 3D808000 +618C56B8 7D8903A6 +4E800421 7C641B78 +3860000F 1C63001C +7C832214 38600013 +986400DD BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 38600012 +3C80803F 60840CC8 +98640001 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +4E800021 00030000 +48000081 480000F5 +08000000 80497758 +80497758 01030000 +480001B5 480001E5 +09000000 80480668 +80480668 02030000 +801B1588 4800027D +02000000 80480530 +80479D98 03030000 +00000000 00000000 +05000000 00000000 +00000000 04030000 +48000411 48000731 +20000000 80490880 +804D68D0 FF000000 +4E800021 81940000 +7C0802A6 90010004 +9421FF50 BE810008 +808D8840 3BE40530 +3D80801A 618C427C +7D8903A6 4E800421 +88BF0002 3880000E +88FF0003 38C00000 +891F0004 895F0006 +39200000 3D80801B +618C06B0 7D8903A6 +4E800421 3D808001 +618C74BC 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +7C7E1B78 3D80801B +618CAAD0 7D8903A6 +4E800421 809E0014 +88840003 2C040002 +40820008 4800008C +886DAFA0 2C030001 +4182001C 2C030002 +4182001C 2C030003 +41820014 2C030000 +41820008 48000038 +48000034 886DAFC9 +7C630774 2C03FFFF +41820024 2C030001 +4182001C 2C030000 +40820000 886DAFCA +2C030000 41820020 +48000004 4800063D +3C808047 60849D30 +38600005 98640005 +48000018 3C808047 +60849D30 38600002 +98640005 48000004 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 3D80801B +618C1514 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 809F0014 +88840004 2C040000 +4082001C 38600000 +3D80801A 618C42A0 +7D8903A6 4E800421 +48000064 38600001 +986DAFCA 38600000 +3D808000 618C5610 +7D8903A6 4E800421 +7C7E1B78 887E0001 +889E0002 7C032000 +4082001C 4800055D +3C808047 60849D30 +38600005 98640005 +4800001C 38600000 +3D80801A 618C42A0 +7D8903A6 4E800421 +48000004 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +3D80801B 618C15C8 +7D8903A6 4E800421 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7F1B78 +887F0003 480005B5 +986DAFC9 886DAFA0 +2C030003 40820020 +887F0003 38800001 +2C030000 40820008 +38800000 988DAFC9 +4800003C 3A800000 +3AA00000 7E83A378 +48000579 2C030000 +41820008 3AB50001 +3A940001 2C140004 +4180FFE4 2C150001 +4182000C 38600000 +986DAFC9 3E808047 +62949DA4 887F0003 +48000541 2C030000 +41820018 38600001 +98740000 38600000 +9874005D 48000014 +38600000 98740000 +38600001 9874005D +886DAFA0 2C030003 +4082000C 38600000 +98740004 38600000 +986DAFCA 38600004 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7E1B78 386000BC +987E0000 7FC3F378 +38800001 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +7FC3F378 38800004 +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 3C80804D +807E0000 90645F90 +7FC3F378 3D808037 +618CF1B0 7D8903A6 +4E800421 3C808047 +60849D30 38600001 +98640005 7FE3FB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 4E800021 +01780101 01FF2121 +FF2121EE 0000EE00 +7C0802A6 90010004 +9421FF50 BE810008 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7E1B78 +83ED8840 3BFF0598 +886DAFA0 2C030003 +40820048 3BA00000 +1CBD0024 38650069 +7C7F18AE 38630001 +38850060 7C9F20AE +3D808000 618C56B0 +7D8903A6 4E800421 +1C9D0024 38840063 +7C7F21AE 3BBD0001 +2C1D0004 4180FFC4 +3C608049 60630888 +4BFFFF65 7C8802A6 +38A00010 3D808000 +618C31F4 7D8903A6 +4E800421 3C808049 +60840888 887F0060 +98640005 887F0063 +9864000B 887F0084 +98640008 887F0087 +9864000E 38600000 +9864FFFF 9864FFFB +887E0210 2C030000 +418200F4 887E0003 +1C630024 38630271 +7F7E18AE 38600002 +98640002 38600001 +9864FFFB 98640006 +98640007 98640009 +9864000A 9864000C +9864000D 9864000F +98640010 3BA00000 +3B800000 1C7D0024 +38630069 7C7F18AE +7C03D800 40820030 +1CBD0024 38A50060 +7CBF28AE 38DC0005 +7CA621AE 1CBD0024 +38A50063 7CBF28AE +38DC000B 7CA621AE +3B9C0001 3BBD0001 +2C1D0004 4180FFB8 +9B840003 3BA00000 +3B800000 1C7D0024 +38630069 7C7F18AE +7C03D800 41820030 +1CBD0024 38A50060 +7CBF28AE 38DC0008 +7CA621AE 1CBD0024 +38A50063 7CBF28AE +38DC000E 7CA621AE +3B9C0001 3BBD0001 +2C1D0004 4180FFB8 +9B840004 3C808043 +60842078 887F0060 +90640014 887F0063 +98640018 887F0084 +9064001C 887F0087 +98640020 887E0210 +2C030000 41820024 +887F00A8 90640024 +887F00AB 98640028 +887F00CC 9064002C +887F00CF 98640030 +A07F000E 9064000C +3D808001 618C8254 +7D8903A6 4E800421 +386000C7 3D808001 +618C8C2C 7D8903A6 +4E800421 38600004 +3D808001 618C7700 +7D8903A6 4E800421 +3860001C 3D808002 +618C6F2C 7D8903A6 +4E800421 3A800000 +1C140024 7FF5FB78 +7EB50214 88750060 +7C630774 2C030021 +41820024 3C80803B +6084B3C0 1C630010 +7C6320AE 3D808000 +618C56A8 7D8903A6 +4E800421 3A940001 +2C140006 3AB50024 +4180FFC4 A07F000E +3D808022 618C519C +7D8903A6 4E800421 +3C80803B 6084B6B0 +1C630003 7C6320AE +3D808000 618C56A8 +7D8903A6 4E800421 +3D808002 618C7168 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 3C808047 +60849D30 38600003 +98640005 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C7F1B78 +83CD8840 3BDE0598 +7FC3F378 389F0208 +38A00138 3D808000 +618C31F4 7D8903A6 +4E800421 3D808017 +618CEB30 7D8903A6 +4E800421 889F0268 +98830000 889F026B +98830001 38800000 +98830002 38800003 +98830005 38800078 +98830004 3C80803D +6084DEC8 8084000C +887F028C 98640002 +38602121 B0640003 +3C808049 60840880 +887F028F 98640016 +7FE3FB78 3D808037 +618CF1B0 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +7C7D1B78 3FE08047 +63FF9DA4 1FDD00A8 +7FDEFA14 887F0004 +2C030000 418200B0 +3C608046 6063B6A0 +886324D0 889F0006 +7C032000 40820098 +887E0058 2C030003 +4182008C 887F0004 +2C030007 40820040 +887F0006 2C030001 +40820024 887F0000 +1C6300A8 7C63FA14 +8863005F 889E005F +7C032000 41820058 +4800005C 887F0000 +7C03E800 41820048 +4800004C 887F0006 +2C030001 40820028 +7FE3FB78 3D808016 +618C54A0 7D8903A6 +4E800421 889E005F +7C032000 41820020 +48000014 887E005D +2C030000 41820010 +48000004 38600000 +48000008 38600001 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 BA810008 +800100B4 382100B0 +7C0803A6 38600028 +987E0000 00000000 +C20056BC 00000012 #Online/Static/CSSUpdateCSP.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +7CBD2B78 7CDC3378 +3D808000 618C56B8 +7D8903A6 4E800421 +7C651B78 1C7F0024 +3C80803F 60840A48 +7C832214 886403C2 +1C63001C 7C832A14 +8BC400DC 1CBD001E +7C9E2A14 7FE3FB78 +7F85E378 3D808025 +618CD5AC 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C20056AC 0000002E #Online/Static/ChatMessages.asm +7CA802A6 2C030008 +4182001C 2C030004 +41820020 2C030002 +41820024 2C030001 +41820028 48000075 +7C6802A6 48000024 +480000F9 7C6802A6 +48000018 480000C9 +7C6802A6 4800000C +4800007D 7C6802A6 +88E30000 89030001 +89230002 89430003 +7C862378 38830004 +7C843A14 2C060008 +41820020 7C844214 +2C060001 41820014 +7C844A14 2C060002 +41820008 7C845214 +7CA903A6 4E800420 +4E800021 07040904 +436F6D6D 6F6E0067 +6773006F 6E65206D +6F726500 62726200 +676F6F64 206C7563 +6B000000 4E800021 +0C0C0D07 436F6D70 +6C696D65 6E747300 +77656C6C 20706C61 +79656400 74686174 +20776173 2066756E +00746861 6E6B7300 +746F6F20 676F6F64 +00000000 4E800021 +0A040504 52656163 +74696F6E 73006F6F +66006D79 2062006C +6F6C0077 6F770000 +4E800021 05050917 +4D697363 006F6B61 +79007468 696E6B69 +6E67006C 65742773 +20706C61 79206167 +61696E20 6C617465 +72006261 6420636F +6E6E6563 74696F6E +00000000 00000000 +C20056B8 00000002 #Online/Static/GetCSSIconData.asm +3C60803F 60630A48 +4E800020 00000000 +C20056B0 00000011 #Online/Static/GetTeamCostumeIndex.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 7C9E2378 +7FC3F378 2C1F0003 +41820028 2C1F0002 +4182000C 2C1F0001 +4182002C 3D808016 +618C92BC 7D8903A6 +4E800421 48000028 +3D808016 618C9290 +7D8903A6 4E800421 +48000014 3D808016 +618C9264 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C2005610 00000012 #Online/Static/LoadMatchState.asm +7C0802A6 90010004 +9421FF50 BE810008 +2C030000 40820018 +38600340 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7F1B78 +386000B3 987F0000 +7FE3FB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FE3FB78 +38800340 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +7FE3FB78 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 +C200560C 00000016 #Online/Static/LoadState.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7B1B78 7C982378 +7CBA2B78 88DA0000 +38C6FFFF 2C060000 +40800008 38C60007 +1C660004 38630002 +7F3A1A14 80790000 +7C03C000 4082FFDC +3D808034 618C7364 +7D8903A6 4E800421 +7C771B78 386000B2 +987B0000 931B0001 +7F63DB78 38800021 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7EE3BB78 +3D808034 618C738C +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 00000000 +C20056A8 00000005 #Online/Static/RequestSSMLoad.asm +2C030037 41820018 +3D808043 618C37C4 +38800001 1C630004 +7C83612E 4E800020 +60000000 00000000 +C2005608 00000016 #Online/Static/SaveState.asm +7C0802A6 90010004 +9421FF50 BE810008 +7C7B1B78 7C982378 +7CBA2B78 887A0000 +1C630004 389A0002 +7F241A14 887A0000 +38630001 2C030007 +41800008 3863FFF9 +987A0000 3D808034 +618C7364 7D8903A6 +4E800421 7C771B78 +93190000 386000B1 +987B0000 931B0001 +7F63DB78 38800021 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7EE3BB78 +3D808034 618C738C +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 00000000 +C2005618 00000094 #Online/Static/UserDisplayFunctions.asm +4E800021 4800004C +480001DC 480002F0 +48000350 480003C8 +48000424 4E800021 +00000000 41A00000 +41C80000 8E9196FF +FFFFFFFF 3ECCCCCD +3F000000 00557365 +7200436F 6E6E6563 +7420436F 64650000 +7C0802A6 90010004 +9421FF50 BE810008 +7C791B78 7C9B2378 +7CBA2B78 480003D1 +4BFFFFAD 7FE802A6 +83DF0000 83BE0000 +C0390000 D03E000A +C0590004 D05E000E +9B7E0009 38600000 +38800000 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +939E0005 38800001 +989C0049 38800000 +989C004A C0390008 +D03C0008 C039000C +D03C0024 D03C0028 +38600001 48000059 +C03F0004 480000F1 +38600000 48000049 +C03F0008 480000E1 +38600001 48000039 +C03F0004 480000D1 +38600000 48000029 +480000D5 886DAFA1 +987E0004 7FA3EB78 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 7C7A1B78 +C03E000A C05E000E +7F83E378 389F001C +3D80803A 618C6B98 +7D8903A6 4E800421 +7C781B78 C03F0018 +2C1A0000 41820008 +C03F0014 FC400890 +7F83E378 7F04C378 +3D80803A 618C7548 +7D8903A6 4E800421 +38BF0010 2C1A0000 +41820008 38BF000C +7F83E378 7F04C378 +3D80803A 618C74F0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 C05E000E +EC42082A D05E000E +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 4BFFFE29 +7FE802A6 83DF0000 +83BE0000 839E0005 +48000159 3B600000 +7F83E378 7F64DB78 +38BF001C 3D80803A +618C70A0 7D8903A6 +4E800421 3B7B0001 +2C1B0004 4180FFDC +887D0000 2C030001 +408200A8 3C608047 +60639D30 88630000 +2C030001 40820018 +3C60804A 606304F0 +88630000 2C030008 +40820080 7F83E378 +38800000 38BF001D +3D80803A 618C70A0 +7D8903A6 4E800421 +7F83E378 38800001 +38BD0001 3D80803A +618C70A0 7D8903A6 +4E800421 887E0009 +2C030002 4082003C +7F83E378 38800002 +38BF0022 3D80803A +618C70A0 7D8903A6 +4E800421 7F83E378 +38800003 38BD0020 +3D80803A 618C70A0 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 4BFFFD11 +7FE802A6 83DF0000 +889E0004 886DAFA1 +7C041800 987E0004 +41820024 38600001 +3D808002 618C4030 +7D8903A6 4E800421 +806DB614 7C6903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +4BFFFCAD 7FE802A6 +83DF0000 83BE0000 +386000B9 987D0000 +7FA3EB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FA3EB78 +3880002A 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +889D0000 988DAFA1 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 3CA0803E +60A5AE68 88A508F4 +38800000 38600008 +3D808022 618C9938 +7D8903A6 4E800421 +2C030001 41820010 +38840001 7C042800 +4180FFDC 7C832378 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C0802A6 +90010004 9421FF50 +BE810008 4BFFFBD1 +7FE802A6 38600012 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C7E1B78 907F0000 +3860002A 3D808037 +618CF1E4 7D8903A6 +4E800421 907E0000 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 00000000 +043775B8 A0190000 #Online/Logging/LogInputOnCopy.asm +041A4C24 C0429A7C #Polling Drift Fix + VB [tauKhan] +0401985C 3C60804C +04019860 91231F5C +C2376200 00000003 +2C1DFFFF 41820008 +48000008 93A2C150 +60000000 00000000 +C21A5018 00000005 +3B5A0001 8002C150 +2C00FFFF 38000000 +9002C150 3D80801A +618C5078 7D8903A6 +4D820420 00000000 +04218D68 C8228000 +C209E090 00000011 #Common/FastForward/DynamicsFix.asm +807E0000 80630028 +48000009 48000074 +7C0802A6 90010004 +9421FFE8 93E10014 +7C7F1B78 807F0014 +54600211 40820020 +54600673 41820018 +7FE3FB78 3D808037 +618C3078 7D8903A6 +4E800421 807F0010 +2C030000 41820008 +4BFFFFB9 807F0008 +2C030000 41820008 +4BFFFFA9 83E10014 +8001001C 38210018 +7C0803A6 4E800020 +BB010028 00000000 + +$Recommended: Normal Lag Reduction [Hannes Mann] +*Reduces input lag +043761EC 4800001C +04376238 48000018 + +$Recommended: Apply Delay to all In-Game Scenes [Fizzi] +*Applies online delay to all in-game scenes. +*Dolphin netplay is no longer necessary for local practice +C2376A24 00000026 #Common/UseInGameDelay/ApplyInGameDelay.asm +3D808034 618CDA00 +7D8903A6 4E800421 +3D808000 618C561C +7D8903A6 4E800421 +2C030002 41820014 +2C030003 4182000C +2C030004 408200F8 +3C608048 88639D30 +2C030008 418200E8 +3C608047 60639D64 +80630000 2C030000 +408200D4 7C0802A6 +90010004 9421FF50 +BE810008 3C60802F +6063666C 80830000 +5485863E 7CA50774 +54A5801E 5484043A +7C842B78 7C632214 +83E30008 887F0000 +2C030000 40810080 +38610038 388100DC +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 887F0001 +1C630030 3BC30002 +386100DC 7C9FF214 +38A00030 3D808000 +618C31F4 7D8903A6 +4E800421 7C7FF214 +38810038 38A00030 +3D808000 618C31F4 +7D8903A6 4E800421 +889F0000 887F0001 +38630001 7C032000 +41800008 38600000 +987F0001 BA810008 +800100B4 382100B0 +7C0803A6 00000000 +C22F666C 0000005C #Common/UseInGameDelay/InitializeInGameDelay.asm +4800007C 4E800021 +80000000 4E800021 +00000000 3DCCCCCD +43870000 434F0000 +3EA8F5C3 44656C61 +793A2025 64660000 +4E800021 7C0802A6 +90010004 9421FF50 +BE810008 7C7F1B78 +880DB6CC 2C000001 +41820018 7FE3FB78 +3D808039 618C10D8 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +4E800020 7C7F1B78 +3C608048 88639D30 +2C030008 4182024C +7C0802A6 90010004 +9421FF50 BE810008 +386002D2 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7F1B78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 4BFFFF39 +7C6802A6 93E30000 +386000D5 987F0000 +7FE3FB78 38800001 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 7FE3FB78 +38800002 38A00000 +3D808000 618C55F0 +7D8903A6 4E800421 +8BDF0001 7FE3FB78 +388002D2 3D808000 +618CC160 7D8903A6 +4E800421 2C1E0000 +41800010 2C1E000F +41810010 48000010 +3BC00000 48000008 +3BC0000F 9BDF0000 +2C1E0000 4081016C +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7A1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C791B78 +7F23CB78 888DC1AB +7F45D378 3D808039 +618C0A70 7D8903A6 +4E800421 7F23CB78 +4BFFFE51 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 90790024 +38600002 7F24CB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7B1B78 4BFFFDD1 +7FA802A6 38600002 +7F64DB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7C1B78 +38800001 989C0049 +38800002 989C004A +C03D0000 D03C0008 +C03D0004 D03C0024 +D03C0028 C03D0008 +C05D000C 7F83E378 +389D0014 7FC5F378 +3D80803A 618C6B98 +7D8903A6 4E800421 +7F83E378 38800000 +C03D0010 C05D0010 +3D80803A 618C7548 +7D8903A6 4E800421 +BA810008 800100B4 +382100B0 7C0803A6 +7FE3FB78 00000000 +C200561C 00000013 #Common/GetCommonMinorID/GetCommonMinorID.asm +7C0802A6 90010004 +9421FF50 BE810008 +3CA08048 8BC59D30 +8BE59D33 3FA0803D +63BDACA4 38800000 +1CA40014 7CBD2A14 +88C50001 7C06F000 +4082000C 80650010 +48000010 38840001 +2C04002C 4081FFDC +38800000 1CA40018 +7CA32A14 88C50000 +7C06F800 4082000C +8865000C 48000010 +38840001 2C0600FF +4082FFDC BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +60000000 00000000 + +$Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch] +*Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors ---------------------- +*Will not cause desyncs when playing online +043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm +C236A4A8 00000007 #External/Widescreen/Overwrite CObj Values.asm +38600001 986DAFE0 +C03F0034 4800001D +7C6802A6 C0430000 +C0630004 EC2100B2 +EC211824 48000010 +4E800021 43A00000 +435B0000 00000000 +044DDB58 3E4CCCCD #External/Widescreen/Adjust Offscreen Scissor/Adjust Bubble Zoom.asm +04086B24 60000000 #External/Widescreen/Adjust Offscreen Scissor/Draw High Poly Models.asm +04030C7C 38000064 #External/Widescreen/Adjust Offscreen Scissor/Left Camera Bound.asm +04030C88 3800021C #External/Widescreen/Adjust Offscreen Scissor/Right Camera Bound.asm +044DDB30 3F666666 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 1.asm +044DDB34 BF666666 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 2.asm +044DDB2C C3660000 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Negative Vertical Bound.asm +044DDB28 43660000 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Positive Vertical Bound.asm +044DDB4C 3D916873 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Widen Bubble Region.asm +C22FCFC4 00000004 #External/Widescreen/Nametag Fixes/Adjust Nametag Background X Scale.asm +48000011 7C6802A6 +C0030000 4800000C +4E800021 40DC7AE1 +60000000 00000000 +044DDB84 3E89FEFA #External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm + +$Optional: Disable Screen Shake [Achilles1515] +*Will prevent screen from shaking on hits, KOs, collisions, etc ----------------------- +*Will not cause desyncs when playing online +04030E44 4E800020 + +$Optional: Center Align 2P HUD [UnclePunch] +*When playing online, character %'s will always be centered ------------------------- +*Will not cause desyncs when playing online +0416E9AC 38600002 + +$Optional: Flash Red on Failed L-Cancel [Achilles1515, Fizzi] +*When playing online, this will only affect your character --------------------------- +*Will not cause desyncs when playing online +C20C0148 0000000C #External/FlashRedFailedLCancel/ChangeColor.asm +387F0488 89FE0564 +2C0F00D4 41820008 +4800004C 39E00091 +99FE0564 3DE0437F +91FE0518 3DE0C200 +91FE0524 3DE00000 +91FE051C 91FE0520 +91FE0528 91FE052C +91FE0530 3DE0C280 +91FE0534 3DE0800C +61EF0150 7DE903A6 +4E800420 00000000 +C208D690 00000009 #External/FlashRedFailedLCancel/TriggerColor.asm +3CE08048 80E79D30 +54E7443E 2C070208 +40820020 80EDB61C +88E70000 8905000C +7C074000 4182000C +88A5067F 48000018 +88A5067F 2C050007 +4180000C 39E000D4 +99E30564 00000000 diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index 2e5e5dfb43..6ee7e0bb32 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -930,6 +930,7 @@ static void RebuildUserDirectories(unsigned int dir_index) s_user_paths[F_GCSRAM_IDX] = s_user_paths[D_GCUSER_IDX] + GC_SRAM; s_user_paths[F_WIISDCARD_IDX] = s_user_paths[D_WIIROOT_IDX] + DIR_SEP WII_SDCARD; s_user_paths[F_USERJSON_IDX] = s_user_paths[D_USER_IDX] + "user.json"; + s_user_paths[F_DIRECTCODESJSON_IDX] = s_user_paths[D_USER_IDX] + "directcodes.json"; s_user_paths[D_MEMORYWATCHER_IDX] = s_user_paths[D_USER_IDX] + MEMORYWATCHER_DIR DIR_SEP; s_user_paths[F_MEMORYWATCHERLOCATIONS_IDX] = diff --git a/Source/Core/Common/FileUtil.h b/Source/Core/Common/FileUtil.h index f901af515f..5caa949aa6 100644 --- a/Source/Core/Common/FileUtil.h +++ b/Source/Core/Common/FileUtil.h @@ -72,6 +72,7 @@ enum F_MEMORYWATCHERSOCKET_IDX, F_WIISDCARD_IDX, F_USERJSON_IDX, + F_DIRECTCODESJSON_IDX, F_DUALSHOCKUDPCLIENTCONFIG_IDX, NUM_PATH_INDICES }; diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index 5a835d1be2..22b1be952a 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -488,9 +488,10 @@ add_library(core Slippi/SlippiSpectate.h Slippi/SlippiUser.cpp Slippi/SlippiUser.h - Slippi/SlippiGameReporter.cpp - Slippi/SlippiGameReporter.h - Slippi/SlippiPremadeText.h + Slippi/SlippiGameReporter.cpp + Slippi/SlippiGameReporter.h + Slippi/SlippiDirectCodes.cpp + Slippi/SlippiPremadeText.h ) if(_M_X86) diff --git a/Source/Core/Core/HW/EXI/EXI_Device.h b/Source/Core/Core/HW/EXI/EXI_Device.h index 61e4bed4b8..076e3b7250 100644 --- a/Source/Core/Core/HW/EXI/EXI_Device.h +++ b/Source/Core/Core/HW/EXI/EXI_Device.h @@ -65,7 +65,7 @@ public: // For savestates. storing it here seemed cleaner than requiring each implementation to report its // type. I know this class is set up like an interface, but no code requires it to be strictly // such. - TEXIDevices m_device_type; + TEXIDevices m_device_type{EXIDEVICE_NONE}; private: // Byte transfer function for this device diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index 509d202a7b..e536bd3f4c 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -121,6 +121,8 @@ CEXISlippi::CEXISlippi() gameFileLoader = std::make_unique(); game_reporter = std::make_unique(user.get()); g_replayComm = std::make_unique(); + directCodes = std::make_unique("direct-codes.json"); + teamsCodes = std::make_unique("teams-codes.json"); generator = std::default_random_engine(Common::Timer::GetTimeMs()); @@ -1830,6 +1832,20 @@ void CEXISlippi::startFindMatch(u8* payload) shiftJisCode.insert(shiftJisCode.begin(), &payload[1], &payload[1] + 18); shiftJisCode.erase(std::find(shiftJisCode.begin(), shiftJisCode.end(), 0x00), shiftJisCode.end()); + // Log the direct code to file. + if (search.mode == SlippiMatchmaking::DIRECT) + { + // Make sure to convert to UTF8, otherwise json library will fail when + // calling dump(). + std::string utf8Code = SHIFTJISToUTF8(shiftJisCode); + directCodes->AddOrUpdateCode(utf8Code); + } + else if (search.mode == SlippiMatchmaking::TEAMS) + { + std::string utf8Code = SHIFTJISToUTF8(shiftJisCode); + teamsCodes->AddOrUpdateCode(utf8Code); + } + // TODO: Make this work so we dont have to pass shiftJis to mm server // search.connectCode = SHIFTJISToUTF8(shiftJisCode).c_str(); search.connectCode = shiftJisCode; @@ -1874,6 +1890,123 @@ void CEXISlippi::startFindMatch(u8* payload) #endif } +bool CEXISlippi::doesTagMatchInput(u8* input, u8 inputLen, std::string tag) +{ + auto jisTag = UTF8ToSHIFTJIS(tag); + + // Check if this tag matches what has been input so far + bool isMatch = true; + for (int i = 0; i < inputLen; i++) + { + // ERROR_LOG(SLIPPI_ONLINE, "Entered: %X%X. History: %X%X", input[i * 3], input[i * 3 + 1], + // (u8)jisTag[i * 2], + // (u8)jisTag[i * 2 + 1]); + if (input[i * 3] != (u8)jisTag[i * 2] || input[i * 3 + 1] != (u8)jisTag[i * 2 + 1]) + { + isMatch = false; + break; + } + } + + return isMatch; +} + +void CEXISlippi::handleNameEntryLoad(u8* payload) +{ + u8 inputLen = payload[24]; + u32 initialIndex = payload[25] << 24 | payload[26] << 16 | payload[27] << 8 | payload[28]; + u8 scrollDirection = payload[29]; + u8 curMode = payload[30]; + + auto codeHistory = directCodes.get(); + if (curMode == SlippiMatchmaking::TEAMS) + { + codeHistory = teamsCodes.get(); + } + + // Adjust index + u32 curIndex = initialIndex; + if (scrollDirection == 1) + { + curIndex++; + } + else if (scrollDirection == 2) + { + curIndex = curIndex > 0 ? curIndex - 1 : curIndex; + } + else if (scrollDirection == 3) + { + curIndex = 0; + } + + // Scroll to next tag that + std::string tagAtIndex = "1"; + while (curIndex >= 0 && curIndex < (u32)codeHistory->length()) + { + tagAtIndex = codeHistory->get(curIndex); + + // Break if we have found a tag that matches + if (doesTagMatchInput(payload, inputLen, tagAtIndex)) + break; + + curIndex = scrollDirection == 2 ? curIndex - 1 : curIndex + 1; + } + + INFO_LOG(SLIPPI_ONLINE, "Idx: %d, InitIdx: %d, Scroll: %d. Len: %d", curIndex, initialIndex, + scrollDirection, inputLen); + + tagAtIndex = codeHistory->get(curIndex); + if (tagAtIndex == "1") + { + // If we failed to find a tag at the current index, try the initial index again. + // If the initial index matches the filter, preserve that suggestion. Without + // this logic, the suggestion would get cleared + auto initialTag = codeHistory->get(initialIndex); + if (doesTagMatchInput(payload, inputLen, initialTag)) + { + tagAtIndex = initialTag; + curIndex = initialIndex; + } + } + + INFO_LOG(SLIPPI_ONLINE, "Retrieved tag: %s", tagAtIndex.c_str()); + std::string jisCode; + m_read_queue.clear(); + + if (tagAtIndex == "1") + { + m_read_queue.push_back(0); + m_read_queue.insert(m_read_queue.end(), payload, payload + 3 * inputLen); + m_read_queue.insert(m_read_queue.end(), 3 * (8 - inputLen), 0); + m_read_queue.push_back(inputLen); + appendWordToBuffer(&m_read_queue, initialIndex); + return; + } + + // Indicate we have a suggestion + m_read_queue.push_back(1); + + // Convert to tag to shift jis and write to response + jisCode = UTF8ToSHIFTJIS(tagAtIndex); + + // Write out connect code into buffer, injection null terminator after each letter + for (int i = 0; i < 8; i++) + { + for (int j = i * 2; j < i * 2 + 2; j++) + { + m_read_queue.push_back(j < jisCode.length() ? jisCode[j] : 0); + } + + m_read_queue.push_back(0x0); + } + + INFO_LOG(SLIPPI_ONLINE, "New Idx: %d. Jis Code length: %d", curIndex, (u8)(jisCode.length() / 2)); + + // Write length of tag + m_read_queue.push_back(static_cast(jisCode.length() / 2)); + appendWordToBuffer(&m_read_queue, curIndex); +} + void CEXISlippi::prepareOnlineMatchState() { // This match block is a VS match with P1 Red Falco vs P2 Red Bowser vs P3 Young Link vs P4 Young @@ -2133,7 +2266,7 @@ void CEXISlippi::prepareOnlineMatchState() // Overwrite stage information. Make sure everyone loads the same stage u16 stageId = 0x1F; // Default to battlefield if there was no selection - for (auto selections : orderedSelections) + for (const auto& selections : orderedSelections) { if (!selections.isStageSelected) continue; @@ -2780,6 +2913,9 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize) case CMD_FILE_LENGTH: prepareFileLength(&memPtr[bufLoc + 1]); break; + case CMD_FETCH_CODE_SUGGESTION: + handleNameEntryLoad(&memPtr[bufLoc + 1]); + break; case CMD_FILE_LOAD: prepareFileLoad(&memPtr[bufLoc + 1]); break; @@ -2839,7 +2975,7 @@ void CEXISlippi::DMARead(u32 addr, u32 size) { if (m_read_queue.empty()) { - INFO_LOG(EXPANSIONINTERFACE, "EXI SLIPPI DMARead: Empty"); + ERROR_LOG(SLIPPI, "EXI SLIPPI DMARead: Empty"); return; } diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h index d63b94d8c4..7b44938dc0 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.h @@ -9,6 +9,7 @@ #include "Common/CommonTypes.h" #include "Common/File.h" #include "Common/FileUtil.h" +#include "Core/Slippi/SlippiDirectCodes.h" #include "Core/Slippi/SlippiGameFileLoader.h" #include "Core/Slippi/SlippiGameReporter.h" #include "Core/Slippi/SlippiMatchmaking.h" @@ -74,6 +75,7 @@ private: CMD_SEND_CHAT_MESSAGE = 0xBB, CMD_GET_NEW_SEED = 0xBC, CMD_REPORT_GAME = 0xBD, + CMD_FETCH_CODE_SUGGESTION = 0xBE, // Misc CMD_LOG_MESSAGE = 0xD0, @@ -124,6 +126,7 @@ private: {CMD_CLEANUP_CONNECTION, 0}, {CMD_GET_NEW_SEED, 0}, {CMD_REPORT_GAME, 16}, + {CMD_FETCH_CODE_SUGGESTION, 31}, // Misc {CMD_LOG_MESSAGE, 0xFFFF}, // Variable size... will only work if by itself @@ -174,6 +177,8 @@ private: void handleSendInputs(u8* payload); void handleCaptureSavestate(u8* payload); void handleLoadSavestate(u8* payload); + void handleNameEntryAutoComplete(u8* payload); + void handleNameEntryLoad(u8* payload); void startFindMatch(u8* payload); void prepareOnlineMatchState(); void setMatchSelections(u8* payload); @@ -204,6 +209,8 @@ private: void prepareDelayResponse(); void preparePremadeTextLength(u8* payload); void preparePremadeTextLoad(u8* payload); + bool doesTagMatchInput(u8* input, u8 inputLen, std::string tag); + std::vector loadPremadeText(u8* payload); int getCharColor(u8 charId, u8 teamId); @@ -259,6 +266,8 @@ private: std::unique_ptr slippi_netplay; std::unique_ptr matchmaking; std::unique_ptr game_reporter; + std::unique_ptr directCodes; + std::unique_ptr teamsCodes; std::map> activeSavestates; std::deque> availableSavestates; diff --git a/Source/Core/Core/Slippi/SlippiDirectCodes.cpp b/Source/Core/Core/Slippi/SlippiDirectCodes.cpp new file mode 100644 index 0000000000..0662926a2c --- /dev/null +++ b/Source/Core/Core/Slippi/SlippiDirectCodes.cpp @@ -0,0 +1,241 @@ +#include "SlippiDirectCodes.h" + +#ifdef _WIN32 +#include "AtlBase.h" +#include "AtlConv.h" +#endif + +#include "Common/CommonPaths.h" +#include "Common/FileUtil.h" +#include "Common/Logging/Log.h" +#include "Common/MsgHandler.h" +#include "Common/StringUtil.h" +#include "Common/Thread.h" + +#include "Core/ConfigManager.h" + +#include +#include +#include + +#include +using json = nlohmann::json; + +SlippiDirectCodes::SlippiDirectCodes(std::string fileName) +{ + m_fileName = fileName; + + // Prevent additional file reads, if we've already loaded data to memory. + // if (directCodeInfos.empty()) + ReadFile(); + Sort(); +} + +SlippiDirectCodes::~SlippiDirectCodes() +{ + // Add additional cleanup behavior here? Just added something + // So compiler wouldn't nag. + return; +} + +void SlippiDirectCodes::ReadFile() +{ + std::string directCodesFilePath = getCodesFilePath(); + + INFO_LOG(SLIPPI_ONLINE, "Looking for direct codes file at %s", directCodesFilePath.c_str()); + + if (!File::Exists(directCodesFilePath)) + { + // Attempt to create empty file with array as parent json item. + if (File::CreateEmptyFile(directCodesFilePath)) + { + File::WriteStringToFile("[\n]", directCodesFilePath); + } + else + { + WARN_LOG(SLIPPI_ONLINE, "Was unable to create %s", directCodesFilePath.c_str()); + } + } + + std::string directCodesFileContents; + File::ReadFileToString(directCodesFilePath, directCodesFileContents); + + directCodeInfos = parseFile(directCodesFileContents); +} + +void SlippiDirectCodes::AddOrUpdateCode(std::string code) +{ + WARN_LOG(SLIPPI_ONLINE, "Attempting to add or update direct code: %s", code.c_str()); + + time_t curTime; + time(&curTime); + u8 dateTimeStrLength = sizeof "20171015T095717"; + std::vector dateTimeBuf(dateTimeStrLength); + strftime(&dateTimeBuf[0], dateTimeStrLength, "%Y%m%dT%H%M%S", localtime(&curTime)); + std::string timestamp(&dateTimeBuf[0]); + + bool found = false; + for (auto it = directCodeInfos.begin(); it != directCodeInfos.end(); ++it) + { + if (it->connectCode == code) + { + found = true; + it->lastPlayed = timestamp; + } + } + + if (!found) + { + CodeInfo newDirectCode = {code, timestamp, false}; + directCodeInfos.push_back(newDirectCode); + } + + // TODO: Maybe remove from here? + // Or start a thread that is periodically called, if file writes will happen enough. + WriteFile(); +} + +void SlippiDirectCodes::Sort(u8 sortByProperty) +{ + switch (sortByProperty) + { + case SORT_BY_TIME: + std::sort( + directCodeInfos.begin(), directCodeInfos.end(), + [](const CodeInfo a, const CodeInfo b) -> bool { return a.lastPlayed > b.lastPlayed; }); + break; + + case SORT_BY_NAME: + std::sort( + directCodeInfos.begin(), directCodeInfos.end(), + [](const CodeInfo a, const CodeInfo b) -> bool { return a.connectCode < b.connectCode; }); + break; + } +} + +std::string SlippiDirectCodes::Autocomplete(std::string startText) +{ + // Pre-sort direct codes. + Sort(); + + // Find first entry in our sorted vector that starts with the given text. + for (auto it = directCodeInfos.begin(); it != directCodeInfos.end(); it++) + { + if (it->connectCode.rfind(startText, 0) == 0) + { + return it->connectCode; + } + } + + return startText; +} + +std::string SlippiDirectCodes::get(int index) +{ + Sort(); + + if (index < directCodeInfos.size() && index >= 0) + { + return directCodeInfos.at(index).connectCode; + } + + INFO_LOG(SLIPPI_ONLINE, "Out of bounds name entry index %d", index); + + return (index >= directCodeInfos.size()) ? "1" : ""; +} + +int SlippiDirectCodes::length() +{ + return (int)directCodeInfos.size(); +} + +void SlippiDirectCodes::WriteFile() +{ + std::string directCodesFilePath = getCodesFilePath(); + + // Outer empty array. + json fileData = json::array(); + + // Inner contents. + json directCodeData = json::object(); + + // TODO Define constants for string literals. + for (auto it = directCodeInfos.begin(); it != directCodeInfos.end(); ++it) + { + directCodeData["connectCode"] = it->connectCode; + directCodeData["lastPlayed"] = it->lastPlayed; + directCodeData["isFavorite"] = it->isFavorite; + + fileData.emplace_back(directCodeData); + } + + File::WriteStringToFile(fileData.dump(), directCodesFilePath); +} + +std::string SlippiDirectCodes::getCodesFilePath() +{ + std::string fileName = m_fileName + ".json"; + + // TODO: Move to User dir +#if defined(__APPLE__) + std::string directCodesPath = + File::GetBundleDirectory() + "/Contents/Resources" + DIR_SEP + m_fileName; +#elif defined(_WIN32) + std::string directCodesPath = File::GetExeDirectory() + DIR_SEP + m_fileName; +#else + std::string directCodesPath = File::GetUserPath(D_USER_IDX) + m_fileName; +// directCodesPath.pop_back(); +#endif + return directCodesPath; +} + +inline std::string readString(json obj, std::string key) +{ + auto item = obj.find(key); + if (item == obj.end() || item.value().is_null()) + { + return ""; + } + + return obj[key]; +} + +inline bool readBool(json obj, std::string key) +{ + auto item = obj.find(key); + if (item == obj.end() || item.value().is_null()) + { + return false; + } + + return obj[key]; +} + +std::vector SlippiDirectCodes::parseFile(std::string fileContents) +{ + std::vector directCodes; + + json res = json::parse(fileContents, nullptr, false); + // Unlike the user.json, the encapsulating type should be an array. + if (res.is_discarded() || !res.is_array()) + { + WARN_LOG(SLIPPI_ONLINE, "Malformed json in direct codes file."); + return directCodes; + } + + // Retrieve all saved direct codes and related info + for (auto it = res.begin(); it != res.end(); ++it) + { + if (it.value().is_object()) + { + CodeInfo curDirectCode; + curDirectCode.connectCode = readString(*it, "connectCode"); + curDirectCode.lastPlayed = readString(*it, "lastPlayed"); + curDirectCode.isFavorite = readBool(*it, "favorite"); + + directCodes.push_back(curDirectCode); + } + } + + return directCodes; +} diff --git a/Source/Core/Core/Slippi/SlippiDirectCodes.h b/Source/Core/Core/Slippi/SlippiDirectCodes.h new file mode 100644 index 0000000000..3182270f70 --- /dev/null +++ b/Source/Core/Core/Slippi/SlippiDirectCodes.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include +#include +#include +#include "Common/CommonTypes.h" + +class SlippiDirectCodes +{ +public: + static const uint8_t SORT_BY_TIME = 1; + static const uint8_t SORT_BY_FAVORITE = 2; + static const uint8_t SORT_BY_NAME = 3; + + struct CodeInfo + { + std::string connectCode = ""; + std::string lastPlayed = ""; + bool isFavorite = false; + }; + + SlippiDirectCodes(std::string fileName); + ~SlippiDirectCodes(); + + void ReadFile(); + void AddOrUpdateCode(std::string code); + std::string get(int index); + int length(); + void Sort(u8 sortByProperty = SlippiDirectCodes::SORT_BY_TIME); + std::string Autocomplete(std::string startText); + +protected: + void WriteFile(); + std::string getCodesFilePath(); + std::vector parseFile(std::string fileContents); + std::vector directCodeInfos; + std::string m_fileName; +}; diff --git a/Source/Core/Core/Slippi/SlippiNetplay.h b/Source/Core/Core/Slippi/SlippiNetplay.h index 27e9e5891a..35e7737770 100644 --- a/Source/Core/Core/Slippi/SlippiNetplay.h +++ b/Source/Core/Core/Slippi/SlippiNetplay.h @@ -42,19 +42,19 @@ struct SlippiRemotePadOutput class SlippiPlayerSelections { public: - u8 playerIdx = 0; - u8 characterId = 0; - u8 characterColor = 0; - u8 teamId = 0; + u8 playerIdx{}; + u8 characterId{}; + u8 characterColor{}; + u8 teamId{}; bool isCharacterSelected = false; - u16 stageId = 0; + u16 stageId{}; bool isStageSelected = false; - u32 rngOffset = 0; + u32 rngOffset{}; - int messageId; + int messageId{}; void Merge(SlippiPlayerSelections& s) { diff --git a/Source/Core/Core/Slippi/SlippiPremadeText.h b/Source/Core/Core/Slippi/SlippiPremadeText.h index 9b545362db..ef6d881270 100644 --- a/Source/Core/Core/Slippi/SlippiPremadeText.h +++ b/Source/Core/Core/Slippi/SlippiPremadeText.h @@ -269,7 +269,6 @@ private: COMMON_CHARACTER = 0x20, SPECIAL_CHARACTER = 0x40, CUSTOM_NULL = 0x99, - }; std::vector>> OPCODES; From c5ac13fc3041f1b6e324b4b66cb1485abc52a723 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 8 May 2022 22:46:53 -0700 Subject: [PATCH 16/18] pull in project-slippi/Ishiiruka/commit/40cb08774ec8f2f2b1e78df09a0a8dc9c793afa8 --- Source/Core/Common/CommonPaths.h | 1 + Source/Core/Common/FileUtil.cpp | 1 + Source/Core/Common/FileUtil.h | 1 + Source/Core/Core/Slippi/SlippiDirectCodes.cpp | 7 ++----- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Core/Common/CommonPaths.h b/Source/Core/Common/CommonPaths.h index a041c07f05..5cf8835454 100644 --- a/Source/Core/Common/CommonPaths.h +++ b/Source/Core/Common/CommonPaths.h @@ -71,6 +71,7 @@ #define BACKUP_DIR "Backup" #define RESOURCEPACK_DIR "ResourcePacks" #define DYNAMICINPUT_DIR "DynamicInputTextures" +#define SLIPPI_DIR "Slippi" // This one is only used to remove it if it was present #define SHADERCACHE_LEGACY_DIR "ShaderCache" diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index 6ee7e0bb32..ba063010f3 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -913,6 +913,7 @@ static void RebuildUserDirectories(unsigned int dir_index) s_user_paths[D_BACKUP_IDX] = s_user_paths[D_USER_IDX] + BACKUP_DIR DIR_SEP; s_user_paths[D_RESOURCEPACK_IDX] = s_user_paths[D_USER_IDX] + RESOURCEPACK_DIR DIR_SEP; s_user_paths[D_DYNAMICINPUT_IDX] = s_user_paths[D_LOAD_IDX] + DYNAMICINPUT_DIR DIR_SEP; + s_user_paths[D_SLIPPI_IDX] = s_user_paths[D_USER_IDX] + SLIPPI_DIR DIR_SEP; s_user_paths[F_DOLPHINCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + DOLPHIN_CONFIG; s_user_paths[F_GCPADCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + GCPAD_CONFIG; s_user_paths[F_WIIPADCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + WIIPAD_CONFIG; diff --git a/Source/Core/Common/FileUtil.h b/Source/Core/Common/FileUtil.h index 5caa949aa6..d652dcb6d8 100644 --- a/Source/Core/Common/FileUtil.h +++ b/Source/Core/Common/FileUtil.h @@ -55,6 +55,7 @@ enum D_BACKUP_IDX, D_RESOURCEPACK_IDX, D_DYNAMICINPUT_IDX, + D_SLIPPI_IDX, F_DOLPHINCONFIG_IDX, F_GCPADCONFIG_IDX, F_WIIPADCONFIG_IDX, diff --git a/Source/Core/Core/Slippi/SlippiDirectCodes.cpp b/Source/Core/Core/Slippi/SlippiDirectCodes.cpp index 0662926a2c..6962efb3f2 100644 --- a/Source/Core/Core/Slippi/SlippiDirectCodes.cpp +++ b/Source/Core/Core/Slippi/SlippiDirectCodes.cpp @@ -47,7 +47,7 @@ void SlippiDirectCodes::ReadFile() if (!File::Exists(directCodesFilePath)) { // Attempt to create empty file with array as parent json item. - if (File::CreateEmptyFile(directCodesFilePath)) + if (File::CreateFullPath(directCodesFilePath) && File::CreateEmptyFile(directCodesFilePath)) { File::WriteStringToFile("[\n]", directCodesFilePath); } @@ -180,11 +180,8 @@ std::string SlippiDirectCodes::getCodesFilePath() #if defined(__APPLE__) std::string directCodesPath = File::GetBundleDirectory() + "/Contents/Resources" + DIR_SEP + m_fileName; -#elif defined(_WIN32) - std::string directCodesPath = File::GetExeDirectory() + DIR_SEP + m_fileName; #else - std::string directCodesPath = File::GetUserPath(D_USER_IDX) + m_fileName; -// directCodesPath.pop_back(); + std::string directCodesPath = File::GetUserPath(D_SLIPPI_IDX) + m_fileName; #endif return directCodesPath; } From f2df98765dc663935dacbbab2fa41dc6dc7385df Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 8 May 2022 23:44:41 -0700 Subject: [PATCH 17/18] add attempt to use getaddrinfo --- Source/Core/Core/Slippi/SlippiMatchmaking.cpp | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp index daddd1636b..83d945c9da 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp @@ -309,13 +309,34 @@ void SlippiMatchmaking::startMatchmaking() // it didn't work on Linux/Mac but I haven't tested it. // I left this logic on for now under the assumption that it will help more people than // it will hurt - char lan_addr[30] = ""; + char lan_addr[30]{}; char host[256]; - char ip[INET_ADDRSTRLEN] = ""; + char ip[INET_ADDRSTRLEN]{}; struct hostent* host_entry; int hostname; hostname = gethostname(host, sizeof(host)); // find the host name + // attempt at using getaddrinfo, only ever sees 127.0.0.1 for some reason. for now the existing + // impl will work because we only use ipv4. + // struct addrinfo hints = {0}, *addrs; + // hints.ai_family = AF_INET; + // const int status = getaddrinfo(nullptr, std::to_string(m_hostPort).c_str(), &hints, &addrs); + // if (status != 0) + // { + // ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN address"); + // return; + // } + // for (struct addrinfo* addrinfo = addrs; addrinfo != nullptr; addrinfo = addrinfo->ai_next) + // { + // if (getnameinfo(addrs->ai_addr, static_cast(addrs->ai_addrlen), lan_addr, + // sizeof(lan_addr), nullptr, 0, NI_NUMERICHOST)) + // { + // continue; + // } + // WARN_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] IP via getaddrinfo {}", lan_addr); + // } + + // freeaddrinfo(addrs); if (hostname == -1) { ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Error finding LAN address"); From 1f349de5313abc50c91f27863f77ea881dba1bb6 Mon Sep 17 00:00:00 2001 From: Nikhil Narayana Date: Sun, 8 May 2022 23:46:11 -0700 Subject: [PATCH 18/18] pull in project-slippi/Ishiiruka/commit/423beb4265692427d27f6a22a97cba3e4583500f --- Source/Core/Core/Slippi/SlippiMatchmaking.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp index 83d945c9da..bfa026899e 100644 --- a/Source/Core/Core/Slippi/SlippiMatchmaking.cpp +++ b/Source/Core/Core/Slippi/SlippiMatchmaking.cpp @@ -221,7 +221,7 @@ void SlippiMatchmaking::startMatchmaking() if (userInfo.port > 0) m_hostPort = userInfo.port; else - m_hostPort = 49000 + (generator() % 2000); + m_hostPort = 41000 + (generator() % 10000); ERROR_LOG_FMT(SLIPPI_ONLINE, "[Matchmaking] Port to use: {}...", m_hostPort); // We are explicitly setting the client address because we are trying to utilize our connection