SuperMarioOdysseyOnline/patches/codehook.slpatch

113 lines
3.2 KiB
Plaintext

[version=100, target=main]
//StageScene::control+18 BL stageSceneHook
4C8DD0 BL stageInitHook // hook to the init of a stage to modify certain conditions (we also have access to SceneInitInfo)
50F928 BL hakoniwaSequenceHook
// hooks to start logger
5359D8 BL tryInitSocket // GameSystem::init
B59E28 B seadPrintHook // sead::system::print
// Debug Stuff
5359DC:
MOV X0, X19 // move GameSystem to arg register
BL setupDebugMenu
50F258: // HakoniwaSequence::drawMain+80
MOV X0, X19 // HakoniwaSequence
MOV X1, SP // viewport
MOV X2, X20 // drawContext
BL drawMainHook
// Main Stuff
50E89C BL constructHook // HakoniwaSequence::init+1F4
50EF2C: // HakoniwaSequence::init+884
MOV X0, X19 // move HakoniwaSequence ptr to arg register
BL threadInit
41B4E4 BL setPlayerModel
1B3F0C NOP // disables call to open HTML viewer during first time odyssey flight
1F2A2C MOV W0, #1 // patches checkpoint system to always allow warping
// Puppet Actor Setup
4B5E30 B ProjectActorFactory // patches actor factory ctor with custom matching factory
4CA0E4 BL initPuppetActors
// Shine Syncing
// 1CF470 BL shineHook
//Shine::get
1D03EC MOV X1, X19
1D03F4 BL sendShinePacket
//Shine::getWithDemo
1D1378 MOV X1, X19
1D1380 BL sendShinePacket
//Shine::exeWaitRequestDemo
1D14C8 MOV X1, X19
1D14D0 BL sendShinePacket
//Shine::receiveMsg
1D0188 MOV X1, X19
1D0190 BL sendShinePacket
//Shine::getDirect
1CF124 MOV X1, X19
1CF12C BL sendShinePacket
1CEEDC BL registerShineToList
// Amiibo Button Disabling
577078: // rs::isHoldAmiiboMode
MOV X0, #0
RET
577018: // rs::isTriggerAmiiboMode
MOV X0, #0
RET
// Remap Snapshot to !L + Down
577014 B comboBtnHook
// Capture Syncing
9CFB84 BL initObjHook
// Save Data Edits
5167D0: GameConfigData::write+D0
B saveWriteHook
5168F8: GameConfigData::read+124
BL saveReadHook
// WindowConfirm Edits
99C758: // WindowConfirmWait:tryEnd+1C (Forces logic to ignore current nerve)
NOP
NOP
// Coin Counter Changes
20CA78 BL startCounterHook // starts coin counter if a gamemode is not active
20CAA8 BL startCounterHook // starts purple coin counter if gamemode is not active
// Pause Menu Changes
4EAEC4 B overrideNerveHook // makes any button on pause menu run a specific nerve
4EA104 MOV W2, #5 // update state count to account for new custom state
4EA1F0 BL initNerveStateHook // inits options nerve state and server config state
4EA174 MOV X0, X20 // moves StageSceneStatePauseMenu to first arg
4EA17C NOP // prevents first new of StageSceneStateOption
4EA1A8 BL initStateHook // inits StageSceneStateOption and StageSceneStateServerConfig
4EA1C0 NOP // prevents mStateOption ptr from being overriden
// Gravity hooks
455230 NOP // PlayerJointControlKeeper::update+C0 prevents PlayerJointControlGroundPose from updating
4B5E30 B ProjectActorFactory // patches actor factory ctor with custom matching factory
4BE628 B ProjectCameraPoserFactory // patches camera poser factory with custom matching factory
4463D8 BL initHackCapHook
4C9080 BL createTicketHook // hook to the init of a stage to create custom gravity camera ticket
5C00B0 BL borderPullBackHook // hooks over isFirstStep in WorldEndBorderKeeper::exePullBack so we can kill the player if they reach the border of the map