From 9421f0c56b044a31472f23ae6bc1962e675220bc Mon Sep 17 00:00:00 2001 From: R2DLiu Date: Thu, 22 Jun 2023 17:58:08 -0400 Subject: [PATCH] even with d7f10754b27fd216bf2180dff15639e39ec3bdeb. add injection list files from head at f68f6f6cbf56b3e4e43f27475763f1d15b6d7c67 --- .../InjectionLists/list_console_PAL.json | 81 + .../InjectionLists/list_console_UCF.json | 32 + .../InjectionLists/list_console_UCF_084.json | 67 + .../list_console_UCF_084_stealth.json | 60 + .../list_console_UCF_stealth.json | 25 + .../InjectionLists/list_console_core.json | 382 +++ .../list_console_crash_output.json | 11 + .../list_console_gameplay_both.json | 67 + .../list_console_gameplay_lgl.json | 46 + .../list_console_gameplay_wobbling-old1.json | 16 + .../list_console_gameplay_wobbling.json | 25 + .../InjectionLists/list_console_lag_pd.json | 25 + .../list_console_lag_pdhalfvb.json | 53 + .../list_console_mods_friendlies.json | 109 + .../list_console_mods_stealth.json | 39 + .../list_console_mods_tournament.json | 81 + .../InjectionLists/list_console_safety.json | 18 + .../list_console_screen_wide.json | 95 + .../list_console_screen_wide_shutters.json | 102 + .../list_console_stages_all.json | 46 + .../list_console_stages_stadium.json | 32 + .../Slippi/InjectionLists/list_debugging.json | 32 + .../InjectionLists/list_netplay-old1.json | 2746 +++++++++++++++++ .../InjectionLists/list_netplay-old2.json | 11 + .../Slippi/InjectionLists/list_netplay.json | 2034 ++++++++++++ Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp | 366 +-- Source/Core/Core/NetPlayProto.h | 1 + Source/Core/Core/Slippi/SlippiExiTypes.h | 5 + Source/Core/Core/Slippi/SlippiGame.cpp | 3 +- Source/Core/Core/Slippi/SlippiNetplay.cpp | 161 +- Source/Core/Core/Slippi/SlippiNetplay.h | 31 +- Source/Core/Core/Slippi/SlippiPlayback.cpp | 331 ++ Source/Core/Core/Slippi/SlippiPlayback.h | 7 + Source/Core/Core/Slippi/SlippiUser.cpp | 29 +- Source/Core/DolphinQt/HotkeyScheduler.cpp | 26 +- 35 files changed, 6807 insertions(+), 388 deletions(-) create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_PAL.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_UCF.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_UCF_084.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_UCF_084_stealth.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_UCF_stealth.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_core.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_crash_output.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_gameplay_both.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_gameplay_lgl.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling-old1.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_lag_pd.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_lag_pdhalfvb.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_mods_friendlies.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_mods_stealth.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_mods_tournament.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_safety.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_screen_wide.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_screen_wide_shutters.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_stages_all.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_console_stages_stadium.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_debugging.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_netplay-old1.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_netplay-old2.json create mode 100644 Data/Sys/Slippi/InjectionLists/list_netplay.json diff --git a/Data/Sys/Slippi/InjectionLists/list_console_PAL.json b/Data/Sys/Slippi/InjectionLists/list_console_PAL.json new file mode 100644 index 0000000000..7afcdd253d --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_PAL.json @@ -0,0 +1,81 @@ +{ + "Details": [ + { + "InjectionAddress": "80068F30", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Character DAT Patcher.asm", + "Tags": "" + }, + { + "InjectionAddress": "802F9A3C", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/PAL Stock Icons.asm", + "Tags": "" + }, + { + "InjectionAddress": "8010FC44", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/DK_AerialUpB.asm", + "Tags": "" + }, + { + "InjectionAddress": "8010FB64", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/DK_GroundedUpB.asm", + "Tags": "" + }, + { + "InjectionAddress": "800796E0", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/DetectionHitboxes.asm", + "Tags": "" + }, + { + "InjectionAddress": "801239A8", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/ICs_FreezeGlitch.asm", + "Tags": "" + }, + { + "InjectionAddress": "803CE4D4", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/Samus_BombJump.asm", + "Tags": "" + }, + { + "InjectionAddress": "802B7E54", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/Samus_Extender1.asm", + "Tags": "" + }, + { + "InjectionAddress": "802B808C", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Core/Additional/Samus_Extender2.asm", + "Tags": "" + }, + { + "InjectionAddress": "80266978", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Indicators/PAL CSS Indicator.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DEC14", + "Name": "PAL Toggle", + "Codetype": "Auto", + "Annotation": "External/PAL/Toggle/PALToggleEnable.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_UCF.json b/Data/Sys/Slippi/InjectionLists/list_console_UCF.json new file mode 100644 index 0000000000..8177a93d4f --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_UCF.json @@ -0,0 +1,32 @@ +{ + "Details": [ + { + "InjectionAddress": "800C9A44", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF DB.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800998A4", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF SD.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800908F4", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF Tumble.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802662D0", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Indicator/UCF Text.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_UCF_084.json b/Data/Sys/Slippi/InjectionLists/list_console_UCF_084.json new file mode 100644 index 0000000000..21ab13d810 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_UCF_084.json @@ -0,0 +1,67 @@ +{ + "Details": [ + { + "InjectionAddress": "800D65EC", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF DBOOC SquatRv Fix.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800C9A44", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Dashback.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8006B460", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Pad Buffer + 1.0 Cardinals.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8008E54C", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF SDI.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8009A0B8", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Shield Drop Extended.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800998A4", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Shield Drop.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80093294", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Shield SDI.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800908F4", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Tumble.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802662D0", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/Indicator/UCF Text.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_UCF_084_stealth.json b/Data/Sys/Slippi/InjectionLists/list_console_UCF_084_stealth.json new file mode 100644 index 0000000000..e26703ef98 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_UCF_084_stealth.json @@ -0,0 +1,60 @@ +{ + "Details": [ + { + "InjectionAddress": "800D65EC", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF DBOOC SquatRv Fix.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800C9A44", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Dashback.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8006B460", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Pad Buffer + 1.0 Cardinals.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8008E54C", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF SDI.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8009A0B8", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Shield Drop Extended.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800998A4", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Shield Drop.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80093294", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Shield SDI.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800908F4", + "Name": "UCF 0.84 Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.84/UCF/UCF Tumble.asm", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_UCF_stealth.json b/Data/Sys/Slippi/InjectionLists/list_console_UCF_stealth.json new file mode 100644 index 0000000000..55a560cef4 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_UCF_stealth.json @@ -0,0 +1,25 @@ +{ + "Details": [ + { + "InjectionAddress": "800C9A44", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF DB.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800998A4", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF SD.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800908F4", + "Name": "UCF Slippi", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF Tumble.asm", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_core.json b/Data/Sys/Slippi/InjectionLists/list_console_core.json new file mode 100644 index 0000000000..ba1abf0351 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_core.json @@ -0,0 +1,382 @@ +{ + "Details": [ + { + "InjectionAddress": "801BFA20", + "Name": "General", + "Codetype": "Auto", + "Annotation": "External/Boot to CSS/Boot To CSS.asm", + "Tags": "" + }, + { + "InjectionAddress": "8015EE98", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EDDC", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80164B14", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801648F4", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EE4C", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EE14", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D968", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D9D8", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8017229C", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801737B0", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80164658", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801644E8", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8030490C", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803044F0", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A48", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A4C", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A50", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A60", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A78", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D94C", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D984", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016B480", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B0A14", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802641B0", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80397878", + "Name": "General", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801AF6F4", + "Name": "General", + "Codetype": "Auto", + "Annotation": "External/Skip Memcard Prompt/Skip Memcard Prompt.asm", + "Tags": "" + }, + { + "InjectionAddress": "8025B8BC", + "Name": "General", + "Codetype": "Auto", + "Annotation": "External/LRAStart From SSS Goes to CSS/LRAStart From SSS Goes to CSS.asm", + "Tags": "" + }, + { + "InjectionAddress": "803D4A70", + "Name": "General", + "Codetype": "Auto", + "Annotation": "External/Rumble Off/Rumble Off.asm", + "Tags": "" + }, + { + "InjectionAddress": "800679BC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/ExtendPlayerBlock.asm", + "Tags": "" + }, + { + "InjectionAddress": "803219EC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/FlushFrameBuffer.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016D884", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGameEnd.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016E74C", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGameInfo.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006DA34", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGamePostFrame.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006B0DC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGamePreFrame.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005604", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/ShouldRecord.asm", + "Tags": "" + }, + { + "InjectionAddress": "8008D698", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/GetLCancelStatus/GetLCancelStatus.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006C324", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/GetLCancelStatus/ResetLCancelStatus.asm", + "Tags": "" + }, + { + "InjectionAddress": "800055F8", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/GetIsFollower.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016D294", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/IncrementFrameIndex.asm", + "Tags": "" + }, + { + "InjectionAddress": "801D460C", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/GetPreloadedTransition.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D14C8", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/Init isLoaded Bool.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D45EC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/Load Transformation.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4F14", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/Reset isLoaded.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4610", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/SkipNormalDecision1.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4724", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/SkipNormalDecision2.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "804DEC18", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Toggle/PsPreloadToggleEnable.asm", + "Tags": "" + }, + { + "InjectionAddress": "801C154C", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Initialize Stage Data/Init Stage Data.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80068EEC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Initialize Player Data/Init Player Data.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800055F0", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/EXITransferBuffer/EXITransferBuffer.asm", + "Tags": "" + }, + { + "InjectionAddress": "800055FC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Gecko/ProcessCodeList.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005600", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/ConsoleOverrides/SetGeckoStart.asm", + "Tags": "" + }, + { + "InjectionAddress": "800AC5B8", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/NanaDeterminism/NanaDeterminism.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D24FC", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/PSCameraIndependentMonitor/PSCameraIndependentMonitor.asm", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_crash_output.json b/Data/Sys/Slippi/InjectionLists/list_console_crash_output.json new file mode 100644 index 0000000000..3b38f24f6a --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_crash_output.json @@ -0,0 +1,11 @@ +{ + "Details": [ + { + "InjectionAddress": "80394A68", + "Name": "Crash Output", + "Codetype": "Auto", + "Annotation": "Debugging/AdditionalCrashInfo/AdditionalCrashInfo.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_gameplay_both.json b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_both.json new file mode 100644 index 0000000000..630b353a2a --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_both.json @@ -0,0 +1,67 @@ +{ + "Details": [ + { + "InjectionAddress": "801A5E90", + "Name": "Ledge Grab Limit", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016EBD8", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B0498", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B05CC", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B05C8", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80165C48", + "Name": "Ledge Grab Limit", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800DB880", + "Name": "Disable Wobbling", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Init Wobble Count Air.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800DBBD4", + "Name": "Disable Wobbling", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Init Wobble Count Ground.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8008F090", + "Name": "Disable Wobbling", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Wobble Check.asm", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_gameplay_lgl.json b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_lgl.json new file mode 100644 index 0000000000..b820518073 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_lgl.json @@ -0,0 +1,46 @@ +{ + "Details": [ + { + "InjectionAddress": "801A5E90", + "Name": "Ledge Grab Limit", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016EBD8", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B0498", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B05CC", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B05C8", + "Name": "Ledge Grab Limit", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80165C48", + "Name": "Ledge Grab Limit", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling-old1.json b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling-old1.json new file mode 100644 index 0000000000..8704e53e54 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling-old1.json @@ -0,0 +1,16 @@ +{ + "Details": [ + { + "InjectionAddress": "800DA9DC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8008F090", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling.json b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling.json new file mode 100644 index 0000000000..5c2ba24610 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_gameplay_wobbling.json @@ -0,0 +1,25 @@ +{ + "Details": [ + { + "InjectionAddress": "800DB880", + "Name": "Disable Wobbling", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Init Wobble Count Air.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800DBBD4", + "Name": "Disable Wobbling", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Init Wobble Count Ground.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8008F090", + "Name": "Disable Wobbling", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Wobble Check.asm", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_lag_pd.json b/Data/Sys/Slippi/InjectionLists/list_console_lag_pd.json new file mode 100644 index 0000000000..da380af3aa --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_lag_pd.json @@ -0,0 +1,25 @@ +{ + "Details": [ + { + "InjectionAddress": "801A4DA0", + "Name": "Polling Drift Fix", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4DB4", + "Name": "Polling Drift Fix", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80019860", + "Name": "Polling Drift Fix", + "Codetype": "04", + "Annotation": "", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_lag_pdhalfvb.json b/Data/Sys/Slippi/InjectionLists/list_console_lag_pdhalfvb.json new file mode 100644 index 0000000000..3a882bd70e --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_lag_pdhalfvb.json @@ -0,0 +1,53 @@ +{ + "Details": [ + { + "InjectionAddress": "801A4D98", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A5050", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4BEC", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80158268", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8034EB60", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80397878", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4570", + "Name": "Polling Drift + Half Visual Buffer Fixes", + "Codetype": "Auto", + "Annotation": "External/Lag Reduction/Force HD/480pDeflickerOff.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_mods_friendlies.json b/Data/Sys/Slippi/InjectionLists/list_console_mods_friendlies.json new file mode 100644 index 0000000000..ec94ca9cd0 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_mods_friendlies.json @@ -0,0 +1,109 @@ +{ + "Details": [ + { + "InjectionAddress": "8016E510", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/NeutralSpawn/NeutralSpawn.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802FCCD8", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Hide Nametag When Invisible/Hide Nametag When Invisible.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B1C", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B30", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "802605FC", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DC47C", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/CSS Player Hands Default to HMN Button/Change Default Hand Position.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261A6C", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/CSS Player Hands Default to HMN Button/Fix A Button Buffer When Exiting Name Entry.asm", + "Tags": "" + }, + { + "InjectionAddress": "80266CE0", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Disable FoD During Doubles/Disable FoD During Doubles.asm", + "Tags": "" + }, + { + "InjectionAddress": "802608D8", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Toggle Rumble From CSS/Toggle Rumble From CSS.asm", + "Tags": "" + }, + { + "InjectionAddress": "80259B84", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Stage Striking/Random_Stage_Fix.asm", + "Tags": "" + }, + { + "InjectionAddress": "80259C40", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Stage Striking/Stage_Striking.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A5B14", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "External/Salty Runback/Salty Runback.asm", + "Tags": "" + }, + { + "InjectionAddress": "80265220", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "Common/Winners Names are Gold on CSS/Change Name Color.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016EA30", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "Common/Winners Names are Gold on CSS/Remember Who LRA Started.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016EBAC", + "Name": "Full friendlies codes", + "Codetype": "Auto", + "Annotation": "Common/CSS KO Stars/Asign KO Stars Upon Exiting Dairantou.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_mods_stealth.json b/Data/Sys/Slippi/InjectionLists/list_console_mods_stealth.json new file mode 100644 index 0000000000..e66fa4954d --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_mods_stealth.json @@ -0,0 +1,39 @@ +{ + "Details": [ + { + "InjectionAddress": "8016E510", + "Name": "Stealth tournament codes", + "Codetype": "Auto", + "Annotation": "External/NeutralSpawn/NeutralSpawn.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802FCCD8", + "Name": "Stealth tournament codes", + "Codetype": "Auto", + "Annotation": "External/Hide Nametag When Invisible/Hide Nametag When Invisible.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B1C", + "Name": "Stealth tournament codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B30", + "Name": "Stealth tournament codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "802605FC", + "Name": "Stealth tournament codes", + "Codetype": "Auto", + "Annotation": "External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_mods_tournament.json b/Data/Sys/Slippi/InjectionLists/list_console_mods_tournament.json new file mode 100644 index 0000000000..68b0ce74b8 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_mods_tournament.json @@ -0,0 +1,81 @@ +{ + "Details": [ + { + "InjectionAddress": "8016E510", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/NeutralSpawn/NeutralSpawn.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802FCCD8", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Hide Nametag When Invisible/Hide Nametag When Invisible.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B1C", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B30", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "802605FC", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DC47C", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/CSS Player Hands Default to HMN Button/Change Default Hand Position.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261A6C", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/CSS Player Hands Default to HMN Button/Fix A Button Buffer When Exiting Name Entry.asm", + "Tags": "" + }, + { + "InjectionAddress": "80266CE0", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Disable FoD During Doubles/Disable FoD During Doubles.asm", + "Tags": "" + }, + { + "InjectionAddress": "802608D8", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Toggle Rumble From CSS/Toggle Rumble From CSS.asm", + "Tags": "" + }, + { + "InjectionAddress": "80259B84", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Stage Striking/Random_Stage_Fix.asm", + "Tags": "" + }, + { + "InjectionAddress": "80259C40", + "Name": "Full tournament codes", + "Codetype": "Auto", + "Annotation": "External/Stage Striking/Stage_Striking.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_safety.json b/Data/Sys/Slippi/InjectionLists/list_console_safety.json new file mode 100644 index 0000000000..07ac560fc1 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_safety.json @@ -0,0 +1,18 @@ +{ + "Details": [ + { + "InjectionAddress": "8022F958", + "Name": "Tournament safety codes", + "Codetype": "Auto", + "Annotation": "External/FixedDamageRatio/SkipInputHandling.asm", + "Tags": "" + }, + { + "InjectionAddress": "80167F40", + "Name": "Tournament safety codes", + "Codetype": "Auto", + "Annotation": "External/PreventPauseSoftLocks/ForcePauseOn.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_screen_wide.json b/Data/Sys/Slippi/InjectionLists/list_console_screen_wide.json new file mode 100644 index 0000000000..358a92d3a6 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_screen_wide.json @@ -0,0 +1,95 @@ +{ + "Details": [ + { + "InjectionAddress": "803BB05C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Fix Screen Flash.asm", + "Tags": "" + }, + { + "InjectionAddress": "8036A4A8", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Overwrite CObj Values.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB58", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Adjust Bubble Zoom.asm", + "Tags": "" + }, + { + "InjectionAddress": "80086B24", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Draw High Poly Models.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030C7C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Left Camera Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030C88", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Right Camera Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB30", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 1.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB34", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 2.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB2C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Negative Vertical Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB28", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Positive Vertical Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB4C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Widen Bubble Region.asm", + "Tags": "" + }, + { + "InjectionAddress": "802FCFC4", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Nametag Fixes/Adjust Nametag Background X Scale.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB84", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_screen_wide_shutters.json b/Data/Sys/Slippi/InjectionLists/list_console_screen_wide_shutters.json new file mode 100644 index 0000000000..27df8f8f40 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_screen_wide_shutters.json @@ -0,0 +1,102 @@ +{ + "Details": [ + { + "InjectionAddress": "803BB05C", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Fix Screen Flash.asm", + "Tags": "" + }, + { + "InjectionAddress": "8036A4A8", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Overwrite CObj Values.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB58", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Adjust Bubble Zoom.asm", + "Tags": "" + }, + { + "InjectionAddress": "80086B24", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Draw High Poly Models.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030C7C", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Left Camera Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030C88", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Right Camera Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB30", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 1.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB34", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 2.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB2C", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Negative Vertical Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB28", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Positive Vertical Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB4C", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Widen Bubble Region.asm", + "Tags": "" + }, + { + "InjectionAddress": "802FCFC4", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Nametag Fixes/Adjust Nametag Background X Scale.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB84", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm", + "Tags": "" + }, + { + "InjectionAddress": "80302784", + "Name": "Optional: 16:9 -\u003e 73:60", + "Codetype": "Auto", + "Annotation": "External/WidescreenShutters/Add Shutters.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_stages_all.json b/Data/Sys/Slippi/InjectionLists/list_console_stages_all.json new file mode 100644 index 0000000000..44a7a4e3e4 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_stages_all.json @@ -0,0 +1,46 @@ +{ + "Details": [ + { + "InjectionAddress": "8025A530", + "Name": "Frozen Stages", + "Codetype": "Auto", + "Annotation": "External/Frozen All/Blink SSS/EditColor.asm", + "Tags": "" + }, + { + "InjectionAddress": "8025B718", + "Name": "Frozen Stages", + "Codetype": "Auto", + "Annotation": "External/Frozen All/Blink SSS/SavePointer.asm", + "Tags": "" + }, + { + "InjectionAddress": "803E67E0", + "Name": "Frozen Stages", + "Codetype": "Auto", + "Annotation": "External/Frozen All/Core/1.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8021AAE4", + "Name": "Frozen Stages", + "Codetype": "Auto", + "Annotation": "External/Frozen All/Core/2.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D1548", + "Name": "Frozen Stages", + "Codetype": "Auto", + "Annotation": "External/Frozen All/Core/3.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801E3348", + "Name": "Frozen Stages", + "Codetype": "Auto", + "Annotation": "External/Frozen All/Core/4.asm", + "Tags": "[affects-gameplay]" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_console_stages_stadium.json b/Data/Sys/Slippi/InjectionLists/list_console_stages_stadium.json new file mode 100644 index 0000000000..49d6177877 --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_console_stages_stadium.json @@ -0,0 +1,32 @@ +{ + "Details": [ + { + "InjectionAddress": "801D45FC", + "Name": "Frozen Stadium", + "Codetype": "Auto", + "Annotation": "External/Frozen PS/Core/FreezePokemon.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8025A530", + "Name": "Frozen Stadium", + "Codetype": "Auto", + "Annotation": "External/Frozen PS/PSBlinkBlue/PSEditColor.asm", + "Tags": "" + }, + { + "InjectionAddress": "8025B718", + "Name": "Frozen Stadium", + "Codetype": "Auto", + "Annotation": "External/Frozen PS/PSBlinkBlue/SavePointer.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DEC1C", + "Name": "Frozen Stadium", + "Codetype": "Auto", + "Annotation": "External/Frozen PS/Toggle/FrzPkmToggleEnable.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_debugging.json b/Data/Sys/Slippi/InjectionLists/list_debugging.json new file mode 100644 index 0000000000..05bc07ee9f --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_debugging.json @@ -0,0 +1,32 @@ +{ + "Details": [ + { + "InjectionAddress": "8015FDBC", + "Name": "Optional: Normal Functionality in Develop Mode (1.02)", + "Codetype": "Auto", + "Annotation": "External/NormalDevelopMode/Enable.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006AE90", + "Name": "Optional: Normal Functionality in Develop Mode (1.02)", + "Codetype": "Auto", + "Annotation": "External/NormalDevelopMode/NormalCStick1.asm", + "Tags": "" + }, + { + "InjectionAddress": "800300A4", + "Name": "Optional: Normal Functionality in Develop Mode (1.02)", + "Codetype": "Auto", + "Annotation": "External/NormalDevelopMode/NormalCStick2.asm", + "Tags": "" + }, + { + "InjectionAddress": "80089250", + "Name": "Optional: Normal Functionality in Develop Mode (1.02)", + "Codetype": "Auto", + "Annotation": "External/NormalDevelopMode/StaleMoves.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_netplay-old1.json b/Data/Sys/Slippi/InjectionLists/list_netplay-old1.json new file mode 100644 index 0000000000..13c0fea4dd --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_netplay-old1.json @@ -0,0 +1,2746 @@ +{ + "Details": [ + { + "InjectionAddress": "8015EE98", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EDDC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80164B14", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801648F4", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EE4C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EE14", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D968", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D9D8", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8017229C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801737B0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80164658", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801644E8", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8030490C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803044F0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A48", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A4C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A50", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A60", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A78", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801AF6F4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D94C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D984", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A5B14", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016B480", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022D638", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B0A14", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E510", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802641B0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8021AAE4", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8025B8BC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F54", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F58", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F5C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F60", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F64", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002CB34", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800C9A44", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800998A4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800908F4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802662D0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8026325C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801C26B0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015ECEC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016EBA8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A45A8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DC47C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80261A6C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802FCCD8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80266CE0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80265220", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016EA30", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80261B1C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80261B30", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802605FC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801239A8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8013C388", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016DED4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800679BC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803219EC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016D884", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E74C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8006DA34", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8006B0DC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005604", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8008D698", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8006C324", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800055F8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016D294", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801D460C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D14C8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D45EC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4F14", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4610", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4724", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "804DEC18", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801C154C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80068EEC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8016EBAC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8006A880", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802F7094", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4DB4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80019614", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8034DED8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E748", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E904", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A5014", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016D26C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016CD08", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016EA30", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376A20", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4DE4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376A28", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4CB4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800163FC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800166B8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800D4C1C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800D4D68", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80080E80", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80019260", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376304", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803A63A8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80321D70", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80019608", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801D4578", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80023FFC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8038ADD0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8038D224", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80088224", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800882B0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8038D0B0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016BE28", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80266BC4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80261E5C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80260310", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80263258", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A3F9C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802652F0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80264534", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80262004", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802620AC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802600A8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8026699C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80264118", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80262478", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80262768", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802652F4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80260C28", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80260E14", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80260B90", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80260C88", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C710", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C320", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023E730", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023E924", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023E290", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CCA4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CF9C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CF80", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023B3D0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C6C0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023E994", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C588", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CD74", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CA50", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CC14", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C33C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C72C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C81C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CCBC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023CCE0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8023C928", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803786A4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802F6694", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803A69C0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8025B8A4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80259CC8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B044", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802299F0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022E93C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B1040", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022D88C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802299C4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B3668", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80186EC4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80184DE4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B3650", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80185060", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80185050", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80184ADC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80184B1C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801BFA20", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A45B8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005694", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056BC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056AC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005690", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056B8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005698", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056B0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800055F4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005610", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056A4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8000560C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800055EC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005608", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056B4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80005618", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803775B0", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4C24", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8001985C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80019860", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376200", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A5018", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80218D68", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8009E090", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8000569C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80068B40", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803753B0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800186A8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803BA3AC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801BFA24", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022C010", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022C170", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022C168", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229DA0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B9D8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B9A8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B9A0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229AD8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229AD0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229B08", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022DB1C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022DC18", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022A638", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B3F4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B224", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022AE48", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022E90C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022A010", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022A4D0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B7DC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022E630", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80266980", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229C14", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229DEC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229D98", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229E94", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B1368", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229894", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80229E60", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022B750", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015D9C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015C00", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015BC0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80018D80", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800158F0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80016138", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015F50", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015F88", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800158D8", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015E18", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015CD4", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800159B4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015984", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015B94", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015914", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8037C050", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026680", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800285C8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027694", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80388A34", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027400", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800272DC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8000AEA0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8000AE68", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026CBC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800269F8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002313C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002356C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800237B4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023B50", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800283B4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028508", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800268E0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026C68", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267E0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023254", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023578", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80088008", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023148", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023B5C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A56F4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002785C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A57FC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028404", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028420", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028440", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002845C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028478", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028498", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026C3C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026C5C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026CB0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026CB4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026E38", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026CB4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028738", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028770", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002890C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028910", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028948", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002895C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028960", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028998", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800289AC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800289B0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800289E8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028780", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800287C4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800287C8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800287CC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800287D0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800288BC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800288C0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800288F8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267F4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267F0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267F8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267F8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002719C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027290", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800272D4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800272D8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027454", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027464", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027BB4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027D4C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027D50", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027CE8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027CAC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027CB0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027CFC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027D00", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80087D3C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800230D8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023630", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800268B8", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027288", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027278", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800273B4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800273B8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023228", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027140", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026C34", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027008", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802FF870", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803883F8", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026880", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026EA4", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002742C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026E10", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028970", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028748", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800288D0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800289C0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028920", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023E34", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80023234", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267DC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027AD0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026664", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026E60", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800268DC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027198", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028368", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002645C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800283A8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800283B8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028590", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80028530", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800286B0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80027E0C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800270D0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026FC8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80026C28", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800267C4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002749C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80024DC8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002766C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800269DC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A50AC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A45BC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4444", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8001CEAC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4568", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A43E0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A448C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A3F2C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4560", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A43D8", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4484", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A3F24", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4D14", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A50A0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4D0C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A43EC", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A40C8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056A8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D70A0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7098", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7094", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7068", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7088", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D708C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7084", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7064", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D707C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800056A0", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7058", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7070", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7080", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D709C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7090", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7074", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7078", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80268648", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7060", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D706C", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035E6E4", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035E6E0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035ECFC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035ECE0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80360A38", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80360A3C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035E918", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4C98", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80228C10", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80228BFC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80228AF8", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80394BD4", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80397838", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80394A74", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800AC5B8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D24FC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "803761EC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376238", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376A24", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802F666C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8000561C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBB90", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CC8AC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBE9C", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBEF0", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBF54", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80390838", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CD250", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CCDCC", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803BB05C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8036A4A8", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB58", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80086B24", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80030C7C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80030C88", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB30", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB34", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB2C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB28", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB4C", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802FCFC4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DDB84", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80030E44", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E9AC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800C0148", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8008D690", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800355B4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802FD1EC", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "802FC9E4", + "Codetype": "Auto", + "Annotation": "", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_netplay-old2.json b/Data/Sys/Slippi/InjectionLists/list_netplay-old2.json new file mode 100644 index 0000000000..be7092461f --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_netplay-old2.json @@ -0,0 +1,11 @@ +{ + "Details": [ + { + "InjectionAddress": "800056AC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/ChatMessages.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Data/Sys/Slippi/InjectionLists/list_netplay.json b/Data/Sys/Slippi/InjectionLists/list_netplay.json new file mode 100644 index 0000000000..732af658ab --- /dev/null +++ b/Data/Sys/Slippi/InjectionLists/list_netplay.json @@ -0,0 +1,2034 @@ +{ + "Details": [ + { + "InjectionAddress": "8015EE98", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EDDC", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80164B14", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801648F4", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EE4C", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015EE14", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D968", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D9D8", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8017229C", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801737B0", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80164658", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801644E8", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8030490C", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803044F0", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A48", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A4C", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A50", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A60", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D4A78", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801AF6F4", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Skip Memcard Prompt/Skip Memcard Prompt.asm", + "Tags": "" + }, + { + "InjectionAddress": "8015D94C", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015D984", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A5B14", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Salty Runback/Salty Runback.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016B480", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8022D638", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801B0A14", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E510", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/NeutralSpawn/NeutralSpawn.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802641B0", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8021AAE4", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8025B8BC", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F54", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F58", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F5C", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F60", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80452F64", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8002CB34", + "Name": "Required: General Codes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800C9A44", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF DB.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800998A4", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF SD.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800908F4", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Logic/UCF Tumble.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802662D0", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/UCF 0.8/Indicator/UCF Text.asm", + "Tags": "" + }, + { + "InjectionAddress": "8026325C", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/DPad Down at CSS for Random Stage/DPad Down at CSS for Random Stage.asm", + "Tags": "" + }, + { + "InjectionAddress": "801C26B0", + "Name": "Required: General Codes", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8015ECEC", + "Name": "Required: General Codes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016EBA8", + "Name": "Required: General Codes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A45A8", + "Name": "Required: General Codes", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "804DC47C", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/CSS Player Hands Default to HMN Button/Change Default Hand Position.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261A6C", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/CSS Player Hands Default to HMN Button/Fix A Button Buffer When Exiting Name Entry.asm", + "Tags": "" + }, + { + "InjectionAddress": "802FCCD8", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Hide Nametag When Invisible/Hide Nametag When Invisible.asm", + "Tags": "" + }, + { + "InjectionAddress": "80266CE0", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Disable FoD During Doubles/Disable FoD During Doubles.asm", + "Tags": "" + }, + { + "InjectionAddress": "80265220", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "Common/Winners Names are Gold on CSS/Change Name Color.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016EA30", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "Common/Winners Names are Gold on CSS/Remember Who LRA Started.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B1C", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip Nametag ID Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261B30", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Closing CSS Door Preserves Nametag/On Window Close/Skip isUsingNametag Bool Reset.asm", + "Tags": "" + }, + { + "InjectionAddress": "802605FC", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/Unplugging Closes CSS Door/Unplugging Closes CSS Door.asm", + "Tags": "" + }, + { + "InjectionAddress": "801239A8", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "External/FreezeGlitchFix/FreezeGlitchFix.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8013C388", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "Common/CostumeBoundCheck/PuffCostume.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016DED4", + "Name": "Required: General Codes", + "Codetype": "Auto", + "Annotation": "Common/CostumeBoundCheck/main.asm", + "Tags": "" + }, + { + "InjectionAddress": "800679BC", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/ExtendPlayerBlock.asm", + "Tags": "" + }, + { + "InjectionAddress": "803219EC", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/FlushFrameBuffer.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016D884", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGameEnd.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016E74C", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGameInfo.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006DA34", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGamePostFrame.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006B0DC", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/SendGamePreFrame.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005604", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/ShouldRecord.asm", + "Tags": "" + }, + { + "InjectionAddress": "8008D698", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/GetLCancelStatus/GetLCancelStatus.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006C324", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Recording/GetLCancelStatus/ResetLCancelStatus.asm", + "Tags": "" + }, + { + "InjectionAddress": "800055F8", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/GetIsFollower.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016D294", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/IncrementFrameIndex.asm", + "Tags": "" + }, + { + "InjectionAddress": "801D460C", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/GetPreloadedTransition.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D14C8", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/Init isLoaded Bool.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D45EC", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/Load Transformation.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4F14", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/Reset isLoaded.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4610", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/SkipNormalDecision1.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D4724", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Core/SkipNormalDecision2.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "804DEC18", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Preload Stadium Transformations/Toggle/PsPreloadToggleEnable.asm", + "Tags": "" + }, + { + "InjectionAddress": "801C154C", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Initialize Stage Data/Init Stage Data.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80068EEC", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/Initialize Player Data/Init Player Data.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8016EBAC", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/CSS KO Stars/Asign KO Stars Upon Exiting Dairantou.asm", + "Tags": "" + }, + { + "InjectionAddress": "8006A880", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/BrawlOffscreenDamage.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "802F7094", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/CustomizeMessageLRAS.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A4DB4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/ForceEngineOnRollback.asm", + "Tags": "" + }, + { + "InjectionAddress": "80019614", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/ForceInputRefetchOnAdvance.asm", + "Tags": "" + }, + { + "InjectionAddress": "8034DED8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/HandleRumble.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016E748", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/InitOnlinePlay.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016E904", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/InitPause.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A5014", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/LoopEngineForRollback.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016D26C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/PauseCounter.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016CD08", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/PreventPauseStranding.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016EA30", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Remember Who LRA Started.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016E9E8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/ReportNoContestLRAS.asm", + "Tags": "" + }, + { + "InjectionAddress": "80376A20", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/SkipNewInputFetchOnRollback.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A4DE4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/StartEngineLoop.asm", + "Tags": "" + }, + { + "InjectionAddress": "80376A28", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/TriggerSendInput.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A4CB4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/EXIFileLoad/AllocBuffer.asm", + "Tags": "" + }, + { + "InjectionAddress": "800163FC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/EXIFileLoad/GetFileSize.asm", + "Tags": "" + }, + { + "InjectionAddress": "800166B8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/EXIFileLoad/TransferFile.asm", + "Tags": "" + }, + { + "InjectionAddress": "800D4C1C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/FreezeDeadUpFallPhysics/InitHitVelocity.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800D4D68", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/FreezeDeadUpFallPhysics/UpdateFallVelocity.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80080E80", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/FreezeDeadUpFallPhysics/UpdateModelPos.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80019260", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Hacks/ForceNoDiskCrash.asm", + "Tags": "" + }, + { + "InjectionAddress": "80376304", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Hacks/ForceNoVideoAssert.asm", + "Tags": "" + }, + { + "InjectionAddress": "803A63A8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Hacks/LoadPremadeTextDataFromDolphin.asm", + "Tags": "" + }, + { + "InjectionAddress": "80321D70", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Hacks/PreventCharacterCrowdChants.asm", + "Tags": "" + }, + { + "InjectionAddress": "80019608", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Hacks/PreventPadAlarmDuringRollback.asm", + "Tags": "" + }, + { + "InjectionAddress": "801D4578", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/PreventFileAlarms/FreezeStadium.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80023FFC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/PreventFileAlarms/MuteMusic.asm", + "Tags": "" + }, + { + "InjectionAddress": "8038ADD0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/PreventFileAlarms/PreventMusicAlarm.asm", + "Tags": "" + }, + { + "InjectionAddress": "8038D224", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Sound/AssignSoundInstanceId.asm", + "Tags": "" + }, + { + "InjectionAddress": "80088224", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Sound/NoDestroyVoice.asm", + "Tags": "" + }, + { + "InjectionAddress": "800882B0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Sound/NoDestroyVoice2.asm", + "Tags": "" + }, + { + "InjectionAddress": "8038D0B0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Sound/PreventDuplicateSounds.asm", + "Tags": "" + }, + { + "InjectionAddress": "8016BE28", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Teams/PreventDeadStranding.asm", + "Tags": "" + }, + { + "InjectionAddress": "8008653C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/WhispyBlowDirFix/WhispyBlowDirFix.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "80266BC4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/DisableLRSTART.asm", + "Tags": "" + }, + { + "InjectionAddress": "80261E5C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/DisableNametagBox.asm", + "Tags": "" + }, + { + "InjectionAddress": "80260310", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/FetchMatchInfo.asm", + "Tags": "" + }, + { + "InjectionAddress": "80263258", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/HandleInputsOnCSS.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A3F9C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/IncreaseTextHeap.asm", + "Tags": "" + }, + { + "InjectionAddress": "802652F0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/InitSheikSelector.asm", + "Tags": "" + }, + { + "InjectionAddress": "80264534", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/LoadCSSText.asm", + "Tags": "" + }, + { + "InjectionAddress": "80262004", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/PreventAPressCharUnselect.asm", + "Tags": "" + }, + { + "InjectionAddress": "802620AC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/PreventBPressCharUnselect.asm", + "Tags": "" + }, + { + "InjectionAddress": "802600A8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/PreventColorChange.asm", + "Tags": "" + }, + { + "InjectionAddress": "8026699C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/SceneLoadCSS.asm", + "Tags": "" + }, + { + "InjectionAddress": "80264118", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/SkipReturnToCssSound.asm", + "Tags": "" + }, + { + "InjectionAddress": "80262478", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/AnimateCursorPort.asm", + "Tags": "" + }, + { + "InjectionAddress": "80262768", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/AnimateToken.asm", + "Tags": "" + }, + { + "InjectionAddress": "802652F4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/InitTeamToggleButton.asm", + "Tags": "" + }, + { + "InjectionAddress": "80260C28", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/PreventColorResetCharHover.asm", + "Tags": "" + }, + { + "InjectionAddress": "80260E14", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/PreventColorResetLastChar.asm", + "Tags": "" + }, + { + "InjectionAddress": "80260B90", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/PreventColorResetRandomChar.asm", + "Tags": "" + }, + { + "InjectionAddress": "80260C88", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/Teams/PreventWrongCSPOnCharSelect.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C710", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/Allow8Characters.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C320", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/Allow8CharactersJapanese.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023E730", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023E924", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect2.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023E290", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/AlwaysUseEnglishWhenDirect3.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CCA4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/CheckTriggersAndZ.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CF9C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/Display8Characters.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CF80", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023B3D0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/HandleDescriptionText.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C6C0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/HandleJpSpace.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023E994", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C588", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CD74", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CA50", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnConfirmButtonAPress.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CC14", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C33C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C72C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnEnterText.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C81C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnErasePress.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CCBC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnLPress.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023CCE0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnRPress.asm", + "Tags": "" + }, + { + "InjectionAddress": "8023C928", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm", + "Tags": "" + }, + { + "InjectionAddress": "803786A4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/Hacks/VsSplashRumbleHack.asm", + "Tags": "" + }, + { + "InjectionAddress": "802F6694", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/InGame/InitInGame.asm", + "Tags": "" + }, + { + "InjectionAddress": "803A69C0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/InGame/ParseNumbersBetter.asm", + "Tags": "" + }, + { + "InjectionAddress": "8025B8A4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/SSS/DisableLRSTART.asm", + "Tags": "" + }, + { + "InjectionAddress": "80259CC8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/SSS/ExitSSSUponStageSelect.asm", + "Tags": "" + }, + { + "InjectionAddress": "8022B044", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/TitleMenu/AllowSwapToSameSubmenu.asm", + "Tags": "" + }, + { + "InjectionAddress": "802299F0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/TitleMenu/HandleOnlineLockedOptions.asm", + "Tags": "" + }, + { + "InjectionAddress": "8022E93C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/TitleMenu/OnMenuLoad.asm", + "Tags": "" + }, + { + "InjectionAddress": "801B1040", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/TitleMenu/OnMenuPrep.asm", + "Tags": "" + }, + { + "InjectionAddress": "8022D88C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/TitleMenu/OnlineModeOptionSelected.asm", + "Tags": "" + }, + { + "InjectionAddress": "802299C4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/TitleMenu/ShowHidden1pOption.asm", + "Tags": "" + }, + { + "InjectionAddress": "801B3668", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/AllowP2ColorDuplicate.asm", + "Tags": "" + }, + { + "InjectionAddress": "80186EC4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/InitVsSplash.asm", + "Tags": "" + }, + { + "InjectionAddress": "80184DE4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/PlayOpponentCharAnnouncer.asm", + "Tags": "" + }, + { + "InjectionAddress": "801B3650", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/PreventP2Color.asm", + "Tags": "" + }, + { + "InjectionAddress": "80185060", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/HideStageDisplay/HideAllJObjs.asm", + "Tags": "" + }, + { + "InjectionAddress": "80185050", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/HideStageDisplay/PreventEarlyR3Overwrite.asm", + "Tags": "" + }, + { + "InjectionAddress": "80184ADC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/HideStageText/HideLetterJObjs.asm", + "Tags": "" + }, + { + "InjectionAddress": "80184B1C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Menus/VSScreen/HideStageText/SkipStageNumberShow.asm", + "Tags": "" + }, + { + "InjectionAddress": "801BFA20", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Slippi Online Scene/boot.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A45B8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Slippi Online Scene/main.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005694", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/AdjustNullCharID.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056BC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/CSSUpdateCSP.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005690", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/CheckAltStageName.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056B8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/GetCSSIconData.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005698", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/GetCSSIconNum.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056B0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/GetTeamCostumeIndex.asm", + "Tags": "" + }, + { + "InjectionAddress": "800055F4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/IntToFloat.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005610", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/LoadMatchState.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056A4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/LoadPremadeText.asm", + "Tags": "" + }, + { + "InjectionAddress": "8000560C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/LoadState.asm", + "Tags": "" + }, + { + "InjectionAddress": "800055EC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/MultiplyRWithF.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005608", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/SaveState.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056B4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/SubtextFunctions.asm", + "Tags": "" + }, + { + "InjectionAddress": "80005618", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Static/UserDisplayFunctions.asm", + "Tags": "" + }, + { + "InjectionAddress": "803775B0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Debugging/LogInputOnCopy.asm", + "Tags": "" + }, + { + "InjectionAddress": "801A4C24", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8001985C", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80019860", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376200", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A5018", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80218D68", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8009E090", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Common/FastForward/DynamicsFix.asm", + "Tags": "" + }, + { + "InjectionAddress": "8000569C", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Common/CompatibilityHooks/GetFighterNum.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056A0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Common/CompatibilityHooks/GetSSMIndex.asm", + "Tags": "" + }, + { + "InjectionAddress": "800056A8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Common/CompatibilityHooks/RequestSSMLoad.asm", + "Tags": "" + }, + { + "InjectionAddress": "803753B4", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800186A8", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015D9C", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015C00", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015BC0", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80018D80", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800158F0", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80016138", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015F50", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015F88", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800158D8", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015E18", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015CD4", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800159B4", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015984", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015B94", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80015914", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A50AC", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A45BC", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4444", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8001CEAC", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4568", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A43E0", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A448C", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A3F2C", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4560", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A43D8", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4484", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A3F24", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4D14", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A50A0", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4D0C", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A43EC", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A40C8", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D709C", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7090", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7074", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D7060", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803D706C", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035E6E4", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035E6E0", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035ECFC", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035ECE0", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80360A38", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80360A3C", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8035E918", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801A4C98", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80228C10", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80228BFC", + "Name": "Required: Slippi Online", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80228AF8", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80394BD4", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80397838", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80394A74", + "Name": "Required: Slippi Online", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "800AC5B8", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Common/NanaDeterminism/NanaDeterminism.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "801D24FC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Common/PSCameraIndependentMonitor/PSCameraIndependentMonitor.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800DB880", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Init Wobble Count Air.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "800DBBD4", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Init Wobble Count Ground.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "8008F090", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "External/PreventWobbling/Wobble Check.asm", + "Tags": "[affects-gameplay]" + }, + { + "InjectionAddress": "803761EC", + "Name": "Recommended: Normal Lag Reduction", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376238", + "Name": "Recommended: Normal Lag Reduction", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80376A24", + "Name": "Recommended: Apply Delay to all In-Game Scenes", + "Codetype": "Auto", + "Annotation": "Common/UseInGameDelay/ApplyInGameDelay.asm", + "Tags": "" + }, + { + "InjectionAddress": "802F666C", + "Name": "Recommended: Apply Delay to all In-Game Scenes", + "Codetype": "Auto", + "Annotation": "Common/UseInGameDelay/InitializeInGameDelay.asm", + "Tags": "" + }, + { + "InjectionAddress": "8000561C", + "Name": "Recommended: Apply Delay to all In-Game Scenes", + "Codetype": "Auto", + "Annotation": "Common/GetCommonMinorID/GetCommonMinorID.asm", + "Tags": "" + }, + { + "InjectionAddress": "801CBB90", + "Name": "Recommended: Lagless FoD", + "Codetype": "C2", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CC8AC", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBE9C", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBEF0", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CBF54", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "80390838", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CD250", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "801CCDCC", + "Name": "Recommended: Lagless FoD", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "803BB05C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Fix Screen Flash.asm", + "Tags": "" + }, + { + "InjectionAddress": "8036A4A8", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Overwrite CObj Values.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB58", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Adjust Bubble Zoom.asm", + "Tags": "" + }, + { + "InjectionAddress": "80086B24", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Draw High Poly Models.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030C7C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Left Camera Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030C88", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Right Camera Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB30", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 1.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB34", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 2.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB2C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Negative Vertical Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB28", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Positive Vertical Bound.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB4C", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Widen Bubble Region.asm", + "Tags": "" + }, + { + "InjectionAddress": "802FCFC4", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Nametag Fixes/Adjust Nametag Background X Scale.asm", + "Tags": "" + }, + { + "InjectionAddress": "804DDB84", + "Name": "Optional: Widescreen 16:9", + "Codetype": "Auto", + "Annotation": "External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm", + "Tags": "" + }, + { + "InjectionAddress": "80030E44", + "Name": "Optional: Disable Screen Shake", + "Codetype": "04", + "Annotation": "", + "Tags": "" + }, + { + "InjectionAddress": "8016E9AC", + "Name": "Optional: Center Align 2P HUD", + "Codetype": "Auto", + "Annotation": "External/Force2PCenterHud/Force2PCenterHud.asm", + "Tags": "" + }, + { + "InjectionAddress": "800C0148", + "Name": "Optional: Flash Red on Failed L-Cancel", + "Codetype": "Auto", + "Annotation": "External/FlashRedFailedLCancel/ChangeColor.asm", + "Tags": "" + }, + { + "InjectionAddress": "8008D690", + "Name": "Optional: Flash Red on Failed L-Cancel", + "Codetype": "Auto", + "Annotation": "External/FlashRedFailedLCancel/TriggerColor.asm", + "Tags": "" + }, + { + "InjectionAddress": "800355B4", + "Name": "Optional: Show Friendly Player Indicators", + "Codetype": "Auto", + "Annotation": "Online/Optional/IndicateLocalPlayer/ForceLocalPlayerTag.asm", + "Tags": "" + }, + { + "InjectionAddress": "802FD1EC", + "Name": "Optional: Show Friendly Player Indicators", + "Codetype": "Auto", + "Annotation": "Online/Optional/IndicateLocalPlayer/SetLocalPlayerTag.asm", + "Tags": "" + }, + { + "InjectionAddress": "802FC9E4", + "Name": "Optional: Show Friendly Player Indicators", + "Codetype": "Auto", + "Annotation": "Online/Optional/ShowAllyIndicator/ShowAllyIndicator.asm", + "Tags": "" + } + ] +} \ No newline at end of file diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp index ca8da4592d..809fa6aef0 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceSlippi.cpp @@ -805,364 +805,24 @@ void CEXISlippi::prepareGameInfo(u8* payload) void CEXISlippi::prepareGeckoList() { - // TODO: How do I move this somewhere else? - // This contains all of the codes required to play legacy replays (UCF, PAL, Frz Stadium) - static std::vector defaultCodeList = { - 0xC2, 0x0C, 0x9A, 0x44, 0x00, 0x00, 0x00, 0x2F, // #External/UCF + Arduino Toggle UI/UCF/UCF - // 0.74 Dashback - Check for Toggle.asm - 0xD0, 0x1F, 0x00, 0x2C, 0x88, 0x9F, 0x06, 0x18, 0x38, 0x62, 0xF2, 0x28, 0x7C, 0x63, 0x20, - 0xAE, 0x2C, 0x03, 0x00, 0x01, 0x41, 0x82, 0x00, 0x14, 0x38, 0x62, 0xF2, 0x2C, 0x7C, 0x63, - 0x20, 0xAE, 0x2C, 0x03, 0x00, 0x01, 0x40, 0x82, 0x01, 0x50, 0x7C, 0x08, 0x02, 0xA6, 0x90, - 0x01, 0x00, 0x04, 0x94, 0x21, 0xFF, 0x50, 0xBE, 0x81, 0x00, 0x08, 0x48, 0x00, 0x01, 0x21, - 0x7F, 0xC8, 0x02, 0xA6, 0xC0, 0x3F, 0x08, 0x94, 0xC0, 0x5E, 0x00, 0x00, 0xFC, 0x01, 0x10, - 0x40, 0x40, 0x82, 0x01, 0x18, 0x80, 0x8D, 0xAE, 0xB4, 0xC0, 0x3F, 0x06, 0x20, 0xFC, 0x20, - 0x0A, 0x10, 0xC0, 0x44, 0x00, 0x3C, 0xFC, 0x01, 0x10, 0x40, 0x41, 0x80, 0x01, 0x00, 0x88, - 0x7F, 0x06, 0x70, 0x2C, 0x03, 0x00, 0x02, 0x40, 0x80, 0x00, 0xF4, 0x88, 0x7F, 0x22, 0x1F, - 0x54, 0x60, 0x07, 0x39, 0x40, 0x82, 0x00, 0xE8, 0x3C, 0x60, 0x80, 0x4C, 0x60, 0x63, 0x1F, - 0x78, 0x8B, 0xA3, 0x00, 0x01, 0x38, 0x7D, 0xFF, 0xFE, 0x88, 0x9F, 0x06, 0x18, 0x48, 0x00, - 0x00, 0x8D, 0x7C, 0x7C, 0x1B, 0x78, 0x7F, 0xA3, 0xEB, 0x78, 0x88, 0x9F, 0x06, 0x18, 0x48, - 0x00, 0x00, 0x7D, 0x7C, 0x7C, 0x18, 0x50, 0x7C, 0x63, 0x19, 0xD6, 0x2C, 0x03, 0x15, 0xF9, - 0x40, 0x81, 0x00, 0xB0, 0x38, 0x00, 0x00, 0x01, 0x90, 0x1F, 0x23, 0x58, 0x90, 0x1F, 0x23, - 0x40, 0x80, 0x9F, 0x00, 0x04, 0x2C, 0x04, 0x00, 0x0A, 0x40, 0xA2, 0x00, 0x98, 0x88, 0x7F, - 0x00, 0x0C, 0x38, 0x80, 0x00, 0x01, 0x3D, 0x80, 0x80, 0x03, 0x61, 0x8C, 0x41, 0x8C, 0x7D, - 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x78, - 0x80, 0x83, 0x00, 0x2C, 0x80, 0x84, 0x1E, 0xCC, 0xC0, 0x3F, 0x00, 0x2C, 0xD0, 0x24, 0x00, - 0x18, 0xC0, 0x5E, 0x00, 0x04, 0xFC, 0x01, 0x10, 0x40, 0x41, 0x81, 0x00, 0x0C, 0x38, 0x60, - 0x00, 0x80, 0x48, 0x00, 0x00, 0x08, 0x38, 0x60, 0x00, 0x7F, 0x98, 0x64, 0x00, 0x06, 0x48, - 0x00, 0x00, 0x48, 0x7C, 0x85, 0x23, 0x78, 0x38, 0x63, 0xFF, 0xFF, 0x2C, 0x03, 0x00, 0x00, - 0x40, 0x80, 0x00, 0x08, 0x38, 0x63, 0x00, 0x05, 0x3C, 0x80, 0x80, 0x46, 0x60, 0x84, 0xB1, - 0x08, 0x1C, 0x63, 0x00, 0x30, 0x7C, 0x84, 0x1A, 0x14, 0x1C, 0x65, 0x00, 0x0C, 0x7C, 0x84, - 0x1A, 0x14, 0x88, 0x64, 0x00, 0x02, 0x7C, 0x63, 0x07, 0x74, 0x4E, 0x80, 0x00, 0x20, 0x4E, - 0x80, 0x00, 0x21, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x81, 0x00, 0x08, - 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, 0x00, 0x00, 0x00, - 0x00, 0xC2, 0x09, 0x98, 0xA4, 0x00, 0x00, 0x00, - 0x2B, // #External/UCF + Arduino Toggle UI/UCF/UCF - // 0.74 Shield Drop - Check for Toggle.asm - 0x7C, 0x08, 0x02, 0xA6, 0x90, 0x01, 0x00, 0x04, 0x94, 0x21, 0xFF, 0x50, 0xBE, 0x81, 0x00, - 0x08, 0x7C, 0x7E, 0x1B, 0x78, 0x83, 0xFE, 0x00, 0x2C, 0x48, 0x00, 0x01, 0x01, 0x7F, 0xA8, - 0x02, 0xA6, 0x88, 0x9F, 0x06, 0x18, 0x38, 0x62, 0xF2, 0x28, 0x7C, 0x63, 0x20, 0xAE, 0x2C, - 0x03, 0x00, 0x01, 0x41, 0x82, 0x00, 0x14, 0x38, 0x62, 0xF2, 0x30, 0x7C, 0x63, 0x20, 0xAE, - 0x2C, 0x03, 0x00, 0x01, 0x40, 0x82, 0x00, 0xF8, 0xC0, 0x3F, 0x06, 0x3C, 0x80, 0x6D, 0xAE, - 0xB4, 0xC0, 0x03, 0x03, 0x14, 0xFC, 0x01, 0x00, 0x40, 0x40, 0x81, 0x00, 0xE4, 0xC0, 0x3F, - 0x06, 0x20, 0x48, 0x00, 0x00, 0x71, 0xD0, 0x21, 0x00, 0x90, 0xC0, 0x3F, 0x06, 0x24, 0x48, - 0x00, 0x00, 0x65, 0xC0, 0x41, 0x00, 0x90, 0xEC, 0x42, 0x00, 0xB2, 0xEC, 0x21, 0x00, 0x72, - 0xEC, 0x21, 0x10, 0x2A, 0xC0, 0x5D, 0x00, 0x0C, 0xFC, 0x01, 0x10, 0x40, 0x41, 0x80, 0x00, - 0xB4, 0x88, 0x9F, 0x06, 0x70, 0x2C, 0x04, 0x00, 0x03, 0x40, 0x81, 0x00, 0xA8, 0xC0, 0x1D, - 0x00, 0x10, 0xC0, 0x3F, 0x06, 0x24, 0xFC, 0x00, 0x08, 0x40, 0x40, 0x80, 0x00, 0x98, 0xBA, - 0x81, 0x00, 0x08, 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, - 0x80, 0x61, 0x00, 0x1C, 0x83, 0xE1, 0x00, 0x14, 0x38, 0x21, 0x00, 0x18, 0x38, 0x63, 0x00, - 0x08, 0x7C, 0x68, 0x03, 0xA6, 0x4E, 0x80, 0x00, 0x20, 0xFC, 0x00, 0x0A, 0x10, 0xC0, 0x3D, - 0x00, 0x00, 0xEC, 0x00, 0x00, 0x72, 0xC0, 0x3D, 0x00, 0x04, 0xEC, 0x00, 0x08, 0x28, 0xFC, - 0x00, 0x00, 0x1E, 0xD8, 0x01, 0x00, 0x80, 0x80, 0x61, 0x00, 0x84, 0x38, 0x63, 0x00, 0x02, - 0x3C, 0x00, 0x43, 0x30, 0xC8, 0x5D, 0x00, 0x14, 0x6C, 0x63, 0x80, 0x00, 0x90, 0x01, 0x00, - 0x80, 0x90, 0x61, 0x00, 0x84, 0xC8, 0x21, 0x00, 0x80, 0xEC, 0x01, 0x10, 0x28, 0xC0, 0x3D, - 0x00, 0x00, 0xEC, 0x20, 0x08, 0x24, 0x4E, 0x80, 0x00, 0x20, 0x4E, 0x80, 0x00, 0x21, 0x42, - 0xA0, 0x00, 0x00, 0x37, 0x27, 0x00, 0x00, 0x43, 0x30, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0xBF, 0x4C, 0xCC, 0xCD, 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF3, - 0x78, 0x7F, 0xE4, 0xFB, 0x78, 0xBA, 0x81, 0x00, 0x08, 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, - 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, - 0x16, 0xE7, 0x50, 0x00, 0x00, 0x00, - 0x33, // #Common/StaticPatches/ToggledStaticOverwrites.asm - 0x88, 0x62, 0xF2, 0x34, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x14, 0x48, 0x00, 0x00, - 0x75, 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x3D, 0x48, 0x00, 0x00, 0x14, 0x48, 0x00, - 0x00, 0x95, 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x2D, 0x48, 0x00, 0x00, 0x04, 0x88, - 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x14, 0x48, 0x00, 0x00, 0xB9, - 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x11, 0x48, 0x00, 0x00, 0x10, 0x48, 0x00, 0x00, - 0xC9, 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x01, 0x88, 0x62, 0xF2, 0x3C, 0x2C, 0x03, - 0x00, 0x00, 0x41, 0x82, 0x00, 0x14, 0x48, 0x00, 0x00, 0xD1, 0x7C, 0x68, 0x02, 0xA6, 0x48, - 0x00, 0x00, 0xE9, 0x48, 0x00, 0x01, 0x04, 0x48, 0x00, 0x00, 0xD1, 0x7C, 0x68, 0x02, 0xA6, - 0x48, 0x00, 0x00, 0xD9, 0x48, 0x00, 0x00, 0xF4, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x3C, 0xE4, - 0xD4, 0x00, 0x24, 0x04, 0x64, 0x80, 0x07, 0x96, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x80, 0x2B, - 0x7E, 0x54, 0x48, 0x00, 0x00, 0x88, 0x80, 0x2B, 0x80, 0x8C, 0x48, 0x00, 0x00, 0x84, 0x80, - 0x12, 0x39, 0xA8, 0x60, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, - 0x80, 0x3C, 0xE4, 0xD4, 0x00, 0x20, 0x00, 0x00, 0x80, 0x07, 0x96, 0xE0, 0x3A, 0x40, 0x00, - 0x01, 0x80, 0x2B, 0x7E, 0x54, 0x88, 0x7F, 0x22, 0x40, 0x80, 0x2B, 0x80, 0x8C, 0x2C, 0x03, - 0x00, 0x02, 0x80, 0x10, 0xFC, 0x48, 0x90, 0x05, 0x21, 0xDC, 0x80, 0x10, 0xFB, 0x68, 0x90, - 0x05, 0x21, 0xDC, 0x80, 0x12, 0x39, 0xA8, 0x90, 0x1F, 0x1A, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, - 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x46, 0x10, 0x48, 0x00, 0x00, 0x4C, 0x80, 0x1D, 0x47, - 0x24, 0x48, 0x00, 0x00, 0x3C, 0x80, 0x1D, 0x46, 0x0C, 0x80, 0x9F, 0x00, 0xEC, 0xFF, 0xFF, - 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x46, 0x10, 0x38, 0x83, 0x7F, 0x9C, 0x80, - 0x1D, 0x47, 0x24, 0x88, 0x1B, 0x00, 0xC4, 0x80, 0x1D, 0x46, 0x0C, 0x3C, 0x60, 0x80, 0x3B, - 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x45, 0xFC, 0x48, 0x00, 0x09, - 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x45, 0xFC, 0x40, 0x80, - 0x09, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0xA3, 0xFF, 0xFC, 0x84, 0x65, 0x00, 0x04, 0x2C, - 0x03, 0xFF, 0xFF, 0x41, 0x82, 0x00, 0x10, 0x84, 0x85, 0x00, 0x04, 0x90, 0x83, 0x00, 0x00, - 0x4B, 0xFF, 0xFF, 0xEC, 0x4E, 0x80, 0x00, 0x20, 0x3C, 0x60, 0x80, 0x00, 0x3C, 0x80, 0x00, - 0x3B, 0x60, 0x84, 0x72, 0x2C, 0x3D, 0x80, 0x80, 0x32, 0x61, 0x8C, 0x8F, 0x50, 0x7D, 0x89, - 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x60, 0x80, 0x17, 0x3C, 0x80, 0x80, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xC2, 0x1D, 0x14, 0xC8, 0x00, 0x00, 0x00, - 0x04, // #Common/Preload Stadium - // Transformations/Handlers/Init - // isLoaded Bool.asm - 0x88, 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0C, 0x38, 0x60, 0x00, - 0x00, 0x98, 0x7F, 0x00, 0xF0, 0x3B, 0xA0, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xC2, 0x1D, 0x45, 0xEC, 0x00, 0x00, 0x00, 0x1B, // #Common/Preload Stadium - // Transformations/Handlers/Load - // Transformation.asm - 0x88, 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0xC4, 0x88, 0x7F, 0x00, - 0xF0, 0x2C, 0x03, 0x00, 0x00, 0x40, 0x82, 0x00, 0xB8, 0x38, 0x60, 0x00, 0x04, 0x3D, 0x80, - 0x80, 0x38, 0x61, 0x8C, 0x05, 0x80, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x54, - 0x60, 0x10, 0x3A, 0xA8, 0x7F, 0x00, 0xE2, 0x3C, 0x80, 0x80, 0x3B, 0x60, 0x84, 0x7F, 0x9C, - 0x7C, 0x84, 0x00, 0x2E, 0x7C, 0x03, 0x20, 0x00, 0x41, 0x82, 0xFF, 0xD4, 0x90, 0x9F, 0x00, - 0xEC, 0x2C, 0x04, 0x00, 0x03, 0x40, 0x82, 0x00, 0x0C, 0x38, 0x80, 0x00, 0x00, 0x48, 0x00, - 0x00, 0x34, 0x2C, 0x04, 0x00, 0x04, 0x40, 0x82, 0x00, 0x0C, 0x38, 0x80, 0x00, 0x01, 0x48, - 0x00, 0x00, 0x24, 0x2C, 0x04, 0x00, 0x09, 0x40, 0x82, 0x00, 0x0C, 0x38, 0x80, 0x00, 0x02, - 0x48, 0x00, 0x00, 0x14, 0x2C, 0x04, 0x00, 0x06, 0x40, 0x82, 0x00, 0x00, 0x38, 0x80, 0x00, - 0x03, 0x48, 0x00, 0x00, 0x04, 0x3C, 0x60, 0x80, 0x3E, 0x60, 0x63, 0x12, 0x48, 0x54, 0x80, - 0x10, 0x3A, 0x7C, 0x63, 0x02, 0x14, 0x80, 0x63, 0x03, 0xD8, 0x80, 0x9F, 0x00, 0xCC, 0x38, - 0xBF, 0x00, 0xC8, 0x3C, 0xC0, 0x80, 0x1D, 0x60, 0xC6, 0x42, 0x20, 0x38, 0xE0, 0x00, 0x00, - 0x3D, 0x80, 0x80, 0x01, 0x61, 0x8C, 0x65, 0x80, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, - 0x21, 0x38, 0x60, 0x00, 0x01, 0x98, 0x7F, 0x00, 0xF0, 0x80, 0x7F, 0x00, 0xD8, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x1D, 0x4F, 0x14, 0x00, 0x00, 0x00, - 0x04, // #Common/Preload - // Stadium - // Transformations/Handlers/Reset - // isLoaded.asm - 0x88, 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0C, 0x38, 0x60, 0x00, - 0x00, 0x98, 0x7F, 0x00, 0xF0, 0x80, 0x6D, 0xB2, 0xD8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xC2, 0x06, 0x8F, 0x30, 0x00, 0x00, 0x00, 0x9D, // #Common/PAL/Handlers/Character - // DAT Patcher.asm - 0x88, 0x62, 0xF2, 0x34, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x04, 0xD4, 0x7C, 0x08, 0x02, - 0xA6, 0x90, 0x01, 0x00, 0x04, 0x94, 0x21, 0xFF, 0x50, 0xBE, 0x81, 0x00, 0x08, 0x83, 0xFE, - 0x01, 0x0C, 0x83, 0xFF, 0x00, 0x08, 0x3B, 0xFF, 0xFF, 0xE0, 0x80, 0x7D, 0x00, 0x00, 0x2C, - 0x03, 0x00, 0x1B, 0x40, 0x80, 0x04, 0x9C, 0x48, 0x00, 0x00, 0x71, 0x48, 0x00, 0x00, 0xA9, - 0x48, 0x00, 0x00, 0xB9, 0x48, 0x00, 0x01, 0x51, 0x48, 0x00, 0x01, 0x79, 0x48, 0x00, 0x01, - 0x79, 0x48, 0x00, 0x02, 0x29, 0x48, 0x00, 0x02, 0x39, 0x48, 0x00, 0x02, 0x81, 0x48, 0x00, - 0x02, 0xF9, 0x48, 0x00, 0x03, 0x11, 0x48, 0x00, 0x03, 0x11, 0x48, 0x00, 0x03, 0x11, 0x48, - 0x00, 0x03, 0x11, 0x48, 0x00, 0x03, 0x21, 0x48, 0x00, 0x03, 0x21, 0x48, 0x00, 0x03, 0x89, - 0x48, 0x00, 0x03, 0x89, 0x48, 0x00, 0x03, 0x91, 0x48, 0x00, 0x03, 0x91, 0x48, 0x00, 0x03, - 0xA9, 0x48, 0x00, 0x03, 0xA9, 0x48, 0x00, 0x03, 0xB9, 0x48, 0x00, 0x03, 0xB9, 0x48, 0x00, - 0x03, 0xC9, 0x48, 0x00, 0x03, 0xC9, 0x48, 0x00, 0x03, 0xC9, 0x48, 0x00, 0x04, 0x29, 0x7C, - 0x88, 0x02, 0xA6, 0x1C, 0x63, 0x00, 0x04, 0x7C, 0x84, 0x1A, 0x14, 0x80, 0xA4, 0x00, 0x00, - 0x54, 0xA5, 0x01, 0xBA, 0x7C, 0xA4, 0x2A, 0x14, 0x80, 0x65, 0x00, 0x00, 0x80, 0x85, 0x00, - 0x04, 0x2C, 0x03, 0x00, 0xFF, 0x41, 0x82, 0x00, 0x14, 0x7C, 0x63, 0xFA, 0x14, 0x90, 0x83, - 0x00, 0x00, 0x38, 0xA5, 0x00, 0x08, 0x4B, 0xFF, 0xFF, 0xE4, 0x48, 0x00, 0x03, 0xF0, 0x00, - 0x00, 0x33, 0x44, 0x3F, 0x54, 0x7A, 0xE1, 0x00, 0x00, 0x33, 0x60, 0x42, 0xC4, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x37, 0x9C, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x39, - 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x0C, 0x40, 0x86, 0x66, 0x66, 0x00, 0x00, - 0x39, 0x10, 0x3D, 0xEA, 0x0E, 0xA1, 0x00, 0x00, 0x39, 0x28, 0x41, 0xA0, 0x00, 0x00, 0x00, - 0x00, 0x3C, 0x04, 0x2C, 0x01, 0x48, 0x0C, 0x00, 0x00, 0x47, 0x20, 0x1B, 0x96, 0x80, 0x13, - 0x00, 0x00, 0x47, 0x34, 0x1B, 0x96, 0x80, 0x13, 0x00, 0x00, 0x47, 0x3C, 0x04, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x4A, 0x40, 0x2C, 0x00, 0x68, 0x11, 0x00, 0x00, 0x4A, 0x4C, 0x28, 0x1B, - 0x00, 0x13, 0x00, 0x00, 0x4A, 0x50, 0x0D, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x4A, 0x54, 0x2C, - 0x80, 0x68, 0x11, 0x00, 0x00, 0x4A, 0x60, 0x28, 0x1B, 0x00, 0x13, 0x00, 0x00, 0x4A, 0x64, - 0x0D, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x4B, 0x24, 0x2C, 0x00, 0x68, 0x0D, 0x00, 0x00, 0x4B, - 0x30, 0x0F, 0x10, 0x40, 0x13, 0x00, 0x00, 0x4B, 0x38, 0x2C, 0x80, 0x38, 0x0D, 0x00, 0x00, - 0x4B, 0x44, 0x0F, 0x10, 0x40, 0x13, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x38, 0x0C, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x4E, 0xF8, 0x2C, 0x00, 0x38, 0x03, 0x00, 0x00, 0x4F, 0x08, - 0x0F, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x4F, 0x0C, 0x2C, 0x80, 0x20, 0x03, 0x00, 0x00, 0x4F, - 0x1C, 0x0F, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x4D, 0x10, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x70, 0x42, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x4D, 0xD4, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xE0, 0x41, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x83, 0xAC, 0x2C, 0x00, 0x00, 0x09, 0x00, 0x00, 0x83, 0xB8, 0x34, 0x8C, 0x80, - 0x11, 0x00, 0x00, 0x84, 0x00, 0x34, 0x8C, 0x80, 0x11, 0x00, 0x00, 0x84, 0x30, 0x05, 0x00, - 0x00, 0x8B, 0x00, 0x00, 0x84, 0x38, 0x04, 0x1A, 0x05, 0x00, 0x00, 0x00, 0x84, 0x44, 0x05, - 0x00, 0x00, 0x8B, 0x00, 0x00, 0x84, 0xDC, 0x05, 0x78, 0x05, 0x78, 0x00, 0x00, 0x85, 0xB8, - 0x10, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x85, 0xC0, 0x03, 0xE8, 0x01, 0xF4, 0x00, 0x00, 0x85, - 0xCC, 0x10, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x85, 0xD4, 0x03, 0x84, 0x03, 0xE8, 0x00, 0x00, - 0x85, 0xE0, 0x10, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x88, 0x18, 0x0B, 0x00, 0x01, 0x0B, 0x00, - 0x00, 0x88, 0x2C, 0x0B, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x88, 0xF8, 0x04, 0x1A, 0x0B, 0xB8, - 0x00, 0x00, 0x89, 0x3C, 0x04, 0x1A, 0x0B, 0xB8, 0x00, 0x00, 0x89, 0x80, 0x04, 0x1A, 0x0B, - 0xB8, 0x00, 0x00, 0x89, 0xE0, 0x04, 0xFE, 0xF7, 0x04, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x36, 0xCC, 0x42, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x37, 0xC4, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x34, 0x68, 0x3F, 0x66, 0x66, 0x66, 0x00, 0x00, 0x39, 0xD8, - 0x44, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x44, 0xB4, 0x99, 0x00, 0x11, 0x00, 0x00, 0x3A, - 0x48, 0x1B, 0x8C, 0x00, 0x8F, 0x00, 0x00, 0x3A, 0x58, 0xB4, 0x99, 0x00, 0x11, 0x00, 0x00, - 0x3A, 0x5C, 0x1B, 0x8C, 0x00, 0x8F, 0x00, 0x00, 0x3A, 0x6C, 0xB4, 0x99, 0x00, 0x11, 0x00, - 0x00, 0x3A, 0x70, 0x1B, 0x8C, 0x00, 0x8F, 0x00, 0x00, 0x3B, 0x30, 0x44, 0x0C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x45, 0xC8, 0x2C, 0x01, 0x50, 0x10, 0x00, 0x00, 0x45, - 0xD4, 0x2D, 0x19, 0x80, 0x13, 0x00, 0x00, 0x45, 0xDC, 0x2C, 0x80, 0xB0, 0x10, 0x00, 0x00, - 0x45, 0xE8, 0x2D, 0x19, 0x80, 0x13, 0x00, 0x00, 0x49, 0xC4, 0x2C, 0x00, 0x68, 0x0A, 0x00, - 0x00, 0x49, 0xD0, 0x28, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x49, 0xD8, 0x2C, 0x80, 0x78, 0x0A, - 0x00, 0x00, 0x49, 0xE4, 0x28, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x49, 0xF0, 0x2C, 0x00, 0x68, - 0x08, 0x00, 0x00, 0x49, 0xFC, 0x23, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x4A, 0x04, 0x2C, 0x80, - 0x78, 0x08, 0x00, 0x00, 0x4A, 0x10, 0x23, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x5C, 0x98, 0x1E, - 0x0C, 0x80, 0x80, 0x00, 0x00, 0x5C, 0xF4, 0xB4, 0x80, 0x0C, 0x90, 0x00, 0x00, 0x5D, 0x08, - 0xB4, 0x80, 0x0C, 0x90, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3A, 0x1C, 0xB4, 0x94, 0x00, - 0x13, 0x00, 0x00, 0x3A, 0x64, 0x2C, 0x00, 0x00, 0x15, 0x00, 0x00, 0x3A, 0x70, 0xB4, 0x92, - 0x80, 0x13, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x64, 0x7C, 0xB4, 0x9A, 0x40, 0x17, 0x00, 0x00, 0x64, 0x80, - 0x64, 0x00, 0x10, 0x97, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x33, - 0xE4, 0x42, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x45, 0x28, 0x2C, 0x01, 0x30, 0x11, 0x00, 0x00, - 0x45, 0x34, 0xB4, 0x98, 0x80, 0x13, 0x00, 0x00, 0x45, 0x3C, 0x2C, 0x81, 0x30, 0x11, 0x00, - 0x00, 0x45, 0x48, 0xB4, 0x98, 0x80, 0x13, 0x00, 0x00, 0x45, 0x50, 0x2D, 0x00, 0x20, 0x11, - 0x00, 0x00, 0x45, 0x5C, 0xB4, 0x98, 0x80, 0x13, 0x00, 0x00, 0x45, 0xF8, 0x2C, 0x01, 0x30, - 0x0F, 0x00, 0x00, 0x46, 0x08, 0x0F, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x46, 0x0C, 0x2C, 0x81, - 0x28, 0x0F, 0x00, 0x00, 0x46, 0x1C, 0x0F, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x4A, 0xEC, 0x2C, - 0x00, 0x70, 0x03, 0x00, 0x00, 0x4B, 0x00, 0x2C, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x48, 0x5C, 0x2C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x37, 0xB0, 0x3F, 0x59, 0x99, 0x9A, 0x00, 0x00, - 0x37, 0xCC, 0x42, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x55, 0x20, 0x87, 0x11, 0x80, 0x13, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3B, 0x8C, 0x44, 0x0C, 0x00, 0x00, - 0x00, 0x00, 0x3D, 0x0C, 0x44, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x50, 0xE4, 0xB4, 0x99, 0x00, 0x13, 0x00, 0x00, 0x50, 0xF8, 0xB4, 0x99, - 0x00, 0x13, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x4E, 0xB0, 0x02, 0xBC, 0xFF, 0x38, 0x00, 0x00, 0x4E, 0xBC, 0x14, 0x00, 0x01, 0x23, - 0x00, 0x00, 0x4E, 0xC4, 0x03, 0x84, 0x01, 0xF4, 0x00, 0x00, 0x4E, 0xD0, 0x14, 0x00, 0x01, - 0x23, 0x00, 0x00, 0x4E, 0xD8, 0x04, 0x4C, 0x04, 0xB0, 0x00, 0x00, 0x4E, 0xE4, 0x14, 0x00, - 0x01, 0x23, 0x00, 0x00, 0x50, 0x5C, 0x2C, 0x00, 0x68, 0x15, 0x00, 0x00, 0x50, 0x6C, 0x14, - 0x08, 0x01, 0x23, 0x00, 0x00, 0x50, 0x70, 0x2C, 0x80, 0x60, 0x15, 0x00, 0x00, 0x50, 0x80, - 0x14, 0x08, 0x01, 0x23, 0x00, 0x00, 0x50, 0x84, 0x2D, 0x00, 0x20, 0x15, 0x00, 0x00, 0x50, - 0x94, 0x14, 0x08, 0x01, 0x23, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xBA, 0x81, - 0x00, 0x08, 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, 0x3C, - 0x60, 0x80, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x2F, 0x9A, 0x3C, - 0x00, 0x00, 0x00, 0x08, // #Common/PAL/Handlers/PAL Stock Icons.asm - 0x88, 0x62, 0xF2, 0x34, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x30, 0x48, 0x00, 0x00, - 0x21, 0x7C, 0x88, 0x02, 0xA6, 0x80, 0x64, 0x00, 0x00, 0x90, 0x7D, 0x00, 0x2C, 0x90, 0x7D, - 0x00, 0x30, 0x80, 0x64, 0x00, 0x04, 0x90, 0x7D, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x10, 0x4E, - 0x80, 0x00, 0x21, 0x3F, 0x59, 0x99, 0x9A, 0xC1, 0xA8, 0x00, 0x00, 0x80, 0x1D, 0x00, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xC2, 0x10, 0xFC, 0x44, 0x00, 0x00, 0x00, - 0x04, // #Common/PAL/Handlers/DK - // Up B/Aerial Up B.asm - 0x88, 0x82, 0xF2, 0x34, 0x2C, 0x04, 0x00, 0x00, 0x41, 0x82, 0x00, 0x10, 0x3C, 0x00, 0x80, - 0x11, 0x60, 0x00, 0x00, 0x74, 0x48, 0x00, 0x00, 0x08, 0x38, 0x03, 0xD7, 0x74, 0x00, 0x00, - 0x00, 0x00, 0xC2, 0x10, 0xFB, 0x64, 0x00, 0x00, 0x00, 0x04, // #Common/PAL/Handlers/DK Up - // B/Grounded Up B.asm - 0x88, 0x82, 0xF2, 0x34, 0x2C, 0x04, 0x00, 0x00, 0x41, 0x82, 0x00, 0x10, 0x3C, 0x00, 0x80, - 0x11, 0x60, 0x00, 0x00, 0x74, 0x48, 0x00, 0x00, 0x08, 0x38, 0x03, 0xD7, 0x74, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Termination sequence - }; - - static std::unordered_map static_deny_list = { - {0x8008d698, true}, // Recording/GetLCancelStatus/GetLCancelStatus.asm - {0x8006c324, true}, // Recording/GetLCancelStatus/ResetLCancelStatus.asm - {0x800679bc, true}, // Recording/ExtendPlayerBlock.asm - {0x802fef88, true}, // Recording/FlushFrameBuffer.asm - {0x80005604, true}, // Recording/IsVSMode.asm - {0x8016d30c, true}, // Recording/SendGameEnd.asm - {0x8016e74c, true}, // Recording/SendGameInfo.asm - {0x8006c5d8, true}, // Recording/SendGamePostFrame.asm - {0x8006b0dc, true}, // Recording/SendGamePreFrame.asm - {0x803219ec, true}, // 3.4.0: Recording/FlushFrameBuffer.asm (Have to keep old ones for - // backward compatibility) - {0x8006da34, true}, // 3.4.0: Recording/SendGamePostFrame.asm - {0x8016d884, true}, // 3.7.0: Recording/SendGameEnd.asm - - {0x8021aae4, true}, // Binary/FasterMeleeSettings/DisableFdTransitions.bin - {0x801cbb90, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801CC8AC, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801CBE9C, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801CBEF0, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801CBF54, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x80390838, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801CD250, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801CCDCC, true}, // Binary/FasterMeleeSettings/LaglessFod.bin - {0x801C26B0, true}, // Binary/FasterMeleeSettings/RandomStageMusic.bin - {0x803761ec, true}, // Binary/NormalLagReduction.bin - {0x800198a4, true}, // Binary/PerformanceLagReduction.bin - {0x80019620, true}, // Binary/PerformanceLagReduction.bin - {0x801A5054, true}, // Binary/PerformanceLagReduction.bin - {0x80397878, true}, // Binary/OsReportPrintOnCrash.bin - {0x801A4DA0, true}, // Binary/LagReduction/PD.bin - {0x801A4DB4, true}, // Binary/LagReduction/PD.bin - {0x80019860, true}, // Binary/LagReduction/PD.bin - {0x801A4C24, true}, // Binary/LagReduction/PD+VB.bin - {0x8001985C, true}, // Binary/LagReduction/PD+VB.bin - {0x80019860, true}, // Binary/LagReduction/PD+VB.bin - {0x80376200, true}, // Binary/LagReduction/PD+VB.bin - {0x801A5018, true}, // Binary/LagReduction/PD+VB.bin - {0x80218D68, true}, // Binary/LagReduction/PD+VB.bin - {0x8016E9AC, true}, // Binary/Force2PCenterHud.bin - {0x80030E44, true}, // Binary/DisableScreenShake.bin - {0x803761EC, true}, // Binary/NormalLagReduction.bin - {0x80376238, true}, // Binary/NormalLagReduction.bin - - {0x800055f0, true}, // Common/EXITransferBuffer.asm - {0x800055f8, true}, // Common/GetIsFollower.asm - {0x800055fc, true}, // Common/Gecko/ProcessCodeList.asm - {0x8016d294, true}, // Common/IncrementFrameIndex.asm - {0x80376a24, true}, // Common/UseInGameDelay/ApplyInGameDelay.asm - {0x8016e9b0, true}, // Common/UseInGameDelay/InitializeInGameDelay.asm - {0x8000561c, true}, // Common/GetCommonMinorID/GetCommonMinorID.asm - {0x802f666c, true}, // Common/UseInGameDelay/InitializeInGameDelay.asm v2 - {0x8000569c, true}, // Common/CompatibilityHooks/GetFighterNum.asm - {0x800056a0, true}, // Common/CompatibilityHooks/GetSSMIndex.asm - {0x800056a8, true}, // Common/CompatibilityHooks/RequestSSMLoad.asm - - {0x801a5b14, true}, // External/Salty Runback/Salty Runback.asm - {0x801a4570, true}, // External/LagReduction/ForceHD/480pDeflickerOff.asm - {0x802fccd8, true}, // External/Hide Nametag When Invisible/Hide Nametag When Invisible.asm - - {0x804ddb30, true}, // External/Widescreen/Adjust Offscreen Scissor/Fix Bubble - // Positions/Adjust Corner Value 1.asm - {0x804ddb34, true}, // External/Widescreen/Adjust Offscreen Scissor/Fix Bubble - // Positions/Adjust Corner Value 2.asm - {0x804ddb2c, true}, // External/Widescreen/Adjust Offscreen Scissor/Fix Bubble - // Positions/Extend Negative Vertical Bound.asm - {0x804ddb28, true}, // External/Widescreen/Adjust Offscreen Scissor/Fix Bubble - // Positions/Extend Positive Vertical Bound.asm - {0x804ddb4c, true}, // External/Widescreen/Adjust Offscreen Scissor/Fix Bubble - // Positions/Widen Bubble Region.asm - {0x804ddb58, true}, // External/Widescreen/Adjust Offscreen Scissor/Adjust Bubble Zoom.asm - {0x80086b24, true}, // External/Widescreen/Adjust Offscreen Scissor/Draw High Poly Models.asm - {0x80030C7C, true}, // External/Widescreen/Adjust Offscreen Scissor/Left Camera Bound.asm - {0x80030C88, true}, // External/Widescreen/Adjust Offscreen Scissor/Right Camera Bound.asm - {0x802fcfc4, - true}, // External/Widescreen/Nametag Fixes/Adjust Nametag Background X Scale.asm - {0x804ddb84, true}, // External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm - {0x803BB05C, true}, // External/Widescreen/Fix Screen Flash.asm - {0x8036A4A8, true}, // External/Widescreen/Overwrite CObj Values.asm - {0x80302784, true}, // External/Monitor4-3/Add Shutters.asm - {0x800C0148, true}, // External/FlashRedFailedLCancel/ChangeColor.asm - {0x8008D690, true}, // External/FlashRedFailedLCancel/TriggerColor.asm - - {0x801A4DB4, true}, // Online/Core/ForceEngineOnRollback.asm - {0x8016D310, true}, // Online/Core/HandleLRAS.asm - {0x8034DED8, true}, // Online/Core/HandleRumble.asm - {0x8016E748, true}, // Online/Core/InitOnlinePlay.asm - {0x8016e904, true}, // Online/Core/InitPause.asm - {0x801a5014, true}, // Online/Core/LoopEngineForRollback.asm - {0x801a4de4, true}, // Online/Core/StartEngineLoop.asm - {0x80376A28, true}, // Online/Core/TriggerSendInput.asm - {0x801a4cb4, true}, // Online/Core/EXIFileLoad/AllocBuffer.asm - {0x800163fc, true}, // Online/Core/EXIFileLoad/GetFileSize.asm - {0x800166b8, true}, // Online/Core/EXIFileLoad/TransferFile.asm - {0x80019260, true}, // Online/Core/Hacks/ForceNoDiskCrash.asm - {0x80376304, true}, // Online/Core/Hacks/ForceNoVideoAssert.asm - {0x80321d70, true}, // Online/Core/Hacks/PreventCharacterCrowdChants.asm - {0x80019608, true}, // Online/Core/Hacks/PreventPadAlarmDuringRollback.asm - {0x8038D224, true}, // Online/Core/Sound/AssignSoundInstanceId.asm - {0x80088224, true}, // Online/Core/Sound/NoDestroyVoice.asm - {0x800882B0, true}, // Online/Core/Sound/NoDestroyVoice2.asm - {0x8038D0B0, true}, // Online/Core/Sound/PreventDuplicateSounds.asm - {0x803775b8, true}, // Online/Logging/LogInputOnCopy.asm - {0x8016e9b4, true}, // Online/Menus/InGame/InitInGame.asm - {0x80185050, true}, // Online/Menus/VSScreen/HideStageDisplay/PreventEarlyR3Overwrite.asm - {0x80184b1c, true}, // Online/Menus/VSScreen/HideStageText/SkipStageNumberShow.asm - {0x801A45BC, true}, // Online/Slippi Online Scene/main.asm - {0x801a45b8, true}, // Online/Slippi Online Scene/main.asm (https://bit.ly/3kxohf4) - {0x801BFA20, true}, // Online/Slippi Online Scene/boot.asm - {0x800cc818, true}, // External/GreenDuringWait/fall.asm - {0x8008a478, true}, // External/GreenDuringWait/wait.asm - - {0x802f6690, true}, // HUD Transparency v1.1 - // (https://smashboards.com/threads/transparent-hud-v1-1.508509/) - {0x802F71E0, - true}, // Smaller "Ready, GO!" (https://smashboards.com/threads/smaller-ready-go.509740/) - {0x80071960, - true}, // Yellow During IASA - // (https://smashboards.com/threads/color-overlays-for-iasa-frames.401474/post-19120928) - }; - - std::unordered_map deny_list; - deny_list.insert(static_deny_list.begin(), static_deny_list.end()); + // Assignment like this copies the values into a new map I think + std::vector legacyCodelist = g_playbackStatus->getLegacyCodelist(); + std::unordered_map denylist = g_playbackStatus->getDenylist(); auto replayCommSettings = g_replayComm->getSettings(); - if (replayCommSettings.rollbackDisplayMethod == "off") - { - // Some codes should only be blacklisted when not displaying rollbacks, these are codes - // that are required for things to not break when using Slippi savestates. Perhaps this - // should be handled by actually applying these codes in the playback ASM instead? not sure - deny_list[0x8038add0] = true; // Online/Core/PreventFileAlarms/PreventMusicAlarm.asm - deny_list[0x80023FFC] = true; // Online/Core/PreventFileAlarms/MuteMusic.asm - } + // Some codes should only be denylisted when not displaying rollbacks, these are codes + // that are required for things to not break when using Slippi savestates. Perhaps this + // should be handled by actually applying these codes in the playback ASM instead? not sure + auto should_deny = replayCommSettings.rollbackDisplayMethod == "off"; + denylist[0x8038add0] = should_deny; // Online/Core/PreventFileAlarms/PreventMusicAlarm.asm + denylist[0x80023FFC] = should_deny; // Online/Core/PreventFileAlarms/MuteMusic.asm geckoList.clear(); Slippi::GameSettings* settings = m_current_game->GetSettings(); if (settings->geckoCodes.empty()) { - geckoList = defaultCodeList; + geckoList = legacyCodelist; return; } @@ -1203,14 +863,14 @@ void CEXISlippi::prepareGeckoList() idx += codeOffset; - // If this address is blacklisted, we don't add it to what we will send to game - if (deny_list.count(address)) + // If this address is denylisted, we don't add it to what we will send to game + if (denylist[address]) continue; INFO_LOG_FMT(SLIPPI, "Codetype [{:x}] Inserting section: {} - {} ({:x}, {})", codeType, idx - codeOffset, idx, address, codeOffset); - // If not blacklisted, add code to return vector + // If not denylisted, add code to return vector geckoList.insert(geckoList.end(), source.begin() + (idx - codeOffset), source.begin() + idx); } diff --git a/Source/Core/Core/NetPlayProto.h b/Source/Core/Core/NetPlayProto.h index 07ad5b95f2..1d857010ad 100644 --- a/Source/Core/Core/NetPlayProto.h +++ b/Source/Core/Core/NetPlayProto.h @@ -158,6 +158,7 @@ enum class MessageID : u8 SLIPPI_CONN_SELECTED = 0x83, SLIPPI_CHAT_MESSAGE = 0x84, SLIPPI_COMPLETE_STEP = 0x85, + SLIPPI_SYNCED_STATE = 0x86, GolfRequest = 0x90, GolfSwitch = 0x91, diff --git a/Source/Core/Core/Slippi/SlippiExiTypes.h b/Source/Core/Core/Slippi/SlippiExiTypes.h index b4390ad167..13c7dd031e 100644 --- a/Source/Core/Core/Slippi/SlippiExiTypes.h +++ b/Source/Core/Core/Slippi/SlippiExiTypes.h @@ -18,6 +18,8 @@ struct ReportGameQueryPlayer u8 slot_type; u8 stocks_remaining; float damage_done; + u8 synced_stocks_remaining; + u16 synced_current_health; }; struct ReportGameQuery @@ -30,6 +32,7 @@ struct ReportGameQuery s8 winner_idx; u8 game_end_method; s8 lras_initiator; + u32 synced_timer; ReportGameQueryPlayer players[REPORT_PLAYER_COUNT]; u8 game_info_block[312]; }; @@ -90,10 +93,12 @@ inline ReportGameQuery Convert(u8* payload) q.frame_length = Common::FromBigEndian(q.frame_length); q.game_index = Common::FromBigEndian(q.game_index); q.tiebreak_index = Common::FromBigEndian(q.tiebreak_index); + q.synced_timer = Common::FromBigEndian(q.synced_timer); for (int i = 0; i < REPORT_PLAYER_COUNT; i++) { auto* p = &q.players[i]; p->damage_done = Common::FromBigEndian(p->damage_done); + p->synced_current_health = Common::FromBigEndian(p->synced_current_health); } return q; } diff --git a/Source/Core/Core/Slippi/SlippiGame.cpp b/Source/Core/Core/Slippi/SlippiGame.cpp index 9ea9dcdaf4..6fd5df770d 100644 --- a/Source/Core/Core/Slippi/SlippiGame.cpp +++ b/Source/Core/Core/Slippi/SlippiGame.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "SlippiGame.h" namespace Slippi @@ -526,7 +527,7 @@ void SlippiGame::processData() // Transform this message into a different message command = data[SPLIT_MESSAGE_INTERNAL_DATA_LEN + 2]; data = &splitMessageBuf[0]; - payloadSize = asmEvents[command]; + payloadSize = static_cast(splitMessageBuf.size()); shouldResetSplitMessageBuf = true; } } diff --git a/Source/Core/Core/Slippi/SlippiNetplay.cpp b/Source/Core/Core/Slippi/SlippiNetplay.cpp index ebdf1dc21f..35b4629f56 100644 --- a/Source/Core/Core/Slippi/SlippiNetplay.cpp +++ b/Source/Core/Core/Slippi/SlippiNetplay.cpp @@ -334,6 +334,12 @@ unsigned int SlippiNetplayClient::OnData(sf::Packet& packet, ENetPeer* peer) static_cast(frame64 - i), &packetData[pad_data_offset + i * SLIPPI_PAD_DATA_SIZE]); remotePadQueue[pIdx].push_front(std::move(pad)); } + + // Write checksum pad to keep track of latest remote checksum + ChecksumEntry e; + e.frame = checksum_frame; + e.value = checksum; + remote_checksums[pIdx] = e; } // Only ack if inputsToCopy is greater than 0. Otherwise we are receiving an old input and @@ -481,6 +487,43 @@ unsigned int SlippiNetplayClient::OnData(sf::Packet& packet, ENetPeer* peer) } break; + case NetPlay::MessageID::SLIPPI_SYNCED_STATE: + { + u8 packetPlayerPort; + if (!(packet >> packetPlayerPort)) + { + ERROR_LOG_FMT(SLIPPI_ONLINE, "Netplay packet too small to read player index"); + break; + } + u8 pIdx = PlayerIdxFromPort(packetPlayerPort); + if (pIdx >= m_remotePlayerCount) + { + ERROR_LOG_FMT(SLIPPI_ONLINE, "Got packet with invalid player idx {}", pIdx); + break; + } + + SlippiSyncedGameState results; + packet >> results.match_id; + packet >> results.game_index; + packet >> results.tiebreak_index; + packet >> results.seconds_remaining; + for (int i = 0; i < 4; i++) + { + packet >> results.fighters[i].stocks_remaining; + packet >> results.fighters[i].current_health; + } + + // ERROR_LOG_FMT(SLIPPI_ONLINE, "Received synced state from opponent. {}, {}, {}, {}. F1: {} + // ({}%%), F2: {} ({}%%)", + // results.match_id, results.game_index, results.tiebreak_index, + // results.seconds_remaining, results.fighters[0].stocks_remaining, + // results.fighters[0].current_health, results.fighters[1].stocks_remaining, + // results.fighters[1].current_health); + + remote_sync_states[pIdx] = results; + } + break; + default: WARN_LOG_FMT(SLIPPI_ONLINE, "Unknown message received with id : {}", static_cast(mid)); break; @@ -1030,6 +1073,8 @@ void SlippiNetplayClient::StartSlippiGame() std::swap(ackTimers[i], empty); } + is_desync_recovery = false; + // Clear game prep queue in case anything is still lingering game_prep_step_queue.clear(); @@ -1044,6 +1089,7 @@ void SlippiNetplayClient::SendConnectionSelected() *spac << static_cast(NetPlay::MessageID::SLIPPI_CONN_SELECTED); SendAsync(std::move(spac)); } + void SlippiNetplayClient::SendSlippiPad(std::unique_ptr pad) { auto status = slippiConnectStatus; @@ -1138,6 +1184,26 @@ void SlippiNetplayClient::SendGamePrepStep(SlippiGamePrepStepResults& s) SendAsync(std::move(spac)); } +void SlippiNetplayClient::SendSyncedGameState(SlippiSyncedGameState& s) +{ + is_desync_recovery = true; + local_sync_state = s; + + auto spac = std::make_unique(); + *spac << static_cast(NetPlay::MessageID::SLIPPI_SYNCED_STATE); + *spac << this->m_player_idx; + *spac << s.match_id; + *spac << s.game_index; + *spac << s.tiebreak_index; + *spac << s.seconds_remaining; + for (int i = 0; i < 4; i++) + { + *spac << s.fighters[i].stocks_remaining; + *spac << s.fighters[i].current_health; + } + SendAsync(std::move(spac)); +} + bool SlippiNetplayClient::GetGamePrepResults(u8 step_idx, SlippiGamePrepStepResults& res) { // Just pull stuff off until we find something for the right step. I think that should be fine @@ -1256,8 +1322,8 @@ std::unique_ptr SlippiNetplayClient::GetSlippiRemotePad(i int inputCount = 0; padOutput->latest_frame = 0; - padOutput->checksum_frame = remoteChecksum[index].frame; - padOutput->checksum = remoteChecksum[index].value; + padOutput->checksum_frame = remote_checksums[index].frame; + padOutput->checksum = remote_checksums[index].value; // Copy inputs from the remote pad queue to the output. We iterate backwards because // we want to get the oldest frames possible (will have been cleared to contain the last @@ -1379,3 +1445,94 @@ s32 SlippiNetplayClient::CalcTimeOffsetUs() return minOffset; } + +bool SlippiNetplayClient::IsWaitingForDesyncRecovery() +{ + // If we are not in a desync recovery state, we do not need to wait + if (!is_desync_recovery) + return false; + + for (int i = 0; i < m_remotePlayerCount; i++) + { + if (local_sync_state.game_index != remote_sync_states[i].game_index) + return true; + + if (local_sync_state.tiebreak_index != remote_sync_states[i].tiebreak_index) + return true; + } + + return false; +} + +SlippiDesyncRecoveryResp SlippiNetplayClient::GetDesyncRecoveryState() +{ + SlippiDesyncRecoveryResp result; + + result.is_recovering = is_desync_recovery; + result.is_waiting = IsWaitingForDesyncRecovery(); + + // If we are not recovering or if we are currently waiting, don't need to compute state, just + // return + if (!result.is_recovering || result.is_waiting) + return result; + + result.state = local_sync_state; + + // Here let's try to reconcile all the states into one. This is important to make sure + // everyone starts at the same percent/stocks because their last synced state might be + // a slightly different frame. There didn't seem to be an easy way to guarantee they'd + // all be on exactly the same frame + for (int i = 0; i < m_remotePlayerCount; i++) + { + auto& s = remote_sync_states[i]; + if (abs(static_cast(result.state.seconds_remaining) - + static_cast(s.seconds_remaining)) > 1) + { + ERROR_LOG_FMT(SLIPPI_ONLINE, "Timer values for desync recovery too different: {}, {}", + result.state.seconds_remaining, s.seconds_remaining); + result.is_error = true; + return result; + } + + // Use the timer with more time remaining + if (s.seconds_remaining > result.state.seconds_remaining) + { + result.state.seconds_remaining = s.seconds_remaining; + } + + for (int j = 0; j < 4; j++) + { + auto& fighter = result.state.fighters[i]; + auto& iFighter = s.fighters[i]; + + if (fighter.stocks_remaining != iFighter.stocks_remaining) + { + // This might actually happen sometimes if a desync happens right as someone is KO'd... + // should be quite rare though in a 1v1 situation. + ERROR_LOG_FMT(SLIPPI_ONLINE, + "Stocks remaining for desync recovery do not match: [Player {}] {}, {}", + j + 1, fighter.stocks_remaining, iFighter.stocks_remaining); + result.is_error = true; + return result; + } + + if (abs(static_cast(fighter.current_health) - + static_cast(iFighter.current_health)) > 25) + { + ERROR_LOG_FMT(SLIPPI_ONLINE, + "Current health for desync recovery too different: [Player {}] {}, {}", j + 1, + fighter.current_health, iFighter.current_health); + result.is_error = true; + return result; + } + + // Use the lower health value + if (iFighter.current_health < fighter.current_health) + { + result.state.fighters[i].current_health = iFighter.current_health; + } + } + } + + return result; +} diff --git a/Source/Core/Core/Slippi/SlippiNetplay.h b/Source/Core/Core/Slippi/SlippiNetplay.h index bd61527373..376762b294 100644 --- a/Source/Core/Core/Slippi/SlippiNetplay.h +++ b/Source/Core/Core/Slippi/SlippiNetplay.h @@ -49,6 +49,29 @@ struct SlippiGamePrepStepResults u8 stage_selections[2]; }; +struct SlippiSyncedFighterState +{ + u8 stocks_remaining = 4; + u16 current_health = 0; +}; + +struct SlippiSyncedGameState +{ + std::string match_id = ""; + u32 game_index = 0; + u32 tiebreak_index = 0; + u32 seconds_remaining = 480; + SlippiSyncedFighterState fighters[4]; +}; + +struct SlippiDesyncRecoveryResp +{ + bool is_recovering = false; + bool is_waiting = false; + bool is_error = false; + SlippiSyncedGameState state; +}; + class SlippiPlayerSelections { public: @@ -154,6 +177,7 @@ public: void SendSlippiPad(std::unique_ptr pad); void SetMatchSelections(SlippiPlayerSelections& s); void SendGamePrepStep(SlippiGamePrepStepResults& s); + void SendSyncedGameState(SlippiSyncedGameState& s); bool GetGamePrepResults(u8 stepIdx, SlippiGamePrepStepResults& res); std::unique_ptr GetFakePadOutput(int frame); std::unique_ptr GetSlippiRemotePad(int index, int maxFrameCount); @@ -163,6 +187,8 @@ public: SlippiPlayerSelections GetSlippiRemoteChatMessage(bool isChatEnabled); u8 GetSlippiRemoteSentChatMessage(bool isChatEnabled); s32 CalcTimeOffsetUs(); + bool IsWaitingForDesyncRecovery(); + SlippiDesyncRecoveryResp GetDesyncRecoveryState(); void WriteChatMessageToPacket(sf::Packet& packet, int messageId, u8 playerIdx); std::unique_ptr ReadChatMessageFromPacket(sf::Packet& packet); @@ -219,7 +245,10 @@ protected: std::deque> localPadQueue; // most recent inputs at start of deque std::deque> remotePadQueue[SLIPPI_REMOTE_PLAYER_MAX]; // most recent inputs at start of deque - ChecksumEntry remoteChecksum[SLIPPI_REMOTE_PLAYER_MAX]; + bool is_desync_recovery = false; + ChecksumEntry remote_checksums[SLIPPI_REMOTE_PLAYER_MAX]; + SlippiSyncedGameState remote_sync_states[SLIPPI_REMOTE_PLAYER_MAX]; + SlippiSyncedGameState local_sync_state; std::deque game_prep_step_queue; u64 pingUs[SLIPPI_REMOTE_PLAYER_MAX]; int32_t lastFrameAcked[SLIPPI_REMOTE_PLAYER_MAX]; diff --git a/Source/Core/Core/Slippi/SlippiPlayback.cpp b/Source/Core/Core/Slippi/SlippiPlayback.cpp index 4308c0950d..f29ccf25c4 100644 --- a/Source/Core/Core/Slippi/SlippiPlayback.cpp +++ b/Source/Core/Core/Slippi/SlippiPlayback.cpp @@ -5,7 +5,9 @@ #include #endif +#include "Common/CommonPaths.h" #include "Common/Config/Config.h" +#include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Core/Config/MainSettings.h" #include "Core/Core.h" @@ -64,6 +66,8 @@ SlippiPlaybackStatus::SlippiPlaybackStatus() currentPlaybackFrame = INT_MIN; targetFrameNum = INT_MAX; lastFrame = Slippi::PLAYBACK_FIRST_SAVE; + generateDenylist(); + generateLegacyCodelist(); } void SlippiPlaybackStatus::startThreads() @@ -320,6 +324,333 @@ void SlippiPlaybackStatus::updateWatchSettingsStartEnd() } } +std::unordered_map SlippiPlaybackStatus::getDenylist() +{ + return denylist; +} + +std::vector SlippiPlaybackStatus::getLegacyCodelist() +{ + return legacyCodelist; +} + +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]; +} + +void SlippiPlaybackStatus::generateDenylist() +{ + // We start by populating the denylist with old injections that are not longer used but need + // to be included for backward compatibility reasons. + // It also includes some common codes that are not in our codebase + denylist = { + // Backward compatibility + // Post 3.4.0: Recording/FlushFrameBuffer.asm + {0x802fef88, true}, + // Post 3.4.0: Recording/SendGamePostFrame.asm + {0x8006c5d8, true}, + // Post 3.7.0: Recording/SendGameEnd.asm + {0x8016d30c, true}, + + // Common codes not in our codebase + // HUD Transparency v1.1 (https://smashboards.com/threads/transparent-hud-v1-1.508509/) + {0x802f6690, true}, + // Smaller "Ready, GO!" (https://smashboards.com/threads/smaller-ready-go.509740/) + {0x802F71E0, true}, + // Yellow During IASA + // (https://smashboards.com/threads/color-overlays-for-iasa-frames.401474/post-19120928) + {0x80071960, true}, + }; + + // Next we parse through the injection lists files to exclude all of our injections that don't + // affect gameplay + std::string injections_path = + File::GetSysDirectory() + DIR_SEP + "Slippi" + DIR_SEP + "InjectionLists"; + auto entries = File::ScanDirectoryTree(injections_path, false); + for (auto& entry : entries.children) + { + if (entry.isDirectory) + continue; + + std::string contents; + File::ReadFileToString(entry.physicalName, contents); + auto res = json::parse(contents, nullptr, false); + if (res.is_discarded() || !res.is_object()) + { + ERROR_LOG_FMT(SLIPPI, "Injection list file {} is not properly formatted.", + entry.physicalName); + continue; + } + + auto list = res["Details"]; + if (list.is_discarded() || !list.is_array()) + { + ERROR_LOG_FMT(SLIPPI, "Injection list file {} is not properly formatted.", + entry.physicalName); + continue; + } + + // Go through all the injections + for (auto& injection : list) + { + if (injection.is_discarded() || !injection.is_object()) + { + ERROR_LOG_FMT(SLIPPI, "Injection entry in list file {} is not properly formatted.", + entry.physicalName); + continue; + } + + // Check if tags indicate that this code affects gameplay, if so, do not put it on the + // denylist + auto tags = readString(injection, "Tags"); + if (tags.find("[affects-gameplay]") != std::string::npos) + continue; + + // Add injection to denylist + u32 address; + auto addressStr = readString(injection, "InjectionAddress"); + if (!AsciiToHex(addressStr, address)) + { + ERROR_LOG_FMT(SLIPPI, "Injection list file {}: Could not parse address: {}", + entry.physicalName, addressStr); + continue; + } + denylist[address] = true; + // INFO_LOG(SLIPPI, "New denylist entry: %08X", address); + } + } + + NOTICE_LOG_FMT(SLIPPI, "Denylist populated with length: {}", denylist.size()); +} + +void SlippiPlaybackStatus::generateLegacyCodelist() +{ + legacyCodelist = { + 0xC2, 0x0C, 0x9A, 0x44, 0x00, 0x00, 0x00, + 0x2F, // #External/UCF + Arduino Toggle UI/UCF/UCF 0.74 + // Dashback - Check for Toggle.asm + 0xD0, 0x1F, 0x00, 0x2C, 0x88, 0x9F, 0x06, 0x18, 0x38, 0x62, 0xF2, 0x28, 0x7C, 0x63, 0x20, + 0xAE, 0x2C, 0x03, 0x00, 0x01, 0x41, 0x82, 0x00, 0x14, 0x38, 0x62, 0xF2, 0x2C, 0x7C, 0x63, + 0x20, 0xAE, 0x2C, 0x03, 0x00, 0x01, 0x40, 0x82, 0x01, 0x50, 0x7C, 0x08, 0x02, 0xA6, 0x90, + 0x01, 0x00, 0x04, 0x94, 0x21, 0xFF, 0x50, 0xBE, 0x81, 0x00, 0x08, 0x48, 0x00, 0x01, 0x21, + 0x7F, 0xC8, 0x02, 0xA6, 0xC0, 0x3F, 0x08, 0x94, 0xC0, 0x5E, 0x00, 0x00, 0xFC, 0x01, 0x10, + 0x40, 0x40, 0x82, 0x01, 0x18, 0x80, 0x8D, 0xAE, 0xB4, 0xC0, 0x3F, 0x06, 0x20, 0xFC, 0x20, + 0x0A, 0x10, 0xC0, 0x44, 0x00, 0x3C, 0xFC, 0x01, 0x10, 0x40, 0x41, 0x80, 0x01, 0x00, 0x88, + 0x7F, 0x06, 0x70, 0x2C, 0x03, 0x00, 0x02, 0x40, 0x80, 0x00, 0xF4, 0x88, 0x7F, 0x22, 0x1F, + 0x54, 0x60, 0x07, 0x39, 0x40, 0x82, 0x00, 0xE8, 0x3C, 0x60, 0x80, 0x4C, 0x60, 0x63, 0x1F, + 0x78, 0x8B, 0xA3, 0x00, 0x01, 0x38, 0x7D, 0xFF, 0xFE, 0x88, 0x9F, 0x06, 0x18, 0x48, 0x00, + 0x00, 0x8D, 0x7C, 0x7C, 0x1B, 0x78, 0x7F, 0xA3, 0xEB, 0x78, 0x88, 0x9F, 0x06, 0x18, 0x48, + 0x00, 0x00, 0x7D, 0x7C, 0x7C, 0x18, 0x50, 0x7C, 0x63, 0x19, 0xD6, 0x2C, 0x03, 0x15, 0xF9, + 0x40, 0x81, 0x00, 0xB0, 0x38, 0x00, 0x00, 0x01, 0x90, 0x1F, 0x23, 0x58, 0x90, 0x1F, 0x23, + 0x40, 0x80, 0x9F, 0x00, 0x04, 0x2C, 0x04, 0x00, 0x0A, 0x40, 0xA2, 0x00, 0x98, 0x88, 0x7F, + 0x00, 0x0C, 0x38, 0x80, 0x00, 0x01, 0x3D, 0x80, 0x80, 0x03, 0x61, 0x8C, 0x41, 0x8C, 0x7D, + 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x78, + 0x80, 0x83, 0x00, 0x2C, 0x80, 0x84, 0x1E, 0xCC, 0xC0, 0x3F, 0x00, 0x2C, 0xD0, 0x24, 0x00, + 0x18, 0xC0, 0x5E, 0x00, 0x04, 0xFC, 0x01, 0x10, 0x40, 0x41, 0x81, 0x00, 0x0C, 0x38, 0x60, + 0x00, 0x80, 0x48, 0x00, 0x00, 0x08, 0x38, 0x60, 0x00, 0x7F, 0x98, 0x64, 0x00, 0x06, 0x48, + 0x00, 0x00, 0x48, 0x7C, 0x85, 0x23, 0x78, 0x38, 0x63, 0xFF, 0xFF, 0x2C, 0x03, 0x00, 0x00, + 0x40, 0x80, 0x00, 0x08, 0x38, 0x63, 0x00, 0x05, 0x3C, 0x80, 0x80, 0x46, 0x60, 0x84, 0xB1, + 0x08, 0x1C, 0x63, 0x00, 0x30, 0x7C, 0x84, 0x1A, 0x14, 0x1C, 0x65, 0x00, 0x0C, 0x7C, 0x84, + 0x1A, 0x14, 0x88, 0x64, 0x00, 0x02, 0x7C, 0x63, 0x07, 0x74, 0x4E, 0x80, 0x00, 0x20, 0x4E, + 0x80, 0x00, 0x21, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x81, 0x00, 0x08, + 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, 0x00, 0x00, 0x00, + 0x00, 0xC2, 0x09, 0x98, 0xA4, 0x00, 0x00, 0x00, + 0x2B, // #External/UCF + Arduino Toggle UI/UCF/UCF + // 0.74 Shield Drop - Check for Toggle.asm + 0x7C, 0x08, 0x02, 0xA6, 0x90, 0x01, 0x00, 0x04, 0x94, 0x21, 0xFF, 0x50, 0xBE, 0x81, 0x00, + 0x08, 0x7C, 0x7E, 0x1B, 0x78, 0x83, 0xFE, 0x00, 0x2C, 0x48, 0x00, 0x01, 0x01, 0x7F, 0xA8, + 0x02, 0xA6, 0x88, 0x9F, 0x06, 0x18, 0x38, 0x62, 0xF2, 0x28, 0x7C, 0x63, 0x20, 0xAE, 0x2C, + 0x03, 0x00, 0x01, 0x41, 0x82, 0x00, 0x14, 0x38, 0x62, 0xF2, 0x30, 0x7C, 0x63, 0x20, 0xAE, + 0x2C, 0x03, 0x00, 0x01, 0x40, 0x82, 0x00, 0xF8, 0xC0, 0x3F, 0x06, 0x3C, 0x80, 0x6D, 0xAE, + 0xB4, 0xC0, 0x03, 0x03, 0x14, 0xFC, 0x01, 0x00, 0x40, 0x40, 0x81, 0x00, 0xE4, 0xC0, 0x3F, + 0x06, 0x20, 0x48, 0x00, 0x00, 0x71, 0xD0, 0x21, 0x00, 0x90, 0xC0, 0x3F, 0x06, 0x24, 0x48, + 0x00, 0x00, 0x65, 0xC0, 0x41, 0x00, 0x90, 0xEC, 0x42, 0x00, 0xB2, 0xEC, 0x21, 0x00, 0x72, + 0xEC, 0x21, 0x10, 0x2A, 0xC0, 0x5D, 0x00, 0x0C, 0xFC, 0x01, 0x10, 0x40, 0x41, 0x80, 0x00, + 0xB4, 0x88, 0x9F, 0x06, 0x70, 0x2C, 0x04, 0x00, 0x03, 0x40, 0x81, 0x00, 0xA8, 0xC0, 0x1D, + 0x00, 0x10, 0xC0, 0x3F, 0x06, 0x24, 0xFC, 0x00, 0x08, 0x40, 0x40, 0x80, 0x00, 0x98, 0xBA, + 0x81, 0x00, 0x08, 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, + 0x80, 0x61, 0x00, 0x1C, 0x83, 0xE1, 0x00, 0x14, 0x38, 0x21, 0x00, 0x18, 0x38, 0x63, 0x00, + 0x08, 0x7C, 0x68, 0x03, 0xA6, 0x4E, 0x80, 0x00, 0x20, 0xFC, 0x00, 0x0A, 0x10, 0xC0, 0x3D, + 0x00, 0x00, 0xEC, 0x00, 0x00, 0x72, 0xC0, 0x3D, 0x00, 0x04, 0xEC, 0x00, 0x08, 0x28, 0xFC, + 0x00, 0x00, 0x1E, 0xD8, 0x01, 0x00, 0x80, 0x80, 0x61, 0x00, 0x84, 0x38, 0x63, 0x00, 0x02, + 0x3C, 0x00, 0x43, 0x30, 0xC8, 0x5D, 0x00, 0x14, 0x6C, 0x63, 0x80, 0x00, 0x90, 0x01, 0x00, + 0x80, 0x90, 0x61, 0x00, 0x84, 0xC8, 0x21, 0x00, 0x80, 0xEC, 0x01, 0x10, 0x28, 0xC0, 0x3D, + 0x00, 0x00, 0xEC, 0x20, 0x08, 0x24, 0x4E, 0x80, 0x00, 0x20, 0x4E, 0x80, 0x00, 0x21, 0x42, + 0xA0, 0x00, 0x00, 0x37, 0x27, 0x00, 0x00, 0x43, 0x30, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, + 0xBF, 0x4C, 0xCC, 0xCD, 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF3, + 0x78, 0x7F, 0xE4, 0xFB, 0x78, 0xBA, 0x81, 0x00, 0x08, 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, + 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, + 0x16, 0xE7, 0x50, 0x00, 0x00, 0x00, + 0x33, // #Common/StaticPatches/ToggledStaticOverwrites.asm + 0x88, 0x62, 0xF2, 0x34, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x14, 0x48, 0x00, 0x00, + 0x75, 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x3D, 0x48, 0x00, 0x00, 0x14, 0x48, 0x00, + 0x00, 0x95, 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x2D, 0x48, 0x00, 0x00, 0x04, 0x88, + 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x14, 0x48, 0x00, 0x00, 0xB9, + 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x11, 0x48, 0x00, 0x00, 0x10, 0x48, 0x00, 0x00, + 0xC9, 0x7C, 0x68, 0x02, 0xA6, 0x48, 0x00, 0x01, 0x01, 0x88, 0x62, 0xF2, 0x3C, 0x2C, 0x03, + 0x00, 0x00, 0x41, 0x82, 0x00, 0x14, 0x48, 0x00, 0x00, 0xD1, 0x7C, 0x68, 0x02, 0xA6, 0x48, + 0x00, 0x00, 0xE9, 0x48, 0x00, 0x01, 0x04, 0x48, 0x00, 0x00, 0xD1, 0x7C, 0x68, 0x02, 0xA6, + 0x48, 0x00, 0x00, 0xD9, 0x48, 0x00, 0x00, 0xF4, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x3C, 0xE4, + 0xD4, 0x00, 0x24, 0x04, 0x64, 0x80, 0x07, 0x96, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x80, 0x2B, + 0x7E, 0x54, 0x48, 0x00, 0x00, 0x88, 0x80, 0x2B, 0x80, 0x8C, 0x48, 0x00, 0x00, 0x84, 0x80, + 0x12, 0x39, 0xA8, 0x60, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, + 0x80, 0x3C, 0xE4, 0xD4, 0x00, 0x20, 0x00, 0x00, 0x80, 0x07, 0x96, 0xE0, 0x3A, 0x40, 0x00, + 0x01, 0x80, 0x2B, 0x7E, 0x54, 0x88, 0x7F, 0x22, 0x40, 0x80, 0x2B, 0x80, 0x8C, 0x2C, 0x03, + 0x00, 0x02, 0x80, 0x10, 0xFC, 0x48, 0x90, 0x05, 0x21, 0xDC, 0x80, 0x10, 0xFB, 0x68, 0x90, + 0x05, 0x21, 0xDC, 0x80, 0x12, 0x39, 0xA8, 0x90, 0x1F, 0x1A, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, + 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x46, 0x10, 0x48, 0x00, 0x00, 0x4C, 0x80, 0x1D, 0x47, + 0x24, 0x48, 0x00, 0x00, 0x3C, 0x80, 0x1D, 0x46, 0x0C, 0x80, 0x9F, 0x00, 0xEC, 0xFF, 0xFF, + 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x46, 0x10, 0x38, 0x83, 0x7F, 0x9C, 0x80, + 0x1D, 0x47, 0x24, 0x88, 0x1B, 0x00, 0xC4, 0x80, 0x1D, 0x46, 0x0C, 0x3C, 0x60, 0x80, 0x3B, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x45, 0xFC, 0x48, 0x00, 0x09, + 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x80, 0x00, 0x21, 0x80, 0x1D, 0x45, 0xFC, 0x40, 0x80, + 0x09, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0xA3, 0xFF, 0xFC, 0x84, 0x65, 0x00, 0x04, 0x2C, + 0x03, 0xFF, 0xFF, 0x41, 0x82, 0x00, 0x10, 0x84, 0x85, 0x00, 0x04, 0x90, 0x83, 0x00, 0x00, + 0x4B, 0xFF, 0xFF, 0xEC, 0x4E, 0x80, 0x00, 0x20, 0x3C, 0x60, 0x80, 0x00, 0x3C, 0x80, 0x00, + 0x3B, 0x60, 0x84, 0x72, 0x2C, 0x3D, 0x80, 0x80, 0x32, 0x61, 0x8C, 0x8F, 0x50, 0x7D, 0x89, + 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x60, 0x80, 0x17, 0x3C, 0x80, 0x80, 0x17, 0x00, + 0x00, 0x00, 0x00, 0xC2, 0x1D, 0x14, 0xC8, 0x00, 0x00, 0x00, 0x04, // #Common/Preload Stadium + // Transformations/Handlers/Init + // isLoaded Bool.asm + 0x88, 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0C, 0x38, 0x60, 0x00, + 0x00, 0x98, 0x7F, 0x00, 0xF0, 0x3B, 0xA0, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC2, 0x1D, 0x45, 0xEC, 0x00, 0x00, 0x00, 0x1B, // #Common/Preload Stadium + // Transformations/Handlers/Load + // Transformation.asm + 0x88, 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0xC4, 0x88, 0x7F, 0x00, + 0xF0, 0x2C, 0x03, 0x00, 0x00, 0x40, 0x82, 0x00, 0xB8, 0x38, 0x60, 0x00, 0x04, 0x3D, 0x80, + 0x80, 0x38, 0x61, 0x8C, 0x05, 0x80, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x54, + 0x60, 0x10, 0x3A, 0xA8, 0x7F, 0x00, 0xE2, 0x3C, 0x80, 0x80, 0x3B, 0x60, 0x84, 0x7F, 0x9C, + 0x7C, 0x84, 0x00, 0x2E, 0x7C, 0x03, 0x20, 0x00, 0x41, 0x82, 0xFF, 0xD4, 0x90, 0x9F, 0x00, + 0xEC, 0x2C, 0x04, 0x00, 0x03, 0x40, 0x82, 0x00, 0x0C, 0x38, 0x80, 0x00, 0x00, 0x48, 0x00, + 0x00, 0x34, 0x2C, 0x04, 0x00, 0x04, 0x40, 0x82, 0x00, 0x0C, 0x38, 0x80, 0x00, 0x01, 0x48, + 0x00, 0x00, 0x24, 0x2C, 0x04, 0x00, 0x09, 0x40, 0x82, 0x00, 0x0C, 0x38, 0x80, 0x00, 0x02, + 0x48, 0x00, 0x00, 0x14, 0x2C, 0x04, 0x00, 0x06, 0x40, 0x82, 0x00, 0x00, 0x38, 0x80, 0x00, + 0x03, 0x48, 0x00, 0x00, 0x04, 0x3C, 0x60, 0x80, 0x3E, 0x60, 0x63, 0x12, 0x48, 0x54, 0x80, + 0x10, 0x3A, 0x7C, 0x63, 0x02, 0x14, 0x80, 0x63, 0x03, 0xD8, 0x80, 0x9F, 0x00, 0xCC, 0x38, + 0xBF, 0x00, 0xC8, 0x3C, 0xC0, 0x80, 0x1D, 0x60, 0xC6, 0x42, 0x20, 0x38, 0xE0, 0x00, 0x00, + 0x3D, 0x80, 0x80, 0x01, 0x61, 0x8C, 0x65, 0x80, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, + 0x21, 0x38, 0x60, 0x00, 0x01, 0x98, 0x7F, 0x00, 0xF0, 0x80, 0x7F, 0x00, 0xD8, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x1D, 0x4F, 0x14, 0x00, 0x00, 0x00, + 0x04, // #Common/Preload + // Stadium + // Transformations/Handlers/Reset + // isLoaded.asm + 0x88, 0x62, 0xF2, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0C, 0x38, 0x60, 0x00, + 0x00, 0x98, 0x7F, 0x00, 0xF0, 0x80, 0x6D, 0xB2, 0xD8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC2, 0x06, 0x8F, 0x30, 0x00, 0x00, 0x00, + 0x9D, // #Common/PAL/Handlers/Character DAT + // Patcher.asm + 0x88, 0x62, 0xF2, 0x34, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x04, 0xD4, 0x7C, 0x08, 0x02, + 0xA6, 0x90, 0x01, 0x00, 0x04, 0x94, 0x21, 0xFF, 0x50, 0xBE, 0x81, 0x00, 0x08, 0x83, 0xFE, + 0x01, 0x0C, 0x83, 0xFF, 0x00, 0x08, 0x3B, 0xFF, 0xFF, 0xE0, 0x80, 0x7D, 0x00, 0x00, 0x2C, + 0x03, 0x00, 0x1B, 0x40, 0x80, 0x04, 0x9C, 0x48, 0x00, 0x00, 0x71, 0x48, 0x00, 0x00, 0xA9, + 0x48, 0x00, 0x00, 0xB9, 0x48, 0x00, 0x01, 0x51, 0x48, 0x00, 0x01, 0x79, 0x48, 0x00, 0x01, + 0x79, 0x48, 0x00, 0x02, 0x29, 0x48, 0x00, 0x02, 0x39, 0x48, 0x00, 0x02, 0x81, 0x48, 0x00, + 0x02, 0xF9, 0x48, 0x00, 0x03, 0x11, 0x48, 0x00, 0x03, 0x11, 0x48, 0x00, 0x03, 0x11, 0x48, + 0x00, 0x03, 0x11, 0x48, 0x00, 0x03, 0x21, 0x48, 0x00, 0x03, 0x21, 0x48, 0x00, 0x03, 0x89, + 0x48, 0x00, 0x03, 0x89, 0x48, 0x00, 0x03, 0x91, 0x48, 0x00, 0x03, 0x91, 0x48, 0x00, 0x03, + 0xA9, 0x48, 0x00, 0x03, 0xA9, 0x48, 0x00, 0x03, 0xB9, 0x48, 0x00, 0x03, 0xB9, 0x48, 0x00, + 0x03, 0xC9, 0x48, 0x00, 0x03, 0xC9, 0x48, 0x00, 0x03, 0xC9, 0x48, 0x00, 0x04, 0x29, 0x7C, + 0x88, 0x02, 0xA6, 0x1C, 0x63, 0x00, 0x04, 0x7C, 0x84, 0x1A, 0x14, 0x80, 0xA4, 0x00, 0x00, + 0x54, 0xA5, 0x01, 0xBA, 0x7C, 0xA4, 0x2A, 0x14, 0x80, 0x65, 0x00, 0x00, 0x80, 0x85, 0x00, + 0x04, 0x2C, 0x03, 0x00, 0xFF, 0x41, 0x82, 0x00, 0x14, 0x7C, 0x63, 0xFA, 0x14, 0x90, 0x83, + 0x00, 0x00, 0x38, 0xA5, 0x00, 0x08, 0x4B, 0xFF, 0xFF, 0xE4, 0x48, 0x00, 0x03, 0xF0, 0x00, + 0x00, 0x33, 0x44, 0x3F, 0x54, 0x7A, 0xE1, 0x00, 0x00, 0x33, 0x60, 0x42, 0xC4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x37, 0x9C, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x39, + 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x0C, 0x40, 0x86, 0x66, 0x66, 0x00, 0x00, + 0x39, 0x10, 0x3D, 0xEA, 0x0E, 0xA1, 0x00, 0x00, 0x39, 0x28, 0x41, 0xA0, 0x00, 0x00, 0x00, + 0x00, 0x3C, 0x04, 0x2C, 0x01, 0x48, 0x0C, 0x00, 0x00, 0x47, 0x20, 0x1B, 0x96, 0x80, 0x13, + 0x00, 0x00, 0x47, 0x34, 0x1B, 0x96, 0x80, 0x13, 0x00, 0x00, 0x47, 0x3C, 0x04, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x4A, 0x40, 0x2C, 0x00, 0x68, 0x11, 0x00, 0x00, 0x4A, 0x4C, 0x28, 0x1B, + 0x00, 0x13, 0x00, 0x00, 0x4A, 0x50, 0x0D, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x4A, 0x54, 0x2C, + 0x80, 0x68, 0x11, 0x00, 0x00, 0x4A, 0x60, 0x28, 0x1B, 0x00, 0x13, 0x00, 0x00, 0x4A, 0x64, + 0x0D, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x4B, 0x24, 0x2C, 0x00, 0x68, 0x0D, 0x00, 0x00, 0x4B, + 0x30, 0x0F, 0x10, 0x40, 0x13, 0x00, 0x00, 0x4B, 0x38, 0x2C, 0x80, 0x38, 0x0D, 0x00, 0x00, + 0x4B, 0x44, 0x0F, 0x10, 0x40, 0x13, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x38, 0x0C, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x4E, 0xF8, 0x2C, 0x00, 0x38, 0x03, 0x00, 0x00, 0x4F, 0x08, + 0x0F, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x4F, 0x0C, 0x2C, 0x80, 0x20, 0x03, 0x00, 0x00, 0x4F, + 0x1C, 0x0F, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x4D, 0x10, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x70, 0x42, 0x94, 0x00, 0x00, 0x00, + 0x00, 0x4D, 0xD4, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xE0, 0x41, 0x90, 0x00, 0x00, + 0x00, 0x00, 0x83, 0xAC, 0x2C, 0x00, 0x00, 0x09, 0x00, 0x00, 0x83, 0xB8, 0x34, 0x8C, 0x80, + 0x11, 0x00, 0x00, 0x84, 0x00, 0x34, 0x8C, 0x80, 0x11, 0x00, 0x00, 0x84, 0x30, 0x05, 0x00, + 0x00, 0x8B, 0x00, 0x00, 0x84, 0x38, 0x04, 0x1A, 0x05, 0x00, 0x00, 0x00, 0x84, 0x44, 0x05, + 0x00, 0x00, 0x8B, 0x00, 0x00, 0x84, 0xDC, 0x05, 0x78, 0x05, 0x78, 0x00, 0x00, 0x85, 0xB8, + 0x10, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x85, 0xC0, 0x03, 0xE8, 0x01, 0xF4, 0x00, 0x00, 0x85, + 0xCC, 0x10, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x85, 0xD4, 0x03, 0x84, 0x03, 0xE8, 0x00, 0x00, + 0x85, 0xE0, 0x10, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x88, 0x18, 0x0B, 0x00, 0x01, 0x0B, 0x00, + 0x00, 0x88, 0x2C, 0x0B, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x88, 0xF8, 0x04, 0x1A, 0x0B, 0xB8, + 0x00, 0x00, 0x89, 0x3C, 0x04, 0x1A, 0x0B, 0xB8, 0x00, 0x00, 0x89, 0x80, 0x04, 0x1A, 0x0B, + 0xB8, 0x00, 0x00, 0x89, 0xE0, 0x04, 0xFE, 0xF7, 0x04, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x36, 0xCC, 0x42, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x37, 0xC4, 0x0C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x34, 0x68, 0x3F, 0x66, 0x66, 0x66, 0x00, 0x00, 0x39, 0xD8, + 0x44, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x44, 0xB4, 0x99, 0x00, 0x11, 0x00, 0x00, 0x3A, + 0x48, 0x1B, 0x8C, 0x00, 0x8F, 0x00, 0x00, 0x3A, 0x58, 0xB4, 0x99, 0x00, 0x11, 0x00, 0x00, + 0x3A, 0x5C, 0x1B, 0x8C, 0x00, 0x8F, 0x00, 0x00, 0x3A, 0x6C, 0xB4, 0x99, 0x00, 0x11, 0x00, + 0x00, 0x3A, 0x70, 0x1B, 0x8C, 0x00, 0x8F, 0x00, 0x00, 0x3B, 0x30, 0x44, 0x0C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x45, 0xC8, 0x2C, 0x01, 0x50, 0x10, 0x00, 0x00, 0x45, + 0xD4, 0x2D, 0x19, 0x80, 0x13, 0x00, 0x00, 0x45, 0xDC, 0x2C, 0x80, 0xB0, 0x10, 0x00, 0x00, + 0x45, 0xE8, 0x2D, 0x19, 0x80, 0x13, 0x00, 0x00, 0x49, 0xC4, 0x2C, 0x00, 0x68, 0x0A, 0x00, + 0x00, 0x49, 0xD0, 0x28, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x49, 0xD8, 0x2C, 0x80, 0x78, 0x0A, + 0x00, 0x00, 0x49, 0xE4, 0x28, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x49, 0xF0, 0x2C, 0x00, 0x68, + 0x08, 0x00, 0x00, 0x49, 0xFC, 0x23, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x4A, 0x04, 0x2C, 0x80, + 0x78, 0x08, 0x00, 0x00, 0x4A, 0x10, 0x23, 0x1B, 0x80, 0x13, 0x00, 0x00, 0x5C, 0x98, 0x1E, + 0x0C, 0x80, 0x80, 0x00, 0x00, 0x5C, 0xF4, 0xB4, 0x80, 0x0C, 0x90, 0x00, 0x00, 0x5D, 0x08, + 0xB4, 0x80, 0x0C, 0x90, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3A, 0x1C, 0xB4, 0x94, 0x00, + 0x13, 0x00, 0x00, 0x3A, 0x64, 0x2C, 0x00, 0x00, 0x15, 0x00, 0x00, 0x3A, 0x70, 0xB4, 0x92, + 0x80, 0x13, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x64, 0x7C, 0xB4, 0x9A, 0x40, 0x17, 0x00, 0x00, 0x64, 0x80, + 0x64, 0x00, 0x10, 0x97, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x33, + 0xE4, 0x42, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x45, 0x28, 0x2C, 0x01, 0x30, 0x11, 0x00, 0x00, + 0x45, 0x34, 0xB4, 0x98, 0x80, 0x13, 0x00, 0x00, 0x45, 0x3C, 0x2C, 0x81, 0x30, 0x11, 0x00, + 0x00, 0x45, 0x48, 0xB4, 0x98, 0x80, 0x13, 0x00, 0x00, 0x45, 0x50, 0x2D, 0x00, 0x20, 0x11, + 0x00, 0x00, 0x45, 0x5C, 0xB4, 0x98, 0x80, 0x13, 0x00, 0x00, 0x45, 0xF8, 0x2C, 0x01, 0x30, + 0x0F, 0x00, 0x00, 0x46, 0x08, 0x0F, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x46, 0x0C, 0x2C, 0x81, + 0x28, 0x0F, 0x00, 0x00, 0x46, 0x1C, 0x0F, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x4A, 0xEC, 0x2C, + 0x00, 0x70, 0x03, 0x00, 0x00, 0x4B, 0x00, 0x2C, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x48, 0x5C, 0x2C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x37, 0xB0, 0x3F, 0x59, 0x99, 0x9A, 0x00, 0x00, + 0x37, 0xCC, 0x42, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x55, 0x20, 0x87, 0x11, 0x80, 0x13, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3B, 0x8C, 0x44, 0x0C, 0x00, 0x00, + 0x00, 0x00, 0x3D, 0x0C, 0x44, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x50, 0xE4, 0xB4, 0x99, 0x00, 0x13, 0x00, 0x00, 0x50, 0xF8, 0xB4, 0x99, + 0x00, 0x13, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x4E, 0xB0, 0x02, 0xBC, 0xFF, 0x38, 0x00, 0x00, 0x4E, 0xBC, 0x14, 0x00, 0x01, 0x23, + 0x00, 0x00, 0x4E, 0xC4, 0x03, 0x84, 0x01, 0xF4, 0x00, 0x00, 0x4E, 0xD0, 0x14, 0x00, 0x01, + 0x23, 0x00, 0x00, 0x4E, 0xD8, 0x04, 0x4C, 0x04, 0xB0, 0x00, 0x00, 0x4E, 0xE4, 0x14, 0x00, + 0x01, 0x23, 0x00, 0x00, 0x50, 0x5C, 0x2C, 0x00, 0x68, 0x15, 0x00, 0x00, 0x50, 0x6C, 0x14, + 0x08, 0x01, 0x23, 0x00, 0x00, 0x50, 0x70, 0x2C, 0x80, 0x60, 0x15, 0x00, 0x00, 0x50, 0x80, + 0x14, 0x08, 0x01, 0x23, 0x00, 0x00, 0x50, 0x84, 0x2D, 0x00, 0x20, 0x15, 0x00, 0x00, 0x50, + 0x94, 0x14, 0x08, 0x01, 0x23, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xBA, 0x81, + 0x00, 0x08, 0x80, 0x01, 0x00, 0xB4, 0x38, 0x21, 0x00, 0xB0, 0x7C, 0x08, 0x03, 0xA6, 0x3C, + 0x60, 0x80, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x2F, 0x9A, 0x3C, + 0x00, 0x00, 0x00, 0x08, // #Common/PAL/Handlers/PAL Stock Icons.asm + 0x88, 0x62, 0xF2, 0x34, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x30, 0x48, 0x00, 0x00, + 0x21, 0x7C, 0x88, 0x02, 0xA6, 0x80, 0x64, 0x00, 0x00, 0x90, 0x7D, 0x00, 0x2C, 0x90, 0x7D, + 0x00, 0x30, 0x80, 0x64, 0x00, 0x04, 0x90, 0x7D, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x10, 0x4E, + 0x80, 0x00, 0x21, 0x3F, 0x59, 0x99, 0x9A, 0xC1, 0xA8, 0x00, 0x00, 0x80, 0x1D, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x00, 0xC2, 0x10, 0xFC, 0x44, 0x00, 0x00, 0x00, + 0x04, // #Common/PAL/Handlers/DK + // Up B/Aerial Up B.asm + 0x88, 0x82, 0xF2, 0x34, 0x2C, 0x04, 0x00, 0x00, 0x41, 0x82, 0x00, 0x10, 0x3C, 0x00, 0x80, + 0x11, 0x60, 0x00, 0x00, 0x74, 0x48, 0x00, 0x00, 0x08, 0x38, 0x03, 0xD7, 0x74, 0x00, 0x00, + 0x00, 0x00, 0xC2, 0x10, 0xFB, 0x64, 0x00, 0x00, 0x00, + 0x04, // #Common/PAL/Handlers/DK Up B/Grounded + // Up B.asm + 0x88, 0x82, 0xF2, 0x34, 0x2C, 0x04, 0x00, 0x00, 0x41, 0x82, 0x00, 0x10, 0x3C, 0x00, 0x80, + 0x11, 0x60, 0x00, 0x00, 0x74, 0x48, 0x00, 0x00, 0x08, 0x38, 0x03, 0xD7, 0x74, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Termination sequence + }; +} + SlippiPlaybackStatus::~SlippiPlaybackStatus() { // Kill threads to prevent cleanup crash diff --git a/Source/Core/Core/Slippi/SlippiPlayback.h b/Source/Core/Core/Slippi/SlippiPlayback.h index 7d17f33112..bda8b8589b 100644 --- a/Source/Core/Core/Slippi/SlippiPlayback.h +++ b/Source/Core/Core/Slippi/SlippiPlayback.h @@ -39,6 +39,8 @@ public: bool shouldFFWFrame(s32 frameIndex) const; void prepareSlippiPlayback(s32& frameIndex); void setHardFFW(bool enable); + std::unordered_map getDenylist(); + std::vector getLegacyCodelist(); void seekToFrame(); private: @@ -46,12 +48,17 @@ private: void loadState(s32 closestStateFrame); void processInitialState(); void updateWatchSettingsStartEnd(); + void generateDenylist(); + void generateLegacyCodelist(); std::unordered_map> futureDiffs; // State diffs keyed by frameIndex, processed async std::vector iState; // The initial state std::vector cState; // The current (latest) state + std::unordered_map denylist; + std::vector legacyCodelist; + open_vcdiff::VCDiffDecoder decoder; open_vcdiff::VCDiffEncoder* encoder = NULL; }; diff --git a/Source/Core/Core/Slippi/SlippiUser.cpp b/Source/Core/Core/Slippi/SlippiUser.cpp index 62cf030706..dacf0ede65 100644 --- a/Source/Core/Core/Slippi/SlippiUser.cpp +++ b/Source/Core/Core/Slippi/SlippiUser.cpp @@ -106,28 +106,21 @@ bool SlippiUser::AttemptLogin() { std::string user_file_path = getUserFilePath(); - // INFO_LOG_FMT(SLIPPI_ONLINE, "Looking for file at: {}", user_file_path); - + // TODO: Remove a couple updates after ranked +#ifndef __APPLE__ { - // Put the filename here in its own scope because we don't really need it elsewhere - std::string user_file_path_txt = user_file_path + ".txt"; - if (File::Exists(user_file_path_txt)) +#ifdef _WIN32 + std::string old_user_file_path = File::GetExeDirectory() + DIR_SEP + "user.json"; +#else + std::string old_user_file_path = File::GetUserPath(D_USER_IDX) + DIR_SEP + "user.json"; +#endif + if (File::Exists(old_user_file_path) && !File::Rename(old_user_file_path, user_file_path)) { - // If both files exist we just log they exist and take no further action - if (File::Exists(user_file_path)) - { - INFO_LOG_FMT(SLIPPI_ONLINE, - "Found both .json.txt and .json file for user data. Using .json " - "and ignoring the .json.txt"); - } - // If only the .txt file exists move the contents to a json file and log if it fails - else if (!File::Rename(user_file_path_txt, user_file_path)) - { - WARN_LOG_FMT(SLIPPI_ONLINE, "Could not move file {} to {}", user_file_path_txt, - user_file_path); - } + WARN_LOG_FMT(SLIPPI_ONLINE, "Could not move file {} to {}", old_user_file_path, + user_file_path); } } +#endif // Get user file std::string user_file_contents; diff --git a/Source/Core/DolphinQt/HotkeyScheduler.cpp b/Source/Core/DolphinQt/HotkeyScheduler.cpp index 7eb4394448..99ebc0a2c5 100644 --- a/Source/Core/DolphinQt/HotkeyScheduler.cpp +++ b/Source/Core/DolphinQt/HotkeyScheduler.cpp @@ -491,21 +491,21 @@ void HotkeyScheduler::Run() Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed); ShowEmulationSpeed(); } + + // Slot Saving / Loading + if (IsHotkey(HK_SAVE_STATE_SLOT_SELECTED)) + emit StateSaveSlotHotkey(); + + if (IsHotkey(HK_LOAD_STATE_SLOT_SELECTED)) + emit StateLoadSlotHotkey(); + + if (IsHotkey(HK_INCREMENT_SELECTED_STATE_SLOT)) + emit IncrementSelectedStateSlotHotkey(); + + if (IsHotkey(HK_DECREMENT_SELECTED_STATE_SLOT)) + emit DecrementSelectedStateSlotHotkey(); } - // Slot Saving / Loading - if (IsHotkey(HK_SAVE_STATE_SLOT_SELECTED)) - emit StateSaveSlotHotkey(); - - if (IsHotkey(HK_LOAD_STATE_SLOT_SELECTED)) - emit StateLoadSlotHotkey(); - - if (IsHotkey(HK_INCREMENT_SELECTED_STATE_SLOT)) - emit IncrementSelectedStateSlotHotkey(); - - if (IsHotkey(HK_DECREMENT_SELECTED_STATE_SLOT)) - emit DecrementSelectedStateSlotHotkey(); - // Stereoscopy if (IsHotkey(HK_TOGGLE_STEREO_SBS)) {