mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-22 18:30:32 +00:00
even with d7f10754b27fd216bf2180dff15639e39ec3bdeb. add injection list files from head at f68f6f6cbf56b3e4e43f27475763f1d15b6d7c67
This commit is contained in:
parent
645d77a5d4
commit
9421f0c56b
35 changed files with 6807 additions and 388 deletions
81
Data/Sys/Slippi/InjectionLists/list_console_PAL.json
Normal file
81
Data/Sys/Slippi/InjectionLists/list_console_PAL.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
32
Data/Sys/Slippi/InjectionLists/list_console_UCF.json
Normal file
32
Data/Sys/Slippi/InjectionLists/list_console_UCF.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
67
Data/Sys/Slippi/InjectionLists/list_console_UCF_084.json
Normal file
67
Data/Sys/Slippi/InjectionLists/list_console_UCF_084.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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]"
|
||||
}
|
||||
]
|
||||
}
|
25
Data/Sys/Slippi/InjectionLists/list_console_UCF_stealth.json
Normal file
25
Data/Sys/Slippi/InjectionLists/list_console_UCF_stealth.json
Normal file
|
@ -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]"
|
||||
}
|
||||
]
|
||||
}
|
382
Data/Sys/Slippi/InjectionLists/list_console_core.json
Normal file
382
Data/Sys/Slippi/InjectionLists/list_console_core.json
Normal file
|
@ -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]"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"Details": [
|
||||
{
|
||||
"InjectionAddress": "80394A68",
|
||||
"Name": "Crash Output",
|
||||
"Codetype": "Auto",
|
||||
"Annotation": "Debugging/AdditionalCrashInfo/AdditionalCrashInfo.asm",
|
||||
"Tags": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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]"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"Details": [
|
||||
{
|
||||
"InjectionAddress": "800DA9DC",
|
||||
"Codetype": "Auto",
|
||||
"Annotation": "",
|
||||
"Tags": "[affects-gameplay]"
|
||||
},
|
||||
{
|
||||
"InjectionAddress": "8008F090",
|
||||
"Codetype": "Auto",
|
||||
"Annotation": "",
|
||||
"Tags": "[affects-gameplay]"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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]"
|
||||
}
|
||||
]
|
||||
}
|
25
Data/Sys/Slippi/InjectionLists/list_console_lag_pd.json
Normal file
25
Data/Sys/Slippi/InjectionLists/list_console_lag_pd.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
109
Data/Sys/Slippi/InjectionLists/list_console_mods_friendlies.json
Normal file
109
Data/Sys/Slippi/InjectionLists/list_console_mods_friendlies.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
18
Data/Sys/Slippi/InjectionLists/list_console_safety.json
Normal file
18
Data/Sys/Slippi/InjectionLists/list_console_safety.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
95
Data/Sys/Slippi/InjectionLists/list_console_screen_wide.json
Normal file
95
Data/Sys/Slippi/InjectionLists/list_console_screen_wide.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
46
Data/Sys/Slippi/InjectionLists/list_console_stages_all.json
Normal file
46
Data/Sys/Slippi/InjectionLists/list_console_stages_all.json
Normal file
|
@ -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]"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
32
Data/Sys/Slippi/InjectionLists/list_debugging.json
Normal file
32
Data/Sys/Slippi/InjectionLists/list_debugging.json
Normal file
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
2746
Data/Sys/Slippi/InjectionLists/list_netplay-old1.json
Normal file
2746
Data/Sys/Slippi/InjectionLists/list_netplay-old1.json
Normal file
File diff suppressed because it is too large
Load diff
11
Data/Sys/Slippi/InjectionLists/list_netplay-old2.json
Normal file
11
Data/Sys/Slippi/InjectionLists/list_netplay-old2.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"Details": [
|
||||
{
|
||||
"InjectionAddress": "800056AC",
|
||||
"Name": "Required: Slippi Online",
|
||||
"Codetype": "Auto",
|
||||
"Annotation": "Online/Static/ChatMessages.asm",
|
||||
"Tags": ""
|
||||
}
|
||||
]
|
||||
}
|
2034
Data/Sys/Slippi/InjectionLists/list_netplay.json
Normal file
2034
Data/Sys/Slippi/InjectionLists/list_netplay.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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<u8> 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<u32, bool> 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<u32, bool> 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<u8> legacyCodelist = g_playbackStatus->getLegacyCodelist();
|
||||
std::unordered_map<u32, bool> 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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include <locale>
|
||||
#include <string>
|
||||
|
||||
#include <Common/CommonTypes.h>
|
||||
#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<u32>(splitMessageBuf.size());
|
||||
shouldResetSplitMessageBuf = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -334,6 +334,12 @@ unsigned int SlippiNetplayClient::OnData(sf::Packet& packet, ENetPeer* peer)
|
|||
static_cast<s32>(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<u8>(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<u8>(NetPlay::MessageID::SLIPPI_CONN_SELECTED);
|
||||
SendAsync(std::move(spac));
|
||||
}
|
||||
|
||||
void SlippiNetplayClient::SendSlippiPad(std::unique_ptr<SlippiPad> 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<sf::Packet>();
|
||||
*spac << static_cast<u8>(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<SlippiRemotePadOutput> 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<int>(result.state.seconds_remaining) -
|
||||
static_cast<int>(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<int>(fighter.current_health) -
|
||||
static_cast<int>(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;
|
||||
}
|
||||
|
|
|
@ -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<SlippiPad> pad);
|
||||
void SetMatchSelections(SlippiPlayerSelections& s);
|
||||
void SendGamePrepStep(SlippiGamePrepStepResults& s);
|
||||
void SendSyncedGameState(SlippiSyncedGameState& s);
|
||||
bool GetGamePrepResults(u8 stepIdx, SlippiGamePrepStepResults& res);
|
||||
std::unique_ptr<SlippiRemotePadOutput> GetFakePadOutput(int frame);
|
||||
std::unique_ptr<SlippiRemotePadOutput> 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<SlippiPlayerSelections> ReadChatMessageFromPacket(sf::Packet& packet);
|
||||
|
@ -219,7 +245,10 @@ protected:
|
|||
std::deque<std::unique_ptr<SlippiPad>> localPadQueue; // most recent inputs at start of deque
|
||||
std::deque<std::unique_ptr<SlippiPad>>
|
||||
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<SlippiGamePrepStepResults> game_prep_step_queue;
|
||||
u64 pingUs[SLIPPI_REMOTE_PLAYER_MAX];
|
||||
int32_t lastFrameAcked[SLIPPI_REMOTE_PLAYER_MAX];
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
#include <share.h>
|
||||
#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<u32, bool> SlippiPlaybackStatus::getDenylist()
|
||||
{
|
||||
return denylist;
|
||||
}
|
||||
|
||||
std::vector<u8> 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
|
||||
|
|
|
@ -39,6 +39,8 @@ public:
|
|||
bool shouldFFWFrame(s32 frameIndex) const;
|
||||
void prepareSlippiPlayback(s32& frameIndex);
|
||||
void setHardFFW(bool enable);
|
||||
std::unordered_map<u32, bool> getDenylist();
|
||||
std::vector<u8> getLegacyCodelist();
|
||||
void seekToFrame();
|
||||
|
||||
private:
|
||||
|
@ -46,12 +48,17 @@ private:
|
|||
void loadState(s32 closestStateFrame);
|
||||
void processInitialState();
|
||||
void updateWatchSettingsStartEnd();
|
||||
void generateDenylist();
|
||||
void generateLegacyCodelist();
|
||||
|
||||
std::unordered_map<int32_t, std::shared_future<std::string>>
|
||||
futureDiffs; // State diffs keyed by frameIndex, processed async
|
||||
std::vector<u8> iState; // The initial state
|
||||
std::vector<u8> cState; // The current (latest) state
|
||||
|
||||
std::unordered_map<u32, bool> denylist;
|
||||
std::vector<u8> legacyCodelist;
|
||||
|
||||
open_vcdiff::VCDiffDecoder decoder;
|
||||
open_vcdiff::VCDiffEncoder* encoder = NULL;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue