Showing preview only (2,605K chars total). Download the full file or copy to clipboard to get everything.
Repository: sonicnext-dev/MarathonRecomp
Branch: main
Commit: 1be15712f64d
Files: 586
Total size: 2.4 MB
Directory structure:
gitextract_3ry7zdqc/
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── dev_report.yml
│ └── workflows/
│ ├── validate-external.yml
│ ├── validate-internal.yml
│ └── validate.yml
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── CMakePresets.json
├── COPYING
├── MarathonRecomp/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── api/
│ │ ├── Chao/
│ │ │ └── CSD/
│ │ │ ├── Core/
│ │ │ │ ├── csdBase.h
│ │ │ │ ├── csdRCObject.h
│ │ │ │ ├── csdRCObjectImp.h
│ │ │ │ ├── csdRCPtr.h
│ │ │ │ ├── csdRCPtrAbs.h
│ │ │ │ └── csdTexList.h
│ │ │ └── Manager/
│ │ │ ├── csdmMotionPattern.h
│ │ │ ├── csdmNode.h
│ │ │ ├── csdmNodeObserver.h
│ │ │ ├── csdmObserverBase.h
│ │ │ ├── csdmProject.h
│ │ │ ├── csdmResourceBase.h
│ │ │ ├── csdmScene.h
│ │ │ ├── csdmSceneObserver.h
│ │ │ └── csdmSubjectBase.h
│ │ ├── Marathon.h
│ │ ├── Marathon.inl
│ │ ├── README.md
│ │ ├── Sonicteam/
│ │ │ ├── Actor.h
│ │ │ ├── ActorManager.h
│ │ │ ├── AlertWindowTask.h
│ │ │ ├── AppMarathon.h
│ │ │ ├── AppMarathon.inl
│ │ │ ├── AudioEngineXenon.h
│ │ │ ├── ButtonWindowTask.h
│ │ │ ├── CObjBalloonIconDrawable.h
│ │ │ ├── Camera/
│ │ │ │ ├── CameraMode.h
│ │ │ │ ├── CameraModeManager.h
│ │ │ │ ├── Cameraman.h
│ │ │ │ └── SonicCamera.h
│ │ │ ├── CommonObjectHint.h
│ │ │ ├── CsdLink.h
│ │ │ ├── CsdManager.h
│ │ │ ├── CsdObject.h
│ │ │ ├── CsdResource.h
│ │ │ ├── DocMarathonImp.h
│ │ │ ├── DocMarathonState.h
│ │ │ ├── Enemy/
│ │ │ │ ├── EnemyShot.h
│ │ │ │ ├── EnemyShotNormal.h
│ │ │ │ └── EnemyShotPoint.h
│ │ │ ├── Fixture.h
│ │ │ ├── Game.h
│ │ │ ├── GameImp.h
│ │ │ ├── GameMode.h
│ │ │ ├── Globals.h
│ │ │ ├── HUDButtonWindow.h
│ │ │ ├── HUDCALLBACK.h
│ │ │ ├── HUDGoldMedal.h
│ │ │ ├── HUDLimitTime.h
│ │ │ ├── HUDLoading.h
│ │ │ ├── HUDMainDisplay.h
│ │ │ ├── HUDMainMenu.h
│ │ │ ├── HUDMessageWindow.h
│ │ │ ├── HUDOption.h
│ │ │ ├── HUDPopupScreen.h
│ │ │ ├── HUDRaderMap.h
│ │ │ ├── HUDStageTitle.h
│ │ │ ├── HintWindowTask.h
│ │ │ ├── HudTextParts.h
│ │ │ ├── ImageFilter.h
│ │ │ ├── MainDisplayTask.h
│ │ │ ├── MainMenuExpositionTask.h
│ │ │ ├── MainMenuTask.h
│ │ │ ├── MainMode.h
│ │ │ ├── Message/
│ │ │ │ ├── Camera/
│ │ │ │ │ └── Cameraman/
│ │ │ │ │ └── MsgChangeMode.h
│ │ │ │ ├── HUDButtonWindow/
│ │ │ │ │ └── MsgChangeButtons.h
│ │ │ │ ├── HUDGoldMedal/
│ │ │ │ │ └── MsgChangeState.h
│ │ │ │ ├── HUDMainMenu/
│ │ │ │ │ ├── MsgChangeState.h
│ │ │ │ │ ├── MsgSetCursor.h
│ │ │ │ │ └── MsgTransition.h
│ │ │ │ ├── Mission/
│ │ │ │ │ └── MsgGetGlobalFlag.h
│ │ │ │ ├── ObjJump123/
│ │ │ │ │ └── MsgGetNextPoint.h
│ │ │ │ ├── PauseAdapter/
│ │ │ │ │ └── MsgGetText.h
│ │ │ │ └── Player/
│ │ │ │ └── MsgSuckPlayer.h
│ │ │ ├── MessageWindowTask.h
│ │ │ ├── Mission/
│ │ │ │ └── Core.h
│ │ │ ├── MovieObject.h
│ │ │ ├── MovieObjectWmv.h
│ │ │ ├── MovieTask.h
│ │ │ ├── MyCue.h
│ │ │ ├── MyCueAdx.h
│ │ │ ├── MyCueAttenuate.h
│ │ │ ├── MyGraphicsDevice.h
│ │ │ ├── MyPhantom.h
│ │ │ ├── MyRenderProcess.h
│ │ │ ├── MyTexture.h
│ │ │ ├── MyTransforms.h
│ │ │ ├── NamedActor.h
│ │ │ ├── NamedTask.h
│ │ │ ├── NoSyncThread.h
│ │ │ ├── ObjectVehicle.h
│ │ │ ├── ObjectVehicleBike.h
│ │ │ ├── PauseAdapter.h
│ │ │ ├── PauseTask.h
│ │ │ ├── Player/
│ │ │ │ ├── GroundRayListener.h
│ │ │ │ ├── ICollisionListener.h
│ │ │ │ ├── ICollisionListenerTemplate.h
│ │ │ │ ├── IDynamicLink.h
│ │ │ │ ├── IEventerListener.h
│ │ │ │ ├── IExportExternalFlag.h
│ │ │ │ ├── IExportPostureRequestFlag.h
│ │ │ │ ├── IExportWeaponRequestFlag.h
│ │ │ │ ├── IFlagCommunicator.h
│ │ │ │ ├── IGauge.h
│ │ │ │ ├── INotification.h
│ │ │ │ ├── IPlugIn.h
│ │ │ │ ├── IPostureControl.h
│ │ │ │ ├── IPosturePlugIn.h
│ │ │ │ ├── IPostureSupportEdge.h
│ │ │ │ ├── IPostureSupportInput.h
│ │ │ │ ├── IPostureSupportOttoto.h
│ │ │ │ ├── IPostureSupportRayTemplate.h
│ │ │ │ ├── IPostureSupportSphere.h
│ │ │ │ ├── IScore.h
│ │ │ │ ├── IStepable.h
│ │ │ │ ├── IVariable.h
│ │ │ │ ├── IZock.h
│ │ │ │ ├── Input/
│ │ │ │ │ ├── IListener.h
│ │ │ │ │ ├── ListenerNormal.h
│ │ │ │ │ └── TimedAction.h
│ │ │ │ ├── Object.h
│ │ │ │ ├── PostureControl.h
│ │ │ │ ├── RootFrame.h
│ │ │ │ ├── Score.h
│ │ │ │ ├── SonicGauge.h
│ │ │ │ ├── State/
│ │ │ │ │ ├── CommonContext.h
│ │ │ │ │ ├── CommonFall.h
│ │ │ │ │ ├── CommonObject.h
│ │ │ │ │ ├── ContextSpeedAndJump.h
│ │ │ │ │ ├── ICommonContext.h
│ │ │ │ │ ├── ICommonContextIF.h
│ │ │ │ │ ├── IContext.h
│ │ │ │ │ ├── IMachine.h
│ │ │ │ │ ├── Machine2.h
│ │ │ │ │ ├── Object2.h
│ │ │ │ │ ├── SonicContext.h
│ │ │ │ │ ├── SonicObject.h
│ │ │ │ │ ├── TailsContext.h
│ │ │ │ │ └── TailsFlight.h
│ │ │ │ ├── Unit/
│ │ │ │ │ └── ITestCase.h
│ │ │ │ ├── Weapon/
│ │ │ │ │ └── SonicWeapons.h
│ │ │ │ └── Zock.h
│ │ │ ├── PropFixture.h
│ │ │ ├── RaderMapManager.h
│ │ │ ├── RenderAction/
│ │ │ │ ├── ApplyBloom.h
│ │ │ │ ├── ApplyDevice.h
│ │ │ │ ├── ApplySceneParams.h
│ │ │ │ ├── AutoSetAspect.h
│ │ │ │ ├── Capture.h
│ │ │ │ ├── ClearRenderTarget.h
│ │ │ │ ├── ColorFill.h
│ │ │ │ ├── CopyTexture.h
│ │ │ │ ├── LockBlendMode.h
│ │ │ │ ├── LockCullMode.h
│ │ │ │ ├── LockZMode.h
│ │ │ │ ├── MakeBloom.h
│ │ │ │ ├── Movie.h
│ │ │ │ ├── PrepareCalculateCSM.h
│ │ │ │ ├── Rasterize.h
│ │ │ │ ├── RasterizeBurnoutBlur.h
│ │ │ │ ├── ResetRenderStates.h
│ │ │ │ ├── ResetScissorRect.h
│ │ │ │ ├── ResetViewport.h
│ │ │ │ ├── Resolve.h
│ │ │ │ ├── RunCommandBuffer.h
│ │ │ │ ├── SetAutoZPass.h
│ │ │ │ ├── SetBackStencilOp.h
│ │ │ │ ├── SetBlendMode.h
│ │ │ │ ├── SetCSMTextures.h
│ │ │ │ ├── SetClip.h
│ │ │ │ ├── SetColorWriteEnable.h
│ │ │ │ ├── SetConstantShader.h
│ │ │ │ ├── SetCullMode.h
│ │ │ │ ├── SetCurrentScreen.h
│ │ │ │ ├── SetDepthTextures.h
│ │ │ │ ├── SetFovY.h
│ │ │ │ ├── SetFrameBufferObject.h
│ │ │ │ ├── SetReflectionTextures.h
│ │ │ │ ├── SetScissorRect.h
│ │ │ │ ├── SetScissorTest.h
│ │ │ │ ├── SetScreen.h
│ │ │ │ ├── SetShaderGPRAllocation.h
│ │ │ │ ├── SetStencilEnable.h
│ │ │ │ ├── SetStencilFunc.h
│ │ │ │ ├── SetStencilOp.h
│ │ │ │ ├── SetStencilWriteMask.h
│ │ │ │ ├── SetTexture.h
│ │ │ │ ├── SetUserClipPlaneEnable.h
│ │ │ │ ├── SetViewport.h
│ │ │ │ └── SetZMode.h
│ │ │ ├── RenderPostprocess.h
│ │ │ ├── SaveDataTask.h
│ │ │ ├── SaveDataTaskXENON.h
│ │ │ ├── SelectWindowTask.h
│ │ │ ├── SoX/
│ │ │ │ ├── AI/
│ │ │ │ │ └── StateMachine.h
│ │ │ │ ├── ApplicationXenon.h
│ │ │ │ ├── ApplicationXenon.inl
│ │ │ │ ├── Audio/
│ │ │ │ │ ├── Cue.h
│ │ │ │ │ ├── IAudioEngine.h
│ │ │ │ │ ├── Player.h
│ │ │ │ │ └── PlayerImpl.h
│ │ │ │ ├── Component.h
│ │ │ │ ├── Engine/
│ │ │ │ │ ├── Application.h
│ │ │ │ │ ├── Doc.h
│ │ │ │ │ ├── DocMode.h
│ │ │ │ │ ├── RenderProcess.h
│ │ │ │ │ └── Task.h
│ │ │ │ ├── Graphics/
│ │ │ │ │ ├── Device.h
│ │ │ │ │ ├── Frame.h
│ │ │ │ │ ├── FrameGP.h
│ │ │ │ │ ├── FrameObserver.h
│ │ │ │ │ ├── Technique.h
│ │ │ │ │ ├── TechniqueFXL.h
│ │ │ │ │ ├── Texture.h
│ │ │ │ │ ├── Transforms.h
│ │ │ │ │ ├── Vertex.h
│ │ │ │ │ └── Xenon/
│ │ │ │ │ ├── DeviceXenon.h
│ │ │ │ │ └── TextureXenon.h
│ │ │ │ ├── IResource.h
│ │ │ │ ├── IResource2.h
│ │ │ │ ├── IResourceMgr.h
│ │ │ │ ├── Input/
│ │ │ │ │ ├── Manager.h
│ │ │ │ │ └── Manager.inl
│ │ │ │ ├── LinkNode.h
│ │ │ │ ├── Math/
│ │ │ │ │ ├── Matrix.h
│ │ │ │ │ ├── Quaternion.h
│ │ │ │ │ └── Vector.h
│ │ │ │ ├── Message.h
│ │ │ │ ├── MessageReceiver.h
│ │ │ │ ├── Object.h
│ │ │ │ ├── Physics/
│ │ │ │ │ ├── Entity.h
│ │ │ │ │ ├── Havok/
│ │ │ │ │ │ ├── EntityHavok.h
│ │ │ │ │ │ ├── EntityHavokImp.h
│ │ │ │ │ │ ├── PhantomHavok.h
│ │ │ │ │ │ └── WorldHavok.h
│ │ │ │ │ ├── IntersectEvent.h
│ │ │ │ │ ├── IntersectListener.h
│ │ │ │ │ ├── Phantom.h
│ │ │ │ │ ├── PhantomListener.h
│ │ │ │ │ ├── Shape.h
│ │ │ │ │ ├── ShapeCastEvent.h
│ │ │ │ │ ├── ShapeCastListener.h
│ │ │ │ │ └── World.h
│ │ │ │ ├── RefCountObject.h
│ │ │ │ ├── RefSharedPointer.h
│ │ │ │ ├── Scenery/
│ │ │ │ │ ├── Camera.h
│ │ │ │ │ ├── CameraEventCallback.h
│ │ │ │ │ ├── CameraImp.h
│ │ │ │ │ └── Drawable.h
│ │ │ │ └── Thread.h
│ │ │ ├── StdImageFilters/
│ │ │ │ ├── BurnoutBlurFilter.h
│ │ │ │ └── SingleTechniqueFilter.h
│ │ │ ├── System/
│ │ │ │ ├── CreateStatic.h
│ │ │ │ ├── Diagnostics/
│ │ │ │ │ └── Performance.h
│ │ │ │ └── Singleton.h
│ │ │ ├── TextBook.h
│ │ │ ├── TextBookMgr.h
│ │ │ ├── TextCard.h
│ │ │ ├── TextEntity.h
│ │ │ ├── TextFontPicture.h
│ │ │ ├── TextFontPictureMgr.h
│ │ │ ├── TitleTask.h
│ │ │ ├── VehicleMissileCtrl.h
│ │ │ ├── VehicleMissileCtrlAutomatic.h
│ │ │ ├── VehicleMissileCtrlSingle.h
│ │ │ ├── WorldRenderProcess.h
│ │ │ └── sonicXmaPlayer.h
│ │ ├── boost/
│ │ │ └── smart_ptr/
│ │ │ ├── make_shared_object.h
│ │ │ └── shared_ptr.h
│ │ ├── d3dxb.h
│ │ ├── hk330/
│ │ │ ├── hkArray.h
│ │ │ ├── hkReferencedObject.h
│ │ │ ├── hkpBroadPhaseHandle.h
│ │ │ ├── hkpCdBody.h
│ │ │ ├── hkpCollidable.h
│ │ │ ├── hkpCollidableCollidableFilter.h
│ │ │ ├── hkpCollisionFilter.h
│ │ │ ├── hkpEntity.h
│ │ │ ├── hkpLinkedCollidable.h
│ │ │ ├── hkpPhantom.h
│ │ │ ├── hkpProperty.h
│ │ │ ├── hkpRayCollidableFilter.h
│ │ │ ├── hkpRayShapeCollectionFilter.h
│ │ │ ├── hkpRigidBody.h
│ │ │ ├── hkpShape.h
│ │ │ ├── hkpShapeCollectionFilter.h
│ │ │ ├── hkpTypedBroadPhaseHandle.h
│ │ │ ├── hkpWorld.h
│ │ │ └── hkpWorldObject.h
│ │ └── stdx/
│ │ ├── string.h
│ │ ├── vector.h
│ │ └── wstring.h
│ ├── app.cpp
│ ├── app.h
│ ├── apu/
│ │ ├── audio.cpp
│ │ ├── audio.h
│ │ ├── driver/
│ │ │ └── sdl2_driver.cpp
│ │ ├── embedded_player.cpp
│ │ ├── embedded_player.h
│ │ ├── xma_decoder.cpp
│ │ └── xma_decoder.h
│ ├── cpu/
│ │ ├── guest_stack_var.h
│ │ ├── guest_thread.cpp
│ │ ├── guest_thread.h
│ │ └── ppc_context.h
│ ├── decompressor.h
│ ├── exports.cpp
│ ├── exports.h
│ ├── framework.h
│ ├── gpu/
│ │ ├── cache/
│ │ │ ├── pipeline_state_cache.h
│ │ │ ├── vertex_declaration_cache.h
│ │ │ └── vertex_element_cache.h
│ │ ├── imgui/
│ │ │ ├── imgui_common.cpp
│ │ │ ├── imgui_common.h
│ │ │ ├── imgui_font_builder.cpp
│ │ │ ├── imgui_font_builder.h
│ │ │ ├── imgui_snapshot.cpp
│ │ │ └── imgui_snapshot.h
│ │ ├── shader/
│ │ │ ├── hlsl/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── blend_color_alpha_ps.hlsl
│ │ │ │ ├── conditional_survey_ps.hlsl
│ │ │ │ ├── copy_color_ps.hlsl
│ │ │ │ ├── copy_common.hlsli
│ │ │ │ ├── copy_depth_ps.hlsl
│ │ │ │ ├── copy_vs.hlsl
│ │ │ │ ├── csd_filter_ps.hlsl
│ │ │ │ ├── csd_no_tex_vs.hlsl
│ │ │ │ ├── csd_vs.hlsl
│ │ │ │ ├── enhanced_burnout_blur_ps.hlsl
│ │ │ │ ├── enhanced_burnout_blur_vs.hlsl
│ │ │ │ ├── gamma_correction_ps.hlsl
│ │ │ │ ├── gaussian_blur.hlsli
│ │ │ │ ├── gaussian_blur_3x3.hlsl
│ │ │ │ ├── gaussian_blur_5x5.hlsl
│ │ │ │ ├── gaussian_blur_7x7.hlsl
│ │ │ │ ├── gaussian_blur_9x9.hlsl
│ │ │ │ ├── imgui_common.hlsli
│ │ │ │ ├── imgui_ps.hlsl
│ │ │ │ ├── imgui_vs.hlsl
│ │ │ │ ├── resolve_msaa_color.hlsli
│ │ │ │ ├── resolve_msaa_color_2x.hlsl
│ │ │ │ ├── resolve_msaa_color_4x.hlsl
│ │ │ │ ├── resolve_msaa_color_8x.hlsl
│ │ │ │ ├── resolve_msaa_depth.hlsli
│ │ │ │ ├── resolve_msaa_depth_2x.hlsl
│ │ │ │ ├── resolve_msaa_depth_4x.hlsl
│ │ │ │ └── resolve_msaa_depth_8x.hlsl
│ │ │ └── msl/
│ │ │ ├── .gitignore
│ │ │ ├── blend_color_alpha_ps.metal
│ │ │ ├── conditional_survey_ps.metal
│ │ │ ├── copy_color_ps.metal
│ │ │ ├── copy_common.metali
│ │ │ ├── copy_depth_ps.metal
│ │ │ ├── copy_vs.metal
│ │ │ ├── csd_filter_ps.metal
│ │ │ ├── csd_no_tex_vs.metal
│ │ │ ├── csd_vs.metal
│ │ │ ├── enhanced_burnout_blur_ps.metal
│ │ │ ├── enhanced_burnout_blur_vs.metal
│ │ │ ├── gamma_correction_ps.metal
│ │ │ ├── gaussian_blur.metali
│ │ │ ├── gaussian_blur_3x3.metal
│ │ │ ├── gaussian_blur_5x5.metal
│ │ │ ├── gaussian_blur_7x7.metal
│ │ │ ├── gaussian_blur_9x9.metal
│ │ │ ├── imgui_common.metali
│ │ │ ├── imgui_ps.metal
│ │ │ ├── imgui_vs.metal
│ │ │ ├── resolve_msaa_color.metali
│ │ │ ├── resolve_msaa_color_2x.metal
│ │ │ ├── resolve_msaa_color_4x.metal
│ │ │ ├── resolve_msaa_color_8x.metal
│ │ │ ├── resolve_msaa_depth.metali
│ │ │ ├── resolve_msaa_depth_2x.metal
│ │ │ ├── resolve_msaa_depth_4x.metal
│ │ │ └── resolve_msaa_depth_8x.metal
│ │ ├── video.cpp
│ │ └── video.h
│ ├── hid/
│ │ ├── driver/
│ │ │ └── sdl_hid.cpp
│ │ ├── hid.cpp
│ │ └── hid.h
│ ├── install/
│ │ ├── directory_file_system.h
│ │ ├── hashes/
│ │ │ ├── episode_amigo.cpp
│ │ │ ├── episode_amigo.h
│ │ │ ├── episode_shadow.cpp
│ │ │ ├── episode_shadow.h
│ │ │ ├── episode_silver.cpp
│ │ │ ├── episode_silver.h
│ │ │ ├── episode_sonic.cpp
│ │ │ ├── episode_sonic.h
│ │ │ ├── game.cpp
│ │ │ ├── game.h
│ │ │ ├── mission_shadow.cpp
│ │ │ ├── mission_shadow.h
│ │ │ ├── mission_silver.cpp
│ │ │ ├── mission_silver.h
│ │ │ ├── mission_sonic.cpp
│ │ │ └── mission_sonic.h
│ │ ├── installer.cpp
│ │ ├── installer.h
│ │ ├── iso_file_system.cpp
│ │ ├── iso_file_system.h
│ │ ├── update_checker.cpp
│ │ ├── update_checker.h
│ │ ├── virtual_file_system.h
│ │ ├── xcontent_file_system.cpp
│ │ └── xcontent_file_system.h
│ ├── kernel/
│ │ ├── freelist.h
│ │ ├── function.h
│ │ ├── heap.cpp
│ │ ├── heap.h
│ │ ├── imports.cpp
│ │ ├── io/
│ │ │ ├── file_system.cpp
│ │ │ └── file_system.h
│ │ ├── memory.cpp
│ │ ├── memory.h
│ │ ├── xam.cpp
│ │ ├── xam.h
│ │ ├── xdbf.h
│ │ ├── xdm.cpp
│ │ └── xdm.h
│ ├── locale/
│ │ ├── achievement_locale.cpp
│ │ ├── achievement_locale.h
│ │ ├── config_locale.cpp
│ │ ├── locale.cpp
│ │ └── locale.h
│ ├── main.cpp
│ ├── misc_impl.cpp
│ ├── mod/
│ │ ├── ini_file.h
│ │ ├── ini_file.inl
│ │ ├── mod_loader.cpp
│ │ └── mod_loader.h
│ ├── mutex.h
│ ├── natvis.natvis
│ ├── os/
│ │ ├── .gitignore
│ │ ├── linux/
│ │ │ ├── logger_linux.cpp
│ │ │ ├── media_linux.cpp
│ │ │ ├── process_linux.cpp
│ │ │ ├── registry_linux.inl
│ │ │ ├── user_linux.cpp
│ │ │ └── version_linux.cpp
│ │ ├── logger.h
│ │ ├── macos/
│ │ │ ├── logger_macos.cpp
│ │ │ ├── media_macos.cpp
│ │ │ ├── process_macos.cpp
│ │ │ ├── registry_macos.inl
│ │ │ ├── user_macos.cpp
│ │ │ └── version_macos.cpp
│ │ ├── media.h
│ │ ├── process.h
│ │ ├── registry.h
│ │ ├── user.h
│ │ ├── version.h
│ │ └── win32/
│ │ ├── logger_win32.cpp
│ │ ├── media_win32.cpp
│ │ ├── process_win32.cpp
│ │ ├── registry_win32.inl
│ │ ├── user_win32.cpp
│ │ └── version_win32.cpp
│ ├── patches/
│ │ ├── MainMenuTask_patches.cpp
│ │ ├── MainMenuTask_patches.h
│ │ ├── SaveDataTask_patches.cpp
│ │ ├── TitleTask_patches.cpp
│ │ ├── aspect_ratio_patches.cpp
│ │ ├── aspect_ratio_patches.h
│ │ ├── audio_patches.cpp
│ │ ├── audio_patches.h
│ │ ├── camera_patches.cpp
│ │ ├── camera_patches.h
│ │ ├── fps_patches.cpp
│ │ ├── frontend_listener.cpp
│ │ ├── hook_event.h
│ │ ├── input_patches.cpp
│ │ ├── loading_patches.cpp
│ │ ├── loading_patches.h
│ │ ├── misc_patches.cpp
│ │ ├── patches.h
│ │ ├── pause_patches.cpp
│ │ ├── player_patches.cpp
│ │ ├── text_patches.cpp
│ │ ├── text_patches.h
│ │ └── video_patches.cpp
│ ├── preload_executable.cpp
│ ├── preload_executable.h
│ ├── res/
│ │ ├── .gitignore
│ │ ├── credits.h
│ │ ├── macos/
│ │ │ ├── MacOSXBundleInfo.plist.in
│ │ │ └── game_icon.icns
│ │ ├── version.cpp.template
│ │ ├── version.h.template
│ │ ├── version.txt
│ │ └── win32/
│ │ └── res.rc.template
│ ├── sdl_events.h
│ ├── sdl_listener.cpp
│ ├── sdl_listener.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── ui/
│ │ ├── achievement_menu.cpp
│ │ ├── achievement_menu.h
│ │ ├── achievement_overlay.cpp
│ │ ├── achievement_overlay.h
│ │ ├── black_bar.cpp
│ │ ├── black_bar.h
│ │ ├── button_window.cpp
│ │ ├── button_window.h
│ │ ├── common_menu.cpp
│ │ ├── common_menu.h
│ │ ├── fader.cpp
│ │ ├── fader.h
│ │ ├── game_window.cpp
│ │ ├── game_window.h
│ │ ├── imgui_utils.cpp
│ │ ├── imgui_utils.h
│ │ ├── installer_wizard.cpp
│ │ ├── installer_wizard.h
│ │ ├── message_window.cpp
│ │ ├── message_window.h
│ │ ├── options_menu.cpp
│ │ └── options_menu.h
│ ├── user/
│ │ ├── achievement_data.cpp
│ │ ├── achievement_data.h
│ │ ├── achievement_manager.cpp
│ │ ├── achievement_manager.h
│ │ ├── config.cpp
│ │ ├── config.h
│ │ ├── config_def.h
│ │ ├── paths.cpp
│ │ ├── paths.h
│ │ ├── registry.cpp
│ │ └── registry.h
│ ├── utils/
│ │ ├── bit_stream.cpp
│ │ ├── bit_stream.h
│ │ ├── ring_buffer.cpp
│ │ └── ring_buffer.h
│ ├── version.cmake
│ └── xxHashMap.h
├── MarathonRecompLib/
│ ├── CMakeLists.txt
│ ├── config/
│ │ ├── Marathon.toml
│ │ └── switch_table.toml
│ ├── ppc/
│ │ └── .gitignore
│ ├── private/
│ │ └── .gitignore
│ └── shader/
│ ├── .gitignore
│ └── shader_cache.h
├── README.md
├── docs/
│ ├── BUILDING.md
│ └── DUMPING-en.md
├── flatpak/
│ ├── README.md
│ ├── io.github.sonicnext_dev.marathonrecomp.desktop
│ ├── io.github.sonicnext_dev.marathonrecomp.json
│ └── io.github.sonicnext_dev.marathonrecomp.metainfo.xml
├── thirdparty/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── MoltenVK/
│ │ └── CMakeLists.txt
│ └── o1heap/
│ ├── CMakeLists.txt
│ ├── o1heap.c
│ └── o1heap.h
├── toolchains/
│ └── linux-clang.cmake
├── tools/
│ ├── CMakeLists.txt
│ ├── bc_diff/
│ │ ├── CMakeLists.txt
│ │ ├── bc_diff.cpp
│ │ └── bc_diff.h
│ ├── file_to_c/
│ │ ├── CMakeLists.txt
│ │ └── file_to_c.cpp
│ ├── fshasher/
│ │ ├── CMakeLists.txt
│ │ ├── fshasher.cpp
│ │ └── plainargs.h
│ ├── u8extract/
│ │ ├── CMakeLists.txt
│ │ └── u8extract.cpp
│ └── x_decompress/
│ ├── CMakeLists.txt
│ └── x_decompress.cpp
├── update_submodules.bat
└── vcpkg.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
insert_final_newline = true
end_of_line = lf
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug Report
description: Report a bug in Marathon Recompiled
type: "Bug"
body:
- type: checkboxes
id: validation
attributes:
label: Validation
options:
- label: I have checked the [Issues](https://github.com/sonicnext-dev/MarathonRecomp/issues) page to see if my problem has already been reported
required: true
- label: I have confirmed that this bug does not occur in the original game running on original Xbox 360 hardware
required: true
- type: checkboxes
id: dlc
attributes:
label: DLC
description: If you have DLC installed, please specify which ones you have.
options:
- label: Additional Episode "Sonic Boss Attack"
- label: Additional Episode "Shadow Boss Attack"
- label: Additional Episode "Silver Boss Attack"
- label: Additional Episode "Team Attack Amigo"
- label: Additional Mission Pack "Sonic/Very Hard"
- label: Additional Mission Pack "Shadow/Very Hard"
- label: Additional Mission Pack "Silver/Very Hard"
- type: textarea
id: mods
attributes:
label: Mods
description: Provide a list of your enabled mods in Mod Manager here. You will not receive support for issues *caused* by mods.
- type: textarea
id: codes
attributes:
label: Codes
description: Provide a list of your enabled codes in Mod Manager here.
- type: textarea
id: description
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to Reproduce
description: Provide steps to reproduce the bug
placeholder: |
1. Go to '...'
2. etc.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: footage
attributes:
label: Footage
description: Attach a screenshot or video of the bug. If possible, please also provide footage of the expected behaviour on original Xbox 360 hardware.
- type: textarea
id: specifications
attributes:
label: Specifications
description: Fill out the following details
value: |
- CPU: (e.g. Intel Core [...], AMD Ryzen [...], etc.)
- GPU: (e.g. NVIDIA GeForce [...], Radeon HD [...], Intel HD [...], etc.)
- GPU Driver: (e.g NVIDIA driver 545.XX, AMD driver 24.X.X, etc.)
- OS: (e.g. Windows 10, Windows 11, Linux distro)
- Version: (e.g. 1.0.0)
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional Context
description: Provide any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/dev_report.yml
================================================
name: Dev Report
description: For developer use only!
body:
- type: textarea
id: description
attributes:
label: Description
validations:
required: true
================================================
FILE: .github/workflows/validate-external.yml
================================================
name: validate-external
on:
pull_request_target:
types: [opened, synchronize]
jobs:
authorize:
if: github.repository != github.event.pull_request.head.repo.full_name
environment:
${{ github.event_name == 'pull_request_target' &&
github.event.pull_request.head.repo.full_name != github.repository &&
'external' || 'internal' }}
runs-on: ubuntu-24.04
steps:
- run: echo ✓
build:
needs: authorize
uses: ./.github/workflows/validate.yml
secrets:
ASSET_REPO: ${{ secrets.ASSET_REPO }}
ASSET_REPO_TOKEN: ${{ secrets.ASSET_REPO_TOKEN }}
================================================
FILE: .github/workflows/validate-internal.yml
================================================
name: validate-internal
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize]
jobs:
build:
if: github.event_name == 'push' || github.repository == github.event.pull_request.head.repo.full_name
uses: ./.github/workflows/validate.yml
secrets: inherit
================================================
FILE: .github/workflows/validate.yml
================================================
name: validate
on:
workflow_call:
secrets:
ASSET_REPO:
required: true
ASSET_REPO_TOKEN:
required: true
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-linux:
name: Build Linux
runs-on: ubuntu-24.04
strategy:
matrix:
preset: ["linux-debug", "linux-release", "linux-relwithdebinfo"]
env:
LLVM_VERSION: 18
CMAKE_PRESET: ${{ matrix.preset }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout Private Repository
uses: actions/checkout@v4
with:
repository: ${{ secrets.ASSET_REPO }}
token: ${{ secrets.ASSET_REPO_TOKEN }}
path: ./private
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ runner.os }}-${{ matrix.preset }}
- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
./thirdparty/vcpkg/downloads
./thirdparty/vcpkg/packages
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-${{ runner.os }}-
- name: Install Dependencies (Linux)
run: |-
sudo apt update
sudo apt install -y ninja-build llvm-${{ env.LLVM_VERSION }}-dev libgtk-3-dev libasound2-dev libpulse-dev libpipewire-0.3-dev
- name: Cache ccache Directory
uses: actions/cache@v4
with:
path: /tmp/ccache
key: ccache-${{ runner.os }}-${{ matrix.preset }}
- name: Prepare Project
run: cp ./private/* ./MarathonRecompLib/private
- name: Configure Project
env:
CCACHE_DIR: /tmp/ccache
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
- name: Build Project
env:
CCACHE_DIR: /tmp/ccache
run: cmake --build ./out/build/${{ env.CMAKE_PRESET }} --target MarathonRecomp
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: MarathonRecomp-Linux-${{ env.CMAKE_PRESET }}
path: ./out/build/${{ env.CMAKE_PRESET }}/MarathonRecomp/MarathonRecomp
build-windows:
name: Build Windows
runs-on: windows-latest
strategy:
matrix:
preset: ["x64-Clang-Debug", "x64-Clang-Release", "x64-Clang-RelWithDebInfo"]
env:
CMAKE_PRESET: ${{ matrix.preset }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout private repository
uses: actions/checkout@v4
with:
repository: ${{ secrets.ASSET_REPO }}
token: ${{ secrets.ASSET_REPO_TOKEN }}
path: .\private
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ runner.os }}-${{ matrix.preset }}
- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
./thirdparty/vcpkg/downloads
./thirdparty/vcpkg/packages
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-${{ runner.os }}-
- name: Install dependencies
run: |
choco install ninja
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
- name: Configure Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1
- name: Prepare Project
run: |
$commitMessage = git log -1 --pretty=%s
Add-Content -Path $env:GITHUB_ENV -Value "commit_message=$commitMessage"
copy .\private\* .\MarathonRecompLib\private
- name: Configure Project
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
- name: Build Project
run: cmake --build .\out\build\${{ env.CMAKE_PRESET }} --target MarathonRecomp
- name: Pack Release
run: |
New-Item -ItemType Directory -Path .\release
New-Item -ItemType Directory -Path .\release\D3D12
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\MarathonRecomp\D3D12\D3D12Core.dll" -Destination ".\release\D3D12\D3D12Core.dll"
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\MarathonRecomp\dxcompiler.dll" -Destination ".\release\dxcompiler.dll"
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\MarathonRecomp\dxil.dll" -Destination ".\release\dxil.dll"
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\MarathonRecomp\MarathonRecomp.exe" -Destination ".\release\MarathonRecomp.exe"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: MarathonRecomp-Windows-${{ env.CMAKE_PRESET }}
path: .\release
- name: Upload PDB
uses: actions/upload-artifact@v4
if: ${{ matrix.preset != 'x64-Clang-Release' }}
with:
name: MarathonRecomp-Windows-${{ env.CMAKE_PRESET }}-PDB
path: .\out\build\${{ env.CMAKE_PRESET }}\MarathonRecomp\MarathonRecomp.pdb
build-flatpak:
name: Build Flatpak
runs-on: ubuntu-24.04
env:
FLATPAK_ID: io.github.sonicnext_dev.marathonrecomp
FREEDESKTOP_VERSION: 23.08
LLVM_VERSION: 18
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout Private Repository
uses: actions/checkout@v4
with:
repository: ${{ secrets.ASSET_REPO }}
token: ${{ secrets.ASSET_REPO_TOKEN }}
path: ./private
- name: Install Dependencies
run: |-
sudo apt update
sudo apt install -y flatpak-builder ccache
- name: Setup ccache
uses: actions/cache@v4
with:
path: /tmp/ccache
key: ccache-${{ runner.os }}
- name: Prepare Project
run: cp ./private/* ./MarathonRecompLib/private
- name: Prepare Flatpak
run: |
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak --user install -y flathub org.freedesktop.Sdk//${{ env.FREEDESKTOP_VERSION }}
flatpak --user install -y flathub org.freedesktop.Sdk.Extension.llvm${{ env.LLVM_VERSION }}//${{ env.FREEDESKTOP_VERSION }}
- name: Build Flatpak
run: |
echo "commit_message=$(git log -1 --pretty=%s)" >> $GITHUB_ENV
export CCACHE_DIR=/tmp/ccache
flatpak-builder --user --force-clean --install-deps-from=flathub --repo=repo --ccache builddir ./flatpak/${{ env.FLATPAK_ID }}.json
flatpak build-bundle repo ./${{ env.FLATPAK_ID }}.flatpak ${{ env.FLATPAK_ID }} --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: MarathonRecomp-Flatpak
path: ./${{ env.FLATPAK_ID }}.flatpak
build-macos:
name: Build macOS
runs-on: macos-15
strategy:
matrix:
arch: [ "arm64" ]
preset: ["macos-debug", "macos-release", "macos-relwithdebinfo"]
env:
CMAKE_PRESET: ${{ matrix.preset }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout Private Repository
uses: actions/checkout@v4
with:
repository: ${{ secrets.ASSET_REPO }}
token: ${{ secrets.ASSET_REPO_TOKEN }}
path: ./private
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ runner.os }}-${{ matrix.arch }}-${{ matrix.preset }}
- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
./thirdparty/vcpkg/downloads
./thirdparty/vcpkg/packages
key: vcpkg-${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ matrix.arch }}-
- name: Install Dependencies (macOS)
run: |
brew install ninja
- name: Cache ccache Directory
uses: actions/cache@v4
with:
path: /tmp/ccache
key: ccache-${{ runner.os }}-${{ matrix.arch }}-${{ matrix.preset }}
- name: Prepare Project
run: |
cp ./private/* ./MarathonRecompLib/private
- name: Configure Project
env:
CCACHE_DIR: /tmp/ccache
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
- name: Build Project
env:
CCACHE_DIR: /tmp/ccache
run: cmake --build ./out/build/${{ env.CMAKE_PRESET }} --target MarathonRecomp
- name: Pack Release
run: |
codesign --deep -fs - "./out/build/${{ env.CMAKE_PRESET }}/MarathonRecomp/Marathon Recompiled.app"
tar -czf MarathonRecomp-macOS-${{ matrix.arch }}-${{ env.CMAKE_PRESET }}.tar.gz -C ./out/build/${{ env.CMAKE_PRESET }}/MarathonRecomp "Marathon Recompiled.app"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: MarathonRecomp-macOS-${{ matrix.arch }}-${{ env.CMAKE_PRESET }}
path: MarathonRecomp-macOS-${{ matrix.arch }}-${{ env.CMAKE_PRESET }}.tar.gz
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
[Oo]ut/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
.idea
# macOS metadata files
.DS_Store
UnleashedRecompLib/build
UnleashedRecompLib/ppc*
================================================
FILE: .gitmodules
================================================
[submodule "tools/XenonRecomp"]
path = tools/XenonRecomp
url = https://github.com/sonicnext-dev/XenonRecomp.git
[submodule "thirdparty/ddspp"]
path = thirdparty/ddspp
url = https://github.com/redorav/ddspp.git
[submodule "tools/XenosRecomp"]
path = tools/XenosRecomp
url = https://github.com/sonicnext-dev/XenosRecomp.git
[submodule "thirdparty/msdf-atlas-gen"]
path = thirdparty/msdf-atlas-gen
url = https://github.com/Chlumsky/msdf-atlas-gen.git
[submodule "thirdparty/vcpkg"]
path = thirdparty/vcpkg
url = https://github.com/microsoft/vcpkg
[submodule "thirdparty/SDL"]
path = thirdparty/SDL
url = https://github.com/libsdl-org/SDL.git
[submodule "thirdparty/stb"]
path = thirdparty/stb
url = https://github.com/nothings/stb.git
[submodule "thirdparty/concurrentqueue"]
path = thirdparty/concurrentqueue
url = https://github.com/cameron314/concurrentqueue.git
[submodule "thirdparty/magic_enum"]
path = thirdparty/magic_enum
url = https://github.com/Neargye/magic_enum.git
[submodule "thirdparty/nativefiledialog-extended"]
path = thirdparty/nativefiledialog-extended
url = https://github.com/btzy/nativefiledialog-extended.git
[submodule "thirdparty/imgui"]
path = thirdparty/imgui
url = https://github.com/ocornut/imgui.git
[submodule "thirdparty/unordered_dense"]
path = thirdparty/unordered_dense
url = https://github.com/martinus/unordered_dense.git
[submodule "thirdparty/SDL_mixer"]
path = thirdparty/SDL_mixer
url = https://github.com/libsdl-org/SDL_mixer
[submodule "thirdparty/implot"]
path = thirdparty/implot
url = https://github.com/epezent/implot.git
[submodule "thirdparty/json"]
path = thirdparty/json
url = https://github.com/nlohmann/json
[submodule "MarathonRecompResources"]
path = MarathonRecompResources
url = https://github.com/sonicnext-dev/MarathonRecompResources
[submodule "thirdparty/MoltenVK/MoltenVK"]
path = thirdparty/MoltenVK/MoltenVK
url = https://github.com/KhronosGroup/MoltenVK.git
[submodule "thirdparty/MoltenVK/SPIRV-Cross"]
path = thirdparty/MoltenVK/SPIRV-Cross
url = https://github.com/KhronosGroup/SPIRV-Cross.git
[submodule "thirdparty/plume"]
path = thirdparty/plume
url = https://github.com/renderbag/plume
[submodule "thirdparty/ffmpeg-core"]
path = thirdparty/ffmpeg-core
url = https://github.com/sonicnext-dev/ffmpeg-core
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required (VERSION 3.20)
if(NOT DEFINED ENV{VCPKG_ROOT})
message(FATAL_ERROR "VCPKG_ROOT is not defined!")
endif()
set(MARATHON_RECOMP_THIRDPARTY_ROOT ${CMAKE_SOURCE_DIR}/thirdparty)
set(MARATHON_RECOMP_TOOLS_ROOT ${CMAKE_SOURCE_DIR}/tools)
set(CMAKE_CXX_STANDARD 20)
set(BUILD_SHARED_LIBS OFF)
# Enable Hot Reload for MSVC compilers if supported.
if (POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
project("MarathonRecomp-ALL")
if (APPLE)
enable_language(OBJC OBJCXX)
endif()
if (CMAKE_OSX_ARCHITECTURES)
set(MARATHON_RECOMP_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
elseif(CMAKE_SYSTEM_PROCESSOR)
set(MARATHON_RECOMP_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
else()
set(MARATHON_RECOMP_ARCHITECTURE ${CMAKE_HOST_SYSTEM_PROCESSOR})
endif()
string(TOLOWER "${MARATHON_RECOMP_ARCHITECTURE}" MARATHON_RECOMP_ARCHITECTURE)
message(STATUS "Detected architecture: ${MARATHON_RECOMP_ARCHITECTURE}")
if (MARATHON_RECOMP_ARCHITECTURE STREQUAL "x86_64" OR MARATHON_RECOMP_ARCHITECTURE STREQUAL "amd64")
# Target Sandy Bridge for all projects
add_compile_options(
-march=sandybridge
)
endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
# Normally only defined by Visual Studio, added for consistency
add_compile_definitions(_DEBUG)
endif()
add_subdirectory(${MARATHON_RECOMP_THIRDPARTY_ROOT})
add_subdirectory(${MARATHON_RECOMP_TOOLS_ROOT})
# Include sub-projects.
add_subdirectory("MarathonRecompLib")
add_subdirectory("MarathonRecomp")
================================================
FILE: CMakePresets.json
================================================
{
"version": 8,
"configurePresets": [
{
"name": "windows-base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl.exe",
"CMAKE_CXX_COMPILER": "clang-cl.exe",
"CMAKE_LINKER": "lld-link.exe",
"CMAKE_TOOLCHAIN_FILE": {
"value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"type": "FILEPATH"
}
},
"environment": {
"VCPKG_ROOT": "${sourceDir}/thirdparty/vcpkg"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "x64-Clang-Debug",
"displayName": "Debug",
"inherits": "windows-base",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_TARGET_TRIPLET": {
"value": "x64-windows-static",
"type": "STRING"
}
}
},
{
"name": "x64-Clang-RelWithDebInfo",
"displayName": "RelWithDebInfo",
"inherits": "x64-Clang-Debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "x64-Clang-Release",
"displayName": "Release",
"inherits": "x64-Clang-Debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": true
}
},
{
"name": "linux-base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": {
"value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"type": "FILEPATH"
},
"VCPKG_TARGET_TRIPLET": {
"value": "x64-linux",
"type": "STRING"
},
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/toolchains/linux-clang.cmake"
},
"environment": {
"VCPKG_ROOT": "${sourceDir}/thirdparty/vcpkg"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"vendor": {
"microsoft.com/VisualStudioRemoteSettings/CMake/2.0": {
"remoteSourceRootDir": "$env{HOME}/.vs/$ms{projectDirName}"
}
}
},
{
"name": "linux-debug",
"displayName": "Linux-Debug",
"inherits": "linux-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "linux-relwithdebinfo",
"displayName": "Linux-RelWithDebInfo",
"inherits": "linux-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "linux-release",
"displayName": "Linux-Release",
"inherits": "linux-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": true
}
},
{
"name": "macos-base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": {
"value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"type": "FILEPATH"
},
"CMAKE_OSX_DEPLOYMENT_TARGET": "13.0"
},
"environment": {
"VCPKG_ROOT": "${sourceDir}/thirdparty/vcpkg"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
},
"vendor": {
"microsoft.com/VisualStudioRemoteSettings/CMake/2.0": {
"remoteSourceRootDir": "$env{HOME}/.vs/$ms{projectDirName}"
}
}
},
{
"name": "macos-debug",
"displayName": "macOS-Debug",
"inherits": "macos-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "macos-relwithdebinfo",
"displayName": "macOS-RelWithDebInfo",
"inherits": "macos-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "macos-release",
"displayName": "macOS-Release",
"inherits": "macos-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": true
}
}
]
}
================================================
FILE: COPYING
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
================================================
FILE: MarathonRecomp/.gitignore
================================================
/version.h
/version.cpp
================================================
FILE: MarathonRecomp/CMakeLists.txt
================================================
project("MarathonRecomp")
if (WIN32)
option(MARATHON_RECOMP_D3D12 "Add D3D12 support for rendering" ON)
endif()
if (APPLE)
option(MARATHON_RECOMP_METAL "Add Metal support for rendering" ON)
endif()
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
option(MARATHON_RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF)
endif()
function(BIN2C)
cmake_parse_arguments(BIN2C_ARGS "" "TARGET_OBJ;SOURCE_FILE;DEST_FILE;ARRAY_NAME;COMPRESSION_TYPE" "" ${ARGN})
if(NOT BIN2C_ARGS_TARGET_OBJ)
message(FATAL_ERROR "TARGET_OBJ not specified.")
endif()
if(NOT BIN2C_ARGS_SOURCE_FILE)
message(FATAL_ERROR "SOURCE_FILE not specified.")
endif()
if(NOT BIN2C_ARGS_DEST_FILE)
set(BIN2C_ARGS_DEST_FILE "${BIN2C_ARGS_SOURCE_FILE}")
endif()
if(NOT BIN2C_ARGS_COMPRESSION_TYPE)
set(BIN2C_ARGS_COMPRESSION_TYPE "none")
endif()
add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c"
COMMAND $<TARGET_FILE:file_to_c> "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h"
DEPENDS "${BIN2C_ARGS_SOURCE_FILE}"
BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h"
COMMENT "Generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..."
)
set_source_files_properties(${BIN2C_ARGS_DEST_FILE}.c PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
target_sources(${BIN2C_ARGS_TARGET_OBJ} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c)
endfunction()
add_compile_options(
-fno-strict-aliasing
-Wno-switch
-Wno-unused-function
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wno-void-pointer-to-int-cast
-Wno-int-to-void-pointer-cast
-Wno-invalid-offsetof
-Wno-null-arithmetic
-Wno-null-conversion
-Wno-tautological-undefined-compare
)
if (WIN32)
add_compile_options(/fp:strict)
else()
add_compile_options(-ffp-model=strict)
endif()
add_compile_definitions(
SDL_MAIN_HANDLED
_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR # Microsoft wtf?
_CRT_SECURE_NO_WARNINGS)
set(MARATHON_RECOMP_PRECOMPILED_HEADERS
"stdafx.h"
)
set(MARATHON_RECOMP_KERNEL_CXX_SOURCES
"kernel/imports.cpp"
"kernel/xdm.cpp"
"kernel/heap.cpp"
"kernel/memory.cpp"
"kernel/xam.cpp"
"kernel/io/file_system.cpp"
)
set(MARATHON_RECOMP_LOCALE_CXX_SOURCES
"locale/achievement_locale.cpp"
"locale/config_locale.cpp"
"locale/locale.cpp"
)
if (WIN32)
set(MARATHON_RECOMP_OS_CXX_SOURCES
"os/win32/logger_win32.cpp"
"os/win32/media_win32.cpp"
"os/win32/process_win32.cpp"
"os/win32/user_win32.cpp"
"os/win32/version_win32.cpp"
)
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
set(MARATHON_RECOMP_OS_CXX_SOURCES
"os/linux/logger_linux.cpp"
"os/linux/media_linux.cpp"
"os/linux/process_linux.cpp"
"os/linux/user_linux.cpp"
"os/linux/version_linux.cpp"
)
elseif (APPLE)
set(MARATHON_RECOMP_OS_CXX_SOURCES
"os/macos/logger_macos.cpp"
"os/macos/media_macos.cpp"
"os/macos/process_macos.cpp"
"os/macos/user_macos.cpp"
"os/macos/version_macos.cpp"
)
endif()
set(MARATHON_RECOMP_CPU_CXX_SOURCES
"cpu/guest_thread.cpp"
)
set(MARATHON_RECOMP_GPU_CXX_SOURCES
"gpu/video.cpp"
"gpu/imgui/imgui_common.cpp"
"gpu/imgui/imgui_font_builder.cpp"
"gpu/imgui/imgui_snapshot.cpp"
)
set(MARATHON_RECOMP_APU_CXX_SOURCES
"apu/audio.cpp"
"apu/xma_decoder.cpp"
"apu/embedded_player.cpp"
"apu/driver/sdl2_driver.cpp"
)
set(MARATHON_RECOMP_HID_CXX_SOURCES
"hid/hid.cpp"
"hid/driver/sdl_hid.cpp"
)
set(MARATHON_RECOMP_PATCHES_CXX_SOURCES
"patches/aspect_ratio_patches.cpp"
"patches/audio_patches.cpp"
"patches/camera_patches.cpp"
"patches/fps_patches.cpp"
"patches/frontend_listener.cpp"
"patches/input_patches.cpp"
"patches/loading_patches.cpp"
"patches/MainMenuTask_patches.cpp"
"patches/misc_patches.cpp"
"patches/pause_patches.cpp"
"patches/player_patches.cpp"
"patches/SaveDataTask_patches.cpp"
"patches/text_patches.cpp"
"patches/TitleTask_patches.cpp"
"patches/video_patches.cpp"
)
set(MARATHON_RECOMP_UI_CXX_SOURCES
"ui/achievement_menu.cpp"
"ui/achievement_overlay.cpp"
"ui/black_bar.cpp"
"ui/button_window.cpp"
"ui/common_menu.cpp"
"ui/fader.cpp"
"ui/game_window.cpp"
"ui/imgui_utils.cpp"
"ui/installer_wizard.cpp"
"ui/message_window.cpp"
"ui/options_menu.cpp"
)
set(MARATHON_RECOMP_INSTALL_CXX_SOURCES
"install/installer.cpp"
"install/iso_file_system.cpp"
"install/update_checker.cpp"
"install/xcontent_file_system.cpp"
"install/hashes/game.cpp"
"install/hashes/episode_sonic.cpp"
"install/hashes/episode_shadow.cpp"
"install/hashes/episode_silver.cpp"
"install/hashes/episode_amigo.cpp"
"install/hashes/mission_sonic.cpp"
"install/hashes/mission_shadow.cpp"
"install/hashes/mission_silver.cpp"
)
set(MARATHON_RECOMP_USER_CXX_SOURCES
"user/achievement_data.cpp"
"user/achievement_manager.cpp"
"user/config.cpp"
"user/registry.cpp"
"user/paths.cpp"
)
set(MARATHON_RECOMP_MOD_CXX_SOURCES
"mod/mod_loader.cpp"
)
set(MARATHON_RECOMP_UTILS_CXX_SOURCES
"utils/bit_stream.cpp"
"utils/ring_buffer.cpp"
)
set(MARATHON_RECOMP_THIRDPARTY_SOURCES
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui/backends/imgui_impl_sdl2.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui/imgui.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_demo.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_draw.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_tables.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_widgets.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/implot/implot.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/implot/implot_demo.cpp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/implot/implot_items.cpp"
"${MARATHON_RECOMP_TOOLS_ROOT}/XenosRecomp/thirdparty/smol-v/source/smolv.cpp"
)
set(MARATHON_RECOMP_THIRDPARTY_INCLUDES
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/concurrentqueue"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/ddspp"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/imgui"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/implot"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/json/include"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/magic_enum/include"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/stb"
"${MARATHON_RECOMP_THIRDPARTY_ROOT}/unordered_dense/include"
"${MARATHON_RECOMP_TOOLS_ROOT}/bc_diff"
"${MARATHON_RECOMP_TOOLS_ROOT}/XenosRecomp/thirdparty/smol-v/source"
)
set_source_files_properties(${MARATHON_RECOMP_THIRDPARTY_SOURCES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
set(MARATHON_RECOMP_CXX_SOURCES
"app.cpp"
"exports.cpp"
"main.cpp"
"misc_impl.cpp"
"preload_executable.cpp"
"sdl_listener.cpp"
"stdafx.cpp"
"version.cpp"
${MARATHON_RECOMP_KERNEL_CXX_SOURCES}
${MARATHON_RECOMP_LOCALE_CXX_SOURCES}
${MARATHON_RECOMP_OS_CXX_SOURCES}
${MARATHON_RECOMP_CPU_CXX_SOURCES}
${MARATHON_RECOMP_GPU_CXX_SOURCES}
${MARATHON_RECOMP_APU_CXX_SOURCES}
${MARATHON_RECOMP_HID_CXX_SOURCES}
${MARATHON_RECOMP_PATCHES_CXX_SOURCES}
${MARATHON_RECOMP_UI_CXX_SOURCES}
${MARATHON_RECOMP_INSTALL_CXX_SOURCES}
${MARATHON_RECOMP_USER_CXX_SOURCES}
${MARATHON_RECOMP_UTILS_CXX_SOURCES}
${MARATHON_RECOMP_MOD_CXX_SOURCES}
${MARATHON_RECOMP_THIRDPARTY_SOURCES}
)
include("version.cmake")
set(VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt")
# Only show Git info and build type if not Release.
set(SHOW_GIT_INFO_AND_BUILD_TYPE 0)
if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
set(SHOW_GIT_INFO_AND_BUILD_TYPE 1)
endif()
if (MARATHON_RECOMP_METAL)
set(XCRUN_TOOL "/usr/bin/xcrun")
endif()
GenerateVersionSources(
OUTPUT_DIR ${PROJECT_SOURCE_DIR}
VERSION_TXT ${VERSION_TXT}
H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template"
CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template"
BUILD_TYPE ${CMAKE_BUILD_TYPE}
SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE}
SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE}
)
if (WIN32)
# Create binary version number for Win32 integer attributes.
CreateVersionString(
VERSION_TXT ${VERSION_TXT}
OUTPUT_CSV 1
OUTPUT_VAR WIN32_VERSION_BINARY
)
# Create string version number for Win32 detailed attributes.
CreateVersionString(
VERSION_TXT ${VERSION_TXT}
BUILD_TYPE ${CMAKE_BUILD_TYPE}
SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE}
SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE}
OUTPUT_VAR WIN32_VERSION_STRING
)
# Set Win32 icon path.
set(WIN32_ICON_PATH "${PROJECT_SOURCE_DIR}/../MarathonRecompResources/images/game_icon.ico")
configure_file("res/win32/res.rc.template" "${CMAKE_BINARY_DIR}/res.rc" @ONLY)
add_executable(MarathonRecomp ${MARATHON_RECOMP_CXX_SOURCES} "${CMAKE_BINARY_DIR}/res.rc")
# Hide console for release configurations.
if (${CMAKE_BUILD_TYPE} MATCHES "Release")
target_link_options(MarathonRecomp PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup")
endif()
elseif (APPLE)
# Create version number for app bundle.
CreateVersionString(
VERSION_TXT ${VERSION_TXT}
OUTPUT_VAR MACOS_BUNDLE_VERSION
)
add_executable(MarathonRecomp MACOSX_BUNDLE
${MARATHON_RECOMP_CXX_SOURCES}
res/macos/game_icon.icns
)
set_source_files_properties(res/macos/game_icon.icns PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
set_target_properties(MarathonRecomp PROPERTIES
OUTPUT_NAME "Marathon Recompiled"
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/macos/MacOSXBundleInfo.plist.in
MACOSX_BUNDLE_GUI_IDENTIFIER sonicnext-dev.MarathonRecomp
MACOSX_BUNDLE_BUNDLE_NAME "Marathon Recompiled"
MACOSX_BUNDLE_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${MACOS_BUNDLE_VERSION}
MACOSX_BUNDLE_ICON_FILE "game_icon.icns"
)
# Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers.
# Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it.
# In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle.
set(MVK_BUNDLED_PATH "Resources/vulkan/icd.d")
set(MVK_DST "${CMAKE_CURRENT_BINARY_DIR}/Marathon Recompiled.app/Contents/${MVK_BUNDLED_PATH}")
set_property(TARGET MarathonRecomp APPEND PROPERTY BUILD_RPATH "@executable_path/../${MVK_BUNDLED_PATH}")
set(MVK_ICD_SRC "${MARATHON_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json")
set(MVK_ICD_DST "${MVK_DST}/MoltenVK_icd.json")
set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/libMoltenVK.dylib")
set(MVK_DYLIB_DST "${MVK_DST}/libMoltenVK.dylib")
add_custom_command(
OUTPUT ${MVK_DST}
COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DST})
add_custom_command(
OUTPUT ${MVK_ICD_DST}
DEPENDS ${MVK_ICD_SRC} ${MVK_DST}
COMMAND ${CMAKE_COMMAND} -E copy ${MVK_ICD_SRC} ${MVK_ICD_DST})
add_custom_command(
OUTPUT ${MVK_DYLIB_DST}
DEPENDS ${MVK_DYLIB_SRC} ${MVK_DST}
COMMAND ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST})
add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST})
add_dependencies(CopyMoltenVK MoltenVK)
add_dependencies(MarathonRecomp CopyMoltenVK)
else()
add_executable(MarathonRecomp ${MARATHON_RECOMP_CXX_SOURCES})
endif()
if (MARATHON_RECOMP_FLATPAK)
target_compile_definitions(MarathonRecomp PRIVATE
"MARATHON_RECOMP_FLATPAK"
"GAME_INSTALL_DIRECTORY=\"/var/data\""
)
endif()
find_package(CURL REQUIRED)
if (MARATHON_RECOMP_METAL)
target_compile_definitions(MarathonRecomp PRIVATE MARATHON_RECOMP_METAL)
endif()
if (MARATHON_RECOMP_D3D12)
find_package(directx-headers CONFIG REQUIRED)
find_package(directx12-agility CONFIG REQUIRED)
target_compile_definitions(MarathonRecomp PRIVATE MARATHON_RECOMP_D3D12)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/D3D12)
add_custom_command(TARGET MarathonRecomp POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:Microsoft::DirectX12-Core,IMPORTED_LOCATION_RELEASE> $<TARGET_FILE_DIR:MarathonRecomp>/D3D12
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:Microsoft::DirectX12-Layers,IMPORTED_LOCATION_DEBUG> $<TARGET_FILE_DIR:MarathonRecomp>/D3D12
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:Microsoft::DirectXShaderCompiler,IMPORTED_LOCATION> $<TARGET_FILE_DIR:MarathonRecomp>
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:Microsoft::DXIL,IMPORTED_LOCATION> $<TARGET_FILE_DIR:MarathonRecomp>
COMMAND_EXPAND_LISTS
)
target_link_libraries(MarathonRecomp PRIVATE
Microsoft::DirectXShaderCompiler
Microsoft::DXIL
dxgi
)
endif()
if (WIN32)
target_link_libraries(MarathonRecomp PRIVATE
comctl32
dwmapi
ntdll
Shcore
Synchronization
winmm
windowsapp
)
endif()
target_link_libraries(MarathonRecomp PRIVATE
fmt::fmt
libzstd_static
msdf-atlas-gen::msdf-atlas-gen
nfd::nfd
o1heap
XenonUtils
SDL2::SDL2-static
SDL2_mixer
tomlplusplus::tomlplusplus
MarathonRecompLib
xxHash::xxhash
CURL::libcurl
plume
)
target_link_libraries(MarathonRecomp PRIVATE ffmpeg)
target_include_directories(MarathonRecomp PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/api"
${MARATHON_RECOMP_THIRDPARTY_INCLUDES}
)
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
find_package(PkgConfig REQUIRED)
find_package(X11 REQUIRED)
pkg_search_module(GLIB REQUIRED glib-2.0)
pkg_search_module(GIO REQUIRED gio-2.0)
target_include_directories(MarathonRecomp PRIVATE ${X11_INCLUDE_DIR} ${GLIB_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS})
target_link_libraries(MarathonRecomp PRIVATE ${X11_LIBRARIES} ${GLIB_LIBRARIES} ${GIO_LIBRARIES})
endif()
target_precompile_headers(MarathonRecomp PUBLIC ${MARATHON_RECOMP_PRECOMPILED_HEADERS})
function(compile_shader FILE_PATH TARGET_NAME)
set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl)
set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal)
cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME)
cmake_path(GET MSL_FILE_PATH STEM MSL_NAME)
if (MARATHON_RECOMP_METAL)
add_custom_command(
OUTPUT ${MSL_FILE_PATH}.ir
COMMAND ${XCRUN_TOOL} -sdk macosx metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only
DEPENDS ${MSL_FILE_PATH}
)
add_custom_command(
OUTPUT ${MSL_FILE_PATH}.metallib
COMMAND ${XCRUN_TOOL} -sdk macosx metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir
DEPENDS ${MSL_FILE_PATH}.ir
)
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air")
endif()
if (MARATHON_RECOMP_D3D12)
add_custom_command(
OUTPUT ${HLSL_FILE_PATH}.dxil.h
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -E shaderMain -Fh ${HLSL_FILE_PATH}.dxil.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_dxil
DEPENDS ${HLSL_FILE_PATH}
)
target_sources(MarathonRecomp PRIVATE ${HLSL_FILE_PATH}.dxil.h)
endif()
add_custom_command(
OUTPUT ${HLSL_FILE_PATH}.spirv.h
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -E shaderMain -Fh ${HLSL_FILE_PATH}.spirv.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_spirv
DEPENDS ${HLSL_FILE_PATH}
)
target_sources(MarathonRecomp PRIVATE ${HLSL_FILE_PATH}.spirv.h)
endfunction()
function(compile_vertex_shader FILE_PATH)
compile_shader(${FILE_PATH} vs_6_0 -fvk-invert-y -DMARATHON_RECOMP)
endfunction()
function(compile_pixel_shader FILE_PATH)
compile_shader(${FILE_PATH} ps_6_0 -DMARATHON_RECOMP)
endfunction()
compile_pixel_shader(blend_color_alpha_ps)
compile_pixel_shader(conditional_survey_ps)
compile_vertex_shader(copy_vs)
compile_pixel_shader(copy_color_ps)
compile_pixel_shader(copy_depth_ps)
compile_pixel_shader(csd_filter_ps)
compile_vertex_shader(csd_no_tex_vs)
compile_vertex_shader(csd_vs)
compile_vertex_shader(enhanced_burnout_blur_vs)
compile_pixel_shader(enhanced_burnout_blur_ps)
compile_pixel_shader(gaussian_blur_3x3)
compile_pixel_shader(gaussian_blur_5x5)
compile_pixel_shader(gaussian_blur_7x7)
compile_pixel_shader(gaussian_blur_9x9)
compile_pixel_shader(gamma_correction_ps)
compile_pixel_shader(imgui_ps)
compile_vertex_shader(imgui_vs)
compile_pixel_shader(resolve_msaa_color_2x)
compile_pixel_shader(resolve_msaa_color_4x)
compile_pixel_shader(resolve_msaa_color_8x)
compile_pixel_shader(resolve_msaa_depth_2x)
compile_pixel_shader(resolve_msaa_depth_4x)
compile_pixel_shader(resolve_msaa_depth_8x)
function(generate_aggregate_header INPUT_DIRECTORY OUTPUT_FILE)
get_filename_component(ABS_OUTPUT_FILE "${OUTPUT_FILE}" ABSOLUTE)
file(GLOB_RECURSE HEADER_FILES "${INPUT_DIRECTORY}/*.h")
set(HEADER_CONTENT "#pragma once\n\n")
foreach(HEADER_FILE IN LISTS HEADER_FILES)
get_filename_component(ABS_HEADER_FILE "${HEADER_FILE}" ABSOLUTE)
if (ABS_HEADER_FILE STREQUAL ABS_OUTPUT_FILE)
continue()
endif()
file(RELATIVE_PATH RELATIVE_HEADER_FILE "${INPUT_DIRECTORY}" "${HEADER_FILE}")
string(APPEND HEADER_CONTENT "#include \"${RELATIVE_HEADER_FILE}\"\n")
endforeach()
if (EXISTS "${OUTPUT_FILE}")
file(READ "${OUTPUT_FILE}" EXISTING_CONTENT)
if (EXISTING_CONTENT STREQUAL HEADER_CONTENT)
return()
endif()
endif()
file(WRITE "${OUTPUT_FILE}" "${HEADER_CONTENT}")
endfunction()
generate_aggregate_header(
"${CMAKE_CURRENT_SOURCE_DIR}/api"
"${CMAKE_CURRENT_SOURCE_DIR}/api/Marathon.h"
)
set(RESOURCES_SOURCE_PATH "${PROJECT_SOURCE_DIR}/../MarathonRecompResources")
set(RESOURCES_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/res")
## Miscellaneous ##
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/bc_diff/button_bc_diff.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/bc_diff/button_bc_diff.bin" ARRAY_NAME "g_button_bc_diff" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.bin" ARRAY_NAME "g_im_font_atlas" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.dds" ARRAY_NAME "g_im_font_atlas_texture" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/button_window.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/button_window.dds" ARRAY_NAME "g_button_window" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/controller.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/controller.dds" ARRAY_NAME "g_controller" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/sonicnext-dev.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/sonicnext-dev.dds" ARRAY_NAME "g_sonicnextdev" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/kbm.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/kbm.dds" ARRAY_NAME "g_kbm" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/main_menu1.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/main_menu1.dds" ARRAY_NAME "g_main_menu1" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/main_menu7.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/main_menu7.dds" ARRAY_NAME "g_main_menu7" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/main_menu8.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/main_menu8.dds" ARRAY_NAME "g_main_menu8" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/main_menu9.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/main_menu9.dds" ARRAY_NAME "g_main_menu9" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/arrow.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/arrow.dds" ARRAY_NAME "g_arrow" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/window.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/window.dds" ARRAY_NAME "g_window" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/select_arrow.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/select_arrow.dds" ARRAY_NAME "g_select_arrow" COMPRESSION_TYPE "zstd")
## Installer ##
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_001.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_001.dds" ARRAY_NAME "g_install_001" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_002.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_002.dds" ARRAY_NAME "g_install_002" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_003.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_003.dds" ARRAY_NAME "g_install_003" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_004.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_004.dds" ARRAY_NAME "g_install_004" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_005.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_005.dds" ARRAY_NAME "g_install_005" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_006.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_006.dds" ARRAY_NAME "g_install_006" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_007.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_007.dds" ARRAY_NAME "g_install_007" COMPRESSION_TYPE "zstd")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_008.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_008.dds" ARRAY_NAME "g_install_008" COMPRESSION_TYPE "zstd")
## Game Icon ##
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/game_icon.bmp" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/game_icon.bmp" ARRAY_NAME "g_game_icon")
## Audio ##
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/music/installer.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/music/installer.ogg" ARRAY_NAME "g_installer_music")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/window_open.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/window_open.ogg" ARRAY_NAME "g_window_open")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/window_close.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/window_close.ogg" ARRAY_NAME "g_window_close")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/cursor.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/cursor.ogg" ARRAY_NAME "g_cursor")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/deside.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/deside.ogg" ARRAY_NAME "g_deside")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/move.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/move.ogg" ARRAY_NAME "g_move")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/main_deside.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/main_deside.ogg" ARRAY_NAME "g_main_deside")
BIN2C(TARGET_OBJ MarathonRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/cannot_deside.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/cannot_deside.ogg" ARRAY_NAME "g_cannot_deside")
================================================
FILE: MarathonRecomp/api/Chao/CSD/Core/csdBase.h
================================================
#pragma once
namespace Chao::CSD
{
class CBase {};
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCObject.h
================================================
#pragma once
#include <Chao/CSD/Core/csdRCPtrAbs.h>
namespace Chao::CSD
{
class RCPtrAbs::RCObject
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
be<uint32_t> fpFree;
};
xpointer<Vftable> m_pVftable;
xpointer<void> m_pMemory;
be<uint32_t> m_ReferenceCount;
xpointer<void> m_Field0C;
be<uint32_t> m_Field10;
};
MARATHON_ASSERT_OFFSETOF(RCPtrAbs::RCObject, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(RCPtrAbs::RCObject, m_pMemory, 0x04);
MARATHON_ASSERT_OFFSETOF(RCPtrAbs::RCObject, m_ReferenceCount, 0x08);
MARATHON_ASSERT_OFFSETOF(RCPtrAbs::RCObject, m_Field0C, 0x0C);
MARATHON_ASSERT_OFFSETOF(RCPtrAbs::RCObject, m_Field10, 0x10);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCObjectImp.h
================================================
#pragma once
#include <Chao/CSD/Core/csdRCPtr.h>
namespace Chao::CSD
{
template<typename T>
class RCPtr<T>::RCObjectImp : public RCObject {};
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCPtr.h
================================================
#pragma once
#include <Chao/CSD/Core/csdRCPtrAbs.h>
namespace Chao::CSD
{
template<typename T>
class RCPtr : RCPtrAbs
{
public:
class RCObjectImp;
};
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCPtrAbs.h
================================================
#pragma once
#include <Marathon.inl>
namespace Chao::CSD
{
class RCPtrAbs
{
public:
class RCObject;
struct Vftable
{
be<uint32_t> fpDestroy;
be<uint32_t> fpCreateRCObject;
};
xpointer<Vftable> m_pVftable;
xpointer<RCObject> m_pObject;
};
MARATHON_ASSERT_OFFSETOF(RCPtrAbs, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(RCPtrAbs, m_pObject, 0x04);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Core/csdTexList.h
================================================
#pragma once
#include <Chao/CSD/Core/csdBase.h>
#include <Chao/CSD/Core/csdRCPtr.h>
namespace Chao::CSD
{
class CTexList : public CBase
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
};
xpointer<Vftable> m_pVftable;
RCPtr<uint8_t> m_pRCData;
};
MARATHON_ASSERT_OFFSETOF(CTexList, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(CTexList, m_pRCData, 0x04);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmMotionPattern.h
================================================
#pragma once
#include <Marathon.inl>
namespace Chao::CSD
{
class CMotionPattern : CBase {};
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmNode.h
================================================
#pragma once
#include <Marathon.inl>
#include <Chao/CSD/Core/csdBase.h>
#include <Chao/CSD/Manager/csdmResourceBase.h>
#include <Chao/CSD/Manager/csdmNodeObserver.h>
#include <Chao/CSD/Manager/csdmSubjectBase.h>
namespace Chao::CSD
{
struct Node;
class CNode : public CResourceBase<Node>, SubjectBase<CNodeObserver, CNode>, CBase
{
public:
MARATHON_INSERT_PADDING(0x34);
xpointer<CMotionPattern> m_pMotionPattern;
MARATHON_INSERT_PADDING(0x18);
};
MARATHON_ASSERT_OFFSETOF(CNode, m_pMotionPattern, 0x50);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmNodeObserver.h
================================================
#pragma once
#include <Chao/CSD/Manager/csdmObserverBase.h>
namespace Chao::CSD
{
class CNode;
class CNodeObserver : public CObserverBase<CNode> {};
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmObserverBase.h
================================================
#pragma once
#include <Marathon.inl>
namespace Chao::CSD
{
template<typename TObservee>
class CObserverBase
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
};
xpointer<Vftable> m_pVftable;
MARATHON_INSERT_PADDING(0x0C);
};
MARATHON_ASSERT_OFFSETOF(CObserverBase<void>, m_pVftable, 0x00);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmProject.h
================================================
#pragma once
#include <Marathon.inl>
#include <Chao/CSD/Core/csdBase.h>
#include <Chao/CSD/Manager/csdmResourceBase.h>
namespace Chao::CSD
{
class SceneNode;
class CProject;
class CScene;
class CTexList;
struct Project
{
xpointer<SceneNode> pRootNode;
};
class CProject : public CResourceBase<Project>, CBase
{
public:
MARATHON_INSERT_PADDING(0x1C);
RCPtr<CTexList> m_rcTexList;
MARATHON_INSERT_PADDING(0x1C);
};
MARATHON_ASSERT_OFFSETOF(Project, pRootNode, 0x00);
MARATHON_ASSERT_OFFSETOF(CProject, m_rcTexList, 0x28);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmResourceBase.h
================================================
#pragma once
#include <Chao/CSD/Core/csdRCPtr.h>
namespace Chao::CSD
{
template<typename T>
class CResourceBase
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
be<uint32_t> fpCopyResource;
};
xpointer<Vftable> m_pVftable;
MARATHON_INSERT_PADDING(4);
xpointer<T> m_pResource;
};
MARATHON_ASSERT_OFFSETOF(CResourceBase<void>, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(CResourceBase<void>, m_pResource, 0x08);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmScene.h
================================================
#pragma once
#include <Marathon.inl>
#include <Chao/CSD/Core/csdBase.h>
#include <Chao/CSD/Manager/csdmResourceBase.h>
#include <Chao/CSD/Manager/csdmSceneObserver.h>
#include <Chao/CSD/Manager/csdmSubjectBase.h>
namespace Chao::CSD
{
class CScene;
class CNode;
struct Cast
{
MARATHON_INSERT_PADDING(0x144);
};
struct CastLink
{
be<uint32_t> ChildCastIndex;
be<uint32_t> SiblingCastIndex;
};
struct CastNode
{
be<uint32_t> CastCount;
MARATHON_INSERT_PADDING(4);
xpointer<xpointer<Cast>> pCasts;
MARATHON_INSERT_PADDING(4);
be<uint32_t> RootCastIndex;
MARATHON_INSERT_PADDING(4);
xpointer<CastLink> pCastLinks;
MARATHON_INSERT_PADDING(4);
};
struct CastIndex
{
xpointer<const char> pCastName;
MARATHON_INSERT_PADDING(4);
be<uint32_t> CastNodeIndex;
be<uint32_t> CastIndex;
};
struct Scene
{
MARATHON_INSERT_PADDING(8);
be<float> FPS;
MARATHON_INSERT_PADDING(0x24);
be<uint32_t> CastNodeCount;
MARATHON_INSERT_PADDING(4);
xpointer<CastNode> pCastNodes;
MARATHON_INSERT_PADDING(4);
be<uint32_t> CastCount;
MARATHON_INSERT_PADDING(4);
xpointer<CastIndex> pCastIndices;
MARATHON_INSERT_PADDING(4);
be<uint32_t> AnimationCount;
MARATHON_INSERT_PADDING(4);
xpointer<void> pAnimationKeyFrameDataList;
MARATHON_INSERT_PADDING(4);
xpointer<void> pAnimationDictionary;
MARATHON_INSERT_PADDING(4);
be<float> AspectRatio;
MARATHON_INSERT_PADDING(4);
xpointer<void> pAnimationFrameDataList;
MARATHON_INSERT_PADDING(4);
};
struct SceneIndex
{
xpointer<const char> pSceneName;
MARATHON_INSERT_PADDING(4);
be<uint32_t> SceneIndex;
MARATHON_INSERT_PADDING(4);
};
struct SceneNodeIndex
{
xpointer<const char> pSceneNodeName;
be<uint32_t> SceneNodeIndex;
};
struct SceneNode
{
be<uint32_t> SceneCount;
MARATHON_INSERT_PADDING(4);
xpointer<xpointer<Scene>> pScenes;
MARATHON_INSERT_PADDING(4);
xpointer<SceneIndex> pSceneIndices;
MARATHON_INSERT_PADDING(4);
be<uint32_t> SceneNodeCount;
MARATHON_INSERT_PADDING(4);
xpointer<SceneNode> pSceneNodes;
MARATHON_INSERT_PADDING(4);
xpointer<SceneNodeIndex> pSceneNodeIndices;
};
enum MotionRepeatType : uint32_t
{
MotionRepeatType_PlayOnce,
MotionRepeatType_Loop,
MotionRepeatType_PingPong,
MotionRepeatType_PlayThenDestroy
};
class CScene : public CResourceBase<Scene>, SubjectBase<CSceneObserver, CScene>, CBase
{
public:
MARATHON_INSERT_PADDING(0x60);
be<float> m_PrevMotionFrame;
be<float> m_MotionFrame;
be<float> m_MotionSpeed;
be<float> m_MotionStartFrame;
be<float> m_MotionEndFrame;
MARATHON_INSERT_PADDING(0x0C);
be<uint32_t> m_MotionDisableFlag;
MARATHON_INSERT_PADDING(0x10);
be<MotionRepeatType> m_MotionRepeatType;
MARATHON_INSERT_PADDING(0x2C);
};
MARATHON_ASSERT_OFFSETOF(CastLink, ChildCastIndex, 0x00);
MARATHON_ASSERT_OFFSETOF(CastLink, SiblingCastIndex, 0x04);
MARATHON_ASSERT_OFFSETOF(CastNode, CastCount, 0x00);
MARATHON_ASSERT_OFFSETOF(CastNode, pCasts, 0x08);
MARATHON_ASSERT_OFFSETOF(CastNode, RootCastIndex, 0x10);
MARATHON_ASSERT_OFFSETOF(CastNode, pCastLinks, 0x18);
MARATHON_ASSERT_OFFSETOF(CastIndex, pCastName, 0x00);
MARATHON_ASSERT_OFFSETOF(CastIndex, CastNodeIndex, 0x08);
MARATHON_ASSERT_OFFSETOF(CastIndex, CastIndex, 0x0C);
MARATHON_ASSERT_OFFSETOF(Scene, FPS, 0x08);
MARATHON_ASSERT_OFFSETOF(Scene, CastNodeCount, 0x30);
MARATHON_ASSERT_OFFSETOF(Scene, pCastNodes, 0x38);
MARATHON_ASSERT_OFFSETOF(Scene, CastCount, 0x40);
MARATHON_ASSERT_OFFSETOF(Scene, pCastIndices, 0x48);
MARATHON_ASSERT_OFFSETOF(Scene, AnimationCount, 0x50);
MARATHON_ASSERT_OFFSETOF(Scene, pAnimationKeyFrameDataList, 0x58);
MARATHON_ASSERT_OFFSETOF(Scene, pAnimationDictionary, 0x60);
MARATHON_ASSERT_OFFSETOF(Scene, AspectRatio, 0x68);
MARATHON_ASSERT_OFFSETOF(Scene, pAnimationFrameDataList, 0x70);
MARATHON_ASSERT_OFFSETOF(SceneIndex, pSceneName, 0x00);
MARATHON_ASSERT_OFFSETOF(SceneIndex, SceneIndex, 0x08);
MARATHON_ASSERT_OFFSETOF(SceneNodeIndex, pSceneNodeName, 0x00);
MARATHON_ASSERT_OFFSETOF(SceneNodeIndex, SceneNodeIndex, 0x04);
MARATHON_ASSERT_OFFSETOF(SceneNode, SceneCount, 0x00);
MARATHON_ASSERT_OFFSETOF(SceneNode, pScenes, 0x08);
MARATHON_ASSERT_OFFSETOF(SceneNode, pSceneIndices, 0x10);
MARATHON_ASSERT_OFFSETOF(SceneNode, SceneNodeCount, 0x18);
MARATHON_ASSERT_OFFSETOF(SceneNode, pSceneNodes, 0x20);
MARATHON_ASSERT_OFFSETOF(SceneNode, pSceneNodeIndices, 0x28);
MARATHON_ASSERT_OFFSETOF(CScene, m_PrevMotionFrame, 0x7C);
MARATHON_ASSERT_OFFSETOF(CScene, m_MotionFrame, 0x80);
MARATHON_ASSERT_OFFSETOF(CScene, m_MotionSpeed, 0x84);
MARATHON_ASSERT_OFFSETOF(CScene, m_MotionStartFrame, 0x88);
MARATHON_ASSERT_OFFSETOF(CScene, m_MotionEndFrame, 0x8C);
MARATHON_ASSERT_OFFSETOF(CScene, m_MotionDisableFlag, 0x9C);
MARATHON_ASSERT_OFFSETOF(CScene, m_MotionRepeatType, 0xB0);
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmSceneObserver.h
================================================
#pragma once
#include <Chao/CSD/Manager/csdmObserverBase.h>
namespace Chao::CSD
{
class CScene;
class CSceneObserver : public CObserverBase<CScene> {};
}
================================================
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmSubjectBase.h
================================================
#pragma once
#include <Marathon.inl>
namespace Chao::CSD
{
template<typename TObserver, typename TObservee>
class SubjectBase
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
be<uint32_t> fpGetObservee;
};
xpointer<Vftable> m_pVftable;
MARATHON_INSERT_PADDING(0x0C);
};
static_assert(__builtin_offsetof(SubjectBase<void, void>, m_pVftable) == 0x00);
}
================================================
FILE: MarathonRecomp/api/Marathon.h
================================================
#pragma once
#include "Chao/CSD/Core/csdBase.h"
#include "Chao/CSD/Core/csdRCObject.h"
#include "Chao/CSD/Core/csdRCObjectImp.h"
#include "Chao/CSD/Core/csdRCPtr.h"
#include "Chao/CSD/Core/csdRCPtrAbs.h"
#include "Chao/CSD/Core/csdTexList.h"
#include "Chao/CSD/Manager/csdmMotionPattern.h"
#include "Chao/CSD/Manager/csdmNode.h"
#include "Chao/CSD/Manager/csdmNodeObserver.h"
#include "Chao/CSD/Manager/csdmObserverBase.h"
#include "Chao/CSD/Manager/csdmProject.h"
#include "Chao/CSD/Manager/csdmResourceBase.h"
#include "Chao/CSD/Manager/csdmScene.h"
#include "Chao/CSD/Manager/csdmSceneObserver.h"
#include "Chao/CSD/Manager/csdmSubjectBase.h"
#include "Sonicteam/Actor.h"
#include "Sonicteam/ActorManager.h"
#include "Sonicteam/AlertWindowTask.h"
#include "Sonicteam/AppMarathon.h"
#include "Sonicteam/AudioEngineXenon.h"
#include "Sonicteam/ButtonWindowTask.h"
#include "Sonicteam/CObjBalloonIconDrawable.h"
#include "Sonicteam/Camera/CameraMode.h"
#include "Sonicteam/Camera/CameraModeManager.h"
#include "Sonicteam/Camera/Cameraman.h"
#include "Sonicteam/Camera/SonicCamera.h"
#include "Sonicteam/CommonObjectHint.h"
#include "Sonicteam/CsdLink.h"
#include "Sonicteam/CsdManager.h"
#include "Sonicteam/CsdObject.h"
#include "Sonicteam/CsdResource.h"
#include "Sonicteam/DocMarathonImp.h"
#include "Sonicteam/DocMarathonState.h"
#include "Sonicteam/Enemy/EnemyShot.h"
#include "Sonicteam/Enemy/EnemyShotNormal.h"
#include "Sonicteam/Enemy/EnemyShotPoint.h"
#include "Sonicteam/Fixture.h"
#include "Sonicteam/Game.h"
#include "Sonicteam/GameImp.h"
#include "Sonicteam/GameMode.h"
#include "Sonicteam/Globals.h"
#include "Sonicteam/HUDButtonWindow.h"
#include "Sonicteam/HUDCALLBACK.h"
#include "Sonicteam/HUDGoldMedal.h"
#include "Sonicteam/HUDLimitTime.h"
#include "Sonicteam/HUDLoading.h"
#include "Sonicteam/HUDMainDisplay.h"
#include "Sonicteam/HUDMainMenu.h"
#include "Sonicteam/HUDMessageWindow.h"
#include "Sonicteam/HUDOption.h"
#include "Sonicteam/HUDPopupScreen.h"
#include "Sonicteam/HUDRaderMap.h"
#include "Sonicteam/HUDStageTitle.h"
#include "Sonicteam/HintWindowTask.h"
#include "Sonicteam/HudTextParts.h"
#include "Sonicteam/ImageFilter.h"
#include "Sonicteam/MainDisplayTask.h"
#include "Sonicteam/MainMenuExpositionTask.h"
#include "Sonicteam/MainMenuTask.h"
#include "Sonicteam/MainMode.h"
#include "Sonicteam/Message/Camera/Cameraman/MsgChangeMode.h"
#include "Sonicteam/Message/HUDButtonWindow/MsgChangeButtons.h"
#include "Sonicteam/Message/HUDGoldMedal/MsgChangeState.h"
#include "Sonicteam/Message/HUDMainMenu/MsgChangeState.h"
#include "Sonicteam/Message/HUDMainMenu/MsgSetCursor.h"
#include "Sonicteam/Message/HUDMainMenu/MsgTransition.h"
#include "Sonicteam/Message/Mission/MsgGetGlobalFlag.h"
#include "Sonicteam/Message/ObjJump123/MsgGetNextPoint.h"
#include "Sonicteam/Message/PauseAdapter/MsgGetText.h"
#include "Sonicteam/Message/Player/MsgSuckPlayer.h"
#include "Sonicteam/MessageWindowTask.h"
#include "Sonicteam/Mission/Core.h"
#include "Sonicteam/MovieObject.h"
#include "Sonicteam/MovieObjectWmv.h"
#include "Sonicteam/MovieTask.h"
#include "Sonicteam/MyCue.h"
#include "Sonicteam/MyCueAdx.h"
#include "Sonicteam/MyCueAttenuate.h"
#include "Sonicteam/MyGraphicsDevice.h"
#include "Sonicteam/MyPhantom.h"
#include "Sonicteam/MyRenderProcess.h"
#include "Sonicteam/MyTexture.h"
#include "Sonicteam/MyTransforms.h"
#include "Sonicteam/NamedActor.h"
#include "Sonicteam/NamedTask.h"
#include "Sonicteam/NoSyncThread.h"
#include "Sonicteam/ObjectVehicle.h"
#include "Sonicteam/ObjectVehicleBike.h"
#include "Sonicteam/PauseAdapter.h"
#include "Sonicteam/PauseTask.h"
#include "Sonicteam/Player/GroundRayListener.h"
#include "Sonicteam/Player/ICollisionListener.h"
#include "Sonicteam/Player/ICollisionListenerTemplate.h"
#include "Sonicteam/Player/IDynamicLink.h"
#include "Sonicteam/Player/IEventerListener.h"
#include "Sonicteam/Player/IExportExternalFlag.h"
#include "Sonicteam/Player/IExportPostureRequestFlag.h"
#include "Sonicteam/Player/IExportWeaponRequestFlag.h"
#include "Sonicteam/Player/IFlagCommunicator.h"
#include "Sonicteam/Player/IGauge.h"
#include "Sonicteam/Player/INotification.h"
#include "Sonicteam/Player/IPlugIn.h"
#include "Sonicteam/Player/IPostureControl.h"
#include "Sonicteam/Player/IPosturePlugIn.h"
#include "Sonicteam/Player/IPostureSupportEdge.h"
#include "Sonicteam/Player/IPostureSupportInput.h"
#include "Sonicteam/Player/IPostureSupportOttoto.h"
#include "Sonicteam/Player/IPostureSupportRayTemplate.h"
#include "Sonicteam/Player/IPostureSupportSphere.h"
#include "Sonicteam/Player/IScore.h"
#include "Sonicteam/Player/IStepable.h"
#include "Sonicteam/Player/IVariable.h"
#include "Sonicteam/Player/IZock.h"
#include "Sonicteam/Player/Input/IListener.h"
#include "Sonicteam/Player/Input/ListenerNormal.h"
#include "Sonicteam/Player/Input/TimedAction.h"
#include "Sonicteam/Player/Object.h"
#include "Sonicteam/Player/PostureControl.h"
#include "Sonicteam/Player/RootFrame.h"
#include "Sonicteam/Player/Score.h"
#include "Sonicteam/Player/SonicGauge.h"
#include "Sonicteam/Player/State/CommonContext.h"
#include "Sonicteam/Player/State/CommonFall.h"
#include "Sonicteam/Player/State/CommonObject.h"
#include "Sonicteam/Player/State/ContextSpeedAndJump.h"
#include "Sonicteam/Player/State/ICommonContext.h"
#include "Sonicteam/Player/State/ICommonContextIF.h"
#include "Sonicteam/Player/State/IContext.h"
#include "Sonicteam/Player/State/IMachine.h"
#include "Sonicteam/Player/State/Machine2.h"
#include "Sonicteam/Player/State/Object2.h"
#include "Sonicteam/Player/State/SonicContext.h"
#include "Sonicteam/Player/State/SonicObject.h"
#include "Sonicteam/Player/State/TailsContext.h"
#include "Sonicteam/Player/State/TailsFlight.h"
#include "Sonicteam/Player/Unit/ITestCase.h"
#include "Sonicteam/Player/Weapon/SonicWeapons.h"
#include "Sonicteam/Player/Zock.h"
#include "Sonicteam/PropFixture.h"
#include "Sonicteam/RaderMapManager.h"
#include "Sonicteam/RenderAction/ApplyBloom.h"
#include "Sonicteam/RenderAction/ApplyDevice.h"
#include "Sonicteam/RenderAction/ApplySceneParams.h"
#include "Sonicteam/RenderAction/AutoSetAspect.h"
#include "Sonicteam/RenderAction/Capture.h"
#include "Sonicteam/RenderAction/ClearRenderTarget.h"
#include "Sonicteam/RenderAction/ColorFill.h"
#include "Sonicteam/RenderAction/CopyTexture.h"
#include "Sonicteam/RenderAction/LockBlendMode.h"
#include "Sonicteam/RenderAction/LockCullMode.h"
#include "Sonicteam/RenderAction/LockZMode.h"
#include "Sonicteam/RenderAction/MakeBloom.h"
#include "Sonicteam/RenderAction/Movie.h"
#include "Sonicteam/RenderAction/PrepareCalculateCSM.h"
#include "Sonicteam/RenderAction/Rasterize.h"
#include "Sonicteam/RenderAction/RasterizeBurnoutBlur.h"
#include "Sonicteam/RenderAction/ResetRenderStates.h"
#include "Sonicteam/RenderAction/ResetScissorRect.h"
#include "Sonicteam/RenderAction/ResetViewport.h"
#include "Sonicteam/RenderAction/Resolve.h"
#include "Sonicteam/RenderAction/RunCommandBuffer.h"
#include "Sonicteam/RenderAction/SetAutoZPass.h"
#include "Sonicteam/RenderAction/SetBackStencilOp.h"
#include "Sonicteam/RenderAction/SetBlendMode.h"
#include "Sonicteam/RenderAction/SetCSMTextures.h"
#include "Sonicteam/RenderAction/SetClip.h"
#include "Sonicteam/RenderAction/SetColorWriteEnable.h"
#include "Sonicteam/RenderAction/SetConstantShader.h"
#include "Sonicteam/RenderAction/SetCullMode.h"
#include "Sonicteam/RenderAction/SetCurrentScreen.h"
#include "Sonicteam/RenderAction/SetDepthTextures.h"
#include "Sonicteam/RenderAction/SetFovY.h"
#include "Sonicteam/RenderAction/SetFrameBufferObject.h"
#include "Sonicteam/RenderAction/SetReflectionTextures.h"
#include "Sonicteam/RenderAction/SetScissorRect.h"
#include "Sonicteam/RenderAction/SetScissorTest.h"
#include "Sonicteam/RenderAction/SetScreen.h"
#include "Sonicteam/RenderAction/SetShaderGPRAllocation.h"
#include "Sonicteam/RenderAction/SetStencilEnable.h"
#include "Sonicteam/RenderAction/SetStencilFunc.h"
#include "Sonicteam/RenderAction/SetStencilOp.h"
#include "Sonicteam/RenderAction/SetStencilWriteMask.h"
#include "Sonicteam/RenderAction/SetTexture.h"
#include "Sonicteam/RenderAction/SetUserClipPlaneEnable.h"
#include "Sonicteam/RenderAction/SetViewport.h"
#include "Sonicteam/RenderAction/SetZMode.h"
#include "Sonicteam/RenderPostprocess.h"
#include "Sonicteam/SaveDataTask.h"
#include "Sonicteam/SaveDataTaskXENON.h"
#include "Sonicteam/SelectWindowTask.h"
#include "Sonicteam/SoX/AI/StateMachine.h"
#include "Sonicteam/SoX/ApplicationXenon.h"
#include "Sonicteam/SoX/Audio/Cue.h"
#include "Sonicteam/SoX/Audio/IAudioEngine.h"
#include "Sonicteam/SoX/Audio/Player.h"
#include "Sonicteam/SoX/Audio/PlayerImpl.h"
#include "Sonicteam/SoX/Component.h"
#include "Sonicteam/SoX/Engine/Application.h"
#include "Sonicteam/SoX/Engine/Doc.h"
#include "Sonicteam/SoX/Engine/DocMode.h"
#include "Sonicteam/SoX/Engine/RenderProcess.h"
#include "Sonicteam/SoX/Engine/Task.h"
#include "Sonicteam/SoX/Graphics/Device.h"
#include "Sonicteam/SoX/Graphics/Frame.h"
#include "Sonicteam/SoX/Graphics/FrameGP.h"
#include "Sonicteam/SoX/Graphics/FrameObserver.h"
#include "Sonicteam/SoX/Graphics/Technique.h"
#include "Sonicteam/SoX/Graphics/TechniqueFXL.h"
#include "Sonicteam/SoX/Graphics/Transforms.h"
#include "Sonicteam/SoX/Graphics/Vertex.h"
#include "Sonicteam/SoX/Graphics/Xenon/DeviceXenon.h"
#include "Sonicteam/SoX/Graphics/Xenon/TextureXenon.h"
#include "Sonicteam/SoX/IResource.h"
#include "Sonicteam/SoX/IResource2.h"
#include "Sonicteam/SoX/IResourceMgr.h"
#include "Sonicteam/SoX/Input/Manager.h"
#include "Sonicteam/SoX/LinkNode.h"
#include "Sonicteam/SoX/Math/Matrix.h"
#include "Sonicteam/SoX/Math/Quaternion.h"
#include "Sonicteam/SoX/Math/Vector.h"
#include "Sonicteam/SoX/Message.h"
#include "Sonicteam/SoX/MessageReceiver.h"
#include "Sonicteam/SoX/Object.h"
#include "Sonicteam/SoX/Physics/Entity.h"
#include "Sonicteam/SoX/Physics/Havok/EntityHavok.h"
#include "Sonicteam/SoX/Physics/Havok/EntityHavokImp.h"
#include "Sonicteam/SoX/Physics/Havok/PhantomHavok.h"
#include "Sonicteam/SoX/Physics/Havok/WorldHavok.h"
#include "Sonicteam/SoX/Physics/IntersectEvent.h"
#include "Sonicteam/SoX/Physics/IntersectListener.h"
#include "Sonicteam/SoX/Physics/Phantom.h"
#include "Sonicteam/SoX/Physics/PhantomListener.h"
#include "Sonicteam/SoX/Physics/Shape.h"
#include "Sonicteam/SoX/Physics/ShapeCastEvent.h"
#include "Sonicteam/SoX/Physics/ShapeCastListener.h"
#include "Sonicteam/SoX/Physics/World.h"
#include "Sonicteam/SoX/RefCountObject.h"
#include "Sonicteam/SoX/RefSharedPointer.h"
#include "Sonicteam/SoX/Scenery/Camera.h"
#include "Sonicteam/SoX/Scenery/CameraEventCallback.h"
#include "Sonicteam/SoX/Scenery/CameraImp.h"
#include "Sonicteam/SoX/Scenery/Drawable.h"
#include "Sonicteam/SoX/Thread.h"
#include "Sonicteam/StdImageFilters/BurnoutBlurFilter.h"
#include "Sonicteam/StdImageFilters/SingleTechniqueFilter.h"
#include "Sonicteam/System/CreateStatic.h"
#include "Sonicteam/System/Diagnostics/Performance.h"
#include "Sonicteam/System/Singleton.h"
#include "Sonicteam/TextBook.h"
#include "Sonicteam/TextBookMgr.h"
#include "Sonicteam/TextCard.h"
#include "Sonicteam/TextEntity.h"
#include "Sonicteam/TextFontPicture.h"
#include "Sonicteam/TextFontPictureMgr.h"
#include "Sonicteam/TitleTask.h"
#include "Sonicteam/VehicleMissileCtrl.h"
#include "Sonicteam/VehicleMissileCtrlAutomatic.h"
#include "Sonicteam/VehicleMissileCtrlSingle.h"
#include "Sonicteam/WorldRenderProcess.h"
#include "Sonicteam/sonicXmaPlayer.h"
#include "boost/smart_ptr/make_shared_object.h"
#include "boost/smart_ptr/shared_ptr.h"
#include "d3dxb.h"
#include "hk330/hkArray.h"
#include "hk330/hkReferencedObject.h"
#include "hk330/hkpBroadPhaseHandle.h"
#include "hk330/hkpCdBody.h"
#include "hk330/hkpCollidable.h"
#include "hk330/hkpCollidableCollidableFilter.h"
#include "hk330/hkpCollisionFilter.h"
#include "hk330/hkpEntity.h"
#include "hk330/hkpLinkedCollidable.h"
#include "hk330/hkpPhantom.h"
#include "hk330/hkpProperty.h"
#include "hk330/hkpRayCollidableFilter.h"
#include "hk330/hkpRayShapeCollectionFilter.h"
#include "hk330/hkpRigidBody.h"
#include "hk330/hkpShape.h"
#include "hk330/hkpShapeCollectionFilter.h"
#include "hk330/hkpTypedBroadPhaseHandle.h"
#include "hk330/hkpWorld.h"
#include "hk330/hkpWorldObject.h"
#include "stdx/string.h"
#include "stdx/vector.h"
#include "stdx/wstring.h"
================================================
FILE: MarathonRecomp/api/Marathon.inl
================================================
#pragma once
#include <cpu/guest_stack_var.h>
#include <kernel/function.h>
constexpr float RAD2DEGf = 57.2958f;
constexpr float DEG2RADf = 0.0174533f;
constexpr double RAD2DEG = 57.29578018188477;
constexpr double DEG2RAD = 0.01745329238474369;
#define MARATHON_CONCAT2(x, y) x##y
#define MARATHON_CONCAT(x, y) MARATHON_CONCAT2(x, y)
#define MARATHON_INSERT_PADDING(length) \
uint8_t MARATHON_CONCAT(pad, __LINE__)[length]
#define MARATHON_ASSERT_OFFSETOF(type, field, offset) \
static_assert(offsetof(type, field) == offset)
#define MARATHON_ASSERT_SIZEOF(type, size) \
static_assert(sizeof(type) == size)
#define MARATHON_VIRTUAL_FUNCTION(returnType, virtualIndex, ...) \
GuestToHostFunction<returnType>(*(be<uint32_t>*)(g_memory.Translate(*(be<uint32_t>*)(this) + (4 * virtualIndex))), __VA_ARGS__)
struct marathon_null_ctor {};
inline std::vector<std::string_view> ParseTextVariables(const char* pVariables)
{
std::vector<std::string_view> result{};
if (!pVariables)
return result;
auto start = pVariables;
auto ptr = pVariables;
auto depth = 0;
while (*ptr)
{
if (*ptr == '(')
{
depth++;
}
else if (*ptr == ')')
{
depth--;
}
else if (*ptr == ',' && !depth)
{
result.emplace_back(start, ptr - start);
start = ptr + 1;
}
++ptr;
}
if (ptr != start)
result.emplace_back(start, ptr - start);
return result;
}
inline std::vector<std::pair<std::string_view, std::string_view>> MapTextVariables(const char* pVariables)
{
std::vector<std::pair<std::string_view, std::string_view>> result{};
if (!pVariables)
return result;
auto variables = ParseTextVariables(pVariables);
for (auto& variable : variables)
{
auto open = variable.find('(');
auto close = variable.find(')');
if (open != std::string_view::npos && close != std::string_view::npos && close > open)
{
auto type = variable.substr(0, open);
auto value = variable.substr(open + 1, close - open - 1);
result.emplace_back(type, value);
}
else
{
result.emplace_back(variable, std::string_view{});
}
}
return result;
}
inline size_t strlenU16(const uint16_t* str)
{
size_t result = 0;
uint16_t c = 0xFFFF;
while (c != 0)
{
c = str[result];
result++;
}
return result;
}
inline bool strcmpU16(const uint16_t* a, const uint16_t* b, bool endianSwapA = false, bool endianSwapB = false)
{
for (size_t i = 0; i < strlenU16(a); i += 2)
{
auto c1 = endianSwapA ? ByteSwap(a[i]) : a[i];
auto c2 = endianSwapB ? ByteSwap(b[i]) : b[i];
if (c1 != 0 && c2 == 0)
return false;
if (c1 == 0 && c2 != 0)
return false;
if (c1 != c2)
return false;
}
return true;
}
inline void printU16(const uint16_t* str, bool endianSwap = false)
{
for (size_t i = 0; i < strlenU16(str); i++)
{
auto c0 = endianSwap ? ByteSwap(str[i]) >> 8 : str[i] >> 8;
auto c1 = endianSwap ? ByteSwap(str[i]) & 0xFF : str[i] & 0xFF;
printf("%c%c", c0, c1);
}
printf("\n");
}
================================================
FILE: MarathonRecomp/api/README.md
================================================
# Marathon
## Contribution Guide
### Naming Conventions
- Use `camelCase` for local variables, `SNAKE_CASE` for preprocessor macros, and `PascalCase` for everything else. Marathon-specific types that don't exist in the game should use `snake_case` for better differentiation.
- Class members should be prefixed with `m_`, e.g., `m_Time`. Do not use this prefix for struct members.
- Pointers should be prefixed with `p`, e.g., `pSonicContext`.
- Shared pointers should be prefixed with `sp`, e.g., `spDatabase`.
- References should be prefixed with `r`, e.g., `rMessage`.
- Static members outside a class should be prefixed with `g_`, e.g., `g_AllocationTracker`.
- Marathon-specific preprocessor macros should start with `MARATHON_`, e.g., `MARATHON_INSERT_PADDING`.
- Function pointers should be prefixed with `fp`, e.g., `fpCGameObjectConstructor`.
Combine prefixes as necessary, e.g., `m_sp` for a shared pointer as a class member.
### Coding Style
- Always place curly brackets on a new line.
- Prefer forward declaring types over including their respective headers.
- Use <> includes relative to the project's root directory path.
- Use C++17's nested namespace feature instead of defining multiple namespaces on separate lines.
- Enum classes are prohibited as they were not available when the game was developed.
- Avoid placing function definitions in .h files, instead, implement functions in the header's respective .inl file, similar to a .cpp file.
- Ensure that all class members are declared as public. Even if you suspect that a class member was private in the original code, having it public is more convenient in a modding API.
- Avoid placing multiple class definitions in a single header file unless you have a good reason to do so.
- Keep function pointers or addresses outside functions, define them as global variables in the corresponding .inl file. Mark these global variables as `inline` and never nest them within class definitions. You do not need to use the `g_` prefix for function pointers, `fp` is sufficient.
- Use primitive types defined in `cstdint` instead of using types that come with the language, e.g., use `uint32_t` instead of `unsigned int`. Using `float`, `double` and `bool` is okay.
### Mapping Rules
- Always include the corresponding `offsetof`/`sizeof` assertions for mapped classes/structs. If you are uncertain about the type's size, you can omit the `sizeof` assertion.
- Use the exact type name from the game if it's available through RTTI, otherwise, you can look for shared pointers that may reveal the original type name.
- If you are unsure about the name of a class/struct member, use `Field` followed by the hexadecimal byte offset (e.g., `m_Field194`). Avoid names like `m_StoresThisThingMaybe`, you can write comments next to the definition for speculations.
- If a portion of the byte range is irrelevant to your research or not mapped yet, use the `MARATHON_INSERT_PADDING` macro to align class/struct members correctly.
- When the class has a virtual function table, if you don't want to map every function in it, you can map only the virtual destructor.
- The original file locations are likely available in the executable file as assertion file paths. If you cannot find the file path, use your intuition to place the file in a sensible place.
================================================
FILE: MarathonRecomp/api/Sonicteam/Actor.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Engine/Task.h>
namespace Sonicteam
{
class Actor : public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(8); // boost::weak_ptr<Sonicteam::GameImp> GameImp;
be<uint32_t> m_ActorID;
};
MARATHON_ASSERT_OFFSETOF(Actor, m_ActorID, 0x54);
MARATHON_ASSERT_SIZEOF(Actor, 0x58);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/ActorManager.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Actor.h>
namespace Sonicteam
{
class ActorManager
{
public:
be<uint32_t> m_aActorIDs[0xFFFF];
xpointer<Actor> m_aActors[0xFFFF];
be<uint32_t> m_LastActorID;
be<uint32_t> m_LastActorIndex;
MARATHON_INSERT_PADDING(4);
};
MARATHON_ASSERT_OFFSETOF(ActorManager, m_aActorIDs, 0x00);
MARATHON_ASSERT_OFFSETOF(ActorManager, m_aActors, 0x3FFFC);
MARATHON_ASSERT_OFFSETOF(ActorManager, m_LastActorID, 0x7FFF8);
MARATHON_ASSERT_OFFSETOF(ActorManager, m_LastActorIndex, 0x7FFFC);
MARATHON_ASSERT_SIZEOF(ActorManager, 0x80004);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/AlertWindowTask.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/SelectWindowTask.h>
namespace Sonicteam
{
class AlertWindowTask : public SoX::Engine::Task
{
public:
be<uint32_t> m_HasSelectWindow;
MARATHON_INSERT_PADDING(0x2C);
be<uint32_t> m_Operation;
MARATHON_INSERT_PADDING(0x14);
boost::anonymous_shared_ptr m_aspOptions[3];
MARATHON_INSERT_PADDING(4);
be<uint32_t> m_OptionCount;
xpointer<SelectWindowTask> m_pSelectWindowTask;
};
MARATHON_ASSERT_OFFSETOF(AlertWindowTask, m_HasSelectWindow, 0x4C);
MARATHON_ASSERT_OFFSETOF(AlertWindowTask, m_Operation, 0x7C);
MARATHON_ASSERT_OFFSETOF(AlertWindowTask, m_aspOptions, 0x94);
MARATHON_ASSERT_OFFSETOF(AlertWindowTask, m_OptionCount, 0xB0);
MARATHON_ASSERT_OFFSETOF(AlertWindowTask, m_pSelectWindowTask, 0xB4);
MARATHON_ASSERT_SIZEOF(AlertWindowTask, 0xB8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/AppMarathon.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/ApplicationXenon.h>
#include <Sonicteam/DocMarathonState.h>
#include <Sonicteam/GameMode.h>
namespace Sonicteam
{
class AppMarathon : public SoX::ApplicationXenon
{
public:
xpointer<DocMarathonState> m_pDoc;
static AppMarathon* GetInstance();
GameImp* GetGame() const
{
if (auto pGameMode = m_pDoc->GetDocMode<Sonicteam::GameMode>())
return pGameMode->GetGame();
return nullptr;
}
};
MARATHON_ASSERT_OFFSETOF(AppMarathon, m_pDoc, 0x180);
}
#include <Sonicteam/AppMarathon.inl>
================================================
FILE: MarathonRecomp/api/Sonicteam/AppMarathon.inl
================================================
namespace Sonicteam
{
inline AppMarathon* AppMarathon::GetInstance()
{
return *(xpointer<AppMarathon>*)MmGetHostAddress(0x82D3B348);
}
}
================================================
FILE: MarathonRecomp/api/Sonicteam/AudioEngineXenon.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Engine/Doc.h>
#include <Sonicteam/SoX/Audio/IAudioEngine.h>
#include <Sonicteam/System/CreateStatic.h>
#include <Sonicteam/System/Singleton.h>
namespace Sonicteam
{
class AudioEngineXenon : public SoX::Audio::IAudioEngine, public System::Singleton<AudioEngineXenon, 0x82D37AC8, System::CreateStatic<AudioEngineXenon, 0x824A5C78>>
{
public:
MARATHON_INSERT_PADDING(8);
be<float> m_MusicVolume;
be<float> m_EffectsVolume;
MARATHON_INSERT_PADDING(0x18);
};
MARATHON_ASSERT_OFFSETOF(AudioEngineXenon, m_MusicVolume, 0x0C);
MARATHON_ASSERT_OFFSETOF(AudioEngineXenon, m_EffectsVolume, 0x10);
MARATHON_ASSERT_SIZEOF(AudioEngineXenon, 0x2C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/ButtonWindowTask.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/HUDButtonWindow.h>
namespace Sonicteam
{
class ButtonWindowTask : public SoX::Engine::Task
{
public:
xpointer<HUDButtonWindow> m_pHUDButtonWindow;
MARATHON_INSERT_PADDING(8);
};
MARATHON_ASSERT_OFFSETOF(ButtonWindowTask, m_pHUDButtonWindow, 0x4C);
MARATHON_ASSERT_SIZEOF(ButtonWindowTask, 0x58);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/CObjBalloonIconDrawable.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Scenery/Drawable.h>
#include <Sonicteam/MyGraphicsDevice.h>
namespace Sonicteam
{
class CObjBalloonIconDrawable : public SoX::Scenery::Drawable
{
public:
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
MARATHON_INSERT_PADDING(0x24);
SoX::Graphics::Vertex m_aVertices[4]; // BL, TL, BR, TR
MARATHON_INSERT_PADDING(0x18);
};
MARATHON_ASSERT_OFFSETOF(CObjBalloonIconDrawable, m_pMyGraphicsDevice, 0x70);
MARATHON_ASSERT_OFFSETOF(CObjBalloonIconDrawable, m_aVertices, 0x98);
MARATHON_ASSERT_SIZEOF(CObjBalloonIconDrawable, 0x1A0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Camera/CameraMode.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/SoX/MessageReceiver.h>
#include <Sonicteam/GameImp.h>
namespace Sonicteam::Camera
{
class CameraMode : public SoX::MessageReceiver
{
public:
boost::shared_ptr<Game> m_spGame;
xpointer<void> m_pCameraInputListener;
MARATHON_INSERT_PADDING(0x18);
GameImp* GetGame() const
{
return (GameImp*)m_spGame.get();
}
};
MARATHON_ASSERT_OFFSETOF(CameraMode, m_spGame, 0x04);
MARATHON_ASSERT_OFFSETOF(CameraMode, m_pCameraInputListener, 0x0C);
MARATHON_ASSERT_SIZEOF(CameraMode, 0x28);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Camera/CameraModeManager.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/Camera/Cameraman.h>
#include <Sonicteam/Camera/CameraMode.h>
namespace Sonicteam::Camera
{
class CameraModeManager
{
public:
// TODO: research these fields (processed by 0x8218C100).
struct UnknownStruct
{
MARATHON_INSERT_PADDING(0x14);
};
xpointer<Cameraman> m_pCameraman;
boost::shared_ptr<CameraMode> m_spCameraMode;
MARATHON_INSERT_PADDING(8);
stdx::vector<UnknownStruct> m_vUnkStructs;
MARATHON_INSERT_PADDING(4);
};
MARATHON_ASSERT_OFFSETOF(CameraModeManager, m_pCameraman, 0x00);
MARATHON_ASSERT_OFFSETOF(CameraModeManager, m_spCameraMode, 0x04);
MARATHON_ASSERT_OFFSETOF(CameraModeManager, m_vUnkStructs, 0x14);
MARATHON_ASSERT_SIZEOF(CameraModeManager, 0x28);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Camera/Cameraman.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
namespace Sonicteam::Camera
{
class CameraModeManager;
class Cameraman : public Actor
{
public:
MARATHON_INSERT_PADDING(0x24);
boost::shared_ptr<CameraModeManager> m_spCameraModeManager;
MARATHON_INSERT_PADDING(0x2C);
be<float> m_FOV;
MARATHON_INSERT_PADDING(0x0C);
};
MARATHON_ASSERT_OFFSETOF(Cameraman, m_spCameraModeManager, 0x7C);
MARATHON_ASSERT_OFFSETOF(Cameraman, m_FOV, 0xB0);
MARATHON_ASSERT_SIZEOF(Cameraman, 0xC0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Camera/SonicCamera.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Camera
{
class SonicCamera : public CameraMode
{
public:
MARATHON_INSERT_PADDING(4);
xpointer<DocMarathonState> m_pDoc;
MARATHON_INSERT_PADDING(0x14);
be<float> m_SpringK;
be<float> m_DampingK;
be<float> m_AzDamping;
be<float> m_AltDamping;
be<float> m_AzDriveK;
be<float> m_AzDampingK;
be<float> m_AltDriveK;
be<float> m_AltDampingK;
MARATHON_INSERT_PADDING(0x3C);
be<float> m_FovY;
MARATHON_INSERT_PADDING(0x3C);
be<float> m_Distance;
MARATHON_INSERT_PADDING(0x0C);
};
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_pDoc, 0x2C);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_SpringK, 0x44);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_DampingK, 0x48);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_AzDamping, 0x4C);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_AltDamping, 0x50);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_AzDriveK, 0x54);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_AzDampingK, 0x58);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_AltDriveK, 0x5C);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_AltDampingK, 0x60);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_FovY, 0xA0);
MARATHON_ASSERT_OFFSETOF(SonicCamera, m_Distance, 0xE0);
MARATHON_ASSERT_SIZEOF(SonicCamera, 0xF0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/CommonObjectHint.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/PropFixture.h>
namespace Sonicteam
{
class CommonObjectHint : public PropFixture
{
public:
enum CommonObjectHintType : uint32_t
{
CommonObjectHintType_HintRing,
CommonObjectHintType_HintVolume
};
MARATHON_INSERT_PADDING(4);
char m_MessageName[20];
MARATHON_INSERT_PADDING(0x40);
be<CommonObjectHintType> m_Type;
bool m_IsFastAnim;
bool m_IsHitAnim;
MARATHON_INSERT_PADDING(2);
be<float> m_HitTime;
MARATHON_INSERT_PADDING(0x10);
};
MARATHON_ASSERT_OFFSETOF(CommonObjectHint, m_MessageName, 0x184);
MARATHON_ASSERT_OFFSETOF(CommonObjectHint, m_Type, 0x1D8);
MARATHON_ASSERT_OFFSETOF(CommonObjectHint, m_IsFastAnim, 0x1DC);
MARATHON_ASSERT_OFFSETOF(CommonObjectHint, m_IsHitAnim, 0x1DD);
MARATHON_ASSERT_OFFSETOF(CommonObjectHint, m_HitTime, 0x1E0);
MARATHON_ASSERT_SIZEOF(CommonObjectHint, 0x200);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/CsdLink.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class CsdLink
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
MARATHON_INSERT_PADDING(4);
be<uint32_t> fpUpdate;
};
xpointer<Vftable> m_pVftable;
xpointer<CsdLink> m_pNext;
xpointer<CsdLink> m_pPrevious;
be<float> m_Priority;
MARATHON_INSERT_PADDING(8);
void* Destroy(uint32_t flags = 1)
{
return GuestToHostFunction<void*>(m_pVftable->fpDestroy.get(), this, flags);
}
int Update(double deltaTime = 0.0)
{
return GuestToHostFunction<int>(m_pVftable->fpUpdate.get(), this, deltaTime);
}
};
MARATHON_ASSERT_OFFSETOF(CsdLink, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(CsdLink, m_pNext, 0x04);
MARATHON_ASSERT_OFFSETOF(CsdLink, m_pPrevious, 0x08);
MARATHON_ASSERT_OFFSETOF(CsdLink, m_Priority, 0x0C);
MARATHON_ASSERT_SIZEOF(CsdLink, 0x18);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/CsdManager.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/IResourceMgr.h>
#include <Sonicteam/System/CreateStatic.h>
#include <Sonicteam/System/Singleton.h>
namespace Sonicteam
{
class CsdManager : public SoX::IResourceMgr, public System::Singleton<CsdManager, 0x82D3BC58, System::CreateStatic<CsdManager, 0x825E9530>>
{
public:
MARATHON_INSERT_PADDING(0x1C);
};
MARATHON_ASSERT_SIZEOF(CsdManager, 0x2C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/CsdObject.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/RefCountObject.h>
#include <Sonicteam/CsdLink.h>
#include <Sonicteam/CsdResource.h>
namespace Sonicteam
{
class CsdObject : public SoX::RefCountObject, public CsdLink
{
public:
MARATHON_INSERT_PADDING(4);
xpointer<Chao::CSD::CProject> m_pCsdProject;
xpointer<CsdResource> m_pCsdResource;
};
MARATHON_ASSERT_OFFSETOF(CsdObject, m_pCsdProject, 0x24);
MARATHON_ASSERT_OFFSETOF(CsdObject, m_pCsdResource, 0x28);
MARATHON_ASSERT_SIZEOF(CsdObject, 0x2C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/CsdResource.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/IResource2.h>
#include <Sonicteam/CsdManager.h>
namespace Sonicteam
{
class CsdResource : public SoX::IResource2<CsdResource, CsdManager>
{
public:
MARATHON_INSERT_PADDING(4);
};
MARATHON_ASSERT_SIZEOF(CsdResource, 0x68);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/DocMarathonImp.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Engine/Doc.h>
#include <Sonicteam/SoX/Input/Manager.h>
#include <boost/smart_ptr/shared_ptr.h>
#include <api/stdx/vector.h>
namespace Sonicteam
{
class DocMarathonImp : public SoX::Engine::Doc
{
public:
MARATHON_INSERT_PADDING(0x40);
stdx::vector<boost::shared_ptr<SoX::Input::Manager>> m_vspInputManager;
MARATHON_INSERT_PADDING(0x24);
bool m_VFrame;
MARATHON_INSERT_PADDING(0x55B58);
be<uint32_t> m_aPadIDs[4];
MARATHON_INSERT_PADDING(0x2C);
};
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_vspInputManager, 0x9C);
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_VFrame, 0xD0);
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_aPadIDs, 0x55C2C);
MARATHON_ASSERT_SIZEOF(DocMarathonImp, 0x55C68);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/DocMarathonState.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/DocMarathonImp.h>
namespace Sonicteam
{
class DocMarathonState : public DocMarathonImp {};
MARATHON_ASSERT_SIZEOF(DocMarathonState, 0x55C68);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Enemy/EnemyShot.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Enemy
{
class EnemyShot : public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(0x1C);
};
MARATHON_ASSERT_SIZEOF(EnemyShot, 0x68);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Enemy/EnemyShotNormal.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Enemy/EnemyShotPoint.h>
namespace Sonicteam::Enemy
{
class EnemyShotNormal : public EnemyShotPoint {};
MARATHON_ASSERT_SIZEOF(EnemyShotNormal, 0x160);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Enemy/EnemyShotPoint.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/MyPhantom.h>
#include <Sonicteam/SoX/RefCountObject.h>
#include <Sonicteam/SoX/RefSharedPointer.h>
namespace Sonicteam::Enemy
{
class EnemyShotPoint : public EnemyShot
{
public:
MARATHON_INSERT_PADDING(0x20);
SoX::RefSharedPointer<MyPhantom> m_spPhantom;
MARATHON_INSERT_PADDING(0xD4);
};
MARATHON_ASSERT_OFFSETOF(EnemyShotPoint, m_spPhantom, 0x88);
MARATHON_ASSERT_SIZEOF(EnemyShotPoint, 0x160);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Fixture.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Actor.h>
#include <Sonicteam/SoX/Math/Quaternion.h>
#include <Sonicteam/SoX/Math/Vector.h>
namespace Sonicteam
{
class Fixture : public Actor
{
public:
SoX::Math::Quaternion m_Rotation;
SoX::Math::Vector m_Position;
MARATHON_INSERT_PADDING(0xF0);
};
MARATHON_ASSERT_OFFSETOF(Fixture, m_Rotation, 0x60);
MARATHON_ASSERT_OFFSETOF(Fixture, m_Position, 0x70);
MARATHON_ASSERT_SIZEOF(Fixture, 0x170);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Game.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class Game : public SoX::MessageReceiver {};
MARATHON_ASSERT_SIZEOF(Game, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/GameImp.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/Mission/Core.h>
#include <Sonicteam/SoX/Audio/Cue.h>
#include <Sonicteam/SoX/Physics/World.h>
#include <Sonicteam/SoX/Scenery/Camera.h>
#include <Sonicteam/SoX/Scenery/CameraImp.h>
#include <Sonicteam/SoX/RefSharedPointer.h>
#include <Sonicteam/Game.h>
#include <Sonicteam/TextBook.h>
#include <stdx/vector.h>
namespace Sonicteam
{
class ActorManager;
class GameScript;
class GameImp : public Game
{
public:
enum GameState : uint32_t
{
GameState_MainMenu,
GameState_Stage,
GameState_Event,
GameState_Movie,
GameState_Result,
GameState_Message,
GameState_6,
GameState_Save,
GameState_ReturnToMainMenu
};
enum GameFlags : uint32_t
{
GameFlags_RestartArea1 = 1,
GameFlags_RestartArea2 = 0x200,
GameFlags_IsPaused = 0x1000,
GameFlags_LoadArea1 = 0x40000,
GameFlags_LoadArea2 = 0x200000
};
struct PlayerData
{
be<uint32_t> ActorID;
be<uint32_t> RingCount;
MARATHON_INSERT_PADDING(4);
be<uint32_t> LifeCount;
be<uint32_t> ScoreCount;
be<float> AliveTime;
be<float> Time;
MARATHON_INSERT_PADDING(4);
be<float> SectionTime;
be<float> GaugeValue;
be<uint32_t> MaturityLevel;
be<float> MaturityValue;
MARATHON_INSERT_PADDING(4);
be<uint32_t> ExtendRingCount;
be<uint32_t> GemIndex;
MARATHON_INSERT_PADDING(0x10);
};
MARATHON_INSERT_PADDING(4);
be<GameState> m_State;
xpointer<DocMarathonState> m_pDoc;
be<GameFlags> m_Flags;
MARATHON_INSERT_PADDING(0xE2C);
PlayerData m_PlayerData[4];
MARATHON_INSERT_PADDING(0x200);
bool m_IsStage;
MARATHON_INSERT_PADDING(0x0C);
be<uint32_t> m_Field1180;
xpointer<GameScript> m_pGameScript;
be<uint32_t> m_aObjPlayerActorID[0x0F];
boost::shared_ptr<ActorManager> m_spActorManager;
xpointer<TextBook> m_pSystemTextBook;
MARATHON_INSERT_PADDING(8);
stdx::vector<stdx::vector<boost::shared_ptr<SoX::Scenery::Camera>>> m_vvspCameras;
MARATHON_INSERT_PADDING(0x1B4);
xpointer<SoX::Audio::Cue> m_pBgmCue;
MARATHON_INSERT_PADDING(0x36C);
xpointer<TextBook> m_pHintTextBook;
MARATHON_INSERT_PADDING(4);
xpointer<Mission::Core> m_pMissionCore;
MARATHON_INSERT_PADDING(0x2A4);
SoX::RefSharedPointer<SoX::Physics::World> m_spPhysicsWorld;
xpointer<void> m_pMyCollisionFilter;
MARATHON_INSERT_PADDING(0x0C);
int PlayerActorIDToIndex(int32_t actorId) const
{
for (int i = 0; i < 4; i++)
{
if (m_PlayerData[i].ActorID == actorId)
return i;
}
return -1;
}
SoX::Scenery::CameraImp* GetCamera(const char* pName, int which = 0)
{
if (m_vvspCameras.empty())
return nullptr;
for (auto& spCamera : m_vvspCameras[which])
{
auto pCameraImp = (SoX::Scenery::CameraImp*)spCamera.get();
if (pCameraImp->m_Name == pName)
return pCameraImp;
}
return nullptr;
}
template <typename T = SoX::Audio::Cue>
T* GetBgmCue() const
{
return (T*)m_pBgmCue.get();
}
template <typename T = SoX::Physics::World>
T* GetPhysicsWorld() const
{
return (T*)m_spPhysicsWorld.get();
}
};
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, ActorID, 0x00);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, RingCount, 0x04);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, LifeCount, 0x0C);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, ScoreCount, 0x10);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, AliveTime, 0x14);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, Time, 0x18);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, SectionTime, 0x20);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, GaugeValue, 0x24);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, MaturityLevel, 0x28);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, MaturityValue, 0x2C);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, ExtendRingCount, 0x34);
MARATHON_ASSERT_OFFSETOF(GameImp::PlayerData, GemIndex, 0x38);
MARATHON_ASSERT_SIZEOF(GameImp::PlayerData, 0x4C);
MARATHON_ASSERT_OFFSETOF(GameImp, m_State, 0x08);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pDoc, 0x0C);
MARATHON_ASSERT_OFFSETOF(GameImp, m_Flags, 0x10);
MARATHON_ASSERT_OFFSETOF(GameImp, m_PlayerData, 0xE40);
MARATHON_ASSERT_OFFSETOF(GameImp, m_IsStage, 0x1170);
MARATHON_ASSERT_OFFSETOF(GameImp, m_Field1180, 0x1180);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pGameScript, 0x1184);
MARATHON_ASSERT_OFFSETOF(GameImp, m_aObjPlayerActorID, 0x1188);
MARATHON_ASSERT_OFFSETOF(GameImp, m_spActorManager, 0x11C4);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pSystemTextBook, 0x11CC);
MARATHON_ASSERT_OFFSETOF(GameImp, m_vvspCameras, 0x11D8);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pBgmCue, 0x139C);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pHintTextBook, 0x170C);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pMissionCore, 0x1714);
MARATHON_ASSERT_OFFSETOF(GameImp, m_spPhysicsWorld, 0x19BC);
MARATHON_ASSERT_OFFSETOF(GameImp, m_pMyCollisionFilter, 0x19C0);
MARATHON_ASSERT_SIZEOF(GameImp, 0x19D0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/GameMode.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/GameImp.h>
namespace Sonicteam
{
class GameMode : public SoX::Engine::DocMode
{
public:
MARATHON_INSERT_PADDING(0x1C);
xpointer<Game> m_pGame;
MARATHON_INSERT_PADDING(0x1C);
GameImp* GetGame() const
{
return (GameImp*)m_pGame.get();
}
};
MARATHON_ASSERT_OFFSETOF(GameMode, m_pGame, 0x6C);
MARATHON_ASSERT_SIZEOF(GameMode, 0x8C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Globals.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
enum Character : uint32_t
{
Character_Sonic,
Character_Shadow,
Character_Silver,
Character_Tails,
Character_Amy,
Character_Knuckles,
Character_Omega,
Character_Rouge,
Character_Blaze
};
struct Globals
{
static inline be<float>* ms_MainDisplayColours[9];
static void Init()
{
for (int i = 0; i < 9; i++)
ms_MainDisplayColours[i] = (be<float>*)MmGetHostAddress(0x82036BE4 + (i * 4));
}
};
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDButtonWindow.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Chao/CSD/Manager/csdmSceneObserver.h>
#include <Sonicteam/SoX/Engine/Task.h>
#include <Sonicteam/SoX/RefCountObject.h>
#include <Sonicteam/CsdResource.h>
#include <Sonicteam/HudTextParts.h>
#include <Sonicteam/TextBook.h>
#include <Sonicteam/TextCard.h>
#include <Sonicteam/TextEntity.h>
namespace Sonicteam
{
class HUDButtonWindow;
class HUDButtonWindowNextObserver : public SoX::RefCountObject, public Chao::CSD::CSceneObserver
{
public:
MARATHON_INSERT_PADDING(4);
xpointer<HUDButtonWindow> m_pHUDButtonWindow;
MARATHON_INSERT_PADDING(4);
};
class HUDButtonWindow : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
xpointer<TextBook> m_pTextBook;
xpointer<CsdResource> m_pCsdResource;
HUDButtonWindowNextObserver m_NextObserver;
be<float> m_Field80;
boost::shared_ptr<TextCard> m_spTextCard;
boost::shared_ptr<TextEntity> m_spTextEntity;
xpointer<HudTextParts> m_pHudTextParts;
be<float> m_Field98;
bool m_IsIntroAnimStarted;
};
MARATHON_ASSERT_OFFSETOF(HUDButtonWindowNextObserver, m_pHUDButtonWindow, 0x1C);
MARATHON_ASSERT_SIZEOF(HUDButtonWindowNextObserver, 0x24);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_pTextBook, 0x54);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_pCsdResource, 0x58);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_NextObserver, 0x5C);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_Field80, 0x80);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_spTextCard, 0x84);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_spTextEntity, 0x8C);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_pHudTextParts, 0x94);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_Field98, 0x98);
MARATHON_ASSERT_OFFSETOF(HUDButtonWindow, m_IsIntroAnimStarted, 0x9C);
MARATHON_ASSERT_SIZEOF(HUDButtonWindow, 0xA0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDCALLBACK.h
================================================
#pragma once
namespace Sonicteam
{
class HUDCALLBACK
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(HUDCALLBACK, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(HUDCALLBACK, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDGoldMedal.h
================================================
#pragma once
#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/SoX/Engine/Doc.h>
#include <Sonicteam/SoX/Engine/Task.h>
#include <Sonicteam/SoX/RefCountObject.h>
#include <Sonicteam/CsdObject.h>
#include <Sonicteam/HudTextParts.h>
#include <Sonicteam/TextCard.h>
#include <Sonicteam/TextEntity.h>
namespace Sonicteam
{
class HUDGoldMedal : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
xpointer<CsdObject> m_pCsdObject;
xpointer<HudTextParts> m_pMedalCountText;
xpointer<SoX::Engine::Doc> m_pDoc;
MARATHON_INSERT_PADDING(0x3C);
be<uint32_t> m_EpisodeIndex;
be<uint32_t> m_ScrollIndex;
be<uint32_t> m_MedalCount;
boost::shared_ptr<TextCard> m_spMedalCountTextCard;
MARATHON_INSERT_PADDING(0x10);
boost::shared_ptr<TextCard> m_aspTextCards[5];
boost::shared_ptr<TextEntity> m_aspTextEntities[5];
};
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_pCsdObject, 0x54);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_pMedalCountText, 0x58);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_pDoc, 0x5C);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_EpisodeIndex, 0x9C);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_ScrollIndex, 0xA0);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_MedalCount, 0xA4);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_spMedalCountTextCard, 0xA8);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_aspTextCards, 0xC0);
MARATHON_ASSERT_OFFSETOF(HUDGoldMedal, m_aspTextEntities, 0xE8);
MARATHON_ASSERT_SIZEOF(HUDGoldMedal, 0x110);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDLimitTime.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class HUDLimitTime : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
static constexpr float ms_AlertThreshold = 10.0f;
xpointer<CsdObject> m_pCsdObject;
be<float> m_X;
be<float> m_Y;
MARATHON_INSERT_PADDING(0x30);
be<float> m_Time;
bool m_IsAboveAlertThreshold;
};
MARATHON_ASSERT_OFFSETOF(HUDLimitTime, m_pCsdObject, 0x54);
MARATHON_ASSERT_OFFSETOF(HUDLimitTime, m_X, 0x58);
MARATHON_ASSERT_OFFSETOF(HUDLimitTime, m_Y, 0x5C);
MARATHON_ASSERT_OFFSETOF(HUDLimitTime, m_Time, 0x90);
MARATHON_ASSERT_OFFSETOF(HUDLimitTime, m_IsAboveAlertThreshold, 0x94);
MARATHON_ASSERT_SIZEOF(HUDLimitTime, 0x98);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDLoading.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class HUDLoading : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
enum HUDLoadingFlags
{
HUDLoadingFlags_Finished = 6,
HUDLoadingFlags_Open = 0x200,
HUDLoadingFlags_End = 0x400
};
MARATHON_INSERT_PADDING(0x5C);
be<uint32_t> m_Flags;
MARATHON_INSERT_PADDING(8);
};
MARATHON_ASSERT_OFFSETOF(HUDLoading, m_Flags, 0xB0);
MARATHON_ASSERT_SIZEOF(HUDLoading, 0xBC);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDMainDisplay.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class HUDMainDisplay : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(0x24);
be<Character> m_Character;
MARATHON_INSERT_PADDING(0x108);
boost::shared_ptr<TextEntity> m_Field184;
boost::shared_ptr<TextEntity> m_spTrickPointText;
boost::shared_ptr<TextEntity> m_Field194;
MARATHON_INSERT_PADDING(0x10);
boost::shared_ptr<TextEntity> m_spSavePointTimeText;
MARATHON_INSERT_PADDING(0x2C);
};
MARATHON_ASSERT_OFFSETOF(HUDMainDisplay, m_Character, 0x78);
MARATHON_ASSERT_OFFSETOF(HUDMainDisplay, m_Field184, 0x184);
MARATHON_ASSERT_OFFSETOF(HUDMainDisplay, m_spTrickPointText, 0x18C);
MARATHON_ASSERT_OFFSETOF(HUDMainDisplay, m_Field194, 0x194);
MARATHON_ASSERT_OFFSETOF(HUDMainDisplay, m_spSavePointTimeText, 0x1AC);
MARATHON_ASSERT_SIZEOF(HUDMainDisplay, 0x1E0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDMainMenu.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/CsdObject.h>
#include <Sonicteam/HudTextParts.h>
namespace Sonicteam
{
class HUDMainMenu : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
enum HUDMainMenuState : uint32_t
{
HUDMainMenuState_OptionsOutro = 5,
HUDMainMenuState_SinglePlayerTextOutro = 8,
HUDMainMenuState_SinglePlayerCursorIntro = 86,
HUDMainMenuState_OptionsIntro = 90,
HUDMainMenuState_MainCursorIntro = 98,
HUDMainMenuState_MainCursorOutro = 99,
HUDMainMenuState_GoldMedalResultsCursorOutro = 101
};
MARATHON_INSERT_PADDING(0x20);
xpointer<CsdObject> m_pCsdObject;
MARATHON_INSERT_PADDING(0x1B0);
be<uint32_t> m_CursorFlags;
MARATHON_INSERT_PADDING(0x32C);
xpointer<HudTextParts> m_pHudTextRoot;
MARATHON_INSERT_PADDING(0x48C);
};
MARATHON_ASSERT_OFFSETOF(HUDMainMenu, m_pCsdObject, 0x74);
MARATHON_ASSERT_OFFSETOF(HUDMainMenu, m_CursorFlags, 0x228);
MARATHON_ASSERT_OFFSETOF(HUDMainMenu, m_pHudTextRoot, 0x558);
MARATHON_ASSERT_SIZEOF(HUDMainMenu, 0x9E8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDMessageWindow.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/HintWindowTask.h>
namespace Sonicteam
{
class HUDMessageWindow : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
xpointer<CsdObject> m_pCsdObject;
MARATHON_INSERT_PADDING(0x1C);
xpointer<HUDMessageWindow> m_pParent;
MARATHON_INSERT_PADDING(0x14);
xpointer<HintWindowTask> m_pHintWindowTask;
};
MARATHON_ASSERT_OFFSETOF(HUDMessageWindow, m_pCsdObject, 0x54);
MARATHON_ASSERT_OFFSETOF(HUDMessageWindow, m_pParent, 0x74);
MARATHON_ASSERT_OFFSETOF(HUDMessageWindow, m_pHintWindowTask, 0x8C);
MARATHON_ASSERT_SIZEOF(HUDMessageWindow, 0x90);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDOption.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/HudTextParts.h>
namespace Sonicteam
{
class HUDOption : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(0x188);
xpointer<HudTextParts> m_pHudTextRoot;
MARATHON_INSERT_PADDING(8);
};
MARATHON_ASSERT_OFFSETOF(HUDOption, m_pHudTextRoot, 0x1DC);
MARATHON_ASSERT_SIZEOF(HUDOption, 0x1E8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDPopupScreen.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Graphics/TechniqueFXL.h>
#include <Sonicteam/MyTexture.h>
#include <stdx/string.h>
namespace Sonicteam
{
class HUDPopupScreen : public SoX::Engine::Task
{
public:
enum HUDPopupScreenState : uint32_t
{
HUDPopupScreenState_Opening = 1,
HUDPopupScreenState_Idle,
HUDPopupScreenState_Closing
};
xpointer<CsdObject> m_pCsdObject;
xpointer<MyTexture> m_pMainTexture;
xpointer<MyTexture> m_pMaskTexture;
xpointer<SoX::Graphics::TechniqueFXL> m_pTechnique;
stdx::string m_SceneName;
stdx::string m_SpriteName;
be<HUDPopupScreenState> m_State;
MARATHON_INSERT_PADDING(1);
bool m_IsClosing;
MARATHON_INSERT_PADDING(2);
be<float> m_ClosingTime;
be<float> m_X;
be<float> m_Y;
MARATHON_INSERT_PADDING(8);
};
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_pCsdObject, 0x4C);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_pMainTexture, 0x50);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_pMaskTexture, 0x54);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_pTechnique, 0x58);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_SceneName, 0x5C);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_SpriteName, 0x78);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_State, 0x94);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_IsClosing, 0x99);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_ClosingTime, 0x9C);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_X, 0xA0);
MARATHON_ASSERT_OFFSETOF(HUDPopupScreen, m_Y, 0xA4);
MARATHON_ASSERT_SIZEOF(HUDPopupScreen, 0xB0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDRaderMap.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class HUDRaderMap : public HUDPopupScreen {};
MARATHON_ASSERT_SIZEOF(HUDRaderMap, 0xB0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HUDStageTitle.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class HUDStageTitle : public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(8);
xpointer<HudTextParts> m_pHudTextParts;
};
MARATHON_ASSERT_OFFSETOF(HUDStageTitle, m_pHudTextParts, 0x54);
MARATHON_ASSERT_SIZEOF(HUDStageTitle, 0x58);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HintWindowTask.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class HintWindowTask : public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(0x40);
boost::shared_ptr<TextEntity> m_Field8C;
boost::shared_ptr<TextEntity> m_Field94;
MARATHON_INSERT_PADDING(0x60);
};
MARATHON_ASSERT_OFFSETOF(HintWindowTask, m_Field8C, 0x8C);
MARATHON_ASSERT_OFFSETOF(HintWindowTask, m_Field94, 0x94);
MARATHON_ASSERT_SIZEOF(HintWindowTask, 0xFC);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/HudTextParts.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/RefCountObject.h>
#include <Sonicteam/CsdObject.h>
#include <Sonicteam/TextCard.h>
#include <Sonicteam/TextEntity.h>
#include <stdx/string.h>
namespace Sonicteam
{
class HudTextParts : public SoX::RefCountObject
{
public:
xpointer<HudTextParts> m_pNext;
xpointer<DocMarathonState> m_pDoc;
boost::shared_ptr<TextCard> m_spTextCard;
boost::shared_ptr<TextEntity> m_spTextEntity;
xpointer<CsdObject> m_pCsdObject;
stdx::string m_SceneName;
stdx::string m_CastName;
be<float> m_Priority;
be<float> m_OffsetX;
be<float> m_OffsetY;
MARATHON_INSERT_PADDING(4);
be<uint32_t> m_AlignmentFlags;
HudTextParts* Find(const char* pSceneName)
{
auto pRoot = this;
while (pRoot)
{
if (pRoot->m_SceneName == pSceneName)
return pRoot;
pRoot = pRoot->m_pNext;
}
return nullptr;
}
HudTextParts* Find(const char* pSceneName, const char* pCastName)
{
auto pRoot = this;
while (pRoot)
{
if (pRoot->m_SceneName == pSceneName && pRoot->m_CastName == pCastName)
return pRoot;
pRoot = pRoot->m_pNext;
}
return nullptr;
}
};
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_pNext, 0x08);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_pDoc, 0x0C);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_spTextCard, 0x10);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_spTextEntity, 0x18);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_pCsdObject, 0x20);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_SceneName, 0x24);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_CastName, 0x40);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_Priority, 0x5C);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_OffsetX, 0x60);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_OffsetY, 0x64);
MARATHON_ASSERT_OFFSETOF(HudTextParts, m_AlignmentFlags, 0x6C);
MARATHON_ASSERT_SIZEOF(HudTextParts, 0x70);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/ImageFilter.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class ImageFilter
{
public:
xpointer<void> m_pVftable;
MARATHON_INSERT_PADDING(4);
};
MARATHON_ASSERT_OFFSETOF(ImageFilter, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(ImageFilter, 8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MainDisplayTask.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class MainDisplayTask : public SoX::Engine::Task
{
public:
xpointer<HUDMainDisplay> m_pHUDMainDisplay;
MARATHON_INSERT_PADDING(0x20);
};
MARATHON_ASSERT_OFFSETOF(MainDisplayTask, m_pHUDMainDisplay, 0x4C);
MARATHON_ASSERT_SIZEOF(MainDisplayTask, 0x70);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MainMenuExpositionTask.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/RefCountObject.h>
namespace Sonicteam
{
class MainMenuExpositionTask : public SoX::RefCountObject, public SoX::Engine::Task
{
public:
be<uint32_t> m_TextMotionState;
};
MARATHON_ASSERT_OFFSETOF(MainMenuExpositionTask, m_TextMotionState, 0x54);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MainMenuTask.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Math/Vector.h>
#include <Sonicteam/SoX/RefSharedPointer.h>
#include <Sonicteam/Player/Object.h>
#include <Sonicteam/ButtonWindowTask.h>
#include <Sonicteam/MainMenuExpositionTask.h>
namespace Sonicteam
{
class MainMenuTask : public SoX::Engine::Task
{
public:
enum MainMenuState : uint32_t
{
MainMenuState_MainMenuBack = 1,
MainMenuState_MainMenu = 2,
MainMenuState_ExitPrompt = 4,
MainMenuState_SinglePlayer = 6,
MainMenuState_EpisodeSelect = 9,
MainMenuState_TrialSelect = 0x0D,
MainMenuState_SelectCharacter = 0x0F,
MainMenuState_ActTrial = 0x11,
MainMenuState_TownTrial = 0x15,
MainMenuState_Multiplayer = 0x17,
MainMenuState_Extras = 0x1C,
MainMenuState_Tag = 0x1E,
MainMenuState_Tag1PSelect = 0x1F,
MainMenuState_Battle = 0x22,
MainMenuState_GoldMedalResultsOpen = 0x26,
MainMenuState_GoldMedalResults = 0x27,
MainMenuState_AudioRoom = 0x2F,
MainMenuState_TheaterRoom = 0x31,
MainMenuState_Options = 0x33,
MainMenuState_ExitToStage = 0x3B,
MainMenuState_ExitToTitle = 0x3C
};
be<uint32_t> m_State;
MARATHON_INSERT_PADDING(0x24);
xpointer<HUDMainMenu> m_pHUDMainMenu;
MARATHON_INSERT_PADDING(8);
xpointer<HUDGoldMedal> m_pHUDGoldMedal;
MARATHON_INSERT_PADDING(0x14);
xpointer<ButtonWindowTask> m_pButtonWindowTask;
SoX::RefSharedPointer<MainMenuExpositionTask> m_spMainMenuExpositionTask;
be<uint32_t> m_MainMenuSelectedIndex;
be<uint32_t> m_SinglePlayerSelectedIndex;
MARATHON_INSERT_PADDING(0x14);
be<uint32_t> m_FieldBC;
MARATHON_INSERT_PADDING(0x60);
be<uint32_t> m_GoldMedalEpisodeIndex;
MARATHON_INSERT_PADDING(4);
be<uint32_t> m_GoldMedalScrollIndex;
MARATHON_INSERT_PADDING(0x144);
be<uint32_t> m_IsChangingState;
MARATHON_INSERT_PADDING(8);
be<uint32_t> m_PressedButtons;
MARATHON_INSERT_PADDING(0x18);
xpointer<Actor> m_Field298;
xpointer<Player::Object> m_apSelectCharacters[9];
MARATHON_INSERT_PADDING(0x38);
};
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_State, 0x4C);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pHUDMainMenu, 0x74);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pHUDGoldMedal, 0x80);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_pButtonWindowTask, 0x98);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_spMainMenuExpositionTask, 0x9C);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_MainMenuSelectedIndex, 0xA0);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_SinglePlayerSelectedIndex, 0xA4);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_FieldBC, 0xBC);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_GoldMedalEpisodeIndex, 0x120);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_GoldMedalScrollIndex, 0x128);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_IsChangingState, 0x270);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_PressedButtons, 0x27C);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_Field298, 0x298);
MARATHON_ASSERT_OFFSETOF(MainMenuTask, m_apSelectCharacters, 0x29C);
MARATHON_ASSERT_SIZEOF(MainMenuTask, 0x2F8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MainMode.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Graphics/FrameGP.h>
#include <Sonicteam/SoX/Scenery/Camera.h>
namespace Sonicteam
{
class MainMode : public SoX::Engine::DocMode
{
public:
MARATHON_INSERT_PADDING(0x24);
boost::shared_ptr<SoX::Scenery::Camera> m_spSelectCamera;
xpointer<SoX::Graphics::FrameGP> m_pFrameGP;
MARATHON_INSERT_PADDING(0x0C);
};
MARATHON_ASSERT_OFFSETOF(MainMode, m_spSelectCamera, 0x74);
MARATHON_ASSERT_OFFSETOF(MainMode, m_pFrameGP, 0x7C);
MARATHON_ASSERT_SIZEOF(MainMode, 0x8C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/Camera/Cameraman/MsgChangeMode.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Math/Vector.h>
#include <Sonicteam/SoX/Message.h>
namespace Sonicteam::Message::Camera::Cameraman
{
struct MsgChangeMode : SoX::Message<0x14007>
{
be<uint32_t> PadID{};
be<uint32_t> TargetActorID{};
bool IsDemoCamera{};
};
MARATHON_ASSERT_OFFSETOF(MsgChangeMode, PadID, 0x04);
MARATHON_ASSERT_OFFSETOF(MsgChangeMode, TargetActorID, 0x08);
MARATHON_ASSERT_OFFSETOF(MsgChangeMode, IsDemoCamera, 0x0C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/HUDButtonWindow/MsgChangeButtons.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Message.h>
namespace Sonicteam::Message::HUDButtonWindow
{
struct MsgChangeButtons : SoX::Message<0x1B05B>
{
be<uint32_t> ButtonType{};
MsgChangeButtons(uint32_t buttonType = 0) : ButtonType(buttonType) {}
};
MARATHON_ASSERT_OFFSETOF(MsgChangeButtons, ButtonType, 0x04);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/HUDGoldMedal/MsgChangeState.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Message.h>
namespace Sonicteam::Message::HUDGoldMedal
{
struct MsgChangeState : SoX::Message<0x1B058>
{
be<uint32_t> State{};
be<uint32_t> Field08{};
uint8_t Field0C{};
be<uint32_t> EpisodeIndex{};
MsgChangeState() {}
MsgChangeState(uint32_t state, uint32_t episodeIndex = 0) : State(state), EpisodeIndex(episodeIndex) {}
};
MARATHON_ASSERT_OFFSETOF(MsgChangeState, State, 0x04);
MARATHON_ASSERT_OFFSETOF(MsgChangeState, Field08, 0x08);
MARATHON_ASSERT_OFFSETOF(MsgChangeState, Field0C, 0x0C);
MARATHON_ASSERT_OFFSETOF(MsgChangeState, EpisodeIndex, 0x10);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgChangeState.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Message.h>
namespace Sonicteam::Message::HUDMainMenu
{
struct MsgChangeState : SoX::Message<0x1B053>
{
be<uint32_t> State{};
};
MARATHON_ASSERT_OFFSETOF(MsgChangeState, State, 0x04);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgSetCursor.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Message/HUDMainMenu/MsgChangeState.h>
namespace Sonicteam::Message::HUDMainMenu
{
struct MsgSetCursor : MsgChangeState
{
be<uint32_t> CursorIndex{};
MsgSetCursor() {}
MsgSetCursor(uint32_t state)
{
State = state;
}
MsgSetCursor(uint32_t state, uint32_t cursorIndex)
{
State = state;
CursorIndex = cursorIndex;
}
};
MARATHON_ASSERT_OFFSETOF(MsgSetCursor, CursorIndex, 0x08);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgTransition.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Message/HUDMainMenu/MsgChangeState.h>
namespace Sonicteam::Message::HUDMainMenu
{
struct MsgTransition : MsgChangeState
{
be<uint32_t> Flags{};
MsgTransition() {}
MsgTransition(uint32_t state)
{
State = state;
}
MsgTransition(uint32_t state, uint32_t flags)
{
State = state;
Flags = flags;
}
};
MARATHON_ASSERT_OFFSETOF(MsgTransition, Flags, 0x08);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/Mission/MsgGetGlobalFlag.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Message::Mission
{
struct MsgGetGlobalFlag : SoX::Message<0x1E004>
{
be<uint32_t> FlagID{};
be<uint32_t> FlagValue{};
MsgGetGlobalFlag(uint32_t flagId) : FlagID(flagId) {}
};
MARATHON_ASSERT_OFFSETOF(MsgGetGlobalFlag, FlagID, 0x04);
MARATHON_ASSERT_OFFSETOF(MsgGetGlobalFlag, FlagValue, 0x08);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/ObjJump123/MsgGetNextPoint.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Math/Vector.h>
#include <Sonicteam/SoX/Message.h>
namespace Sonicteam::Message::ObjJump123
{
struct MsgGetNextPoint : SoX::Message<0x10007>
{
SoX::Math::Quaternion Rotation{};
SoX::Math::Vector Position{};
};
MARATHON_ASSERT_OFFSETOF(MsgGetNextPoint, Rotation, 0x10);
MARATHON_ASSERT_OFFSETOF(MsgGetNextPoint, Position, 0x20);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/PauseAdapter/MsgGetText.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Message.h>
#include <stdx/string.h>
namespace Sonicteam::Message::PauseAdapter
{
struct MsgGetText : SoX::Message<0x1C003>
{
stdx::string PauseName{};
stdx::string SelectedName{};
};
MARATHON_ASSERT_OFFSETOF(MsgGetText, PauseName, 0x04);
MARATHON_ASSERT_OFFSETOF(MsgGetText, SelectedName, 0x20);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Message/Player/MsgSuckPlayer.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Math/Vector.h>
#include <Sonicteam/SoX/Message.h>
namespace Sonicteam::Message::Player
{
struct MsgSuckPlayer : SoX::Message<0x11034A>
{
SoX::Math::Vector Point{};
};
MARATHON_ASSERT_OFFSETOF(MsgSuckPlayer, Point, 0x10);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MessageWindowTask.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class MessageWindowTask : public SoX::Engine::Task
{
public:
MARATHON_INSERT_PADDING(0x44);
boost::shared_ptr<TextEntity> m_Field90;
boost::shared_ptr<TextEntity> m_Field98;
MARATHON_INSERT_PADDING(0x64);
};
MARATHON_ASSERT_OFFSETOF(MessageWindowTask, m_Field90, 0x90);
MARATHON_ASSERT_OFFSETOF(MessageWindowTask, m_Field98, 0x98);
MARATHON_ASSERT_SIZEOF(MessageWindowTask, 0x104);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Mission/Core.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Mission
{
class Core : public SoX::MessageReceiver
{
public:
MARATHON_INSERT_PADDING(0xC81C);
};
MARATHON_ASSERT_SIZEOF(Core, 0xC820);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MovieObject.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/MovieObjectWmv.h>
namespace Sonicteam
{
class MovieObject : public SoX::RefCountObject
{
public:
MARATHON_INSERT_PADDING(4);
xpointer<MovieObjectWmv> m_pMovieObjectWmv;
stdx::string m_Language;
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
MARATHON_INSERT_PADDING(8);
be<uint32_t> m_Width;
be<uint32_t> m_Height;
bool m_Field40;
};
MARATHON_ASSERT_OFFSETOF(MovieObject, m_pMovieObjectWmv, 0x0C);
MARATHON_ASSERT_OFFSETOF(MovieObject, m_Language, 0x10);
MARATHON_ASSERT_OFFSETOF(MovieObject, m_pMyGraphicsDevice, 0x2C);
MARATHON_ASSERT_OFFSETOF(MovieObject, m_Width, 0x38);
MARATHON_ASSERT_OFFSETOF(MovieObject, m_Height, 0x3C);
MARATHON_ASSERT_OFFSETOF(MovieObject, m_Field40, 0x40);
MARATHON_ASSERT_SIZEOF(MovieObject, 0x44);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MovieObjectWmv.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/MyGraphicsDevice.h>
#include <Sonicteam/MyTexture.h>
#include <stdx/string.h>
namespace Sonicteam
{
class MovieObjectWmv : public SoX::RefCountObject
{
public:
bool m_UseCustomDimensions;
be<float> m_Left;
be<float> m_Top;
be<float> m_Right;
be<float> m_Bottom;
MARATHON_INSERT_PADDING(4);
stdx::string m_FilePath;
MARATHON_INSERT_PADDING(8);
bool m_RenderMovie;
MARATHON_INSERT_PADDING(0x38);
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
be<uint32_t> m_Field84;
MARATHON_INSERT_PADDING(0x0C);
xpointer<MyTexture> m_apTexturesYUV[4 * 3];
MARATHON_INSERT_PADDING(8);
be<uint32_t> m_Width;
be<uint32_t> m_Height;
MARATHON_INSERT_PADDING(0x0C);
xpointer<void> m_pTechnique;
stdx::string m_Language;
};
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_UseCustomDimensions, 0x08);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Left, 0x0C);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Top, 0x10);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Right, 0x14);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Bottom, 0x18);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_FilePath, 0x20);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_RenderMovie, 0x44);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_pMyGraphicsDevice, 0x80);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Field84, 0x84);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_apTexturesYUV, 0x94);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Width, 0xCC);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Height, 0xD0);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_pTechnique, 0xE0);
MARATHON_ASSERT_OFFSETOF(MovieObjectWmv, m_Language, 0xE4);
MARATHON_ASSERT_SIZEOF(MovieObjectWmv, 0x100);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MovieTask.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class MovieTask : public SoX::Engine::Task, public CsdLink
{
public:
MARATHON_INSERT_PADDING(0x40);
xpointer<MovieObject> m_pMovieObject;
MARATHON_INSERT_PADDING(0x18);
};
MARATHON_ASSERT_OFFSETOF(MovieTask, m_pMovieObject, 0xA4);
MARATHON_ASSERT_SIZEOF(MovieTask, 0xC0);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MyCue.h
================================================
#pragma once
#include <Sonicteam/SoX/Audio/Cue.h>
class MyCue : public Sonicteam::SoX::Audio::Cue {};
MARATHON_ASSERT_SIZEOF(MyCue, 0x2C);
================================================
FILE: MarathonRecomp/api/Sonicteam/MyCueAdx.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/MyCue.h>
#include <Sonicteam/MyCueAttenuate.h>
#include <Sonicteam/sonicXmaPlayer.h>
class MyCueAdx : public MyCue, public MyCueAttenuate
{
public:
MARATHON_INSERT_PADDING(0x0C);
be<float> m_Field50;
be<float> m_Field54;
xpointer<Sonicteam::sonicXmaPlayer> m_pXmaPlayer;
bool m_IsPaused;
MARATHON_INSERT_PADDING(3);
};
MARATHON_ASSERT_OFFSETOF(MyCueAdx, m_Field50, 0x50);
MARATHON_ASSERT_OFFSETOF(MyCueAdx, m_Field54, 0x54);
MARATHON_ASSERT_OFFSETOF(MyCueAdx, m_pXmaPlayer, 0x58);
MARATHON_ASSERT_OFFSETOF(MyCueAdx, m_IsPaused, 0x5C);
MARATHON_ASSERT_SIZEOF(MyCueAdx, 0x60);
================================================
FILE: MarathonRecomp/api/Sonicteam/MyCueAttenuate.h
================================================
#pragma once
class MyCueAttenuate
{
public:
be<float> m_Time;
be<float> m_FadeOutRate;
be<float> m_FadeInRate;
be<float> m_MinVolume;
be<float> m_MaxVolume;
bool m_IsFadeOut;
MARATHON_INSERT_PADDING(3);
};
MARATHON_ASSERT_OFFSETOF(MyCueAttenuate, m_Time, 0x00);
MARATHON_ASSERT_OFFSETOF(MyCueAttenuate, m_FadeOutRate, 0x04);
MARATHON_ASSERT_OFFSETOF(MyCueAttenuate, m_FadeInRate, 0x08);
MARATHON_ASSERT_OFFSETOF(MyCueAttenuate, m_MinVolume, 0x0C);
MARATHON_ASSERT_OFFSETOF(MyCueAttenuate, m_MaxVolume, 0x10);
MARATHON_ASSERT_OFFSETOF(MyCueAttenuate, m_IsFadeOut, 0x14);
MARATHON_ASSERT_SIZEOF(MyCueAttenuate, 0x18);
================================================
FILE: MarathonRecomp/api/Sonicteam/MyGraphicsDevice.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Graphics/Xenon/DeviceXenon.h>
namespace Sonicteam
{
class MyGraphicsDevice : public SoX::Graphics::Xenon::DeviceXenon
{
public:
MARATHON_INSERT_PADDING(0x1C0);
};
MARATHON_ASSERT_SIZEOF(MyGraphicsDevice, 0x350);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MyPhantom.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Physics/Havok/PhantomHavok.h>
namespace Sonicteam
{
class MyPhantom : public SoX::Physics::Havok::PhantomHavok {};
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MyRenderProcess.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/MyGraphicsDevice.h>
#include <Sonicteam/SoX/Engine/RenderProcess.h>
namespace Sonicteam
{
class MyRenderProcess : public SoX::Engine::RenderProcess
{
public:
xpointer<DocMarathonState> m_pDocMarathonState;
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
};
MARATHON_ASSERT_SIZEOF(MyRenderProcess, 0x38);
MARATHON_ASSERT_OFFSETOF(MyRenderProcess, m_pDocMarathonState, 0x30);
MARATHON_ASSERT_OFFSETOF(MyRenderProcess, m_pMyGraphicsDevice, 0x34);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MyTexture.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Graphics/Xenon/TextureXenon.h>
namespace Sonicteam
{
class MyTexture : public SoX::Graphics::Xenon::TextureXenon
{
public:
MARATHON_INSERT_PADDING(4);
};
MARATHON_ASSERT_SIZEOF(MyTexture, 0x90);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/MyTransforms.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Graphics/Transforms.h>
namespace Sonicteam
{
class MyTransforms : public SoX::Graphics::Transforms
{
public:
MARATHON_INSERT_PADDING(8);
};
MARATHON_ASSERT_SIZEOF(MyTransforms, 0xF8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/NamedActor.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Actor.h>
#include <stdx/string.h>
namespace Sonicteam
{
class NamedActor : public Actor
{
public:
stdx::string m_Name;
};
MARATHON_ASSERT_OFFSETOF(NamedActor, m_Name, 0x58);
MARATHON_ASSERT_SIZEOF(NamedActor, 0x74);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/NamedTask.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Engine/Task.h>
#include <stdx/string.h>
namespace Sonicteam
{
class NamedTask : public SoX::Engine::Task
{
public:
stdx::string m_Name;
};
MARATHON_ASSERT_OFFSETOF(NamedTask, m_Name, 0x4C);
MARATHON_ASSERT_SIZEOF(NamedTask, 0x68);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/NoSyncThread.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/SoX/Thread.h>
namespace Sonicteam
{
class NoSyncThread : SoX::Thread
{
public:
MARATHON_INSERT_PADDING(4);
};
MARATHON_ASSERT_SIZEOF(NoSyncThread, 0x4C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/ObjectVehicle.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class ObjectVehicle : public Actor
{
public:
MARATHON_INSERT_PADDING(0x180);
};
MARATHON_ASSERT_SIZEOF(ObjectVehicle, 0x1D8);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/ObjectVehicleBike.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/VehicleMissileCtrlAutomatic.h>
namespace Sonicteam
{
class ObjectVehicleBike : public ObjectVehicle
{
public:
MARATHON_INSERT_PADDING(0xD8);
xpointer<VehicleMissileCtrlAutomatic> m_pVehicleMissileCtrlAutomatic;
MARATHON_INSERT_PADDING(0xAC);
};
MARATHON_ASSERT_OFFSETOF(ObjectVehicleBike, m_pVehicleMissileCtrlAutomatic, 0x2B0);
MARATHON_ASSERT_SIZEOF(ObjectVehicleBike, 0x360);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/PauseAdapter.h
================================================
#pragma once
#include <Sonicteam/GameImp.h>
namespace Sonicteam
{
class PauseAdapter : public SoX::Engine::Task
{
public:
xpointer<Game> m_pGame;
be<uint32_t> m_SelectedID;
be<uint32_t> m_Field54;
MARATHON_INSERT_PADDING(0x20);
GameImp* GetGame() const
{
return (GameImp*)m_pGame.get();
}
};
MARATHON_ASSERT_OFFSETOF(PauseAdapter, m_pGame, 0x4C);
MARATHON_ASSERT_OFFSETOF(PauseAdapter, m_SelectedID, 0x50);
MARATHON_ASSERT_OFFSETOF(PauseAdapter, m_Field54, 0x54);
MARATHON_ASSERT_SIZEOF(PauseAdapter, 0x78);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/PauseTask.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam
{
class PauseTask : public SoX::Engine::Task
{
public:
enum PauseTaskState
{
PauseTaskState_Opened,
PauseTaskState_Opening,
PauseTaskState_Idle,
PauseTaskState_ClosingToAction,
PauseTaskState_Closing,
PauseTaskState_Closed
};
MARATHON_INSERT_PADDING(4);
xpointer<void> m_pHUDPause;
MARATHON_INSERT_PADDING(0x18);
be<PauseTaskState> m_State;
be<uint32_t> m_Flags;
be<uint32_t> m_SelectedIndex;
MARATHON_INSERT_PADDING(0x28);
be<uint32_t> m_Buttons;
MARATHON_INSERT_PADDING(0x1E0);
be<uint32_t> m_ItemCount;
MARATHON_INSERT_PADDING(0x12C);
};
MARATHON_ASSERT_OFFSETOF(PauseTask, m_pHUDPause, 0x50);
MARATHON_ASSERT_OFFSETOF(PauseTask, m_State, 0x6C);
MARATHON_ASSERT_OFFSETOF(PauseTask, m_Flags, 0x70);
MARATHON_ASSERT_OFFSETOF(PauseTask, m_SelectedIndex, 0x74);
MARATHON_ASSERT_OFFSETOF(PauseTask, m_Buttons, 0xA0);
MARATHON_ASSERT_OFFSETOF(PauseTask, m_ItemCount, 0x284);
MARATHON_ASSERT_SIZEOF(PauseTask, 0x3B4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/GroundRayListener.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Player/ICollisionListenerTemplate.h>
#include <Sonicteam/SoX/Physics/IntersectListener.h>
#include <Sonicteam/SoX/Physics/IntersectEvent.h>
#include <Sonicteam/SoX/Math/Vector.h>
#include <Sonicteam/SoX/Physics/Entity.h>
#include <Sonicteam/SoX/LinkNode.h>
namespace Sonicteam::Player
{
class GroundRayListener : public ICollisionListenerTemplate<SoX::Physics::IntersectListener, SoX::Physics::IntersectEvent>
{
public:
SoX::Math::Vector m_ContactPosition;
SoX::Math::Vector m_ContactNormal;
be<float> m_RayDistance;
be<uint32_t> m_RayFlags;
SoX::LinkRef<SoX::Physics::Entity> m_ContactEntity;
};
MARATHON_ASSERT_OFFSETOF(GroundRayListener, m_ContactPosition, 0x50);
MARATHON_ASSERT_OFFSETOF(GroundRayListener, m_ContactNormal, 0x60);
MARATHON_ASSERT_OFFSETOF(GroundRayListener, m_RayDistance, 0x70);
MARATHON_ASSERT_OFFSETOF(GroundRayListener, m_RayFlags, 0x74);
MARATHON_ASSERT_OFFSETOF(GroundRayListener, m_ContactEntity, 0x78);
MARATHON_ASSERT_SIZEOF(GroundRayListener, 0x90);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/ICollisionListener.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class ICollisionListener
{
public:
xpointer<void> m_pVftable;
MARATHON_INSERT_PADDING(0x0C);
be<uint32_t> m_FlagsA;
be<uint32_t> m_FlagsB;
be<uint32_t> m_FlagsC;
MARATHON_INSERT_PADDING(4);
SoX::Math::Vector m_SurfaceNormal;
};
MARATHON_ASSERT_OFFSETOF(ICollisionListener, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(ICollisionListener, m_FlagsA, 0x10);
MARATHON_ASSERT_OFFSETOF(ICollisionListener, m_FlagsB, 0x14);
MARATHON_ASSERT_OFFSETOF(ICollisionListener, m_FlagsC, 0x18);
MARATHON_ASSERT_OFFSETOF(ICollisionListener, m_SurfaceNormal, 0x20);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/ICollisionListenerTemplate.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Player/ICollisionListener.h>
namespace Sonicteam::Player
{
template <typename TListener, typename TEvent>
class ICollisionListenerTemplate : public ICollisionListener, public TListener {};
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IDynamicLink.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class IDynamicLink
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(IDynamicLink, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(IDynamicLink, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IEventerListener.h
================================================
#pragma once
namespace Sonicteam::Player
{
class IEventerListener
{
public:
xpointer<void> m_pVftable;
MARATHON_INSERT_PADDING(8);
};
MARATHON_ASSERT_OFFSETOF(IEventerListener, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(IEventerListener, 0x0C);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IExportExternalFlag.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class IExportExternalFlag
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(IExportExternalFlag, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(IExportExternalFlag, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IExportPostureRequestFlag.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class IExportPostureRequestFlag
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(IExportPostureRequestFlag, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(IExportPostureRequestFlag, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IExportWeaponRequestFlag.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class IExportWeaponRequestFlag
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(IExportWeaponRequestFlag, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(IExportWeaponRequestFlag, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IFlagCommunicator.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class IFlagCommunicator
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(IFlagCommunicator, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(IFlagCommunicator, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IGauge.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Player/IPlugIn.h>
#include <Sonicteam/Player/IVariable.h>
#include <Sonicteam/Player/IStepable.h>
namespace Sonicteam::Player
{
class IGauge : public IPlugIn, public IVariable, public IStepable {};
MARATHON_ASSERT_SIZEOF(IGauge, 0x28);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/INotification.h
================================================
#pragma once
#include <Marathon.inl>
namespace Sonicteam::Player
{
class INotification
{
public:
xpointer<void> m_pVftable;
};
MARATHON_ASSERT_OFFSETOF(INotification, m_pVftable, 0x00);
MARATHON_ASSERT_SIZEOF(INotification, 4);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IPlugIn.h
================================================
#pragma once
#include <Marathon.inl>
#include <stdx/string.h>
namespace Sonicteam::Player
{
class IPlugIn
{
public:
xpointer<void> m_pVftable;
stdx::string m_Name;
};
MARATHON_ASSERT_OFFSETOF(IPlugIn, m_pVftable, 0x00);
MARATHON_ASSERT_OFFSETOF(IPlugIn, m_Name, 0x04);
MARATHON_ASSERT_SIZEOF(IPlugIn, 0x20);
}
================================================
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureControl.h
================================================
#pragma once
#include <Marathon.inl>
#include <Sonicteam/Player/IFlagCommunicator.h>
#include <Sonicteam/Player/State/ICommonContextIF.h>
#include <Sonicteam/Player/IDynamicLink.h>
#include <Sonicteam/Player/IVariable.h>
#include <Sonicteam/Player/IPosturePlugIn.h>
#include <Sonicteam/Player/Unit/ITestCase.h>
#include <Sonicteam/SoX/RefSharedPointer.h>
#include <Sonicteam/SoX/Math/Vector.h>
#include <Sonicteam/SoX/Engine/Task.h>
#include <Sonicteam/SoX/Math/Quaternion.h>
#include <Sonicteam/SoX/Physics/World.h>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/ActorManager.h>
namespace Sonicteam::Player
{
class IPostureControl : public IVariable, public IDynamicLink, public Unit::ITestCase, public IFlagCommunicator
{
public:
SoX::RefSharedPointer<> m_spRootFrame;
SoX::Math::Quaternion m_RotationFixed;
SoX::Math::Vector m_PositionFixed;
SoX::RefSharedPointer<SoX::Physics::World> m_spWorld;
boost::shared_ptr<void> m_spGravity;
boost::shared_ptr<void> m_spInputListener;
boost::shared_ptr<void> m_spAmigoListener;
boost::shared_ptr<State::ICommonContextIF> m_spCommonContextIF;
boost::shared_ptr<ActorManager> m_spActorManager;
xpointer<SoX::Engine::Task> m_pTask;
boost::shared_ptr<IPosturePlugIn> m_spPosturePlugIn;
SoX::Math::Vector m_GravityDirection;
be<float> m_GravityForce;
SoX::Math::Vector m_SurfaceNormal;
SoX::Math::Vector m_Position;
SoX::Math::Quaternion m_Rotation;
MARATHON_INSERT_PADDING(0x20);
be<uint32_t> m_PostureFlag;
be<float> m_ImpulseForward;
be<float> m_ImpulseVertical;
SoX::Math::Vector m_ImpulseUp;
be<uint32_t> m_CommonContextIFFlags;
be<uint32_t> m_Pos
gitextract_3ry7zdqc/ ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── dev_report.yml │ └── workflows/ │ ├── validate-external.yml │ ├── validate-internal.yml │ └── validate.yml ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── CMakePresets.json ├── COPYING ├── MarathonRecomp/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── api/ │ │ ├── Chao/ │ │ │ └── CSD/ │ │ │ ├── Core/ │ │ │ │ ├── csdBase.h │ │ │ │ ├── csdRCObject.h │ │ │ │ ├── csdRCObjectImp.h │ │ │ │ ├── csdRCPtr.h │ │ │ │ ├── csdRCPtrAbs.h │ │ │ │ └── csdTexList.h │ │ │ └── Manager/ │ │ │ ├── csdmMotionPattern.h │ │ │ ├── csdmNode.h │ │ │ ├── csdmNodeObserver.h │ │ │ ├── csdmObserverBase.h │ │ │ ├── csdmProject.h │ │ │ ├── csdmResourceBase.h │ │ │ ├── csdmScene.h │ │ │ ├── csdmSceneObserver.h │ │ │ └── csdmSubjectBase.h │ │ ├── Marathon.h │ │ ├── Marathon.inl │ │ ├── README.md │ │ ├── Sonicteam/ │ │ │ ├── Actor.h │ │ │ ├── ActorManager.h │ │ │ ├── AlertWindowTask.h │ │ │ ├── AppMarathon.h │ │ │ ├── AppMarathon.inl │ │ │ ├── AudioEngineXenon.h │ │ │ ├── ButtonWindowTask.h │ │ │ ├── CObjBalloonIconDrawable.h │ │ │ ├── Camera/ │ │ │ │ ├── CameraMode.h │ │ │ │ ├── CameraModeManager.h │ │ │ │ ├── Cameraman.h │ │ │ │ └── SonicCamera.h │ │ │ ├── CommonObjectHint.h │ │ │ ├── CsdLink.h │ │ │ ├── CsdManager.h │ │ │ ├── CsdObject.h │ │ │ ├── CsdResource.h │ │ │ ├── DocMarathonImp.h │ │ │ ├── DocMarathonState.h │ │ │ ├── Enemy/ │ │ │ │ ├── EnemyShot.h │ │ │ │ ├── EnemyShotNormal.h │ │ │ │ └── EnemyShotPoint.h │ │ │ ├── Fixture.h │ │ │ ├── Game.h │ │ │ ├── GameImp.h │ │ │ ├── GameMode.h │ │ │ ├── Globals.h │ │ │ ├── HUDButtonWindow.h │ │ │ ├── HUDCALLBACK.h │ │ │ ├── HUDGoldMedal.h │ │ │ ├── HUDLimitTime.h │ │ │ ├── HUDLoading.h │ │ │ ├── HUDMainDisplay.h │ │ │ ├── HUDMainMenu.h │ │ │ ├── HUDMessageWindow.h │ │ │ ├── HUDOption.h │ │ │ ├── HUDPopupScreen.h │ │ │ ├── HUDRaderMap.h │ │ │ ├── HUDStageTitle.h │ │ │ ├── HintWindowTask.h │ │ │ ├── HudTextParts.h │ │ │ ├── ImageFilter.h │ │ │ ├── MainDisplayTask.h │ │ │ ├── MainMenuExpositionTask.h │ │ │ ├── MainMenuTask.h │ │ │ ├── MainMode.h │ │ │ ├── Message/ │ │ │ │ ├── Camera/ │ │ │ │ │ └── Cameraman/ │ │ │ │ │ └── MsgChangeMode.h │ │ │ │ ├── HUDButtonWindow/ │ │ │ │ │ └── MsgChangeButtons.h │ │ │ │ ├── HUDGoldMedal/ │ │ │ │ │ └── MsgChangeState.h │ │ │ │ ├── HUDMainMenu/ │ │ │ │ │ ├── MsgChangeState.h │ │ │ │ │ ├── MsgSetCursor.h │ │ │ │ │ └── MsgTransition.h │ │ │ │ ├── Mission/ │ │ │ │ │ └── MsgGetGlobalFlag.h │ │ │ │ ├── ObjJump123/ │ │ │ │ │ └── MsgGetNextPoint.h │ │ │ │ ├── PauseAdapter/ │ │ │ │ │ └── MsgGetText.h │ │ │ │ └── Player/ │ │ │ │ └── MsgSuckPlayer.h │ │ │ ├── MessageWindowTask.h │ │ │ ├── Mission/ │ │ │ │ └── Core.h │ │ │ ├── MovieObject.h │ │ │ ├── MovieObjectWmv.h │ │ │ ├── MovieTask.h │ │ │ ├── MyCue.h │ │ │ ├── MyCueAdx.h │ │ │ ├── MyCueAttenuate.h │ │ │ ├── MyGraphicsDevice.h │ │ │ ├── MyPhantom.h │ │ │ ├── MyRenderProcess.h │ │ │ ├── MyTexture.h │ │ │ ├── MyTransforms.h │ │ │ ├── NamedActor.h │ │ │ ├── NamedTask.h │ │ │ ├── NoSyncThread.h │ │ │ ├── ObjectVehicle.h │ │ │ ├── ObjectVehicleBike.h │ │ │ ├── PauseAdapter.h │ │ │ ├── PauseTask.h │ │ │ ├── Player/ │ │ │ │ ├── GroundRayListener.h │ │ │ │ ├── ICollisionListener.h │ │ │ │ ├── ICollisionListenerTemplate.h │ │ │ │ ├── IDynamicLink.h │ │ │ │ ├── IEventerListener.h │ │ │ │ ├── IExportExternalFlag.h │ │ │ │ ├── IExportPostureRequestFlag.h │ │ │ │ ├── IExportWeaponRequestFlag.h │ │ │ │ ├── IFlagCommunicator.h │ │ │ │ ├── IGauge.h │ │ │ │ ├── INotification.h │ │ │ │ ├── IPlugIn.h │ │ │ │ ├── IPostureControl.h │ │ │ │ ├── IPosturePlugIn.h │ │ │ │ ├── IPostureSupportEdge.h │ │ │ │ ├── IPostureSupportInput.h │ │ │ │ ├── IPostureSupportOttoto.h │ │ │ │ ├── IPostureSupportRayTemplate.h │ │ │ │ ├── IPostureSupportSphere.h │ │ │ │ ├── IScore.h │ │ │ │ ├── IStepable.h │ │ │ │ ├── IVariable.h │ │ │ │ ├── IZock.h │ │ │ │ ├── Input/ │ │ │ │ │ ├── IListener.h │ │ │ │ │ ├── ListenerNormal.h │ │ │ │ │ └── TimedAction.h │ │ │ │ ├── Object.h │ │ │ │ ├── PostureControl.h │ │ │ │ ├── RootFrame.h │ │ │ │ ├── Score.h │ │ │ │ ├── SonicGauge.h │ │ │ │ ├── State/ │ │ │ │ │ ├── CommonContext.h │ │ │ │ │ ├── CommonFall.h │ │ │ │ │ ├── CommonObject.h │ │ │ │ │ ├── ContextSpeedAndJump.h │ │ │ │ │ ├── ICommonContext.h │ │ │ │ │ ├── ICommonContextIF.h │ │ │ │ │ ├── IContext.h │ │ │ │ │ ├── IMachine.h │ │ │ │ │ ├── Machine2.h │ │ │ │ │ ├── Object2.h │ │ │ │ │ ├── SonicContext.h │ │ │ │ │ ├── SonicObject.h │ │ │ │ │ ├── TailsContext.h │ │ │ │ │ └── TailsFlight.h │ │ │ │ ├── Unit/ │ │ │ │ │ └── ITestCase.h │ │ │ │ ├── Weapon/ │ │ │ │ │ └── SonicWeapons.h │ │ │ │ └── Zock.h │ │ │ ├── PropFixture.h │ │ │ ├── RaderMapManager.h │ │ │ ├── RenderAction/ │ │ │ │ ├── ApplyBloom.h │ │ │ │ ├── ApplyDevice.h │ │ │ │ ├── ApplySceneParams.h │ │ │ │ ├── AutoSetAspect.h │ │ │ │ ├── Capture.h │ │ │ │ ├── ClearRenderTarget.h │ │ │ │ ├── ColorFill.h │ │ │ │ ├── CopyTexture.h │ │ │ │ ├── LockBlendMode.h │ │ │ │ ├── LockCullMode.h │ │ │ │ ├── LockZMode.h │ │ │ │ ├── MakeBloom.h │ │ │ │ ├── Movie.h │ │ │ │ ├── PrepareCalculateCSM.h │ │ │ │ ├── Rasterize.h │ │ │ │ ├── RasterizeBurnoutBlur.h │ │ │ │ ├── ResetRenderStates.h │ │ │ │ ├── ResetScissorRect.h │ │ │ │ ├── ResetViewport.h │ │ │ │ ├── Resolve.h │ │ │ │ ├── RunCommandBuffer.h │ │ │ │ ├── SetAutoZPass.h │ │ │ │ ├── SetBackStencilOp.h │ │ │ │ ├── SetBlendMode.h │ │ │ │ ├── SetCSMTextures.h │ │ │ │ ├── SetClip.h │ │ │ │ ├── SetColorWriteEnable.h │ │ │ │ ├── SetConstantShader.h │ │ │ │ ├── SetCullMode.h │ │ │ │ ├── SetCurrentScreen.h │ │ │ │ ├── SetDepthTextures.h │ │ │ │ ├── SetFovY.h │ │ │ │ ├── SetFrameBufferObject.h │ │ │ │ ├── SetReflectionTextures.h │ │ │ │ ├── SetScissorRect.h │ │ │ │ ├── SetScissorTest.h │ │ │ │ ├── SetScreen.h │ │ │ │ ├── SetShaderGPRAllocation.h │ │ │ │ ├── SetStencilEnable.h │ │ │ │ ├── SetStencilFunc.h │ │ │ │ ├── SetStencilOp.h │ │ │ │ ├── SetStencilWriteMask.h │ │ │ │ ├── SetTexture.h │ │ │ │ ├── SetUserClipPlaneEnable.h │ │ │ │ ├── SetViewport.h │ │ │ │ └── SetZMode.h │ │ │ ├── RenderPostprocess.h │ │ │ ├── SaveDataTask.h │ │ │ ├── SaveDataTaskXENON.h │ │ │ ├── SelectWindowTask.h │ │ │ ├── SoX/ │ │ │ │ ├── AI/ │ │ │ │ │ └── StateMachine.h │ │ │ │ ├── ApplicationXenon.h │ │ │ │ ├── ApplicationXenon.inl │ │ │ │ ├── Audio/ │ │ │ │ │ ├── Cue.h │ │ │ │ │ ├── IAudioEngine.h │ │ │ │ │ ├── Player.h │ │ │ │ │ └── PlayerImpl.h │ │ │ │ ├── Component.h │ │ │ │ ├── Engine/ │ │ │ │ │ ├── Application.h │ │ │ │ │ ├── Doc.h │ │ │ │ │ ├── DocMode.h │ │ │ │ │ ├── RenderProcess.h │ │ │ │ │ └── Task.h │ │ │ │ ├── Graphics/ │ │ │ │ │ ├── Device.h │ │ │ │ │ ├── Frame.h │ │ │ │ │ ├── FrameGP.h │ │ │ │ │ ├── FrameObserver.h │ │ │ │ │ ├── Technique.h │ │ │ │ │ ├── TechniqueFXL.h │ │ │ │ │ ├── Texture.h │ │ │ │ │ ├── Transforms.h │ │ │ │ │ ├── Vertex.h │ │ │ │ │ └── Xenon/ │ │ │ │ │ ├── DeviceXenon.h │ │ │ │ │ └── TextureXenon.h │ │ │ │ ├── IResource.h │ │ │ │ ├── IResource2.h │ │ │ │ ├── IResourceMgr.h │ │ │ │ ├── Input/ │ │ │ │ │ ├── Manager.h │ │ │ │ │ └── Manager.inl │ │ │ │ ├── LinkNode.h │ │ │ │ ├── Math/ │ │ │ │ │ ├── Matrix.h │ │ │ │ │ ├── Quaternion.h │ │ │ │ │ └── Vector.h │ │ │ │ ├── Message.h │ │ │ │ ├── MessageReceiver.h │ │ │ │ ├── Object.h │ │ │ │ ├── Physics/ │ │ │ │ │ ├── Entity.h │ │ │ │ │ ├── Havok/ │ │ │ │ │ │ ├── EntityHavok.h │ │ │ │ │ │ ├── EntityHavokImp.h │ │ │ │ │ │ ├── PhantomHavok.h │ │ │ │ │ │ └── WorldHavok.h │ │ │ │ │ ├── IntersectEvent.h │ │ │ │ │ ├── IntersectListener.h │ │ │ │ │ ├── Phantom.h │ │ │ │ │ ├── PhantomListener.h │ │ │ │ │ ├── Shape.h │ │ │ │ │ ├── ShapeCastEvent.h │ │ │ │ │ ├── ShapeCastListener.h │ │ │ │ │ └── World.h │ │ │ │ ├── RefCountObject.h │ │ │ │ ├── RefSharedPointer.h │ │ │ │ ├── Scenery/ │ │ │ │ │ ├── Camera.h │ │ │ │ │ ├── CameraEventCallback.h │ │ │ │ │ ├── CameraImp.h │ │ │ │ │ └── Drawable.h │ │ │ │ └── Thread.h │ │ │ ├── StdImageFilters/ │ │ │ │ ├── BurnoutBlurFilter.h │ │ │ │ └── SingleTechniqueFilter.h │ │ │ ├── System/ │ │ │ │ ├── CreateStatic.h │ │ │ │ ├── Diagnostics/ │ │ │ │ │ └── Performance.h │ │ │ │ └── Singleton.h │ │ │ ├── TextBook.h │ │ │ ├── TextBookMgr.h │ │ │ ├── TextCard.h │ │ │ ├── TextEntity.h │ │ │ ├── TextFontPicture.h │ │ │ ├── TextFontPictureMgr.h │ │ │ ├── TitleTask.h │ │ │ ├── VehicleMissileCtrl.h │ │ │ ├── VehicleMissileCtrlAutomatic.h │ │ │ ├── VehicleMissileCtrlSingle.h │ │ │ ├── WorldRenderProcess.h │ │ │ └── sonicXmaPlayer.h │ │ ├── boost/ │ │ │ └── smart_ptr/ │ │ │ ├── make_shared_object.h │ │ │ └── shared_ptr.h │ │ ├── d3dxb.h │ │ ├── hk330/ │ │ │ ├── hkArray.h │ │ │ ├── hkReferencedObject.h │ │ │ ├── hkpBroadPhaseHandle.h │ │ │ ├── hkpCdBody.h │ │ │ ├── hkpCollidable.h │ │ │ ├── hkpCollidableCollidableFilter.h │ │ │ ├── hkpCollisionFilter.h │ │ │ ├── hkpEntity.h │ │ │ ├── hkpLinkedCollidable.h │ │ │ ├── hkpPhantom.h │ │ │ ├── hkpProperty.h │ │ │ ├── hkpRayCollidableFilter.h │ │ │ ├── hkpRayShapeCollectionFilter.h │ │ │ ├── hkpRigidBody.h │ │ │ ├── hkpShape.h │ │ │ ├── hkpShapeCollectionFilter.h │ │ │ ├── hkpTypedBroadPhaseHandle.h │ │ │ ├── hkpWorld.h │ │ │ └── hkpWorldObject.h │ │ └── stdx/ │ │ ├── string.h │ │ ├── vector.h │ │ └── wstring.h │ ├── app.cpp │ ├── app.h │ ├── apu/ │ │ ├── audio.cpp │ │ ├── audio.h │ │ ├── driver/ │ │ │ └── sdl2_driver.cpp │ │ ├── embedded_player.cpp │ │ ├── embedded_player.h │ │ ├── xma_decoder.cpp │ │ └── xma_decoder.h │ ├── cpu/ │ │ ├── guest_stack_var.h │ │ ├── guest_thread.cpp │ │ ├── guest_thread.h │ │ └── ppc_context.h │ ├── decompressor.h │ ├── exports.cpp │ ├── exports.h │ ├── framework.h │ ├── gpu/ │ │ ├── cache/ │ │ │ ├── pipeline_state_cache.h │ │ │ ├── vertex_declaration_cache.h │ │ │ └── vertex_element_cache.h │ │ ├── imgui/ │ │ │ ├── imgui_common.cpp │ │ │ ├── imgui_common.h │ │ │ ├── imgui_font_builder.cpp │ │ │ ├── imgui_font_builder.h │ │ │ ├── imgui_snapshot.cpp │ │ │ └── imgui_snapshot.h │ │ ├── shader/ │ │ │ ├── hlsl/ │ │ │ │ ├── .gitignore │ │ │ │ ├── blend_color_alpha_ps.hlsl │ │ │ │ ├── conditional_survey_ps.hlsl │ │ │ │ ├── copy_color_ps.hlsl │ │ │ │ ├── copy_common.hlsli │ │ │ │ ├── copy_depth_ps.hlsl │ │ │ │ ├── copy_vs.hlsl │ │ │ │ ├── csd_filter_ps.hlsl │ │ │ │ ├── csd_no_tex_vs.hlsl │ │ │ │ ├── csd_vs.hlsl │ │ │ │ ├── enhanced_burnout_blur_ps.hlsl │ │ │ │ ├── enhanced_burnout_blur_vs.hlsl │ │ │ │ ├── gamma_correction_ps.hlsl │ │ │ │ ├── gaussian_blur.hlsli │ │ │ │ ├── gaussian_blur_3x3.hlsl │ │ │ │ ├── gaussian_blur_5x5.hlsl │ │ │ │ ├── gaussian_blur_7x7.hlsl │ │ │ │ ├── gaussian_blur_9x9.hlsl │ │ │ │ ├── imgui_common.hlsli │ │ │ │ ├── imgui_ps.hlsl │ │ │ │ ├── imgui_vs.hlsl │ │ │ │ ├── resolve_msaa_color.hlsli │ │ │ │ ├── resolve_msaa_color_2x.hlsl │ │ │ │ ├── resolve_msaa_color_4x.hlsl │ │ │ │ ├── resolve_msaa_color_8x.hlsl │ │ │ │ ├── resolve_msaa_depth.hlsli │ │ │ │ ├── resolve_msaa_depth_2x.hlsl │ │ │ │ ├── resolve_msaa_depth_4x.hlsl │ │ │ │ └── resolve_msaa_depth_8x.hlsl │ │ │ └── msl/ │ │ │ ├── .gitignore │ │ │ ├── blend_color_alpha_ps.metal │ │ │ ├── conditional_survey_ps.metal │ │ │ ├── copy_color_ps.metal │ │ │ ├── copy_common.metali │ │ │ ├── copy_depth_ps.metal │ │ │ ├── copy_vs.metal │ │ │ ├── csd_filter_ps.metal │ │ │ ├── csd_no_tex_vs.metal │ │ │ ├── csd_vs.metal │ │ │ ├── enhanced_burnout_blur_ps.metal │ │ │ ├── enhanced_burnout_blur_vs.metal │ │ │ ├── gamma_correction_ps.metal │ │ │ ├── gaussian_blur.metali │ │ │ ├── gaussian_blur_3x3.metal │ │ │ ├── gaussian_blur_5x5.metal │ │ │ ├── gaussian_blur_7x7.metal │ │ │ ├── gaussian_blur_9x9.metal │ │ │ ├── imgui_common.metali │ │ │ ├── imgui_ps.metal │ │ │ ├── imgui_vs.metal │ │ │ ├── resolve_msaa_color.metali │ │ │ ├── resolve_msaa_color_2x.metal │ │ │ ├── resolve_msaa_color_4x.metal │ │ │ ├── resolve_msaa_color_8x.metal │ │ │ ├── resolve_msaa_depth.metali │ │ │ ├── resolve_msaa_depth_2x.metal │ │ │ ├── resolve_msaa_depth_4x.metal │ │ │ └── resolve_msaa_depth_8x.metal │ │ ├── video.cpp │ │ └── video.h │ ├── hid/ │ │ ├── driver/ │ │ │ └── sdl_hid.cpp │ │ ├── hid.cpp │ │ └── hid.h │ ├── install/ │ │ ├── directory_file_system.h │ │ ├── hashes/ │ │ │ ├── episode_amigo.cpp │ │ │ ├── episode_amigo.h │ │ │ ├── episode_shadow.cpp │ │ │ ├── episode_shadow.h │ │ │ ├── episode_silver.cpp │ │ │ ├── episode_silver.h │ │ │ ├── episode_sonic.cpp │ │ │ ├── episode_sonic.h │ │ │ ├── game.cpp │ │ │ ├── game.h │ │ │ ├── mission_shadow.cpp │ │ │ ├── mission_shadow.h │ │ │ ├── mission_silver.cpp │ │ │ ├── mission_silver.h │ │ │ ├── mission_sonic.cpp │ │ │ └── mission_sonic.h │ │ ├── installer.cpp │ │ ├── installer.h │ │ ├── iso_file_system.cpp │ │ ├── iso_file_system.h │ │ ├── update_checker.cpp │ │ ├── update_checker.h │ │ ├── virtual_file_system.h │ │ ├── xcontent_file_system.cpp │ │ └── xcontent_file_system.h │ ├── kernel/ │ │ ├── freelist.h │ │ ├── function.h │ │ ├── heap.cpp │ │ ├── heap.h │ │ ├── imports.cpp │ │ ├── io/ │ │ │ ├── file_system.cpp │ │ │ └── file_system.h │ │ ├── memory.cpp │ │ ├── memory.h │ │ ├── xam.cpp │ │ ├── xam.h │ │ ├── xdbf.h │ │ ├── xdm.cpp │ │ └── xdm.h │ ├── locale/ │ │ ├── achievement_locale.cpp │ │ ├── achievement_locale.h │ │ ├── config_locale.cpp │ │ ├── locale.cpp │ │ └── locale.h │ ├── main.cpp │ ├── misc_impl.cpp │ ├── mod/ │ │ ├── ini_file.h │ │ ├── ini_file.inl │ │ ├── mod_loader.cpp │ │ └── mod_loader.h │ ├── mutex.h │ ├── natvis.natvis │ ├── os/ │ │ ├── .gitignore │ │ ├── linux/ │ │ │ ├── logger_linux.cpp │ │ │ ├── media_linux.cpp │ │ │ ├── process_linux.cpp │ │ │ ├── registry_linux.inl │ │ │ ├── user_linux.cpp │ │ │ └── version_linux.cpp │ │ ├── logger.h │ │ ├── macos/ │ │ │ ├── logger_macos.cpp │ │ │ ├── media_macos.cpp │ │ │ ├── process_macos.cpp │ │ │ ├── registry_macos.inl │ │ │ ├── user_macos.cpp │ │ │ └── version_macos.cpp │ │ ├── media.h │ │ ├── process.h │ │ ├── registry.h │ │ ├── user.h │ │ ├── version.h │ │ └── win32/ │ │ ├── logger_win32.cpp │ │ ├── media_win32.cpp │ │ ├── process_win32.cpp │ │ ├── registry_win32.inl │ │ ├── user_win32.cpp │ │ └── version_win32.cpp │ ├── patches/ │ │ ├── MainMenuTask_patches.cpp │ │ ├── MainMenuTask_patches.h │ │ ├── SaveDataTask_patches.cpp │ │ ├── TitleTask_patches.cpp │ │ ├── aspect_ratio_patches.cpp │ │ ├── aspect_ratio_patches.h │ │ ├── audio_patches.cpp │ │ ├── audio_patches.h │ │ ├── camera_patches.cpp │ │ ├── camera_patches.h │ │ ├── fps_patches.cpp │ │ ├── frontend_listener.cpp │ │ ├── hook_event.h │ │ ├── input_patches.cpp │ │ ├── loading_patches.cpp │ │ ├── loading_patches.h │ │ ├── misc_patches.cpp │ │ ├── patches.h │ │ ├── pause_patches.cpp │ │ ├── player_patches.cpp │ │ ├── text_patches.cpp │ │ ├── text_patches.h │ │ └── video_patches.cpp │ ├── preload_executable.cpp │ ├── preload_executable.h │ ├── res/ │ │ ├── .gitignore │ │ ├── credits.h │ │ ├── macos/ │ │ │ ├── MacOSXBundleInfo.plist.in │ │ │ └── game_icon.icns │ │ ├── version.cpp.template │ │ ├── version.h.template │ │ ├── version.txt │ │ └── win32/ │ │ └── res.rc.template │ ├── sdl_events.h │ ├── sdl_listener.cpp │ ├── sdl_listener.h │ ├── stdafx.cpp │ ├── stdafx.h │ ├── ui/ │ │ ├── achievement_menu.cpp │ │ ├── achievement_menu.h │ │ ├── achievement_overlay.cpp │ │ ├── achievement_overlay.h │ │ ├── black_bar.cpp │ │ ├── black_bar.h │ │ ├── button_window.cpp │ │ ├── button_window.h │ │ ├── common_menu.cpp │ │ ├── common_menu.h │ │ ├── fader.cpp │ │ ├── fader.h │ │ ├── game_window.cpp │ │ ├── game_window.h │ │ ├── imgui_utils.cpp │ │ ├── imgui_utils.h │ │ ├── installer_wizard.cpp │ │ ├── installer_wizard.h │ │ ├── message_window.cpp │ │ ├── message_window.h │ │ ├── options_menu.cpp │ │ └── options_menu.h │ ├── user/ │ │ ├── achievement_data.cpp │ │ ├── achievement_data.h │ │ ├── achievement_manager.cpp │ │ ├── achievement_manager.h │ │ ├── config.cpp │ │ ├── config.h │ │ ├── config_def.h │ │ ├── paths.cpp │ │ ├── paths.h │ │ ├── registry.cpp │ │ └── registry.h │ ├── utils/ │ │ ├── bit_stream.cpp │ │ ├── bit_stream.h │ │ ├── ring_buffer.cpp │ │ └── ring_buffer.h │ ├── version.cmake │ └── xxHashMap.h ├── MarathonRecompLib/ │ ├── CMakeLists.txt │ ├── config/ │ │ ├── Marathon.toml │ │ └── switch_table.toml │ ├── ppc/ │ │ └── .gitignore │ ├── private/ │ │ └── .gitignore │ └── shader/ │ ├── .gitignore │ └── shader_cache.h ├── README.md ├── docs/ │ ├── BUILDING.md │ └── DUMPING-en.md ├── flatpak/ │ ├── README.md │ ├── io.github.sonicnext_dev.marathonrecomp.desktop │ ├── io.github.sonicnext_dev.marathonrecomp.json │ └── io.github.sonicnext_dev.marathonrecomp.metainfo.xml ├── thirdparty/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── MoltenVK/ │ │ └── CMakeLists.txt │ └── o1heap/ │ ├── CMakeLists.txt │ ├── o1heap.c │ └── o1heap.h ├── toolchains/ │ └── linux-clang.cmake ├── tools/ │ ├── CMakeLists.txt │ ├── bc_diff/ │ │ ├── CMakeLists.txt │ │ ├── bc_diff.cpp │ │ └── bc_diff.h │ ├── file_to_c/ │ │ ├── CMakeLists.txt │ │ └── file_to_c.cpp │ ├── fshasher/ │ │ ├── CMakeLists.txt │ │ ├── fshasher.cpp │ │ └── plainargs.h │ ├── u8extract/ │ │ ├── CMakeLists.txt │ │ └── u8extract.cpp │ └── x_decompress/ │ ├── CMakeLists.txt │ └── x_decompress.cpp ├── update_submodules.bat └── vcpkg.json
SYMBOL INDEX (1436 symbols across 412 files)
FILE: MarathonRecomp/api/Chao/CSD/Core/csdBase.h
function namespace (line 3) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCObject.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCObjectImp.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCPtr.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Core/csdRCPtrAbs.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Core/csdTexList.h
function namespace (line 6) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmMotionPattern.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmNode.h
function namespace (line 9) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmNodeObserver.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmObserverBase.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmProject.h
function namespace (line 7) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmResourceBase.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmScene.h
function namespace (line 9) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmSceneObserver.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Chao/CSD/Manager/csdmSubjectBase.h
function namespace (line 5) | namespace Chao::CSD
FILE: MarathonRecomp/api/Sonicteam/Actor.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/ActorManager.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/AlertWindowTask.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/AppMarathon.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/AudioEngineXenon.h
function namespace (line 9) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/ButtonWindowTask.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/CObjBalloonIconDrawable.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Camera/CameraMode.h
function namespace (line 8) | namespace Sonicteam::Camera
FILE: MarathonRecomp/api/Sonicteam/Camera/CameraModeManager.h
function namespace (line 8) | namespace Sonicteam::Camera
FILE: MarathonRecomp/api/Sonicteam/Camera/Cameraman.h
function namespace (line 6) | namespace Sonicteam::Camera
FILE: MarathonRecomp/api/Sonicteam/Camera/SonicCamera.h
function namespace (line 5) | namespace Sonicteam::Camera
FILE: MarathonRecomp/api/Sonicteam/CommonObjectHint.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/CsdLink.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/CsdManager.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/CsdObject.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/CsdResource.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/DocMarathonImp.h
function namespace (line 9) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/DocMarathonState.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Enemy/EnemyShot.h
function namespace (line 5) | namespace Sonicteam::Enemy
FILE: MarathonRecomp/api/Sonicteam/Enemy/EnemyShotNormal.h
function namespace (line 6) | namespace Sonicteam::Enemy
FILE: MarathonRecomp/api/Sonicteam/Enemy/EnemyShotPoint.h
function namespace (line 8) | namespace Sonicteam::Enemy
FILE: MarathonRecomp/api/Sonicteam/Fixture.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Game.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/GameImp.h
function namespace (line 15) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/GameMode.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Globals.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDButtonWindow.h
function namespace (line 14) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDCALLBACK.h
function namespace (line 3) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDGoldMedal.h
function namespace (line 13) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDLimitTime.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDLoading.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDMainDisplay.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDMainMenu.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDMessageWindow.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDOption.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDPopupScreen.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDRaderMap.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HUDStageTitle.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HintWindowTask.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/HudTextParts.h
function namespace (line 10) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/ImageFilter.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MainDisplayTask.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MainMenuExpositionTask.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MainMenuTask.h
function namespace (line 10) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MainMode.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Message/Camera/Cameraman/MsgChangeMode.h
function namespace (line 7) | namespace Sonicteam::Message::Camera::Cameraman
FILE: MarathonRecomp/api/Sonicteam/Message/HUDButtonWindow/MsgChangeButtons.h
function namespace (line 6) | namespace Sonicteam::Message::HUDButtonWindow
FILE: MarathonRecomp/api/Sonicteam/Message/HUDGoldMedal/MsgChangeState.h
function namespace (line 6) | namespace Sonicteam::Message::HUDGoldMedal
FILE: MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgChangeState.h
function namespace (line 6) | namespace Sonicteam::Message::HUDMainMenu
FILE: MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgSetCursor.h
function namespace (line 6) | namespace Sonicteam::Message::HUDMainMenu
FILE: MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgTransition.h
function namespace (line 6) | namespace Sonicteam::Message::HUDMainMenu
FILE: MarathonRecomp/api/Sonicteam/Message/Mission/MsgGetGlobalFlag.h
function namespace (line 5) | namespace Sonicteam::Message::Mission
FILE: MarathonRecomp/api/Sonicteam/Message/ObjJump123/MsgGetNextPoint.h
function namespace (line 7) | namespace Sonicteam::Message::ObjJump123
FILE: MarathonRecomp/api/Sonicteam/Message/PauseAdapter/MsgGetText.h
function namespace (line 7) | namespace Sonicteam::Message::PauseAdapter
FILE: MarathonRecomp/api/Sonicteam/Message/Player/MsgSuckPlayer.h
function namespace (line 7) | namespace Sonicteam::Message::Player
FILE: MarathonRecomp/api/Sonicteam/MessageWindowTask.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Mission/Core.h
function namespace (line 5) | namespace Sonicteam::Mission
FILE: MarathonRecomp/api/Sonicteam/MovieObject.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MovieObjectWmv.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MovieTask.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MyCueAttenuate.h
function class (line 3) | class MyCueAttenuate
FILE: MarathonRecomp/api/Sonicteam/MyGraphicsDevice.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MyPhantom.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MyRenderProcess.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MyTexture.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/MyTransforms.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/NamedActor.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/NamedTask.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/NoSyncThread.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/ObjectVehicle.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/ObjectVehicleBike.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/PauseAdapter.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/PauseTask.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/Player/GroundRayListener.h
function namespace (line 11) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/ICollisionListener.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/ICollisionListenerTemplate.h
function namespace (line 6) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IDynamicLink.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IEventerListener.h
function namespace (line 3) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IExportExternalFlag.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IExportPostureRequestFlag.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IExportWeaponRequestFlag.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IFlagCommunicator.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IGauge.h
function namespace (line 8) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/INotification.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPlugIn.h
function namespace (line 6) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureControl.h
function namespace (line 18) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPosturePlugIn.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureSupportEdge.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureSupportInput.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureSupportOttoto.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureSupportRayTemplate.h
function namespace (line 9) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IPostureSupportSphere.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IScore.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IStepable.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IVariable.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/IZock.h
function namespace (line 6) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/Input/IListener.h
function namespace (line 5) | namespace Sonicteam::Player::Input
FILE: MarathonRecomp/api/Sonicteam/Player/Input/ListenerNormal.h
function namespace (line 6) | namespace Sonicteam::Player::Input
FILE: MarathonRecomp/api/Sonicteam/Player/Input/TimedAction.h
function namespace (line 5) | namespace Sonicteam::Player::Input
FILE: MarathonRecomp/api/Sonicteam/Player/Object.h
function namespace (line 14) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/PostureControl.h
function namespace (line 12) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/RootFrame.h
function namespace (line 10) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/Score.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/SonicGauge.h
function namespace (line 5) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/Player/State/CommonContext.h
function namespace (line 10) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/CommonFall.h
function namespace (line 6) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/CommonObject.h
function namespace (line 6) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/ContextSpeedAndJump.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/ICommonContext.h
function namespace (line 8) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/ICommonContextIF.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/IContext.h
function namespace (line 9) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/IMachine.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/Machine2.h
function namespace (line 8) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/Object2.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/SonicContext.h
function namespace (line 8) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/SonicObject.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/TailsContext.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/State/TailsFlight.h
function namespace (line 5) | namespace Sonicteam::Player::State
FILE: MarathonRecomp/api/Sonicteam/Player/Unit/ITestCase.h
function namespace (line 5) | namespace Sonicteam::Player::Unit
FILE: MarathonRecomp/api/Sonicteam/Player/Weapon/SonicWeapons.h
function namespace (line 13) | namespace Sonicteam::Player::Weapon
FILE: MarathonRecomp/api/Sonicteam/Player/Zock.h
function namespace (line 16) | namespace Sonicteam::Player
FILE: MarathonRecomp/api/Sonicteam/PropFixture.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/RaderMapManager.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ApplyBloom.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ApplyDevice.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ApplySceneParams.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/AutoSetAspect.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/Capture.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ClearRenderTarget.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ColorFill.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/CopyTexture.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/LockBlendMode.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/LockCullMode.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/LockZMode.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/MakeBloom.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/Movie.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/PrepareCalculateCSM.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/Rasterize.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/RasterizeBurnoutBlur.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ResetRenderStates.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ResetScissorRect.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/ResetViewport.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/Resolve.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/RunCommandBuffer.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetAutoZPass.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetBackStencilOp.h
function namespace (line 7) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetBlendMode.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetCSMTextures.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetClip.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetColorWriteEnable.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetConstantShader.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetCullMode.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetCurrentScreen.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetDepthTextures.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetFovY.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetFrameBufferObject.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetReflectionTextures.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetScissorRect.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetScissorTest.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetScreen.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetShaderGPRAllocation.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetStencilEnable.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetStencilFunc.h
function namespace (line 7) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetStencilOp.h
function namespace (line 7) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetStencilWriteMask.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetTexture.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetUserClipPlaneEnable.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetViewport.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderAction/SetZMode.h
function namespace (line 6) | namespace Sonicteam::RenderAction
FILE: MarathonRecomp/api/Sonicteam/RenderPostprocess.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/SaveDataTask.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/SaveDataTaskXENON.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/SelectWindowTask.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/SoX/AI/StateMachine.h
function namespace (line 5) | namespace Sonicteam::SoX::AI
FILE: MarathonRecomp/api/Sonicteam/SoX/ApplicationXenon.h
function namespace (line 6) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/Audio/Cue.h
function namespace (line 7) | namespace Sonicteam::SoX::Audio
FILE: MarathonRecomp/api/Sonicteam/SoX/Audio/IAudioEngine.h
function namespace (line 5) | namespace Sonicteam::SoX::Audio
FILE: MarathonRecomp/api/Sonicteam/SoX/Audio/Player.h
function namespace (line 5) | namespace Sonicteam::SoX::Audio
FILE: MarathonRecomp/api/Sonicteam/SoX/Audio/PlayerImpl.h
function namespace (line 5) | namespace Sonicteam::SoX::Audio
FILE: MarathonRecomp/api/Sonicteam/SoX/Component.h
function namespace (line 6) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/Engine/Application.h
function namespace (line 5) | namespace Sonicteam::SoX::Engine
FILE: MarathonRecomp/api/Sonicteam/SoX/Engine/Doc.h
function namespace (line 7) | namespace Sonicteam::SoX::Engine
FILE: MarathonRecomp/api/Sonicteam/SoX/Engine/DocMode.h
function namespace (line 6) | namespace Sonicteam::SoX::Engine
FILE: MarathonRecomp/api/Sonicteam/SoX/Engine/RenderProcess.h
function namespace (line 5) | namespace Sonicteam::SoX::Engine
FILE: MarathonRecomp/api/Sonicteam/SoX/Engine/Task.h
function namespace (line 8) | namespace Sonicteam::SoX::Engine
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Device.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Frame.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/FrameGP.h
function namespace (line 7) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/FrameObserver.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Technique.h
function namespace (line 5) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/TechniqueFXL.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Texture.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Transforms.h
function namespace (line 5) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Vertex.h
function namespace (line 5) | namespace Sonicteam::SoX::Graphics
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Xenon/DeviceXenon.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics::Xenon
FILE: MarathonRecomp/api/Sonicteam/SoX/Graphics/Xenon/TextureXenon.h
function namespace (line 6) | namespace Sonicteam::SoX::Graphics::Xenon
FILE: MarathonRecomp/api/Sonicteam/SoX/IResource.h
function namespace (line 6) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/IResource2.h
function namespace (line 7) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/IResourceMgr.h
function namespace (line 5) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/Input/Manager.h
function namespace (line 5) | namespace Sonicteam::SoX::Input
FILE: MarathonRecomp/api/Sonicteam/SoX/LinkNode.h
function namespace (line 3) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/Math/Matrix.h
function namespace (line 5) | namespace Sonicteam::SoX::Math
FILE: MarathonRecomp/api/Sonicteam/SoX/Math/Quaternion.h
function namespace (line 5) | namespace Sonicteam::SoX::Math
FILE: MarathonRecomp/api/Sonicteam/SoX/Math/Vector.h
function namespace (line 5) | namespace Sonicteam::SoX::Math
FILE: MarathonRecomp/api/Sonicteam/SoX/Message.h
function namespace (line 5) | namespace Sonicteam::SoX
function GetID (line 23) | static const uint32_t GetID()
FILE: MarathonRecomp/api/Sonicteam/SoX/MessageReceiver.h
function namespace (line 6) | namespace Sonicteam::SoX
function ProcessMessage (line 24) | bool ProcessMessage(IMessage* pMessage)
FILE: MarathonRecomp/api/Sonicteam/SoX/Object.h
function namespace (line 5) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Entity.h
function namespace (line 12) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Havok/EntityHavok.h
function namespace (line 11) | namespace Sonicteam::SoX::Physics::Havok
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Havok/EntityHavokImp.h
function namespace (line 7) | namespace Sonicteam::SoX::Physics::Havok
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Havok/PhantomHavok.h
function namespace (line 7) | namespace Sonicteam::SoX::Physics::Havok
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Havok/WorldHavok.h
function namespace (line 7) | namespace Sonicteam::SoX::Physics::Havok
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/IntersectEvent.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/IntersectListener.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Phantom.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/PhantomListener.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/Shape.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/ShapeCastEvent.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/ShapeCastListener.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/Physics/World.h
function namespace (line 6) | namespace Sonicteam::SoX::Physics
FILE: MarathonRecomp/api/Sonicteam/SoX/RefCountObject.h
function namespace (line 5) | namespace Sonicteam::SoX
function AddReference (line 31) | inline void AddReference()
FILE: MarathonRecomp/api/Sonicteam/SoX/RefSharedPointer.h
function namespace (line 6) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/SoX/Scenery/Camera.h
function namespace (line 5) | namespace Sonicteam::SoX::Scenery
FILE: MarathonRecomp/api/Sonicteam/SoX/Scenery/CameraEventCallback.h
function namespace (line 5) | namespace Sonicteam::SoX::Scenery
FILE: MarathonRecomp/api/Sonicteam/SoX/Scenery/CameraImp.h
function namespace (line 11) | namespace Sonicteam::SoX::Scenery
FILE: MarathonRecomp/api/Sonicteam/SoX/Scenery/Drawable.h
function namespace (line 7) | namespace Sonicteam::SoX::Scenery
FILE: MarathonRecomp/api/Sonicteam/SoX/Thread.h
function namespace (line 5) | namespace Sonicteam::SoX
FILE: MarathonRecomp/api/Sonicteam/StdImageFilters/BurnoutBlurFilter.h
function namespace (line 6) | namespace Sonicteam::StdImageFilters
FILE: MarathonRecomp/api/Sonicteam/StdImageFilters/SingleTechniqueFilter.h
function namespace (line 5) | namespace Sonicteam::StdImageFilters
FILE: MarathonRecomp/api/Sonicteam/System/CreateStatic.h
function namespace (line 3) | namespace Sonicteam::System
FILE: MarathonRecomp/api/Sonicteam/System/Diagnostics/Performance.h
function namespace (line 7) | namespace Sonicteam::System::Diagnostics
FILE: MarathonRecomp/api/Sonicteam/System/Singleton.h
function namespace (line 3) | namespace Sonicteam::System
FILE: MarathonRecomp/api/Sonicteam/TextBook.h
function namespace (line 9) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/TextBookMgr.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/TextCard.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/TextEntity.h
function namespace (line 8) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/TextFontPicture.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/TextFontPictureMgr.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/TitleTask.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/VehicleMissileCtrl.h
function namespace (line 7) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/VehicleMissileCtrlAutomatic.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/VehicleMissileCtrlSingle.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/WorldRenderProcess.h
function namespace (line 6) | namespace Sonicteam
FILE: MarathonRecomp/api/Sonicteam/sonicXmaPlayer.h
function namespace (line 5) | namespace Sonicteam
FILE: MarathonRecomp/api/boost/smart_ptr/make_shared_object.h
function namespace (line 5) | namespace boost
FILE: MarathonRecomp/api/boost/smart_ptr/shared_ptr.h
function namespace (line 7) | namespace boost
function add_ref (line 123) | void add_ref()
function release (line 129) | void release()
FILE: MarathonRecomp/api/d3dxb.h
type D3DXBSTENCILOP (line 5) | enum D3DXBSTENCILOP
FILE: MarathonRecomp/api/hk330/hkArray.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkReferencedObject.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpBroadPhaseHandle.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpCdBody.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpCollidable.h
function namespace (line 7) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpCollidableCollidableFilter.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpCollisionFilter.h
function namespace (line 13) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpEntity.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpLinkedCollidable.h
function namespace (line 7) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpPhantom.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpProperty.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpRayCollidableFilter.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpRayShapeCollectionFilter.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpRigidBody.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpShape.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpShapeCollectionFilter.h
function namespace (line 5) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpTypedBroadPhaseHandle.h
function namespace (line 6) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpWorld.h
function namespace (line 8) | namespace hk330
FILE: MarathonRecomp/api/hk330/hkpWorldObject.h
function namespace (line 10) | namespace hk330
FILE: MarathonRecomp/api/stdx/string.h
function namespace (line 6) | namespace stdx
FILE: MarathonRecomp/api/stdx/vector.h
function namespace (line 8) | namespace stdx
function T (line 292) | const T& operator[](size_t pos) const
function T (line 302) | const T& at(size_t pos) const
function T (line 322) | const T& back() const
function T (line 332) | const T* data() const
function iterator (line 337) | iterator begin()
function iterator (line 352) | iterator end()
function reserve (line 382) | void reserve(size_t new_capacity)
function shrink_to_fit (line 388) | void shrink_to_fit()
function clear (line 394) | void clear()
function push_back (line 400) | void push_back(const T& value)
function push_back (line 407) | void push_back(T&& value)
function pop_back (line 422) | void pop_back()
function resize (line 428) | void resize(size_t count)
function resize (line 447) | void resize(size_t count, const T& value)
function swap (line 466) | void swap(vector& other) noexcept
FILE: MarathonRecomp/api/stdx/wstring.h
function namespace (line 6) | namespace stdx
FILE: MarathonRecomp/app.cpp
function PPC_FUNC (line 35) | PPC_FUNC(sub_8262A568)
function PPC_FUNC (line 69) | PPC_FUNC(sub_825EA610)
function PPC_FUNC (line 105) | PPC_FUNC(sub_82582648)
function PPC_FUNC (line 128) | PPC_FUNC(sub_825867A8)
function PPC_FUNC (line 139) | PPC_FUNC(sub_82744840)
function PPC_FUNC (line 148) | PPC_FUNC(sub_825E7918)
function PPC_FUNC (line 164) | PPC_FUNC(sub_825E7958)
function PPC_FUNC (line 180) | PPC_FUNC(sub_825822D0)
FILE: MarathonRecomp/app.h
function class (line 6) | class App
FILE: MarathonRecomp/apu/audio.cpp
function XAudioRegisterRenderDriverClient (line 17) | uint32_t XAudioRegisterRenderDriverClient(be<uint32_t>* callback, be<uin...
function XAudioUnregisterRenderDriverClient (line 28) | uint32_t XAudioUnregisterRenderDriverClient(uint32_t driver)
function XAudioSubmitRenderDriverFrame (line 33) | uint32_t XAudioSubmitRenderDriverFrame(uint32_t driver, void* samples)
FILE: MarathonRecomp/apu/driver/sdl2_driver.cpp
function CreateAudioDevice (line 13) | static void CreateAudioDevice()
function XAudioInitializeSystem (line 40) | void XAudioInitializeSystem()
function AudioThread (line 62) | static void AudioThread()
function CreateAudioThread (line 93) | static void CreateAudioThread()
function XAudioRegisterClient (line 100) | void XAudioRegisterClient(PPCFunc* callback, uint32_t param)
function XAudioSubmitFrame (line 111) | void XAudioSubmitFrame(void* samples)
function XAudioConfigValueChangedCallback (line 165) | void XAudioConfigValueChangedCallback(IConfigDef* configDef)
FILE: MarathonRecomp/apu/embedded_player.cpp
type EmbeddedSound (line 14) | enum class EmbeddedSound
type EmbeddedSoundData (line 26) | struct EmbeddedSoundData
function PlayEmbeddedSound (line 45) | static void PlayEmbeddedSound(EmbeddedSound s)
FILE: MarathonRecomp/apu/embedded_player.h
type EmbeddedPlayer (line 3) | struct EmbeddedPlayer
FILE: MarathonRecomp/apu/xma_decoder.cpp
function XMAPlaybackGetFrameOffsetFromPacketHeader (line 29) | uint32_t XMAPlaybackGetFrameOffsetFromPacketHeader(uint32_t header) {
function GetPacketNumber (line 39) | int16_t GetPacketNumber(size_t size, size_t bitOffset) {
function GetPacketFrameOffset (line 54) | static uint32_t GetPacketFrameOffset(const uint8_t *packet) {
type kPacketInfo (line 59) | struct kPacketInfo {
method IsLastFrameInPacket (line 64) | const bool IsLastFrameInPacket() const {
function kPacketInfo (line 69) | kPacketInfo GetPacketInfo(uint8_t *packet, uint32_t frameOffset) {
method IsLastFrameInPacket (line 64) | const bool IsLastFrameInPacket() const {
function GetPacketSkipCount (line 138) | uint8_t GetPacketSkipCount(const uint8_t *packet) { return packet[3]; }
function GetAmountOfBitsToRead (line 140) | uint32_t GetAmountOfBitsToRead(const uint32_t remainingStreamBits, const...
function T (line 144) | T clamp_float(T value, T minValue, T maxValue) {
function GetNextPacketReadOffset (line 149) | const uint32_t GetNextPacketReadOffset(uint8_t *buffer, uint32_t nextPac...
function SwapInputBuffer (line 168) | void SwapInputBuffer(XmaPlayback *playback) {
function UpdateLoopStatus (line 180) | void UpdateLoopStatus(XmaPlayback *playback) {
function Decode (line 199) | void Decode(XmaPlayback *playback) {
function Consume (line 348) | void Consume(XmaPlayback *playback) {
function DecoderThreadFunc (line 366) | void DecoderThreadFunc(XmaPlayback *playback) {
function XMAPlaybackCreate (line 424) | uint32_t XMAPlaybackCreate(uint32_t streams, XMAPLAYBACKINIT *init, uint...
function XMAPlaybackRequestModifyLock (line 434) | uint32_t XMAPlaybackRequestModifyLock(XmaPlayback *playback) {
function XMAPlaybackWaitUntilModifyLockObtained (line 441) | uint32_t XMAPlaybackWaitUntilModifyLockObtained(XmaPlayback *playback) {
function XMAPlaybackQueryReadyForMoreData (line 448) | uint32_t XMAPlaybackQueryReadyForMoreData(XmaPlayback *playback, uint32_...
function XMAPlaybackIsIdle (line 452) | uint32_t XMAPlaybackIsIdle(XmaPlayback *playback, uint32_t stream) {
function XMAPlaybackQueryContextsAllocated (line 456) | uint32_t XMAPlaybackQueryContextsAllocated(XmaPlayback *playback) {
function XMAPlaybackResumePlayback (line 464) | uint32_t XMAPlaybackResumePlayback(XmaPlayback *playback) {
function XMAPlaybackQueryInputDataPending (line 472) | uint32_t XMAPlaybackQueryInputDataPending(XmaPlayback *playback, uint32_...
function XMAPlaybackGetErrorBits (line 484) | uint32_t XMAPlaybackGetErrorBits(XmaPlayback *playback, uint32_t stream) {
function XMAPlaybackSubmitData (line 488) | uint32_t XMAPlaybackSubmitData(XmaPlayback *playback, uint32_t stream, u...
function XMAPlaybackQueryAvailableData (line 527) | uint32_t XMAPlaybackQueryAvailableData(XmaPlayback *playback, uint32_t s...
function XMAPlaybackAccessDecodedData (line 562) | uint32_t XMAPlaybackAccessDecodedData(XmaPlayback *playback, uint32_t st...
function XMAPlaybackConsumeDecodedData (line 602) | uint32_t XMAPlaybackConsumeDecodedData(XmaPlayback *playback, uint32_t s...
function XMAPlaybackQueryModifyLockObtained (line 683) | uint32_t XMAPlaybackQueryModifyLockObtained(XmaPlayback *playback) {
function XMAPlaybackDestroy (line 688) | uint32_t XMAPlaybackDestroy(XmaPlayback *playback) {
function XMAPlaybackFlushData (line 693) | uint32_t XMAPlaybackFlushData(XmaPlayback *playback) {
type XMAPLAYBACKLOOP (line 699) | struct XMAPLAYBACKLOOP {
function XmaPlaybackSetLoop (line 708) | uint32_t XmaPlaybackSetLoop(XmaPlayback *playback, uint32_t streamIndex,...
function XMAPlaybackGetRemainingLoopCount (line 718) | uint32_t XMAPlaybackGetRemainingLoopCount(XmaPlayback *playback) {
function XMAPlaybackGetStreamPosition (line 724) | uint32_t XMAPlaybackGetStreamPosition(XmaPlayback *playback) {
function XMAPlaybackSetDecodePosition (line 728) | uint32_t XMAPlaybackSetDecodePosition(XmaPlayback *playback, uint32_t st...
function XMAPlaybackRewindDecodePosition (line 735) | uint32_t XMAPlaybackRewindDecodePosition(XmaPlayback *playback, uint32_t...
function XMAPlaybackQueryCurrentPosition (line 760) | uint32_t XMAPlaybackQueryCurrentPosition(XmaPlayback *playback) {
FILE: MarathonRecomp/apu/xma_decoder.h
type XMAPLAYBACKINIT (line 13) | struct XMAPLAYBACKINIT {
type XmaPlayback (line 27) | struct XmaPlayback {
function GetInputBufferPacketCount (line 125) | const uint32_t GetInputBufferPacketCount(uint8_t bufferIndex) const {
function GetCurrentInputBufferPacketCount (line 128) | const uint32_t GetCurrentInputBufferPacketCount() const {
function IsInputBufferValid (line 136) | bool IsInputBufferValid(uint8_t bufferIndex) const {
FILE: MarathonRecomp/cpu/guest_stack_var.h
function AllocGuestStackMemory (line 16) | void AllocGuestStackMemory()
function T (line 30) | const T* get() const
function operator (line 99) | operator T* ()
function T (line 104) | const T* operator->() const
FILE: MarathonRecomp/cpu/guest_thread.cpp
function GetStackSize (line 46) | static size_t GetStackSize()
function CalcThreadId (line 113) | static uint32_t CalcThreadId(const ThreadType& id)
function GuestThreadHandle (line 185) | GuestThreadHandle* GuestThread::Start(const GuestThreadParams& params, u...
type tagTHREADNAME_INFO (line 225) | struct tagTHREADNAME_INFO
function SetThreadNameImpl (line 250) | void SetThreadNameImpl(uint32_t a1, uint32_t threadId, uint32_t* name)
function GetThreadPriorityImpl (line 257) | int GetThreadPriorityImpl(GuestThreadHandle* hThread)
function SetThreadIdealProcessorImpl (line 266) | uint32_t SetThreadIdealProcessorImpl(GuestThreadHandle* hThread, uint32_...
FILE: MarathonRecomp/cpu/guest_thread.h
type GuestThreadContext (line 16) | struct GuestThreadContext
type GuestThreadParams (line 25) | struct GuestThreadParams
function KernelObject (line 32) | struct GuestThreadHandle : KernelObject
type GuestThread (line 52) | struct GuestThread
FILE: MarathonRecomp/cpu/ppc_context.h
function PPCContext (line 5) | inline PPCContext* GetPPCContext()
function SetPPCContext (line 10) | inline void SetPPCContext(PPCContext& ctx)
FILE: MarathonRecomp/exports.cpp
function Game_PlaySound (line 7) | void Game_PlaySound(const char* pName)
function Game_PlaySound (line 19) | void Game_PlaySound(const char* pBankName, const char* pName)
FILE: MarathonRecomp/framework.h
function StringHash (line 26) | inline size_t StringHash(const std::string_view& str)
function zero (line 35) | constexpr auto zero = TValue{}
function std (line 49) | inline std::unique_ptr<uint8_t[]> ReadAllBytes(const char* filePath, siz...
function strcmpIgnoreCase (line 69) | inline bool strcmpIgnoreCase(const char* a, const char* b)
function strcmpWildcard (line 89) | inline bool strcmpWildcard(const char* str, const char* pattern)
function std (line 113) | inline std::u16string TransformUTF8ToWString(const std::string& str)
FILE: MarathonRecomp/gpu/imgui/imgui_common.cpp
function ImGuiCallbackData (line 6) | ImGuiCallbackData* AddImGuiCallback(ImGuiCallback callback)
function ResetImGuiCallbacks (line 19) | void ResetImGuiCallbacks()
FILE: MarathonRecomp/gpu/imgui/imgui_common.h
function ImGuiCallback (line 15) | enum class ImGuiCallback : int32_t
FILE: MarathonRecomp/gpu/imgui/imgui_font_builder.cpp
type TightAtlasPacker (line 6) | struct TightAtlasPacker {
method TightAtlasPacker (line 8) | TightAtlasPacker() :
method pack (line 22) | int pack(msdf_atlas::GlyphGeometry* glyphs, int count, msdf_atlas::Rec...
method tryPack (line 50) | int tryPack(msdf_atlas::GlyphGeometry* glyphs, int count, msdf_atlas::...
method packAndScale (line 124) | double packAndScale(msdf_atlas::GlyphGeometry* glyphs, int count, msdf...
function FontBuilder_Build (line 155) | static bool FontBuilder_Build(ImFontAtlas* atlas)
FILE: MarathonRecomp/gpu/imgui/imgui_snapshot.cpp
type ImFontAtlasSnapshotHeader (line 82) | struct ImFontAtlasSnapshotHeader
function ImFontAtlas (line 111) | ImFontAtlas* ImFontAtlasSnapshot::Load()
function GetGlyphs (line 129) | static void GetGlyphs(std::set<ImWchar>& glyphs, const std::string_view&...
function ImFont (line 190) | ImFont* ImFontAtlasSnapshot::GetFont(const char* name)
FILE: MarathonRecomp/gpu/imgui/imgui_snapshot.h
type ImFontAtlasSnapshot (line 8) | struct ImFontAtlasSnapshot
FILE: MarathonRecomp/gpu/video.cpp
type plume (line 130) | namespace plume
function CreateVulkanInterfaceWrapper (line 144) | static std::unique_ptr<RenderInterface> CreateVulkanInterfaceWrapper() {
type PipelineState (line 156) | struct PipelineState
type UploadAllocation (line 200) | struct UploadAllocation
type SharedConstants (line 208) | struct SharedConstants
type DirtyStates (line 251) | struct DirtyStates
method DirtyStates (line 265) | DirtyStates(bool value)
function SetDirtyValue (line 284) | static void SetDirtyValue(bool& dirtyState, T& dest, const T& src)
type Profiler (line 296) | struct Profiler
method Begin (line 302) | void Begin()
method End (line 307) | void End()
method Set (line 312) | void Set(double v)
method Reset (line 317) | void Reset()
method UpdateAndReturnAverage (line 323) | double UpdateAndReturnAverage()
type TextureDescriptorAllocator (line 407) | struct TextureDescriptorAllocator
method allocate (line 413) | uint32_t allocate()
method free (line 432) | void free(uint32_t value)
type PipelineTaskType (line 465) | enum class PipelineTaskType
type PipelineTask (line 473) | struct PipelineTask
type UploadBuffer (line 515) | struct UploadBuffer
type UploadAllocator (line 524) | struct UploadAllocator
method UploadAllocation (line 530) | UploadAllocation allocate(uint32_t size, uint32_t alignment)
method UploadAllocation (line 560) | UploadAllocation allocate(const T* memory, uint32_t size, uint32_t ali...
method reset (line 583) | void reset()
type IntermediaryUploadAllocator (line 592) | struct IntermediaryUploadAllocator
method reset (line 630) | void reset()
type PrimitiveIndexData (line 643) | struct PrimitiveIndexData
method prepare (line 649) | uint32_t prepare(uint32_t guestPrimCount)
method reset (line 719) | void reset()
function DestructTempResources (line 729) | static void DestructTempResources()
function AddBarrier (line 818) | static void AddBarrier(GuestBaseTexture* texture, RenderTextureLayout la...
function FlushBarriers (line 829) | static void FlushBarriers()
function LoadEmbeddedResources (line 846) | static void LoadEmbeddedResources()
type CsdFilterState (line 872) | enum class CsdFilterState
type RenderCommandType (line 884) | enum class RenderCommandType
type RenderCommand (line 919) | struct RenderCommand
function SetRenderState (line 1098) | static void SetRenderState(GuestDevice* device, uint32_t value)
function SetRenderStateUnimplemented (line 1107) | static void SetRenderStateUnimplemented(GuestDevice* device, uint32_t va...
function SetAlphaTestMode (line 1112) | static void SetAlphaTestMode(bool enable)
function RenderBlend (line 1133) | static RenderBlend ConvertBlendMode(uint32_t blendMode)
function RenderBlendOperation (line 1163) | static RenderBlendOperation ConvertBlendOp(uint32_t blendOp)
function RenderComparisonFunction (line 1183) | static RenderComparisonFunction ConvertCompareFunc(uint32_t compareFunc)
function RenderStencilOp (line 1209) | static RenderStencilOp ConvertStencilOp(uint32_t stencilOp)
function ProcSetRenderState (line 1235) | static void ProcSetRenderState(const RenderCommand& cmd)
function DetectWine (line 1524) | static bool DetectWine()
function ExecuteCopyCommandList (line 1540) | static void ExecuteCopyCommandList(const T& function)
type ImGuiPushConstants (line 1554) | struct ImGuiPushConstants
function CreateImGuiBackend (line 1574) | static void CreateImGuiBackend()
function CheckSwapChain (line 1736) | static void CheckSwapChain()
function BeginCommandList (line 1763) | static void BeginCommandList()
function ApplyLowEndDefault (line 1829) | static void ApplyLowEndDefault(ConfigDef<T> &configDef, T newDefault, bo...
function ApplyLowEndDefaults (line 1840) | static void ApplyLowEndDefaults()
function __except (line 1959) | __except (EXCEPTION_EXECUTE_HANDLER)
function getSetAddress (line 2316) | static uint32_t getSetAddress(uint32_t base, int index) {
function CreateDevice (line 2323) | static uint32_t CreateDevice(uint32_t a1, uint32_t a2, uint32_t a3, uint...
function DestructResource (line 2383) | static void DestructResource(GuestResource* resource)
function ProcDestructResource (line 2399) | static void ProcDestructResource(const RenderCommand& cmd)
function ComputeTexturePitch (line 2405) | static uint32_t ComputeTexturePitch(GuestTexture* texture)
function LockTextureRect (line 2410) | static void LockTextureRect(GuestTexture* texture, uint32_t, GuestLocked...
function UnlockTextureRect (line 2422) | static void UnlockTextureRect(GuestTexture* texture)
function ProcUnlockTextureRect (line 2432) | static void ProcUnlockTextureRect(const RenderCommand& cmd)
function UnlockBuffer (line 2468) | static void UnlockBuffer(GuestBuffer* buffer, bool useCopyQueue)
function UnlockBuffer (line 2516) | static void UnlockBuffer(GuestBuffer* buffer)
function ProcUnlockBuffer16 (line 2524) | static void ProcUnlockBuffer16(const RenderCommand& cmd)
function ProcUnlockBuffer32 (line 2529) | static void ProcUnlockBuffer32(const RenderCommand& cmd)
function UnlockVertexBuffer (line 2534) | static void UnlockVertexBuffer(GuestBuffer* buffer)
function GetVertexBufferDesc (line 2539) | static void GetVertexBufferDesc(GuestBuffer* buffer, GuestBufferDesc* desc)
function UnlockIndexBuffer (line 2549) | static void UnlockIndexBuffer(GuestBuffer* buffer)
function GetIndexBufferDesc (line 2557) | static void GetIndexBufferDesc(GuestBuffer* buffer, GuestBufferDesc* desc)
function GetSurfaceDesc (line 2563) | static void GetSurfaceDesc(GuestSurface* surface, GuestSurfaceDesc* desc)
function GetVertexDeclaration (line 2585) | static void GetVertexDeclaration(GuestVertexDeclaration* vertexDeclarati...
function HashVertexDeclaration (line 2591) | static uint32_t HashVertexDeclaration(uint32_t vertexDeclaration)
function DrawProfiler (line 2614) | static void DrawProfiler()
function DrawFPS (line 2836) | static void DrawFPS()
function DrawImGui (line 2873) | static void DrawImGui()
function ProcDrawImGui (line 2955) | static void ProcDrawImGui(const RenderCommand& cmd)
function SetRootDescriptor (line 3222) | static void SetRootDescriptor(const UploadAllocation& allocation, size_t...
function ProcExecuteCommandList (line 3232) | static void ProcExecuteCommandList(const RenderCommand& cmd)
function ProcBeginCommandList (line 3323) | static void ProcBeginCommandList(const RenderCommand& cmd)
function GuestSurface (line 3329) | static GuestSurface* GetBackBuffer()
function GuestSurface (line 3335) | static GuestSurface* GetDepthStencil()
function RenderFormat (line 3374) | static RenderFormat ConvertFormat(uint32_t format)
function DiscardTexture (line 3416) | static void DiscardTexture(GuestBaseTexture* texture, RenderTextureLayou...
function GuestTexture (line 3437) | static GuestTexture* CreateTexture(uint32_t width, uint32_t height, uint...
function RenderHeapType (line 3526) | static RenderHeapType GetBufferHeapType()
function GuestBuffer (line 3531) | static GuestBuffer* CreateVertexBuffer(uint32_t length)
function GuestBuffer (line 3542) | static GuestBuffer* CreateIndexBuffer(uint32_t length, uint32_t, uint32_...
function GuestSurface (line 3559) | static GuestSurface* CreateSurface(uint32_t width, uint32_t height, uint...
function FlushViewport (line 3630) | static void FlushViewport()
function StretchRect (line 3660) | static void StretchRect(GuestDevice* device, uint32_t flags, uint32_t, G...
function ProcStretchRect (line 3674) | static void ProcStretchRect(const RenderCommand& cmd)
function SetDefaultViewport (line 3713) | static void SetDefaultViewport(GuestDevice* device, GuestSurface* surface)
function SetRenderTarget (line 3736) | static void SetRenderTarget(GuestDevice* device, uint32_t index, GuestSu...
function ProcSetRenderTarget (line 3754) | static void ProcSetRenderTarget(const RenderCommand& cmd)
function SetDepthStencilSurface (line 3765) | static void SetDepthStencilSurface(GuestDevice* device, GuestSurface* de...
function ProcSetDepthStencilSurface (line 3775) | static void ProcSetDepthStencilSurface(const RenderCommand& cmd)
function PopulateBarriersForStretchRect (line 3783) | static bool PopulateBarriersForStretchRect(GuestSurface* renderTarget, G...
function ExecutePendingStretchRectCommands (line 3825) | static void ExecutePendingStretchRectCommands(GuestSurface* renderTarget...
function ProcExecutePendingStretchRectCommands (line 3989) | static void ProcExecutePendingStretchRectCommands(const RenderCommand& cmd)
function SetFramebuffer (line 4020) | static void SetFramebuffer(GuestSurface* renderTarget, GuestSurface* dep...
function Clear (line 4088) | static void Clear(GuestDevice* device, uint32_t flags, uint32_t, be<floa...
function ProcClear (line 4102) | static void ProcClear(const RenderCommand& cmd)
function SetViewport (line 4147) | static void SetViewport(GuestDevice* device, GuestViewport* viewport)
function ProcSetViewport (line 4167) | static void ProcSetViewport(const RenderCommand& cmd)
function SetTexture (line 4189) | static void SetTexture(GuestDevice* device, uint32_t index, GuestTexture...
function SetTextureInRenderThread (line 4203) | static void SetTextureInRenderThread(uint32_t index, GuestTexture* texture)
function SetSurface (line 4219) | static void SetSurface(uint32_t index, GuestSurface* surface)
function ProcSetTexture (line 4228) | static void ProcSetTexture(const RenderCommand& cmd)
function SetScissorRect (line 4256) | static void SetScissorRect(GuestDevice* device, GuestRect* rect)
function ProcSetScissorRect (line 4267) | static void ProcSetScissorRect(const RenderCommand& cmd)
function RenderShader (line 4277) | static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t ...
function SanitizePipelineState (line 4452) | static void SanitizePipelineState(PipelineState& pipelineState)
function CreateGraphicsPipeline (line 4522) | static std::unique_ptr<RenderPipeline> CreateGraphicsPipeline(const Pipe...
function RenderPipeline (line 4618) | static RenderPipeline* CreateGraphicsPipelineInRenderThread(PipelineStat...
function RenderTextureAddressMode (line 4742) | static RenderTextureAddressMode ConvertTextureAddressMode(size_t value)
function RenderFilter (line 4762) | static RenderFilter ConvertTextureFilter(uint32_t value)
function RenderBorderColor (line 4777) | static RenderBorderColor ConvertBorderColor(uint32_t value)
type LocalRenderCommandQueue (line 4791) | struct LocalRenderCommandQueue
method RenderCommand (line 4796) | RenderCommand& enqueue()
method submit (line 4802) | void submit()
function FlushRenderStateForMainThread (line 4808) | static void FlushRenderStateForMainThread(GuestDevice* device, LocalRend...
function ProcSetBooleans (line 4873) | static void ProcSetBooleans(const RenderCommand& cmd)
function ProcSetSamplerState (line 4878) | static void ProcSetSamplerState(const RenderCommand& cmd)
function ProcSetVertexShaderConstants (line 4926) | static void ProcSetVertexShaderConstants(const RenderCommand& cmd)
function ProcSetPixelShaderConstants (line 4935) | static void ProcSetPixelShaderConstants(const RenderCommand& cmd)
function ProcAddPipeline (line 4944) | static void ProcAddPipeline(const RenderCommand& cmd)
function FlushRenderStateForRenderThread (line 4968) | static void FlushRenderStateForRenderThread()
function RenderPrimitiveTopology (line 5064) | static RenderPrimitiveTopology ConvertPrimitiveType(uint32_t primitiveType)
function SetPrimitiveType (line 5087) | static void SetPrimitiveType(uint32_t primitiveType)
function DrawPrimitive (line 5092) | static void DrawPrimitive(GuestDevice* device, uint32_t primitiveType, u...
function ProcDrawPrimitive (line 5106) | static void ProcDrawPrimitive(const RenderCommand& cmd)
function DrawIndexedPrimitive (line 5118) | static void DrawIndexedPrimitive(GuestDevice* device, uint32_t primitive...
function ProcDrawIndexedPrimitive (line 5133) | static void ProcDrawIndexedPrimitive(const RenderCommand& cmd)
function DrawPrimitiveUP (line 5143) | static void DrawPrimitiveUP(GuestDevice* device, uint32_t primitiveType,...
function ProcDrawPrimitiveUP (line 5160) | static void ProcDrawPrimitiveUP(const RenderCommand& cmd)
function RenderFormat (line 5235) | static RenderFormat ConvertDeclType(uint32_t type)
function GuestVertexDeclaration (line 5282) | static GuestVertexDeclaration* CreateVertexDeclarationWithoutAddRef(Gues...
function GuestVertexDeclaration (line 5514) | static GuestVertexDeclaration* CreateVertexDeclaration(GuestVertexElemen...
function SetVertexDeclaration (line 5521) | static void SetVertexDeclaration(GuestDevice* device, GuestVertexDeclara...
function ProcSetVertexDeclaration (line 5531) | static void ProcSetVertexDeclaration(const RenderCommand& cmd)
function ShaderCacheEntry (line 5554) | static ShaderCacheEntry* FindShaderCacheEntry(XXH64_hash_t hash)
function GuestShader (line 5565) | static GuestShader* CreateShader(const be<uint32_t>* function, ResourceT...
function GuestShader (line 5611) | static GuestShader* CreateVertexShader(const be<uint32_t>* function)
function SetVertexShader (line 5616) | static void SetVertexShader(GuestDevice* device, GuestShader* shader)
function ProcSetVertexShader (line 5624) | static void ProcSetVertexShader(const RenderCommand& cmd)
function SetStreamSource (line 5641) | static void SetStreamSource(GuestDevice* device, uint32_t index, GuestBu...
function ProcSetStreamSource (line 5652) | static void ProcSetStreamSource(const RenderCommand& cmd)
function SetIndices (line 5671) | static void SetIndices(GuestDevice* device, GuestBuffer* buffer)
function ProcSetIndices (line 5679) | static void ProcSetIndices(const RenderCommand& cmd)
function GuestShader (line 5688) | static GuestShader* CreatePixelShader(const be<uint32_t>* function)
function SetPixelShader (line 5693) | static void SetPixelShader(GuestDevice* device, GuestShader* shader)
function ProcSetPixelShader (line 5701) | static void ProcSetPixelShader(const RenderCommand& cmd)
function BeginConditionalSurvey (line 5718) | static void BeginConditionalSurvey(GuestDevice* device, uint32_t index)
function EndConditionalSurvey (line 5729) | static void EndConditionalSurvey(GuestDevice* device)
function ProcSetConditionalSurvey (line 5738) | static void ProcSetConditionalSurvey(const RenderCommand& cmd)
function BeginConditionalRendering (line 5759) | static void BeginConditionalRendering(GuestDevice* device, uint32_t index)
function EndConditionalRendering (line 5770) | static void EndConditionalRendering(GuestDevice* device)
function ProcSetConditionalRendering (line 5779) | static void ProcSetConditionalRendering(const RenderCommand& cmd)
function SetClipPlane (line 5791) | static void SetClipPlane(GuestDevice* device, uint32_t index, const be<f...
type GuestPictureData (line 5857) | struct GuestPictureData
type BEString (line 5871) | struct BEString
type GuestMyTexture (line 5890) | struct GuestMyTexture
function RenderTextureDimension (line 5907) | static RenderTextureDimension ConvertTextureDimension(ddspp::TextureType...
function RenderTextureViewDimension (line 5924) | static RenderTextureViewDimension ConvertTextureViewDimension(ddspp::Tex...
function RenderFormat (line 5942) | static RenderFormat ConvertDXGIFormat(ddspp::DXGIFormat format)
function LoadTexture (line 6102) | static bool LoadTexture(GuestTexture& texture, const uint8_t* data, size...
function LoadTexture (line 6277) | std::unique_ptr<GuestTexture> LoadTexture(const uint8_t* data, size_t da...
function DiffPatchTexture (line 6287) | static void DiffPatchTexture(GuestTexture& texture, uint8_t* data, uint3...
function MakePictureData (line 6318) | static void MakePictureData(GuestMyTexture* pictureData, uint8_t* data, ...
function IndexBufferLengthMidAsmHook (line 6339) | void IndexBufferLengthMidAsmHook(PPCRegister& r3)
function SetShadowResolutionMidAsmHook (line 6344) | void SetShadowResolutionMidAsmHook(PPCRegister& r11)
function SetResolution (line 6352) | static void SetResolution(be<uint32_t>* device)
function ScreenShaderInit (line 6366) | static int ScreenShaderInit(be<uint32_t>* a1)
function IsSet (line 6395) | static bool IsSet() {
function MovieRendererMidAsmHook (line 6399) | void MovieRendererMidAsmHook(PPCRegister& r3)
function CompilePipeline (line 6465) | static void CompilePipeline(XXH64_hash_t pipelineHash, const PipelineSta...
function PipelineCompilerThread (line 6484) | static void PipelineCompilerThread()
type PipelineTaskTokenPair (line 6545) | struct PipelineTaskTokenPair
type CompilationArgs (line 6609) | struct CompilationArgs
type MeshLayer (line 6618) | enum class MeshLayer
type Mesh (line 6626) | struct Mesh
function CheckMadeAll (line 7280) | static bool CheckMadeAll(const T& modelData)
class SDLEventListenerForPSOCaching (line 7617) | class SDLEventListenerForPSOCaching : public SDLEventListener
method OnSDLEvent (line 7620) | bool OnSDLEvent(SDL_Event* event) override
function VideoConfigValueChangedCallback (line 7776) | void VideoConfigValueChangedCallback(IConfigDef* config)
function ConvertToDegenerateTriangles (line 7799) | static void ConvertToDegenerateTriangles(uint16_t* indices, uint32_t ind...
type MeshResource (line 7835) | struct MeshResource
type LightAndIndexBufferResourceV1 (line 7900) | struct LightAndIndexBufferResourceV1
type LightAndIndexBufferResourceV5 (line 7939) | struct LightAndIndexBufferResourceV5
function GetType (line 8077) | int GetType(GuestResource* resource)
function SurfaceSize (line 8093) | int SurfaceSize(uint32_t width, uint32_t height, uint32_t format, uint32...
type Rect (line 8123) | struct Rect
type RESOLVE_PARAMS (line 8131) | struct RESOLVE_PARAMS
function D3DDevice_BeginTiling (line 8138) | int D3DDevice_BeginTiling(GuestDevice* device, uint32_t flags, uint32_t ...
function D3DDevice_EndTiling (line 8147) | int D3DDevice_EndTiling(GuestDevice* device, uint32_t flags, Rect* pReso...
function D3DDevice_BeginShaderConstantF4 (line 8159) | int D3DDevice_BeginShaderConstantF4(GuestDevice* device, uint32_t isPixe...
FILE: MarathonRecomp/gpu/video.h
type Video (line 23) | struct Video
function Backend (line 36) | enum class Backend {
FILE: MarathonRecomp/hid/driver/sdl_hid.cpp
class Controller (line 13) | class Controller
method Controller (line 23) | Controller() = default;
method Controller (line 25) | explicit Controller(int index) : Controller(SDL_GameControllerOpen(ind...
method Controller (line 30) | Controller(SDL_GameController* controller) : controller(controller)
method SDL_GameControllerType (line 39) | SDL_GameControllerType GetControllerType() const
method GetInputDevice (line 44) | hid::EInputDevice GetInputDevice() const
method Close (line 70) | void Close()
method CanPoll (line 82) | bool CanPoll()
method PollAxis (line 87) | void PollAxis()
method Poll (line 104) | void Poll()
method SetVibration (line 134) | void SetVibration(const XAMINPUT_VIBRATION& vibration)
method SetLED (line 144) | void SetLED(const uint8_t r, const uint8_t g, const uint8_t b) const
function Controller (line 153) | inline Controller* EnsureController(uint32_t dwUserIndex)
method Controller (line 23) | Controller() = default;
method Controller (line 25) | explicit Controller(int index) : Controller(SDL_GameControllerOpen(ind...
method Controller (line 30) | Controller(SDL_GameController* controller) : controller(controller)
method SDL_GameControllerType (line 39) | SDL_GameControllerType GetControllerType() const
method GetInputDevice (line 44) | hid::EInputDevice GetInputDevice() const
method Close (line 70) | void Close()
method CanPoll (line 82) | bool CanPoll()
method PollAxis (line 87) | void PollAxis()
method Poll (line 104) | void Poll()
method SetVibration (line 134) | void SetVibration(const XAMINPUT_VIBRATION& vibration)
method SetLED (line 144) | void SetLED(const uint8_t r, const uint8_t g, const uint8_t b) const
function FindFreeController (line 161) | inline size_t FindFreeController()
function Controller (line 172) | inline Controller* FindController(int which)
method Controller (line 23) | Controller() = default;
method Controller (line 25) | explicit Controller(int index) : Controller(SDL_GameControllerOpen(ind...
method Controller (line 30) | Controller(SDL_GameController* controller) : controller(controller)
method SDL_GameControllerType (line 39) | SDL_GameControllerType GetControllerType() const
method GetInputDevice (line 44) | hid::EInputDevice GetInputDevice() const
method Close (line 70) | void Close()
method CanPoll (line 82) | bool CanPoll()
method PollAxis (line 87) | void PollAxis()
method Poll (line 104) | void Poll()
method SetVibration (line 134) | void SetVibration(const XAMINPUT_VIBRATION& vibration)
method SetLED (line 144) | void SetLED(const uint8_t r, const uint8_t g, const uint8_t b) const
function SetControllerInputDevice (line 183) | static void SetControllerInputDevice(Controller* controller)
function SetControllerTimeOfDayLED (line 212) | static void SetControllerTimeOfDayLED(Controller& controller, EPlayerCha...
function HID_OnSDLEvent (line 244) | int HID_OnSDLEvent(void*, SDL_Event* event)
FILE: MarathonRecomp/hid/hid.h
type class (line 5) | enum class
function EInputDeviceExplicit (line 14) | enum class EInputDeviceExplicit
FILE: MarathonRecomp/install/directory_file_system.h
function VirtualFileSystem (line 7) | struct DirectoryFileSystem : VirtualFileSystem
FILE: MarathonRecomp/install/installer.cpp
function fromU8 (line 31) | static std::string fromU8(const std::u8string &str)
function fromPath (line 36) | static std::string fromPath(const std::filesystem::path &path)
function toLower (line 41) | static std::string toLower(std::string str) {
function createFileSystemFromPath (line 46) | static std::unique_ptr<VirtualFileSystem> createFileSystemFromPath(const...
function checkFile (line 66) | static bool checkFile(const FilePair &pair, const uint64_t *fileHashes, ...
function copyFile (line 133) | static bool copyFile(const FilePair &pair, const uint64_t *fileHashes, V...
function DLC (line 216) | static DLC detectDLC(const std::filesystem::path &sourcePath, VirtualFil...
function fillDLCSource (line 260) | static bool fillDLCSource(DLC dlc, Installer::DLCSource &dlcSource)
function DLC (line 582) | DLC Installer::parseDLC(const std::filesystem::path &sourcePath)
FILE: MarathonRecomp/install/installer.h
function DLC (line 8) | enum class DLC {
type Installer (line 48) | struct Installer
FILE: MarathonRecomp/install/iso_file_system.cpp
type IterationStep (line 67) | struct IterationStep
method IterationStep (line 73) | IterationStep() = default;
method IterationStep (line 74) | IterationStep(std::string fileNameBase, size_t nodeOffset, size_t entr...
FILE: MarathonRecomp/install/iso_file_system.h
function VirtualFileSystem (line 21) | struct ISOFileSystem : VirtualFileSystem
FILE: MarathonRecomp/install/update_checker.cpp
function updateCheckerWriteCallback (line 26) | size_t updateCheckerWriteCallback(void *contents, size_t size, size_t nm...
function parseVersion (line 33) | static bool parseVersion(const std::string &versionStr, int &major, int ...
function updateCheckerThread (line 64) | void updateCheckerThread()
FILE: MarathonRecomp/install/update_checker.h
type UpdateChecker (line 3) | struct UpdateChecker
FILE: MarathonRecomp/install/virtual_file_system.h
type VirtualFileSystem (line 6) | struct VirtualFileSystem {
FILE: MarathonRecomp/install/xcontent_file_system.cpp
type XContentPackageType (line 19) | enum class XContentPackageType
type XContentLicense (line 26) | struct XContentLicense
type XContentHeader (line 34) | struct XContentHeader
type StfsVolumeDescriptor (line 44) | struct StfsVolumeDescriptor
type StfsDirectoryEntry (line 69) | struct StfsDirectoryEntry {
type StfsDirectoryBlock (line 91) | struct StfsDirectoryBlock {
type StfsHashEntry (line 96) | struct StfsHashEntry {
type StfsHashTable (line 102) | struct StfsHashTable {
type SvodDeviceDescriptor (line 109) | struct SvodDeviceDescriptor {
type SvodDirectoryEntry (line 129) | struct SvodDirectoryEntry {
type XContentMetadata (line 139) | struct XContentMetadata
type XContentContainerHeader (line 163) | struct XContentContainerHeader
function parseUint24 (line 175) | uint32_t parseUint24(const uint8_t *bytes) {
function blockIndexToOffset (line 179) | size_t blockIndexToOffset(uint64_t baseOffset, uint64_t blockIndex)
function blockIndexToHashBlockNumber (line 195) | uint32_t blockIndexToHashBlockNumber(uint32_t blockIndex) {
function blockIndexToHashBlockOffset (line 211) | size_t blockIndexToHashBlockOffset(uint64_t baseOffset, uint32_t blockIn...
function StfsHashEntry (line 217) | const StfsHashEntry *hashEntryFromBlockIndex(const uint8_t *fileData, ui...
function blockToOffsetAndFile (line 224) | void blockToOffsetAndFile(SvodLayoutType svodLayoutType, size_t svodStar...
type IterationStep (line 433) | struct IterationStep
method IterationStep (line 439) | IterationStep() = default;
method IterationStep (line 440) | IterationStep(std::string fileNameBase, uint32_t blockIndex, uint32_t ...
FILE: MarathonRecomp/install/xcontent_file_system.h
type class (line 21) | enum class
type class (line 27) | enum class
function VirtualFileSystem (line 35) | struct XContentFileSystem : VirtualFileSystem
FILE: MarathonRecomp/kernel/freelist.h
function Free (line 9) | void Free(T& item)
function Free (line 15) | void Free(size_t index)
function Alloc (line 21) | size_t Alloc()
FILE: MarathonRecomp/kernel/function.h
type ArgTranslator (line 40) | struct ArgTranslator
function GetPrecisionArgumentValue (line 63) | static double GetPrecisionArgumentValue(const PPCContext& ctx, uint8_t* ...
function SetIntegerArgumentValue (line 87) | constexpr static void SetIntegerArgumentValue(PPCContext& ctx, uint8_t* ...
function SetPrecisionArgumentValue (line 108) | static void SetPrecisionArgumentValue(PPCContext& ctx, uint8_t* base, si...
type Argument (line 190) | struct Argument
function floatOrdinal (line 201) | int floatOrdinal{}
function i (line 202) | size_t i{}
function _translate_args_to_guest (line 258) | void _translate_args_to_guest(PPCContext& ctx, uint8_t* base, std::tuple...
FILE: MarathonRecomp/kernel/heap.cpp
function RtlAllocateHeap (line 61) | uint32_t RtlAllocateHeap(uint32_t heapHandle, uint32_t flags, uint32_t s...
function RtlReAllocateHeap (line 71) | uint32_t RtlReAllocateHeap(uint32_t heapHandle, uint32_t flags, uint32_t...
function RtlFreeHeap (line 88) | uint32_t RtlFreeHeap(uint32_t heapHandle, uint32_t flags, uint32_t memor...
function RtlSizeHeap (line 96) | uint32_t RtlSizeHeap(uint32_t heapHandle, uint32_t flags, uint32_t memor...
function XAllocMem (line 104) | uint32_t XAllocMem(uint32_t size, uint32_t flags)
function XFreeMem (line 117) | void XFreeMem(uint32_t baseAddress, uint32_t flags)
function XVirtualAlloc (line 123) | uint32_t XVirtualAlloc(void *lpAddress, unsigned int dwSize, unsigned in...
function XVirtualFree (line 129) | uint32_t XVirtualFree(uint32_t lpAddress, unsigned int dwSize, unsigned ...
FILE: MarathonRecomp/kernel/heap.h
type Heap (line 5) | struct Heap
FILE: MarathonRecomp/kernel/imports.cpp
type Event (line 24) | struct Event final : KernelObject, HostObject<XKEVENT>
method Event (line 29) | Event(XKEVENT* header)
method Event (line 34) | Event(bool manualReset, bool initialState)
method Wait (line 39) | uint32_t Wait(uint32_t timeout) override
method Set (line 81) | bool Set()
method Reset (line 93) | bool Reset()
type Semaphore (line 102) | struct Semaphore final : KernelObject, HostObject<XKSEMAPHORE>
method Semaphore (line 107) | Semaphore(XKSEMAPHORE* semaphore)
method Semaphore (line 112) | Semaphore(uint32_t count, uint32_t maximumCount)
method Wait (line 117) | uint32_t Wait(uint32_t timeout) override
method Release (line 156) | void Release(uint32_t releaseCount, uint32_t* previousCount)
function CloseKernelObject (line 168) | inline void CloseKernelObject(XDISPATCHER_HEADER& header)
function GuestTimeoutToMilliseconds (line 178) | uint32_t GuestTimeoutToMilliseconds(be<int64_t>* timeout)
function VdHSIOCalibrationLock (line 183) | void VdHSIOCalibrationLock()
function KeCertMonitorData (line 188) | void KeCertMonitorData()
function XexExecutableModuleHandle (line 193) | void XexExecutableModuleHandle()
function ExLoadedCommandLine (line 198) | void ExLoadedCommandLine()
function KeDebugMonitorData (line 203) | void KeDebugMonitorData()
function ExThreadObjectType (line 208) | void ExThreadObjectType()
function KeTimeStampBundle (line 213) | void KeTimeStampBundle()
function XboxHardwareInfo (line 218) | void XboxHardwareInfo()
function XGetVideoMode (line 223) | void XGetVideoMode()
function XGetGameRegion (line 228) | uint32_t XGetGameRegion()
function XMsgStartIORequest (line 236) | uint32_t XMsgStartIORequest(uint32_t App, uint32_t Message, XXOVERLAPPED...
function XamUserGetSigninState (line 241) | uint32_t XamUserGetSigninState(uint32_t userIndex)
function XamGetSystemVersion (line 246) | uint32_t XamGetSystemVersion()
function XamContentDelete (line 251) | void XamContentDelete()
function XamContentGetCreator (line 256) | uint32_t XamContentGetCreator(uint32_t userIndex, const XCONTENT_DATA* c...
function XamContentGetDeviceState (line 267) | uint32_t XamContentGetDeviceState()
function XamUserGetSigninInfo (line 272) | uint32_t XamUserGetSigninInfo(uint32_t userIndex, uint32_t flags, XUSER_...
function XamShowSigninUI (line 286) | void XamShowSigninUI()
function XamShowDeviceSelectorUI (line 291) | uint32_t XamShowDeviceSelectorUI
function XamShowDirtyDiscErrorUI (line 307) | void XamShowDirtyDiscErrorUI()
function XamEnableInactivityProcessing (line 312) | void XamEnableInactivityProcessing()
function XamResetInactivity (line 317) | void XamResetInactivity()
function XamShowMessageBoxUIEx (line 322) | void XamShowMessageBoxUIEx()
function XGetLanguage (line 327) | uint32_t XGetLanguage()
function XGetAVPack (line 332) | uint32_t XGetAVPack()
function XamLoaderTerminateTitle (line 337) | void XamLoaderTerminateTitle()
function XamGetExecutionId (line 342) | void XamGetExecutionId()
function XamLoaderLaunchTitle (line 347) | void XamLoaderLaunchTitle()
function NtOpenFile (line 352) | void NtOpenFile()
function RtlInitAnsiString (line 357) | void RtlInitAnsiString(XANSI_STRING* destination, char* source)
function NtCreateFile (line 365) | uint32_t NtCreateFile
function NtClose (line 382) | uint32_t NtClose(uint32_t handle)
function NtSetInformationFile (line 405) | void NtSetInformationFile()
function FscSetCacheElementCount (line 410) | uint32_t FscSetCacheElementCount()
function FscGetCacheElementCount (line 415) | uint32_t FscGetCacheElementCount()
function XamLoaderGetLaunchDataSize (line 420) | uint32_t XamLoaderGetLaunchDataSize()
function XamLoaderGetLaunchData (line 425) | uint32_t XamLoaderGetLaunchData()
function XamLoaderSetLaunchData (line 430) | uint32_t XamLoaderSetLaunchData()
function NtWaitForSingleObjectEx (line 435) | uint32_t NtWaitForSingleObjectEx(uint32_t Handle, uint32_t WaitMode, uin...
function NtWriteFile (line 455) | void NtWriteFile()
function vsprintf_x (line 460) | void vsprintf_x()
function ExGetXConfigSetting (line 465) | uint32_t ExGetXConfigSetting(uint16_t Category, uint16_t Setting, void* ...
function NtQueryVirtualMemory (line 532) | void NtQueryVirtualMemory()
function MmQueryStatistics (line 537) | void MmQueryStatistics()
function NtCreateEvent (line 542) | uint32_t NtCreateEvent(be<uint32_t>* handle, void* objAttributes, uint32...
function XexCheckExecutablePrivilege (line 548) | uint32_t XexCheckExecutablePrivilege()
function DbgPrint (line 553) | void DbgPrint()
function __C_specific_handler_x (line 558) | void __C_specific_handler_x()
function RtlNtStatusToDosError (line 563) | uint32_t RtlNtStatusToDosError(uint32_t Status)
function XexGetProcedureAddress (line 588) | void XexGetProcedureAddress()
function XexGetModuleSection (line 593) | void XexGetModuleSection()
function RtlUnicodeToMultiByteN (line 598) | uint32_t RtlUnicodeToMultiByteN(char* MultiByteString, uint32_t MaxBytes...
function KeDelayExecutionThread (line 618) | uint32_t KeDelayExecutionThread(uint32_t WaitMode, bool Alertable, be<in...
function ExFreePool (line 638) | void ExFreePool()
function NtQueryInformationFile (line 643) | void NtQueryInformationFile()
function NtQueryVolumeInformationFile (line 648) | void NtQueryVolumeInformationFile()
function NtQueryDirectoryFile (line 653) | void NtQueryDirectoryFile()
function NtReadFileScatter (line 658) | void NtReadFileScatter()
function NtReadFile (line 663) | void NtReadFile()
function NtDuplicateObject (line 668) | uint32_t NtDuplicateObject(uint32_t SourceHandle, be<uint32_t>* TargetHa...
function NtAllocateVirtualMemory (line 692) | void NtAllocateVirtualMemory()
function NtFreeVirtualMemory (line 698) | void NtFreeVirtualMemory()
function ObDereferenceObject (line 703) | void ObDereferenceObject()
function KeSetBasePriorityThread (line 708) | void KeSetBasePriorityThread(GuestThreadHandle* hThread, int priority)
function ObReferenceObjectByHandle (line 724) | uint32_t ObReferenceObjectByHandle(uint32_t handle, uint32_t objectType,...
function KeQueryBasePriorityThread (line 730) | void KeQueryBasePriorityThread()
function NtSuspendThread (line 735) | uint32_t NtSuspendThread(GuestThreadHandle* hThread, uint32_t* suspendCo...
function KeSetAffinityThread (line 745) | uint32_t KeSetAffinityThread(uint32_t Thread, uint32_t Affinity, be<uint...
function RtlLeaveCriticalSection (line 753) | void RtlLeaveCriticalSection(XRTL_CRITICAL_SECTION* cs)
function RtlEnterCriticalSection (line 766) | void RtlEnterCriticalSection(XRTL_CRITICAL_SECTION* cs)
function RtlImageXexHeaderField (line 790) | void RtlImageXexHeaderField()
function HalReturnToFirmware (line 795) | void HalReturnToFirmware()
function RtlFillMemoryUlong (line 800) | void RtlFillMemoryUlong()
function KeBugCheckEx (line 805) | void KeBugCheckEx()
function KeGetCurrentProcessType (line 810) | uint32_t KeGetCurrentProcessType()
function RtlCompareMemoryUlong (line 815) | void RtlCompareMemoryUlong()
function RtlInitializeCriticalSection (line 820) | uint32_t RtlInitializeCriticalSection(XRTL_CRITICAL_SECTION* cs)
function RtlRaiseException_x (line 831) | void RtlRaiseException_x()
function KfReleaseSpinLock (line 836) | void KfReleaseSpinLock(uint32_t* spinLock)
function KfAcquireSpinLock (line 842) | void KfAcquireSpinLock(uint32_t* spinLock)
function KeQueryPerformanceFrequency (line 856) | uint64_t KeQueryPerformanceFrequency()
function MmFreePhysicalMemory (line 861) | void MmFreePhysicalMemory(uint32_t type, uint32_t guestAddress)
function VdPersistDisplay (line 867) | bool VdPersistDisplay(uint32_t a1, uint32_t* a2)
function VdSwap (line 873) | void VdSwap()
function VdGetSystemCommandBuffer (line 878) | void VdGetSystemCommandBuffer()
function KeReleaseSpinLockFromRaisedIrql (line 883) | void KeReleaseSpinLockFromRaisedIrql(uint32_t* spinLock)
function KeAcquireSpinLockAtRaisedIrql (line 889) | void KeAcquireSpinLockAtRaisedIrql(uint32_t* spinLock)
function KiApcNormalRoutineNop (line 903) | uint32_t KiApcNormalRoutineNop()
function VdEnableRingBufferRPtrWriteBack (line 908) | void VdEnableRingBufferRPtrWriteBack()
function VdInitializeRingBuffer (line 913) | void VdInitializeRingBuffer()
function MmGetPhysicalAddress (line 918) | uint32_t MmGetPhysicalAddress(uint32_t address)
function VdSetSystemCommandBufferGpuIdentifierAddress (line 924) | void VdSetSystemCommandBufferGpuIdentifierAddress()
function _vsnprintf_x (line 929) | void _vsnprintf_x()
function sprintf_x (line 934) | void sprintf_x()
function ExRegisterTitleTerminateNotification (line 939) | int32_t ExRegisterTitleTerminateNotification(uint32_t* reg, uint32_t cre...
function VdShutdownEngines (line 945) | void VdShutdownEngines()
function VdQueryVideoMode (line 950) | void VdQueryVideoMode(XVIDEO_MODE* vm)
function VdGetCurrentDisplayInformation (line 964) | void VdGetCurrentDisplayInformation()
function VdSetDisplayMode (line 969) | void VdSetDisplayMode()
function VdSetGraphicsInterruptCallback (line 974) | void VdSetGraphicsInterruptCallback()
function VdInitializeEngines (line 979) | uint32_t VdInitializeEngines()
function VdIsHSIOTrainingSucceeded (line 985) | void VdIsHSIOTrainingSucceeded()
function VdGetCurrentDisplayGamma (line 990) | void VdGetCurrentDisplayGamma()
function VdQueryVideoFlags (line 995) | void VdQueryVideoFlags()
function VdCallGraphicsNotificationRoutines (line 1000) | void VdCallGraphicsNotificationRoutines()
function VdInitializeScalerCommandBuffer (line 1005) | void VdInitializeScalerCommandBuffer()
function KeLeaveCriticalRegion (line 1010) | void KeLeaveCriticalRegion()
function VdRetrainEDRAM (line 1015) | uint32_t VdRetrainEDRAM()
function VdRetrainEDRAMWorker (line 1020) | void VdRetrainEDRAMWorker()
function KeEnterCriticalRegion (line 1025) | void KeEnterCriticalRegion()
function MmAllocatePhysicalMemoryEx (line 1030) | uint32_t MmAllocatePhysicalMemoryEx
function ObDeleteSymbolicLink (line 1044) | void ObDeleteSymbolicLink()
function ObCreateSymbolicLink (line 1049) | void ObCreateSymbolicLink()
function MmQueryAddressProtect (line 1054) | uint32_t MmQueryAddressProtect(uint32_t guestAddress)
function VdEnableDisableClockGating (line 1059) | void VdEnableDisableClockGating()
function KeBugCheck (line 1064) | void KeBugCheck()
function KeLockL2 (line 1069) | void KeLockL2()
function KeUnlockL2 (line 1074) | void KeUnlockL2()
function KeSetEvent (line 1079) | bool KeSetEvent(XKEVENT* pEvent, uint32_t Increment, bool Wait)
function KeResetEvent (line 1089) | bool KeResetEvent(XKEVENT* pEvent)
function KeWaitForSingleObject (line 1094) | uint32_t KeWaitForSingleObject(XDISPATCHER_HEADER* Object, uint32_t Wait...
function KeTlsGetValue (line 1136) | uint32_t KeTlsGetValue(uint32_t dwTlsIndex)
function KeTlsSetValue (line 1141) | uint32_t KeTlsSetValue(uint32_t dwTlsIndex, uint32_t lpTlsValue)
function KeTlsAlloc (line 1147) | uint32_t KeTlsAlloc()
function KeTlsFree (line 1160) | uint32_t KeTlsFree(uint32_t dwTlsIndex)
function XMsgInProcessCall (line 1167) | uint32_t XMsgInProcessCall(uint32_t app, uint32_t message, be<uint32_t>*...
function XamUserReadProfileSettings (line 1179) | void XamUserReadProfileSettings
function NetDll_WSAStartup (line 1202) | void NetDll_WSAStartup()
function NetDll_WSACleanup (line 1207) | void NetDll_WSACleanup()
function NetDll_socket (line 1212) | void NetDll_socket()
function NetDll_closesocket (line 1217) | void NetDll_closesocket()
function NetDll_setsockopt (line 1222) | void NetDll_setsockopt()
function NetDll_bind (line 1227) | void NetDll_bind()
function NetDll_connect (line 1232) | void NetDll_connect()
function NetDll_listen (line 1237) | void NetDll_listen()
function NetDll_accept (line 1242) | void NetDll_accept()
function NetDll_select (line 1247) | void NetDll_select()
function NetDll_recv (line 1252) | void NetDll_recv()
function NetDll_send (line 1257) | void NetDll_send()
function NetDll_inet_addr (line 1262) | void NetDll_inet_addr()
function NetDll___WSAFDIsSet (line 1267) | void NetDll___WSAFDIsSet()
function XMsgStartIORequestEx (line 1272) | void XMsgStartIORequestEx()
function XexGetModuleHandle (line 1277) | void XexGetModuleHandle()
function RtlTryEnterCriticalSection (line 1282) | bool RtlTryEnterCriticalSection(XRTL_CRITICAL_SECTION* cs)
function RtlInitializeCriticalSectionAndSpinCount (line 1301) | void RtlInitializeCriticalSectionAndSpinCount(XRTL_CRITICAL_SECTION* cs,...
function _vswprintf_x (line 1310) | void _vswprintf_x()
function _vscwprintf_x (line 1315) | void _vscwprintf_x()
function _swprintf_x (line 1320) | void _swprintf_x()
function _snwprintf_x (line 1325) | void _snwprintf_x()
function XeCryptBnQwBeSigVerify (line 1330) | void XeCryptBnQwBeSigVerify()
function XeKeysGetKey (line 1335) | void XeKeysGetKey()
function XeCryptRotSumSha (line 1340) | void XeCryptRotSumSha()
function XeCryptSha (line 1345) | void XeCryptSha()
function KeEnableFpuExceptions (line 1350) | void KeEnableFpuExceptions()
function RtlUnwind_x (line 1355) | void RtlUnwind_x()
function RtlCaptureContext_x (line 1360) | void RtlCaptureContext_x()
function NtQueryFullAttributesFile (line 1365) | void NtQueryFullAttributesFile()
function RtlMultiByteToUnicodeN (line 1370) | uint32_t RtlMultiByteToUnicodeN(be<uint16_t>* UnicodeString, uint32_t Ma...
function DbgBreakPoint (line 1383) | void DbgBreakPoint()
function MmQueryAllocationSize (line 1388) | void MmQueryAllocationSize()
function NtClearEvent (line 1393) | uint32_t NtClearEvent(Event* handle, uint32_t* previousState)
function NtResumeThread (line 1399) | uint32_t NtResumeThread(GuestThreadHandle* hThread, uint32_t* suspendCount)
function NtSetEvent (line 1409) | uint32_t NtSetEvent(Event* handle, uint32_t* previousState)
function NtCreateSemaphore (line 1415) | uint32_t NtCreateSemaphore(be<uint32_t>* Handle, XOBJECT_ATTRIBUTES* Obj...
function NtReleaseSemaphore (line 1421) | uint32_t NtReleaseSemaphore(Semaphore* Handle, uint32_t ReleaseCount, in...
function NtWaitForMultipleObjectsEx (line 1436) | void NtWaitForMultipleObjectsEx()
function RtlCompareStringN (line 1441) | void RtlCompareStringN()
function _snprintf_x (line 1446) | void _snprintf_x()
function StfsControlDevice (line 1451) | void StfsControlDevice()
function StfsCreateDevice (line 1456) | void StfsCreateDevice()
function NtFlushBuffersFile (line 1461) | void NtFlushBuffersFile()
function KeQuerySystemTime (line 1466) | void KeQuerySystemTime(be<uint64_t>* time)
type TIME_FIELDS (line 1479) | struct TIME_FIELDS {
function RtlTimeToTimeFields (line 1490) | void RtlTimeToTimeFields(const be<uint64_t>* time, TIME_FIELDS* timeFields)
function RtlFreeAnsiString (line 1570) | void RtlFreeAnsiString()
function RtlUnicodeStringToAnsiString (line 1575) | void RtlUnicodeStringToAnsiString()
function RtlInitUnicodeString (line 1580) | void RtlInitUnicodeString()
function ExTerminateThread (line 1585) | void ExTerminateThread()
function ExCreateThread (line 1590) | uint32_t ExCreateThread(be<uint32_t>* handle, uint32_t stackSize, be<uin...
function IoInvalidDeviceRequest (line 1604) | void IoInvalidDeviceRequest()
function ObReferenceObject (line 1609) | void ObReferenceObject()
function IoCreateDevice (line 1614) | void IoCreateDevice()
function IoDeleteDevice (line 1619) | void IoDeleteDevice()
function ExAllocatePoolTypeWithTag (line 1624) | void ExAllocatePoolTypeWithTag()
function RtlTimeFieldsToTime (line 1629) | void RtlTimeFieldsToTime()
function IoCompleteRequest (line 1634) | void IoCompleteRequest()
function RtlUpcaseUnicodeChar (line 1639) | void RtlUpcaseUnicodeChar()
function ObIsTitleObject (line 1644) | void ObIsTitleObject()
function IoCheckShareAccess (line 1649) | void IoCheckShareAccess()
function IoSetShareAccess (line 1654) | void IoSetShareAccess()
function IoRemoveShareAccess (line 1659) | void IoRemoveShareAccess()
function NetDll_XNetStartup (line 1664) | void NetDll_XNetStartup()
function NetDll_XNetGetTitleXnAddr (line 1669) | void NetDll_XNetGetTitleXnAddr()
function KeWaitForMultipleObjects (line 1674) | uint32_t KeWaitForMultipleObjects(uint32_t Count, xpointer<XDISPATCHER_H...
function KeRaiseIrqlToDpcLevel (line 1713) | uint32_t KeRaiseIrqlToDpcLevel()
function KfLowerIrql (line 1718) | void KfLowerIrql() { }
function KeReleaseSemaphore (line 1720) | uint32_t KeReleaseSemaphore(XKSEMAPHORE* semaphore, uint32_t increment, ...
function XAudioGetVoiceCategoryVolume (line 1727) | void XAudioGetVoiceCategoryVolume()
function XAudioGetVoiceCategoryVolumeChangeMask (line 1732) | uint32_t XAudioGetVoiceCategoryVolumeChangeMask(uint32_t Driver, be<uint...
function KeResumeThread (line 1738) | uint32_t KeResumeThread(GuestThreadHandle* object)
function KeInitializeSemaphore (line 1747) | void KeInitializeSemaphore(XKSEMAPHORE* semaphore, uint32_t count, uint3...
function XMAReleaseContext (line 1756) | void XMAReleaseContext()
function XMACreateContext (line 1761) | void XMACreateContext()
function XapiInitProcess (line 1787) | void XapiInitProcess()
FILE: MarathonRecomp/kernel/io/file_system.cpp
type FileHandle (line 13) | struct FileHandle : KernelObject
type FindHandle (line 19) | struct FindHandle : KernelObject
method FindHandle (line 25) | FindHandle(const std::string_view& path)
method fillFindData (line 68) | void fillFindData(WIN32_FIND_DATAA* lpFindFileData)
function FileHandle (line 84) | FileHandle* XCreateFileA
function XGetFileSizeA (line 148) | static uint32_t XGetFileSizeA(FileHandle* hFile, be<uint32_t>* lpFileSiz...
function XGetFileSizeExA (line 165) | uint32_t XGetFileSizeExA(FileHandle* hFile, LARGE_INTEGER* lpFileSize)
function XReadFile (line 182) | uint32_t XReadFile
function XSetFilePointer (line 227) | uint32_t XSetFilePointer(FileHandle* hFile, int32_t lDistanceToMove, be<...
function XSetFilePointerEx (line 262) | uint32_t XSetFilePointerEx(FileHandle* hFile, int32_t lDistanceToMove, L...
function FindHandle (line 296) | FindHandle* XFindFirstFileA(const char* lpFileName, WIN32_FIND_DATAA* lp...
method FindHandle (line 25) | FindHandle(const std::string_view& path)
method fillFindData (line 68) | void fillFindData(WIN32_FIND_DATAA* lpFindFileData)
function XFindNextFileA (line 322) | uint32_t XFindNextFileA(FindHandle* Handle, WIN32_FIND_DATAA* lpFindFile...
function XReadFileEx (line 337) | uint32_t XReadFileEx(FileHandle* hFile, void* lpBuffer, uint32_t nNumber...
function XGetFileAttributesA (line 363) | uint32_t XGetFileAttributesA(const char* lpFileName)
function XWriteFile (line 374) | uint32_t XWriteFile(FileHandle* hFile, const void* lpBuffer, uint32_t nN...
FILE: MarathonRecomp/kernel/io/file_system.h
type FileSystem (line 3) | struct FileSystem
FILE: MarathonRecomp/kernel/memory.h
type Memory (line 8) | struct Memory
function IsInMemoryRange (line 14) | bool IsInMemoryRange(const void* host) const noexcept
function MapVirtual (line 27) | uint32_t MapVirtual(const void* host) const noexcept
function PPCFunc (line 35) | PPCFunc* FindFunction(uint32_t guest) const noexcept
function InsertFunction (line 40) | void InsertFunction(uint32_t guest, PPCFunc* host)
FILE: MarathonRecomp/kernel/xam.cpp
type XamListener (line 15) | struct XamListener : KernelObject
method XamListener (line 21) | XamListener(const XamListener&) = delete;
method XamListener (line 22) | XamListener& operator=(const XamListener&) = delete;
type XamEnumeratorBase (line 28) | struct XamEnumeratorBase : KernelObject
method Next (line 30) | virtual uint32_t Next(void* buffer)
type XamEnumerator (line 37) | struct XamEnumerator : XamEnumeratorBase
method XamEnumerator (line 45) | XamEnumerator() = default;
method XamEnumerator (line 46) | XamEnumerator(uint32_t fetch, size_t size, TIterator begin, TIterator ...
method Next (line 51) | uint32_t Next(void* buffer) override
function XamGetRootPath (line 92) | std::string_view XamGetRootPath(const std::string_view& root)
function XamRootCreate (line 102) | void XamRootCreate(const std::string_view& root, const std::string_view&...
function XCONTENT_DATA (line 117) | XCONTENT_DATA XamMakeContent(uint32_t type, const std::string_view& name)
function XamRegisterContent (line 126) | void XamRegisterContent(const XCONTENT_DATA& data, const std::string_vie...
function XamRegisterContent (line 133) | void XamRegisterContent(uint32_t type, const std::string_view name, cons...
function XamNotifyCreateListener (line 142) | uint32_t XamNotifyCreateListener(uint64_t qwAreas)
function XamNotifyEnqueueEvent (line 151) | void XamNotifyEnqueueEvent(uint32_t dwId, uint32_t dwParam)
function XNotifyGetNext (line 162) | bool XNotifyGetNext(uint32_t hNotification, uint32_t dwMsgFilter, be<uin...
function XamShowMessageBoxUI (line 203) | uint32_t XamShowMessageBoxUI(uint32_t dwUserIndex, be<uint16_t>* wszTitl...
function XamContentCreateEnumerator (line 261) | uint32_t XamContentCreateEnumerator(uint32_t dwUserIndex, uint32_t Devic...
function XamEnumerate (line 282) | uint32_t XamEnumerate(uint32_t hEnum, uint32_t dwFlags, void* pvBuffer, ...
function PPC_FUNC (line 298) | PPC_FUNC(sub_825B14B8) {
function XamContentCreateEx (line 313) | uint32_t XamContentCreateEx(uint32_t dwUserIndex, const char* szRootName...
function XamContentClose (line 382) | uint32_t XamContentClose(const char* szRootName, XXOVERLAPPED* pOverlapped)
function XamContentGetDeviceData (line 388) | uint32_t XamContentGetDeviceData(uint32_t DeviceID, XDEVICE_DATA* pDevic...
function XamInputGetCapabilities (line 404) | uint32_t XamInputGetCapabilities(uint32_t unk, uint32_t userIndex, uint3...
function XamInputGetState (line 426) | uint32_t XamInputGetState(uint32_t userIndex, uint32_t flags, XAMINPUT_S...
function XamInputSetState (line 515) | uint32_t XamInputSetState(uint32_t userIndex, uint32_t flags, XAMINPUT_V...
FILE: MarathonRecomp/kernel/xdbf.h
function namespace (line 9) | namespace xdbf
FILE: MarathonRecomp/kernel/xdm.cpp
function DestroyKernelObject (line 7) | void DestroyKernelObject(KernelObject* obj)
function GetKernelHandle (line 13) | uint32_t GetKernelHandle(KernelObject* obj)
function DestroyKernelObject (line 19) | void DestroyKernelObject(uint32_t handle)
function IsKernelObject (line 24) | bool IsKernelObject(uint32_t handle)
function IsKernelObject (line 29) | bool IsKernelObject(void* obj)
function IsInvalidKernelObject (line 34) | bool IsInvalidKernelObject(void* obj)
FILE: MarathonRecomp/kernel/xdm.h
type LARGE_INTEGER (line 50) | typedef union _LARGE_INTEGER {
type FILETIME (line 64) | typedef struct _FILETIME
type WIN32_FIND_DATAA (line 72) | typedef struct _WIN32_FIND_DATAA
FILE: MarathonRecomp/locale/achievement_locale.cpp
function AchievementLocale (line 1272) | AchievementLocale& GetAchievementLocale(const int key)
FILE: MarathonRecomp/locale/achievement_locale.h
type AchievementLocale (line 5) | struct AchievementLocale
FILE: MarathonRecomp/locale/config_locale.cpp
function CONFIG_DEFINE_ENUM_LOCALE (line 732) | CONFIG_DEFINE_ENUM_LOCALE(EShadowResolution) {}
FILE: MarathonRecomp/locale/locale.h
function ELanguage (line 3) | enum class ELanguage : uint32_t
FILE: MarathonRecomp/main.cpp
function HostStartup (line 55) | void HostStartup()
function KiSystemStartup (line 65) | void KiSystemStartup()
function LdrLoadModule (line 124) | uint32_t LdrLoadModule(const std::filesystem::path &path)
function init (line 142) | __attribute__((constructor(101), target("no-avx,no-avx2"), noinline))
function main (line 164) | int main(int argc, char *argv[])
FILE: MarathonRecomp/misc_impl.cpp
function QueryPerformanceCounterImpl (line 5) | uint32_t QueryPerformanceCounterImpl(LARGE_INTEGER* lpPerformanceCount)
function QueryPerformanceFrequencyImpl (line 11) | uint32_t QueryPerformanceFrequencyImpl(LARGE_INTEGER* lpFrequency)
function GetTickCountImpl (line 18) | uint32_t GetTickCountImpl()
function GlobalMemoryStatusImpl (line 23) | void GlobalMemoryStatusImpl(XLPMEMORYSTATUS lpMemoryStatus)
function memcpy_s (line 36) | int memcpy_s(void* dest, size_t dest_size, const void* src, size_t count) {
FILE: MarathonRecomp/mod/ini_file.h
function class (line 5) | class IniFile
FILE: MarathonRecomp/mod/mod_loader.cpp
type ModType (line 13) | enum class ModType
type Mod (line 19) | struct Mod
function decompressLzx (line 258) | static std::span<uint8_t> decompressLzx(PPCContext& ctx, uint8_t* base, ...
FILE: MarathonRecomp/mod/mod_loader.h
type ModLoader (line 3) | struct ModLoader
FILE: MarathonRecomp/mutex.h
function CRITICAL_SECTION (line 5) | struct Mutex : CRITICAL_SECTION
FILE: MarathonRecomp/os/linux/media_linux.cpp
type PlaybackStatus (line 12) | enum class PlaybackStatus
function PlaybackStatus (line 30) | static PlaybackStatus PlaybackStatusFromString(const char* str)
function UpdateActiveStatus (line 40) | static void UpdateActiveStatus()
function UpdateActivePlayers (line 48) | static void UpdateActivePlayers(const char* name, PlaybackStatus status)
function PlaybackStatus (line 54) | static PlaybackStatus MPRISGetPlaybackStatus(GDBusConnection* connection...
function DBusConnectionClosed (line 105) | static void DBusConnectionClosed(GDBusConnection* connection,
function DBusNameOwnerChanged (line 115) | static void DBusNameOwnerChanged(GDBusConnection* connection,
function MPRISPropertiesChanged (line 140) | static void MPRISPropertiesChanged(GDBusConnection* connection,
function DBusListNamesReceived (line 179) | static void DBusListNamesReceived(GObject* object, GAsyncResult* res, gp...
function DBusThreadProc (line 247) | static void DBusThreadProc()
FILE: MarathonRecomp/os/logger.h
function namespace (line 52) | namespace os::logger
FILE: MarathonRecomp/os/media.h
function namespace (line 3) | namespace os::media
FILE: MarathonRecomp/os/process.h
function namespace (line 3) | namespace os::process
FILE: MarathonRecomp/os/registry.h
function namespace (line 3) | namespace os::registry
FILE: MarathonRecomp/os/user.h
function namespace (line 3) | namespace os::user
FILE: MarathonRecomp/os/version.h
function namespace (line 3) | namespace os::version
FILE: MarathonRecomp/os/win32/media_win32.cpp
function GlobalSystemMediaTransportControlsSessionManager (line 12) | static GlobalSystemMediaTransportControlsSessionManager GetSessionManager()
function GlobalSystemMediaTransportControlsSession (line 29) | static GlobalSystemMediaTransportControlsSession GetCurrentSession()
function GlobalSystemMediaTransportControlsSessionPlaybackInfo (line 47) | static GlobalSystemMediaTransportControlsSessionPlaybackInfo GetPlayback...
FILE: MarathonRecomp/patches/MainMenuTask_patches.cpp
function PPC_FUNC (line 9) | PPC_FUNC(sub_824FFCF8)
function HUDGoldMedal_ShouldDestroyTable (line 117) | bool HUDGoldMedal_ShouldDestroyTable()
function MainMenuTask_GoldMedalResults_SkipOutro (line 123) | bool MainMenuTask_GoldMedalResults_SkipOutro()
FILE: MarathonRecomp/patches/MainMenuTask_patches.h
function class (line 6) | class MainMenuTaskPatches
FILE: MarathonRecomp/patches/SaveDataTask_patches.cpp
function PPC_FUNC (line 19) | PPC_FUNC(sub_8238CB18)
function PPC_FUNC (line 81) | PPC_FUNC(sub_8238D5C8)
function SaveAlertThreeOptionRemoveDeviceSelect (line 149) | void SaveAlertThreeOptionRemoveDeviceSelect(PPCRegister& r5)
FILE: MarathonRecomp/patches/TitleTask_patches.cpp
function ProcessQuitMessage (line 35) | bool ProcessQuitMessage(Sonicteam::TitleTask* pTitleTask)
function TitleTask_SetDefaultOption (line 69) | void TitleTask_SetDefaultOption(PPCRegister& r3, PPCRegister& r4)
function TitleTask_RedirectStateTransitionToOutroAnim (line 79) | bool TitleTask_RedirectStateTransitionToOutroAnim(PPCRegister& r31)
function PPC_FUNC (line 92) | PPC_FUNC(sub_825126A0)
function PPC_FUNC (line 239) | PPC_FUNC(sub_82511540)
FILE: MarathonRecomp/patches/aspect_ratio_patches.cpp
type ChevronAnim (line 44) | struct ChevronAnim
method Reset (line 59) | void Reset()
method Update (line 65) | void Update(float deltaTime)
class LoadingPillarboxEvent (line 90) | class LoadingPillarboxEvent : public HookEvent
method Update (line 93) | void Update(float deltaTime) override
class ChevronAnimResetEvent (line 101) | class ChevronAnimResetEvent : public ContextHookEvent<Sonicteam::MainMen...
method Update (line 106) | void Update(Sonicteam::MainMenuTask* pThis, float deltaTime) override
function ComputeScale (line 136) | float ComputeScale(float aspectRatio)
function EmplacePath (line 189) | void EmplacePath(const void* key, const std::string_view& value)
function TraverseCast (line 195) | void TraverseCast(Chao::CSD::Scene* scene, uint32_t castNodeIndex, Chao:...
function TraverseScene (line 226) | void TraverseScene(Chao::CSD::Scene* scene, std::string path)
function TraverseSceneNode (line 238) | void TraverseSceneNode(Chao::CSD::SceneNode* sceneNode, std::string path)
function PPC_FUNC (line 258) | PPC_FUNC(sub_82617570)
function PPC_FUNC (line 311) | PPC_FUNC(sub_82656650)
function PPC_FUNC (line 333) | PPC_FUNC(sub_828C8F60)
function RenderCsdCastNodeMidAsmHook (line 383) | void RenderCsdCastNodeMidAsmHook(PPCRegister& r10, PPCRegister& r27)
function RenderCsdCastMidAsmHook (line 388) | void RenderCsdCastMidAsmHook(PPCRegister& r4)
function Draw (line 393) | void Draw(PPCContext& ctx, uint8_t* base, PPCFunc* original, uint32_t st...
function PPC_FUNC (line 1197) | PPC_FUNC(sub_826315C8)
function PPC_FUNC (line 1208) | PPC_FUNC(sub_82631718)
function PPC_FUNC (line 1219) | PPC_FUNC(sub_828C78E0)
function PPC_FUNC (line 1229) | PPC_FUNC(sub_8264AC48)
function PPC_FUNC (line 1239) | PPC_FUNC(sub_824F4D80)
function PPC_FUNC (line 1247) | PPC_FUNC(sub_824D32C8)
function PPC_FUNC (line 1260) | PPC_FUNC(sub_824A4A40)
function PPC_FUNC (line 1269) | PPC_FUNC(sub_824D6E50)
function PPC_FUNC (line 1288) | PPC_FUNC(sub_824F1538)
function PPC_FUNC (line 1302) | PPC_FUNC(sub_82352220)
function PPC_FUNC (line 1324) | PPC_FUNC(sub_8264CC90)
function ReplaceTextVariables (line 1433) | void ReplaceTextVariables(Sonicteam::TextEntity* pTextEntity)
function TextEntityAlloc (line 1528) | void TextEntityAlloc(PPCRegister& r3)
function PPC_FUNC (line 1535) | PPC_FUNC(sub_8262DC60)
function PPC_FUNC (line 1547) | PPC_FUNC(sub_8262D868)
function SetTextEntityModifier (line 1616) | void SetTextEntityModifier(Sonicteam::TextEntity* pTextEntity, uint64_t ...
function PPC_FUNC (line 1631) | PPC_FUNC(sub_824E2978)
function PPC_FUNC (line 1641) | PPC_FUNC(sub_824E11D0)
function PPC_FUNC (line 1703) | PPC_FUNC(sub_824DCF40)
function PPC_FUNC (line 1717) | PPC_FUNC(sub_824D12F0)
function PPC_FUNC (line 1729) | PPC_FUNC(sub_82507E68)
function PPC_FUNC (line 1741) | PPC_FUNC(sub_8263CC40)
function FindCsdModifier (line 2239) | std::optional<CsdModifier> FindCsdModifier(uint32_t data)
FILE: MarathonRecomp/patches/aspect_ratio_patches.h
function class (line 25) | class AspectRatioPatches
type CsdFlags (line 34) | enum CsdFlags : uint64_t
type CsdUVs (line 110) | struct CsdUVs
function V0 (line 113) | float V0{}
function U1 (line 114) | float U1{}
function V1 (line 115) | float V1{}
function U2 (line 116) | float U2{}
function V2 (line 117) | float V2{}
function U3 (line 118) | float U3{}
function V3 (line 119) | float V3{}
type CsdColours (line 122) | struct CsdColours
function C1 (line 125) | uint32_t C1{}
function C2 (line 126) | uint32_t C2{}
function C3 (line 127) | uint32_t C3{}
type CsdModifier (line 130) | struct CsdModifier
function CsdUVs (line 133) | CsdUVs UVs{}
function CsdColours (line 134) | CsdColours Colours{}
function CsdUVs (line 135) | CsdUVs RepeatUVs{}
function CsdColours (line 136) | CsdColours RepeatColours{}
function CornerMax (line 137) | float CornerMax{}
function CornerIndex (line 138) | uint32_t CornerIndex{}
type MovieFlags (line 147) | enum MovieFlags : uint32_t
type MovieModifier (line 154) | struct MovieModifier
FILE: MarathonRecomp/patches/audio_patches.cpp
function PPC_FUNC (line 62) | PPC_FUNC(sub_8260F168)
function CriCueUpdateDeltaTimeFix (line 81) | void CriCueUpdateDeltaTimeFix(PPCRegister& deltaTime)
function PowerUpJingleDurationFix (line 86) | void PowerUpJingleDurationFix(PPCRegister& duration)
function XmvPlayerLang (line 94) | void XmvPlayerLang(PPCRegister& r11)
function CsbSbkLang (line 102) | void CsbSbkLang(PPCRegister& r8)
function MovieVoiceLang (line 107) | void MovieVoiceLang(PPCRegister& r19)
FILE: MarathonRecomp/patches/audio_patches.h
function class (line 3) | class AudioPatches
FILE: MarathonRecomp/patches/camera_patches.cpp
class MainMenuCameraUpdateEvent (line 7) | class MainMenuCameraUpdateEvent : public ContextHookEvent<Sonicteam::Mai...
method Update (line 10) | void Update(Sonicteam::MainMenuTask* pThis, float deltaTime) override
function CameraImp_SetFOV (line 27) | void CameraImp_SetFOV(PPCRegister& f1)
function SonicCamera_InvertAzDriveK (line 35) | void SonicCamera_InvertAzDriveK(PPCRegister& az_driveK)
function SonicCamera_InvertAltDriveK (line 44) | void SonicCamera_InvertAltDriveK(PPCRegister& alt_driveK)
function DemoGMCamera_InvertHorizontal (line 53) | void DemoGMCamera_InvertHorizontal(PPCRegister& horz)
function DemoGMCamera_InvertVertical (line 62) | void DemoGMCamera_InvertVertical(PPCRegister& vert)
FILE: MarathonRecomp/patches/camera_patches.h
function class (line 3) | class CameraPatches
FILE: MarathonRecomp/patches/fps_patches.cpp
function MakeDeltaTime (line 8) | double MakeDeltaTime(std::chrono::steady_clock::time_point& prev)
function HasFrameElapsed (line 19) | bool HasFrameElapsed(double reference, double& timeElapsed, double delta...
function PPC_FUNC (line 33) | PPC_FUNC(sub_82587AA8)
function PostureControl_RotationSpeedFix (line 43) | void PostureControl_RotationSpeedFix(PPCRegister& c_rotation_speed, PPCR...
function SonicCamera_RotationSpeedFix (line 50) | void SonicCamera_RotationSpeedFix(PPCRegister& f0, PPCRegister& deltaTim...
function ObjTarzan_VolatileBranch (line 55) | bool ObjTarzan_VolatileBranch(PPCRegister& r30)
function ObjTarzan_PatchStaticDeltaTime (line 63) | void ObjTarzan_PatchStaticDeltaTime(PPCRegister& value, PPCRegister& delta)
function ObjTarzan_PatchDeltaTimeArgument (line 71) | void ObjTarzan_PatchDeltaTimeArgument(PPCRegister& value, PPCRegister& v...
function PPC_FUNC (line 84) | PPC_FUNC(sub_8232D770)
function ObjEspSwing_DecayRateFix (line 113) | void ObjEspSwing_DecayRateFix(PPCRegister& f0, PPCRegister& f13, PPCRegi...
type MsgSuckPlayerEx (line 118) | struct MsgSuckPlayerEx : public Sonicteam::Message::Player::MsgSuckPlayer
function ObjectInputWarp_ExtendMsgSuckPlayer (line 123) | void ObjectInputWarp_ExtendMsgSuckPlayer(PPCRegister& phantom, PPCRegist...
function PlayerObject_ProcessMsgSuckPlayer_FixForce (line 138) | void PlayerObject_ProcessMsgSuckPlayer_FixForce(PPCRegister& message, PP...
function PlayerObject_ProcessMsgSuckPlayer_FixDeltaTime (line 145) | void PlayerObject_ProcessMsgSuckPlayer_FixDeltaTime(PPCRegister& message...
function Spanverse_GE1PE_DeltaTimeFix (line 152) | void Spanverse_GE1PE_DeltaTimeFix(PPCRegister& deltaTime)
function HUDLoadingAlloc (line 159) | void HUDLoadingAlloc(PPCRegister& r3)
function PPC_FUNC (line 166) | PPC_FUNC(sub_824D7BC8)
function HUDLoading_DeltaTimeFix (line 176) | void HUDLoading_DeltaTimeFix(PPCRegister& pThis, PPCRegister& deltaTime)
function HUDWindow_PreserveDeltaTime (line 186) | void HUDWindow_PreserveDeltaTime(PPCRegister& f31, PPCRegister& f1)
function HUDWindow_Callback (line 194) | void HUDWindow_Callback(PPCRegister& f1, PPCRegister& f31)
function PPC_FUNC (line 201) | PPC_FUNC(sub_8250AAB0)
function PPC_FUNC (line 214) | PPC_FUNC(sub_8250D698)
function ObjectVehicleBike_EnemyShot_DisableVehicleCollisionLayer (line 225) | bool ObjectVehicleBike_EnemyShot_DisableVehicleCollisionLayer(PPCRegiste...
FILE: MarathonRecomp/patches/frontend_listener.cpp
class FrontendListener (line 7) | class FrontendListener : public SDLEventListener
method OnSDLEvent (line 12) | bool OnSDLEvent(SDL_Event* event) override
FILE: MarathonRecomp/patches/hook_event.h
function class (line 3) | class IHookEvent
function class (line 12) | class HookEvent : public IHookEvent
function Update (line 35) | void Update(T* pThis, float deltaTime) override {}
function Postfix (line 36) | void Postfix(T* pThis) override {}
FILE: MarathonRecomp/patches/input_patches.cpp
function PPC_FUNC (line 8) | PPC_FUNC(sub_82222428)
function RemapAntigravityEnter (line 25) | void RemapAntigravityEnter(PPCRegister& r11, PPCRegister& r28)
function RemapAntigravityExit (line 35) | void RemapAntigravityExit(PPCRegister& r11, PPCRegister& r30)
function RemapLightDash (line 43) | void RemapLightDash(PPCRegister& r3, PPCRegister& r11)
FILE: MarathonRecomp/patches/loading_patches.cpp
function PPC_FUNC (line 6) | PPC_FUNC(sub_824D7340)
FILE: MarathonRecomp/patches/loading_patches.h
function class (line 5) | class LoadingPatches
FILE: MarathonRecomp/patches/misc_patches.cpp
function UnlockAchievement (line 8) | void UnlockAchievement(PPCRegister& id)
function SetLifeBarAnimation (line 13) | void SetLifeBarAnimation(PPCRegister& r3, PPCRegister& r4, PPCRegister& ...
function SetRingBarIndex (line 79) | void SetRingBarIndex(PPCRegister& r5, PPCRegister& r31)
function Load2PDisplayMidAsmHook (line 90) | void Load2PDisplayMidAsmHook() {}
function PostureDisableEdgeGrabLeftover (line 92) | void PostureDisableEdgeGrabLeftover(PPCRegister& posture)
function PedestrianAnimationLOD (line 102) | void PedestrianAnimationLOD(PPCRegister& val)
function PPC_FUNC (line 109) | PPC_FUNC(sub_822CE930)
function PPC_FUNC (line 204) | PPC_FUNC(sub_8244D288)
function Super3_DisableChangeRequestHint (line 216) | bool Super3_DisableChangeRequestHint()
function PPC_FUNC (line 222) | PPC_FUNC(sub_824A6EA8)
function PPC_FUNC (line 230) | PPC_FUNC(sub_82188460)
function NOP (line 235) | void NOP() {}
FILE: MarathonRecomp/patches/patches.h
function InitPatches (line 4) | inline void InitPatches()
FILE: MarathonRecomp/patches/pause_patches.cpp
function AddPauseMenuItem (line 5) | void AddPauseMenuItem
function GameImp_PauseMenu_AddQuitPrefix (line 27) | void GameImp_PauseMenu_AddQuitPrefix(PPCRegister& r1, PPCRegister& r30)
function PPC_FUNC (line 39) | PPC_FUNC(sub_8216DA08)
function PPC_FUNC (line 53) | PPC_FUNC(sub_82170E48)
function PPC_FUNC (line 69) | PPC_FUNC(sub_82509870)
FILE: MarathonRecomp/patches/player_patches.cpp
function PPC_FUNC (line 9) | PPC_FUNC(sub_82195500)
function PPC_FUNC (line 77) | PPC_FUNC(sub_8221A7D8)
function PPC_FUNC (line 114) | PPC_FUNC(sub_821E8C48)
function PlayerDebugMode_RegisterLuaSetup (line 143) | void PlayerDebugMode_RegisterLuaSetup(PPCRegister& str, PPCRegister& index)
function PlayerDebugMode_RemapDebugExitButton (line 166) | bool PlayerDebugMode_RemapDebugExitButton(PPCRegister& r30)
function AntigravityRetainsMomentum (line 179) | bool AntigravityRetainsMomentum()
function ControllableBoundAttack (line 184) | bool ControllableBoundAttack()
function ControllableBoundAttack2 (line 189) | bool ControllableBoundAttack2(PPCCRRegister& cmp)
function ControllableSpinkick (line 197) | bool ControllableSpinkick()
function ControllableTeleportDash (line 202) | bool ControllableTeleportDash()
function DisablePushState (line 207) | bool DisablePushState()
function MidairControlForMachSpeed (line 212) | bool MidairControlForMachSpeed()
function MidairControlForSnowboards (line 217) | bool MidairControlForSnowboards()
function RestoreChaosBoostJump (line 222) | void RestoreChaosBoostJump(PPCRegister& r10, PPCRegister& r11)
function RestoreChainJumpFlips (line 231) | void RestoreChainJumpFlips(PPCRegister& r31, PPCRegister& r30, PPCRegist...
function RestoreChaosSpearFlips (line 280) | bool RestoreChaosSpearFlips()
function UnlimitedAntigravity (line 285) | bool UnlimitedAntigravity()
function PPC_FUNC (line 294) | PPC_FUNC(sub_82217FC0)
function PPC_FUNC (line 352) | PPC_FUNC(sub_82218068)
function PPC_FUNC (line 405) | PPC_FUNC(sub_8223F360)
function SonicGauge_FixGemSprite (line 463) | void SonicGauge_FixGemSprite(PPCRegister& r)
function SonicGauge_FixFlags (line 471) | void SonicGauge_FixFlags(PPCRegister& r3, PPCRegister& r31)
function InfiniteLives (line 522) | bool InfiniteLives()
FILE: MarathonRecomp/patches/text_patches.cpp
function PPC_FUNC (line 11) | PPC_FUNC(sub_825ECB48)
function PPC_FUNC (line 83) | PPC_FUNC(sub_821735B8)
function PPC_FUNC (line 112) | PPC_FUNC(sub_82173838)
FILE: MarathonRecomp/patches/text_patches.h
type ReplacementMessage (line 5) | struct ReplacementMessage
function class (line 11) | class TextPatches
FILE: MarathonRecomp/patches/video_patches.cpp
function SetMSAALevel (line 9) | void SetMSAALevel(PPCRegister& val)
function BeginBlockGetName (line 14) | void BeginBlockGetName(PPCRegister& r3)
function PPC_FUNC (line 26) | PPC_FUNC(sub_826078D8)
function ReflectionScaleFactor (line 38) | float ReflectionScaleFactor(EReflectionResolution ref) {
function PPC_FUNC (line 55) | PPC_FUNC(sub_82619D00)
function PPC_FUNC (line 94) | PPC_FUNC(sub_82619B88)
function ShadowScaleFactor (line 145) | float ShadowScaleFactor(EShadowResolution ref) {
function PPC_FUNC (line 164) | PPC_FUNC(sub_82619FF0)
function GetRenderWorldFBO (line 181) | void GetRenderWorldFBO(PPCRegister& name)
function FurtherObjectShadows (line 187) | void FurtherObjectShadows(PPCRegister& scope)
function DisableRadialBlur (line 195) | bool DisableRadialBlur()
function DisableKingdomValleyMist (line 200) | bool DisableKingdomValleyMist()
FILE: MarathonRecomp/preload_executable.h
type PreloadContext (line 3) | struct PreloadContext
FILE: MarathonRecomp/sdl_events.h
function SDL_ResizeEvent (line 8) | inline void SDL_ResizeEvent(SDL_Window* pWindow, int width, int height)
function SDL_MoveEvent (line 20) | inline void SDL_MoveEvent(SDL_Window* pWindow, int x, int y)
function SDL_User_PlayerChar (line 32) | inline void SDL_User_PlayerChar(EPlayerCharacter character)
FILE: MarathonRecomp/sdl_listener.h
function class (line 3) | class ISDLEventListener
function class (line 12) | class SDLEventListener : public ISDLEventListener
FILE: MarathonRecomp/ui/achievement_menu.cpp
function MoveCursor (line 43) | static void MoveCursor(int& cursorIndex, int min = 0, int max = INT_MAX)
function DrawContainer (line 97) | static void DrawContainer(ImVec2 min, ImVec2 max)
function DrawAchievement (line 140) | static void DrawAchievement(int rowIndex, Achievement& achievement, bool...
FILE: MarathonRecomp/ui/achievement_menu.h
function AchievementMenuState (line 8) | enum class AchievementMenuState
FILE: MarathonRecomp/ui/achievement_overlay.cpp
function CanDequeueAchievement (line 22) | static bool CanDequeueAchievement()
FILE: MarathonRecomp/ui/achievement_overlay.h
function class (line 5) | class AchievementOverlay
FILE: MarathonRecomp/ui/black_bar.h
function class (line 3) | class BlackBar
FILE: MarathonRecomp/ui/button_window.h
function class (line 3) | class ButtonWindow
FILE: MarathonRecomp/ui/common_menu.h
function ImVec2 (line 10) | ImVec2 m_descPos{}
function ImVec2 (line 11) | ImVec2 m_previousDescPos{}
function m_isClosing (line 13) | bool m_isClosing{}
function m_time (line 14) | double m_time{}
function m_titleTime (line 15) | double m_titleTime{}
function m_descTime (line 16) | double m_descTime{}
function m_isDescScrolling (line 18) | bool m_isDescScrolling{}
function m_isDescManualScrolling (line 19) | bool m_isDescManualScrolling{}
function m_descScrollOffset (line 20) | float m_descScrollOffset{}
function m_descScrollTimer (line 21) | float m_descScrollTimer{}
function class (line 24) | class CommonMenuInputListener : public SDLEventListener
function resetDescScroll (line 39) | void resetDescScroll()
function PlayTransitions (line 50) | bool PlayTransitions{}
function ShowVersionString (line 52) | bool ShowVersionString{ true };
FILE: MarathonRecomp/ui/fader.cpp
function DoFade (line 51) | static void DoFade(bool isFadeIn, float duration, std::function<void()> ...
FILE: MarathonRecomp/ui/fader.h
function class (line 3) | class Fader
FILE: MarathonRecomp/ui/game_window.cpp
function Window_OnSDLEvent (line 20) | int Window_OnSDLEvent(void*, SDL_Event* event)
function SDL_Surface (line 251) | SDL_Surface* GameWindow::GetIconSurface(void* pIconBmp, size_t iconSize)
function EWindowState (line 374) | EWindowState GameWindow::SetMaximised(bool isEnabled)
function SDL_Rect (line 390) | SDL_Rect GameWindow::GetDimensions()
FILE: MarathonRecomp/ui/game_window.h
function class (line 12) | class GameWindow
FILE: MarathonRecomp/ui/imgui_utils.cpp
function InitImGuiUtils (line 35) | void InitImGuiUtils()
function UpdateImGuiUtils (line 51) | void UpdateImGuiUtils()
function SetGradient (line 56) | void SetGradient(const ImVec2& min, const ImVec2& max, ImU32 top, ImU32 ...
function SetHorizontalGradient (line 61) | void SetHorizontalGradient(const ImVec2& min, const ImVec2& max, ImU32 l...
function SetVerticalGradient (line 66) | void SetVerticalGradient(const ImVec2& min, const ImVec2& max, ImU32 top...
function SetGradient (line 71) | void SetGradient(const ImVec2& min, const ImVec2& max, ImU32 topLeft, Im...
function ResetGradient (line 84) | void ResetGradient()
function SetShaderModifier (line 90) | void SetShaderModifier(uint32_t shaderModifier)
function SetOrigin (line 99) | void SetOrigin(ImVec2 origin)
function SetScale (line 106) | void SetScale(ImVec2 scale)
function SetTextSkew (line 113) | void SetTextSkew(float yCenter, float skewScale)
function ResetTextSkew (line 120) | void ResetTextSkew()
function SetHorizontalMarqueeFade (line 127) | void SetHorizontalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScaleLef...
function SetHorizontalMarqueeFade (line 139) | void SetHorizontalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale)
function SetVerticalMarqueeFade (line 144) | void SetVerticalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScaleTop, ...
function SetVerticalMarqueeFade (line 156) | void SetVerticalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale)
function ResetMarqueeFade (line 161) | void ResetMarqueeFade()
function SetOutline (line 168) | void SetOutline(float outline)
function ResetOutline (line 174) | void ResetOutline()
function SetProceduralOrigin (line 179) | void SetProceduralOrigin(ImVec2 proceduralOrigin)
function ResetProceduralOrigin (line 186) | void ResetProceduralOrigin()
function SetAdditive (line 191) | void SetAdditive(bool enabled)
function ResetAdditive (line 197) | void ResetAdditive()
function AddImageFlipped (line 202) | void AddImageFlipped(ImTextureID texture, const ImVec2& min, const ImVec...
function Scale (line 231) | float Scale(float size, bool useGameplayScale)
function ComputeLoopMotion (line 241) | double ComputeLoopMotion(double time, double offset, double total)
function ComputeLinearMotion (line 246) | double ComputeLinearMotion(double time, double offset, double total, boo...
function ComputeMotion (line 253) | double ComputeMotion(double time, double offset, double total, bool reve...
function DrawArrows (line 258) | void DrawArrows(ImVec2 min, ImVec2 max, double& time)
function DrawArrowCursor (line 335) | void DrawArrowCursor(ImVec2 pos, double time, bool isIntroAnim, bool isB...
function ImValueDebug (line 374) | double ImValueDebug(double& value, double increment)
function DrawContainerBox (line 388) | void DrawContainerBox(ImVec2 min, ImVec2 max, float alpha)
function DrawTextBasic (line 413) | void DrawTextBasic(const ImFont* font, float fontSize, const ImVec2& pos...
function DrawTextWithMarquee (line 420) | void DrawTextWithMarquee(const ImFont* font, float fontSize, const ImVec...
function DrawTextWithMarqueeShadow (line 438) | void DrawTextWithMarqueeShadow(const ImFont* font, float fontSize, const...
function DrawTextWithOutline (line 456) | void DrawTextWithOutline(const ImFont* font, float fontSize, const ImVec...
function DrawTextWithShadow (line 473) | void DrawTextWithShadow(const ImFont* font, float fontSize, const ImVec2...
function DrawTextParagraph (line 486) | void DrawTextParagraph(const ImFont* font, float fontSize, float maxWidt...
function CalcWidestTextSize (line 514) | float CalcWidestTextSize(const ImFont* font, float fontSize, std::span<s...
function Truncate (line 524) | std::string Truncate(const std::string& input, size_t maxLength, bool us...
function Split (line 550) | std::vector<std::string> Split(const char* strStart, const ImFont* font,...
function ImVec2 (line 664) | ImVec2 MeasureCentredParagraph(const ImFont* font, float fontSize, float...
function ImVec2 (line 680) | ImVec2 MeasureCentredParagraph(const ImFont* font, float fontSize, float...
function Lerp (line 685) | float Lerp(float a, float b, float t)
function Cubic (line 690) | float Cubic(float a, float b, float t)
function Hermite (line 695) | float Hermite(float a, float b, float t)
function ImVec2 (line 700) | ImVec2 Lerp(const ImVec2& a, const ImVec2& b, float t)
function ImU32 (line 705) | ImU32 ColourLerp(ImU32 c0, ImU32 c1, float t)
function DrawVersionString (line 719) | void DrawVersionString(const ImU32 colour)
function DrawWindowArrow (line 739) | static void DrawWindowArrow(const ImVec2 pos, float scale, float rotatio...
function DrawWindow (line 784) | double DrawWindow(const ImVec2 min, const ImVec2 max, bool isAnimated, d...
function DrawScrollArrows (line 865) | void DrawScrollArrows(ImVec2 min, ImVec2 max, float scale, double& time,...
function ParseInterpolatedString (line 1009) | static std::vector<std::string> ParseInterpolatedString(const char* str,...
function IsInterpolatedString (line 1071) | static bool IsInterpolatedString(std::string_view str)
function ImVec2 (line 1076) | ImVec2 MeasureInterpolatedText(const ImFont* pFont, float fontSize, cons...
function DrawInterpolatedText (line 1149) | void DrawInterpolatedText(const ImFont* pFont, float fontSize, const ImV...
function ImGuiTextInterpData (line 1232) | ImGuiTextInterpData GetHidInterpTextData()
FILE: MarathonRecomp/ui/imgui_utils.h
type ImGuiTextPicture (line 34) | struct ImGuiTextPicture
function Width (line 37) | uint16_t Width{}
function Height (line 38) | uint16_t Height{}
type ImGuiTextPictureCrop (line 41) | struct ImGuiTextPictureCrop
function Y (line 44) | uint16_t Y{}
function Width (line 45) | uint16_t Width{}
function Height (line 46) | uint16_t Height{}
type ImGuiTextInterpData (line 54) | struct ImGuiTextInterpData
FILE: MarathonRecomp/ui/installer_wizard.cpp
type WizardPage (line 128) | enum class WizardPage
type MessagePromptSource (line 140) | enum class MessagePromptSource
class SDLEventListenerForInstaller (line 174) | class SDLEventListenerForInstaller : public SDLEventListener
method OnSDLEvent (line 179) | bool OnSDLEvent(SDL_Event* event) override
function LeaveInstallerWizard (line 369) | static void LeaveInstallerWizard(bool isQuitting = false)
function DLCIndex (line 385) | static int DLCIndex(DLC dlc)
function SetCurrentPage (line 392) | static void SetCurrentPage(WizardPage page)
function PushCursorRect (line 420) | static bool PushCursorRect(ImVec2 min, ImVec2 max, bool& isPressed, bool...
function DrawProgressBar (line 443) | static void DrawProgressBar(ImVec2 originMin, ImVec2 originMax, float pr...
function ConvertPathSet (line 475) | static bool ConvertPathSet(const nfdpathset_t *pathSet, std::list<std::f...
function PickerThreadProcess (line 500) | static void PickerThreadProcess()
function PickerStart (line 529) | static void PickerStart(bool folderMode)
function PickerShow (line 557) | static void PickerShow(bool folderMode)
function ParseSourcePaths (line 572) | static bool ParseSourcePaths(std::list<std::filesystem::path> &paths)
function InstallerThread (line 638) | static void InstallerThread()
function InstallerStart (line 670) | static void InstallerStart()
function InstallerParseSources (line 685) | static bool InstallerParseSources(std::string &errorMessage)
function CheckCancelAction (line 711) | static void CheckCancelAction()
function DrawMessagePrompt (line 757) | static void DrawMessagePrompt()
function PickerDrawForeground (line 831) | static void PickerDrawForeground()
function PickerCheckTutorial (line 841) | static void PickerCheckTutorial()
function PickerCheckResults (line 851) | static void PickerCheckResults()
function DrawLeftImage (line 870) | static void DrawLeftImage()
function DrawButton (line 918) | static bool DrawButton(ImVec2 pos, const char* text, bool& isHovered, bo...
function DrawSource (line 964) | static void DrawSource(ImVec2 pos, const char* text, bool isEnabled)
function ImVec2 (line 993) | static ImVec2 GetNavButtonPosition(ImVec2 originMin, ImVec2 originMax, i...
function DrawSelectLanguagePage (line 998) | static void DrawSelectLanguagePage(ImVec2 originMin, ImVec2 originMax)
function DrawSourcePickerPage (line 1020) | static void DrawSourcePickerPage(ImVec2 min, ImVec2 max, ImVec2 originMi...
function DrawInstallingPage (line 1050) | static void DrawInstallingPage(ImVec2 originMin, ImVec2 originMax)
function DrawInstallSucceededPage (line 1072) | static void DrawInstallSucceededPage(ImVec2 originMin, ImVec2 originMax,...
function DrawMusicCredits (line 1112) | static void DrawMusicCredits()
FILE: MarathonRecomp/ui/installer_wizard.h
type InstallerWizard (line 3) | struct InstallerWizard
FILE: MarathonRecomp/ui/message_window.cpp
class SDLEventListenerForMessageWindow (line 35) | class SDLEventListenerForMessageWindow : public SDLEventListener
method OnSDLEvent (line 38) | bool OnSDLEvent(SDL_Event* event) override
function DrawButton (line 138) | void DrawButton(int rowIndex, float yOffset, float yPadding, float width...
function ResetSelection (line 180) | static void ResetSelection()
FILE: MarathonRecomp/ui/message_window.h
function class (line 6) | class MessageWindow
FILE: MarathonRecomp/ui/options_menu.cpp
function ResetCategorySelection (line 79) | static void ResetCategorySelection()
function ResetOptionSelection (line 84) | static void ResetOptionSelection()
function ResetSelection (line 91) | static void ResetSelection()
function CheckAndDiscard (line 101) | static bool CheckAndDiscard(bool& value)
function MoveCursor (line 112) | static void MoveCursor(int& cursorIndex, double& cursorTime, int min = 0...
function DrawCategories (line 168) | static void DrawCategories(ImVec2 min, ImVec2 max)
function DrawSelectionArrows (line 219) | void DrawSelectionArrows(ImVec2 min, ImVec2 max, bool isSelected)
function DrawOption (line 278) | static void DrawOption
function DrawOptions (line 797) | static void DrawOptions(ImVec2 min, ImVec2 max)
function DrawContainer (line 904) | static void DrawContainer(ImVec2 min, ImVec2 max)
FILE: MarathonRecomp/ui/options_menu.h
type class (line 8) | enum class
type class (line 16) | enum class
type class (line 23) | enum class
function class (line 33) | class OptionsMenu
FILE: MarathonRecomp/user/achievement_data.h
function class (line 10) | class AchievementData
FILE: MarathonRecomp/user/achievement_manager.cpp
function time_t (line 8) | time_t AchievementManager::GetTimestamp(uint16_t id)
FILE: MarathonRecomp/user/achievement_manager.h
type class (line 5) | enum class
function EAchBinStatus (line 19) | static inline EAchBinStatus BinStatus{ EAchBinStatus::Success };
FILE: MarathonRecomp/user/config.h
type class (line 47) | enum class
type class (line 53) | enum class
type class (line 59) | enum class
type class (line 65) | enum class
type class (line 72) | enum class
type class (line 78) | enum class
type class (line 90) | enum class
type class (line 96) | enum class
type class (line 102) | enum class
type class (line 112) | enum class
type class (line 120) | enum class
type class (line 129) | enum class
type class (line 137) | enum class
type class (line 144) | enum class
type class (line 150) | enum class
type class (line 156) | enum class
function T (line 171) | T m_storedValue{}
function CONFIG_LOCALE (line 176) | CONFIG_LOCALE* Locale{}
function T (line 177) | T DefaultValue{}
function T (line 178) | T Value{ DefaultValue };
function class (line 245) | class Config
FILE: MarathonRecomp/user/paths.cpp
function CheckPortable (line 7) | bool CheckPortable()
function BuildUserPath (line 12) | std::filesystem::path BuildUserPath()
FILE: MarathonRecomp/user/paths.h
function std (line 18) | inline std::filesystem::path GetGamePath()
function std (line 30) | inline std::filesystem::path GetSavePath(bool checkForMods)
function std (line 40) | inline std::filesystem::path GetSaveFilePath(bool checkForMods)
function std (line 48) | static std::string toLower(std::string str) {
function BuildPathCache (line 53) | inline void BuildPathCache(const std::string& gamePath) {
FILE: MarathonRecomp/user/registry.h
function class (line 3) | class Registry
FILE: MarathonRecomp/utils/bit_stream.h
function class (line 12) | class BitStream {
FILE: MarathonRecomp/utils/ring_buffer.h
function class (line 12) | class RingBuffer {
FILE: MarathonRecomp/xxHashMap.h
type xxHash (line 3) | struct xxHash
function XXH64_hash_t (line 16) | inline XXH64_hash_t HashStr(const std::string_view& value)
FILE: MarathonRecompLib/shader/shader_cache.h
type ShaderCacheEntry (line 3) | struct ShaderCacheEntry
FILE: thirdparty/o1heap/o1heap.c
function O1HEAP_PRIVATE (line 72) | O1HEAP_PRIVATE uint_fast8_t O1HEAP_CLZ(const size_t x)
type Fragment (line 113) | typedef struct Fragment Fragment;
type FragmentHeader (line 115) | typedef struct FragmentHeader
type Fragment (line 124) | struct Fragment
type O1HeapInstance (line 133) | struct O1HeapInstance
function O1HEAP_PRIVATE (line 149) | O1HEAP_PRIVATE uint_fast8_t log2Floor(const size_t x)
function O1HEAP_PRIVATE (line 157) | O1HEAP_PRIVATE uint_fast8_t log2Ceil(const size_t x)
function O1HEAP_PRIVATE (line 166) | O1HEAP_PRIVATE size_t pow2(const uint_fast8_t power)
function O1HEAP_PRIVATE (line 172) | O1HEAP_PRIVATE size_t roundUpToPowerOf2(const size_t x)
function O1HEAP_PRIVATE (line 180) | O1HEAP_PRIVATE void interlink(Fragment* const left, Fragment* const right)
function O1HEAP_PRIVATE (line 193) | O1HEAP_PRIVATE void rebin(O1HeapInstance* const handle, Fragment* const ...
function O1HEAP_PRIVATE (line 214) | O1HEAP_PRIVATE void unbin(O1HeapInstance* const handle, const Fragment* ...
function O1HeapInstance (line 245) | O1HeapInstance* o1heapInit(void* const base, const size_t size)
function o1heapFree (line 384) | void o1heapFree(O1HeapInstance* const handle, void* const pointer)
function o1heapDoInvariantsHold (line 452) | bool o1heapDoInvariantsHold(const O1HeapInstance* const handle)
function O1HeapDiagnostics (line 492) | O1HeapDiagnostics o1heapGetDiagnostics(const O1HeapInstance* const handle)
FILE: thirdparty/o1heap/o1heap.h
type O1HeapInstance (line 37) | typedef struct O1HeapInstance O1HeapInstance;
type O1HeapDiagnostics (line 44) | typedef struct
FILE: tools/bc_diff/bc_diff.cpp
function readAllBytes (line 9) | static std::vector<uint8_t> readAllBytes(const char* filePath)
function main (line 29) | int main(int argc, char** argv)
FILE: tools/bc_diff/bc_diff.h
type BlockCompressionDiffPatch (line 5) | struct BlockCompressionDiffPatch
type BlockCompressionDiffPatchEntry (line 12) | struct BlockCompressionDiffPatchEntry
type BlockCompressionDiffPatchHeader (line 19) | struct BlockCompressionDiffPatchHeader
FILE: tools/file_to_c/file_to_c.cpp
function read_file (line 32) | std::vector<char> read_file(const char* path) {
function create_parent_if_needed (line 51) | void create_parent_if_needed(const char* path) {
function main (line 58) | int main(int argc, const char** argv) {
FILE: tools/fshasher/fshasher.cpp
function showHelp (line 40) | void showHelp() {
function process (line 44) | int process(const std::list<std::filesystem::path> &searchDirectories, s...
function main (line 156) | int main(int argc, char *argv[])
FILE: tools/fshasher/plainargs.h
function namespace (line 33) | namespace plainargs {
FILE: tools/u8extract/u8extract.cpp
class U8Archive (line 9) | class U8Archive {
type EntryType (line 15) | enum class EntryType : uint8_t {
type Entry (line 20) | struct Entry {
method EntryType (line 27) | EntryType getType() const {
method getNameOffset (line 31) | uint32_t getNameOffset() const {
method isCompressed (line 35) | bool isCompressed() const {
method readU32 (line 44) | uint32_t readU32() {
method readNullTerminatedString (line 50) | std::string readNullTerminatedString() {
method decompressZlib (line 59) | void decompressZlib(const std::vector<uint8_t>& compressed, std::vecto...
method parseEntries (line 78) | void parseEntries(size_t entry_index, const std::string& base_path) {
method parseEntriesRecursive (line 101) | size_t parseEntriesRecursive(size_t entry_index, const std::string& ba...
method extractFile (line 123) | void extractFile(const Entry& entry, const std::string& path) {
method load (line 145) | void load(const std::string& filename) {
method extract (line 193) | void extract(const std::string& output_dir) {
function main (line 212) | int main(int argc, char* argv[]) {
FILE: tools/x_decompress/x_decompress.cpp
function readAllBytes (line 11) | static std::vector<uint8_t> readAllBytes(const char* path)
function T (line 30) | static T byteSwap(T value)
function byteSwapInplace (line 46) | static void byteSwapInplace(T& value)
type ReadStream (line 51) | struct ReadStream
function mspackRead (line 57) | static int mspackRead(mspack_file* file, void* buffer, int bytes)
type WriteStream (line 86) | struct WriteStream
function mspackWrite (line 92) | static int mspackWrite(mspack_file* file, void* buffer, int bytes)
function mspackFree (line 110) | static void mspackFree(void* ptr)
function mspackCopy (line 115) | static void mspackCopy(void* src, void* dst, size_t bytes)
type XCompressHeader (line 137) | struct XCompressHeader
method byteSwap (line 150) | void byteSwap()
function main (line 165) | int main(int argc, char** argv)
Condensed preview — 586 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,635K chars).
[
{
"path": ".editorconfig",
"chars": 135,
"preview": "# editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 4\ninsert_final_newline = true\nen"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 2934,
"preview": "name: Bug Report\ndescription: Report a bug in Marathon Recompiled\ntype: \"Bug\"\nbody:\n - type: checkboxes\n id: validat"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 28,
"preview": "blank_issues_enabled: false\n"
},
{
"path": ".github/ISSUE_TEMPLATE/dev_report.yml",
"chars": 178,
"preview": "name: Dev Report\ndescription: For developer use only!\nbody:\n - type: textarea\n id: description\n attributes:\n "
},
{
"path": ".github/workflows/validate-external.yml",
"chars": 604,
"preview": "name: validate-external\non:\n pull_request_target:\n types: [opened, synchronize]\njobs:\n authorize:\n if: github.re"
},
{
"path": ".github/workflows/validate-internal.yml",
"chars": 297,
"preview": "name: validate-internal\non:\n push:\n branches:\n - main\n pull_request:\n types: [opened, synchronize]\njobs:\n "
},
{
"path": ".github/workflows/validate.yml",
"chars": 9763,
"preview": "name: validate\non:\n workflow_call:\n secrets:\n ASSET_REPO:\n required: true\n ASSET_REPO_TOKEN:\n "
},
{
"path": ".gitignore",
"chars": 6958,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": ".gitmodules",
"chars": 2315,
"preview": "[submodule \"tools/XenonRecomp\"]\n\tpath = tools/XenonRecomp\n\turl = https://github.com/sonicnext-dev/XenonRecomp.git\n[submo"
},
{
"path": "CMakeLists.txt",
"chars": 1778,
"preview": "cmake_minimum_required (VERSION 3.20)\n\nif(NOT DEFINED ENV{VCPKG_ROOT})\n message(FATAL_ERROR \"VCPKG_ROOT is not define"
},
{
"path": "CMakePresets.json",
"chars": 5706,
"preview": "{\n \"version\": 8,\n \"configurePresets\": [\n {\n \"name\": \"windows-base\",\n \"hidden\": true,\n"
},
{
"path": "COPYING",
"chars": 35149,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "MarathonRecomp/.gitignore",
"chars": 23,
"preview": "/version.h\n/version.cpp"
},
{
"path": "MarathonRecomp/CMakeLists.txt",
"chars": 25669,
"preview": "project(\"MarathonRecomp\")\r\n\r\nif (WIN32)\r\n option(MARATHON_RECOMP_D3D12 \"Add D3D12 support for rendering\" ON)\r\nendif()"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Core/csdBase.h",
"chars": 58,
"preview": "#pragma once\n\nnamespace Chao::CSD\n{\n class CBase {};\n}\n"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Core/csdRCObject.h",
"chars": 767,
"preview": "#pragma once\n\n#include <Chao/CSD/Core/csdRCPtrAbs.h>\n\nnamespace Chao::CSD\n{\n class RCPtrAbs::RCObject\n {\n publi"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Core/csdRCObjectImp.h",
"chars": 154,
"preview": "#pragma once\n\n#include <Chao/CSD/Core/csdRCPtr.h>\n\nnamespace Chao::CSD\n{\n template<typename T>\n class RCPtr<T>::RC"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Core/csdRCPtr.h",
"chars": 182,
"preview": "#pragma once\n\n#include <Chao/CSD/Core/csdRCPtrAbs.h>\n\nnamespace Chao::CSD\n{\n template<typename T>\n class RCPtr : R"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Core/csdRCPtrAbs.h",
"chars": 448,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Chao::CSD\n{\n class RCPtrAbs\n {\n public:\n class RCObject"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Core/csdTexList.h",
"chars": 438,
"preview": "#pragma once\n\n#include <Chao/CSD/Core/csdBase.h>\n#include <Chao/CSD/Core/csdRCPtr.h>\n\nnamespace Chao::CSD\n{\n class CT"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmMotionPattern.h",
"chars": 100,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Chao::CSD\n{\n class CMotionPattern : CBase {};\n}\n"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmNode.h",
"chars": 559,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Chao/CSD/Core/csdBase.h>\n#include <Chao/CSD/Manager/csdmResourceBase.h>\n"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmNodeObserver.h",
"chars": 162,
"preview": "#pragma once\n\n#include <Chao/CSD/Manager/csdmObserverBase.h>\n\nnamespace Chao::CSD\n{\n class CNode;\n\n class CNodeObs"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmObserverBase.h",
"chars": 373,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Chao::CSD\n{\n template<typename TObservee>\n class CObserverBase\n "
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmProject.h",
"chars": 612,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Chao/CSD/Core/csdBase.h>\n#include <Chao/CSD/Manager/csdmResourceBase.h>\n"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmResourceBase.h",
"chars": 518,
"preview": "#pragma once\n\n#include <Chao/CSD/Core/csdRCPtr.h>\n\nnamespace Chao::CSD\n{\n template<typename T>\n class CResourceBas"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmScene.h",
"chars": 5467,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Chao/CSD/Core/csdBase.h>\n#include <Chao/CSD/Manager/csdmResourceBase.h>\n"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmSceneObserver.h",
"chars": 165,
"preview": "#pragma once\n\n#include <Chao/CSD/Manager/csdmObserverBase.h>\n\nnamespace Chao::CSD\n{\n class CScene;\n\n class CSceneO"
},
{
"path": "MarathonRecomp/api/Chao/CSD/Manager/csdmSubjectBase.h",
"chars": 446,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Chao::CSD\n{\n template<typename TObserver, typename TObservee>\n cl"
},
{
"path": "MarathonRecomp/api/Marathon.h",
"chars": 12321,
"preview": "#pragma once\n\n#include \"Chao/CSD/Core/csdBase.h\"\n#include \"Chao/CSD/Core/csdRCObject.h\"\n#include \"Chao/CSD/Core/csdRCObj"
},
{
"path": "MarathonRecomp/api/Marathon.inl",
"chars": 3329,
"preview": "#pragma once\n\n#include <cpu/guest_stack_var.h>\n#include <kernel/function.h>\n\nconstexpr float RAD2DEGf = 57.2958f;\nconste"
},
{
"path": "MarathonRecomp/api/README.md",
"chars": 3317,
"preview": "# Marathon\n\n## Contribution Guide\n\n### Naming Conventions\n\n- Use `camelCase` for local variables, `SNAKE_CASE` for prepr"
},
{
"path": "MarathonRecomp/api/Sonicteam/Actor.h",
"chars": 382,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Engine/Task.h>\n\nnamespace Sonicteam\n{\n class Actor : pu"
},
{
"path": "MarathonRecomp/api/Sonicteam/ActorManager.h",
"chars": 630,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Actor.h>\n\nnamespace Sonicteam\n{\n class ActorManager\n {\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/AlertWindowTask.h",
"chars": 953,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Sonicteam/SelectWindowTask.h>\n\nn"
},
{
"path": "MarathonRecomp/api/Sonicteam/AppMarathon.h",
"chars": 645,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/ApplicationXenon.h>\n#include <Sonicteam/DocMarathonState.h"
},
{
"path": "MarathonRecomp/api/Sonicteam/AppMarathon.inl",
"chars": 157,
"preview": "namespace Sonicteam\n{\n inline AppMarathon* AppMarathon::GetInstance()\n {\n return *(xpointer<AppMarathon>*)M"
},
{
"path": "MarathonRecomp/api/Sonicteam/AudioEngineXenon.h",
"chars": 763,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Engine/Doc.h>\n#include <Sonicteam/SoX/Audio/IAudioEngine.h"
},
{
"path": "MarathonRecomp/api/Sonicteam/ButtonWindowTask.h",
"chars": 398,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/HUDButtonWindow.h>\n\nnamespace Sonicteam\n{\n class ButtonWind"
},
{
"path": "MarathonRecomp/api/Sonicteam/CObjBalloonIconDrawable.h",
"chars": 653,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Scenery/Drawable.h>\n#include <Sonicteam/MyGraphicsDevice.h"
},
{
"path": "MarathonRecomp/api/Sonicteam/Camera/CameraMode.h",
"chars": 665,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Sonicteam/SoX/MessageReceiver.h>"
},
{
"path": "MarathonRecomp/api/Sonicteam/Camera/CameraModeManager.h",
"chars": 888,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Sonicteam/Camera/Cameraman.h>\n#i"
},
{
"path": "MarathonRecomp/api/Sonicteam/Camera/Cameraman.h",
"chars": 581,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n\nnamespace Sonicteam::Camera\n{\n class C"
},
{
"path": "MarathonRecomp/api/Sonicteam/Camera/SonicCamera.h",
"chars": 1396,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Camera\n{\n class SonicCamera : public CameraMode\n {\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/CommonObjectHint.h",
"chars": 1020,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/PropFixture.h>\n\nnamespace Sonicteam\n{\n class CommonObjectHi"
},
{
"path": "MarathonRecomp/api/Sonicteam/CsdLink.h",
"chars": 1016,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class CsdLink\n {\n public:\n struct Vftable\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/CsdManager.h",
"chars": 441,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/IResourceMgr.h>\n#include <Sonicteam/System/CreateStatic.h>"
},
{
"path": "MarathonRecomp/api/Sonicteam/CsdObject.h",
"chars": 567,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/RefCountObject.h>\n#include <Sonicteam/CsdLink.h>\n#include "
},
{
"path": "MarathonRecomp/api/Sonicteam/CsdResource.h",
"chars": 316,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/IResource2.h>\n#include <Sonicteam/CsdManager.h>\n\nnamespace"
},
{
"path": "MarathonRecomp/api/Sonicteam/DocMarathonImp.h",
"chars": 837,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Engine/Doc.h>\n#include <Sonicteam/SoX/Input/Manager.h>\n#in"
},
{
"path": "MarathonRecomp/api/Sonicteam/DocMarathonState.h",
"chars": 212,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/DocMarathonImp.h>\n\nnamespace Sonicteam\n{\n class DocMarathon"
},
{
"path": "MarathonRecomp/api/Sonicteam/Enemy/EnemyShot.h",
"chars": 227,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Enemy\n{\n class EnemyShot : public SoX::Engine::Task\n {"
},
{
"path": "MarathonRecomp/api/Sonicteam/Enemy/EnemyShotNormal.h",
"chars": 221,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Enemy/EnemyShotPoint.h>\n\nnamespace Sonicteam::Enemy\n{\n clas"
},
{
"path": "MarathonRecomp/api/Sonicteam/Enemy/EnemyShotPoint.h",
"chars": 507,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyPhantom.h>\n#include <Sonicteam/SoX/RefCountObject.h>\n#includ"
},
{
"path": "MarathonRecomp/api/Sonicteam/Fixture.h",
"chars": 510,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Actor.h>\n#include <Sonicteam/SoX/Math/Quaternion.h>\n#include <"
},
{
"path": "MarathonRecomp/api/Sonicteam/Game.h",
"chars": 150,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class Game : public SoX::MessageReceiver {};\n\n MARAT"
},
{
"path": "MarathonRecomp/api/Sonicteam/GameImp.h",
"chars": 5798,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Sonicteam/Mission/Core.h>\n#inclu"
},
{
"path": "MarathonRecomp/api/Sonicteam/GameMode.h",
"chars": 476,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/GameImp.h>\n\nnamespace Sonicteam\n{\n class GameMode : public "
},
{
"path": "MarathonRecomp/api/Sonicteam/Globals.h",
"chars": 608,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n enum Character : uint32_t\n {\n Character_Sonic"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDButtonWindow.h",
"chars": 1985,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Chao/CSD/Manager/csdmSceneObserv"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDCALLBACK.h",
"chars": 226,
"preview": "#pragma once\n\nnamespace Sonicteam\n{\n class HUDCALLBACK\n {\n public:\n xpointer<void> m_pVftable;\n };\n\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDGoldMedal.h",
"chars": 1601,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Sonicteam/SoX/Engine/Doc.h>\n#inc"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDLimitTime.h",
"chars": 772,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class HUDLimitTime : public SoX::RefCountObject, public"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDLoading.h",
"chars": 548,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class HUDLoading : public SoX::RefCountObject, public S"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDMainDisplay.h",
"chars": 975,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class HUDMainDisplay : public SoX::RefCountObject, publ"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDMainMenu.h",
"chars": 1199,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/CsdObject.h>\n#include <Sonicteam/HudTextParts.h>\n\nnamespace So"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDMessageWindow.h",
"chars": 685,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/HintWindowTask.h>\n\nnamespace Sonicteam\n{\n class HUDMessageW"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDOption.h",
"chars": 433,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/HudTextParts.h>\n\nnamespace Sonicteam\n{\n class HUDOption : p"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDPopupScreen.h",
"chars": 1706,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Graphics/TechniqueFXL.h>\n#include <Sonicteam/MyTexture.h>\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDRaderMap.h",
"chars": 161,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class HUDRaderMap : public HUDPopupScreen {};\n\n MARA"
},
{
"path": "MarathonRecomp/api/Sonicteam/HUDStageTitle.h",
"chars": 341,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class HUDStageTitle : public SoX::Engine::Task\n {\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/HintWindowTask.h",
"chars": 493,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class HintWindowTask : public SoX::Engine::Task\n {\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/HudTextParts.h",
"chars": 2191,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/RefCountObject.h>\n#include <Sonicteam/CsdObject.h>\n#includ"
},
{
"path": "MarathonRecomp/api/Sonicteam/ImageFilter.h",
"chars": 287,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class ImageFilter\n {\n public:\n xpointer<vo"
},
{
"path": "MarathonRecomp/api/Sonicteam/MainDisplayTask.h",
"chars": 356,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class MainDisplayTask : public SoX::Engine::Task\n {\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/MainMenuExpositionTask.h",
"chars": 338,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/RefCountObject.h>\n\nnamespace Sonicteam\n{\n class MainMen"
},
{
"path": "MarathonRecomp/api/Sonicteam/MainMenuTask.h",
"chars": 3411,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Math/Vector.h>\n#include <Sonicteam/SoX/RefSharedPointer.h>"
},
{
"path": "MarathonRecomp/api/Sonicteam/MainMode.h",
"chars": 587,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Graphics/FrameGP.h>\n#include <Sonicteam/SoX/Scenery/Camera"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/Camera/Cameraman/MsgChangeMode.h",
"chars": 514,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Math/Vector.h>\n#include <Sonicteam/SoX/Message.h>\n\nnamespa"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/HUDButtonWindow/MsgChangeButtons.h",
"chars": 370,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Message.h>\n\nnamespace Sonicteam::Message::HUDButtonWindow\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/HUDGoldMedal/MsgChangeState.h",
"chars": 700,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Message.h>\n\nnamespace Sonicteam::Message::HUDGoldMedal\n{\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgChangeState.h",
"chars": 273,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Message.h>\n\nnamespace Sonicteam::Message::HUDMainMenu\n{\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgSetCursor.h",
"chars": 555,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Message/HUDMainMenu/MsgChangeState.h>\n\nnamespace Sonicteam::Me"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/HUDMainMenu/MsgTransition.h",
"chars": 530,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Message/HUDMainMenu/MsgChangeState.h>\n\nnamespace Sonicteam::Me"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/Mission/MsgGetGlobalFlag.h",
"chars": 402,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Message::Mission\n{\n struct MsgGetGlobalFlag : SoX::Messag"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/ObjJump123/MsgGetNextPoint.h",
"chars": 429,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Math/Vector.h>\n#include <Sonicteam/SoX/Message.h>\n\nnamespa"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/PauseAdapter/MsgGetText.h",
"chars": 398,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Message.h>\n#include <stdx/string.h>\n\nnamespace Sonicteam::"
},
{
"path": "MarathonRecomp/api/Sonicteam/Message/Player/MsgSuckPlayer.h",
"chars": 311,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Math/Vector.h>\n#include <Sonicteam/SoX/Message.h>\n\nnamespa"
},
{
"path": "MarathonRecomp/api/Sonicteam/MessageWindowTask.h",
"chars": 506,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class MessageWindowTask : public SoX::Engine::Task\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Mission/Core.h",
"chars": 226,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Mission\n{\n class Core : public SoX::MessageReceiver\n {"
},
{
"path": "MarathonRecomp/api/Sonicteam/MovieObject.h",
"chars": 899,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MovieObjectWmv.h>\n\nnamespace Sonicteam\n{\n class MovieObject"
},
{
"path": "MarathonRecomp/api/Sonicteam/MovieObjectWmv.h",
"chars": 1897,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyGraphicsDevice.h>\n#include <Sonicteam/MyTexture.h>\n#include "
},
{
"path": "MarathonRecomp/api/Sonicteam/MovieTask.h",
"chars": 384,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class MovieTask : public SoX::Engine::Task, public CsdL"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyCue.h",
"chars": 142,
"preview": "#pragma once\n\n#include <Sonicteam/SoX/Audio/Cue.h>\n\nclass MyCue : public Sonicteam::SoX::Audio::Cue {};\n\nMARATHON_ASSERT"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyCueAdx.h",
"chars": 659,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyCue.h>\n#include <Sonicteam/MyCueAttenuate.h>\n#include <Sonic"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyCueAttenuate.h",
"chars": 646,
"preview": "#pragma once\n\nclass MyCueAttenuate\n{\npublic:\n be<float> m_Time;\n be<float> m_FadeOutRate;\n be<float> m_FadeInRa"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyGraphicsDevice.h",
"chars": 306,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Graphics/Xenon/DeviceXenon.h>\n\nnamespace Sonicteam\n{\n c"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyPhantom.h",
"chars": 184,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Physics/Havok/PhantomHavok.h>\n\nnamespace Sonicteam\n{\n c"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyRenderProcess.h",
"chars": 550,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyGraphicsDevice.h>\n#include <Sonicteam/SoX/Engine/RenderProce"
},
{
"path": "MarathonRecomp/api/Sonicteam/MyTexture.h",
"chars": 289,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Graphics/Xenon/TextureXenon.h>\n\nnamespace Sonicteam\n{\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/MyTransforms.h",
"chars": 278,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Graphics/Transforms.h>\n\nnamespace Sonicteam\n{\n class My"
},
{
"path": "MarathonRecomp/api/Sonicteam/NamedActor.h",
"chars": 310,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Actor.h>\n#include <stdx/string.h>\n\nnamespace Sonicteam\n{\n c"
},
{
"path": "MarathonRecomp/api/Sonicteam/NamedTask.h",
"chars": 329,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Engine/Task.h>\n#include <stdx/string.h>\n\nnamespace Sonicte"
},
{
"path": "MarathonRecomp/api/Sonicteam/NoSyncThread.h",
"chars": 244,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Thread.h>\n\nnamespace Sonicteam\n{\n class NoSyncThread : "
},
{
"path": "MarathonRecomp/api/Sonicteam/ObjectVehicle.h",
"chars": 218,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class ObjectVehicle : public Actor\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/ObjectVehicleBike.h",
"chars": 489,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/VehicleMissileCtrlAutomatic.h>\n\nnamespace Sonicteam\n{\n clas"
},
{
"path": "MarathonRecomp/api/Sonicteam/PauseAdapter.h",
"chars": 614,
"preview": "#pragma once\n\n#include <Sonicteam/GameImp.h>\n\nnamespace Sonicteam\n{\n class PauseAdapter : public SoX::Engine::Task\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/PauseTask.h",
"chars": 1205,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class PauseTask : public SoX::Engine::Task\n {\n pu"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/GroundRayListener.h",
"chars": 1123,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/ICollisionListenerTemplate.h>\n#include <Sonicteam/SoX/P"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/ICollisionListener.h",
"chars": 711,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class ICollisionListener\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/ICollisionListenerTemplate.h",
"chars": 258,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/ICollisionListener.h>\n\nnamespace Sonicteam::Player\n{\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IDynamicLink.h",
"chars": 262,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IDynamicLink\n {\n public:\n xp"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IEventerListener.h",
"chars": 288,
"preview": "#pragma once\n\nnamespace Sonicteam::Player\n{\n class IEventerListener\n {\n public:\n xpointer<void> m_pVftab"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IExportExternalFlag.h",
"chars": 283,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IExportExternalFlag\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IExportPostureRequestFlag.h",
"chars": 301,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IExportPostureRequestFlag\n {\n publi"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IExportWeaponRequestFlag.h",
"chars": 298,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IExportWeaponRequestFlag\n {\n public"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IFlagCommunicator.h",
"chars": 277,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IFlagCommunicator\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IGauge.h",
"chars": 306,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IPlugIn.h>\n#include <Sonicteam/Player/IVariable.h>\n#inc"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/INotification.h",
"chars": 265,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class INotification\n {\n public:\n x"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPlugIn.h",
"chars": 357,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <stdx/string.h>\n\nnamespace Sonicteam::Player\n{\n class IPlugIn\n {\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPostureControl.h",
"chars": 3644,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IFlagCommunicator.h>\n#include <Sonicteam/Player/State/I"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPosturePlugIn.h",
"chars": 268,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IPosturePlugIn\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPostureSupportEdge.h",
"chars": 325,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IPostureSupportEdge\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPostureSupportInput.h",
"chars": 328,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IPostureSupportInput\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPostureSupportOttoto.h",
"chars": 331,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IPostureSupportOttoto\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPostureSupportRayTemplate.h",
"chars": 968,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/SoX/Physics/World.h>\n#include <Sonicteam/SoX/RefCountObject.h>"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IPostureSupportSphere.h",
"chars": 331,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IPostureSupportSphere\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IScore.h",
"chars": 152,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IScore : public IPlugIn {};\n\n MARATHON"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IStepable.h",
"chars": 253,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IStepable\n {\n public:\n xpoin"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IVariable.h",
"chars": 253,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class IVariable\n {\n public:\n xpoin"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/IZock.h",
"chars": 188,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IPlugIn.h>\n\nnamespace Sonicteam::Player\n{\n class IZo"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Input/IListener.h",
"chars": 302,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::Input\n{\n class IListener\n {\n public:\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Input/ListenerNormal.h",
"chars": 1137,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/Input/TimedAction.h>\n\nnamespace Sonicteam::Player::Inpu"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Input/TimedAction.h",
"chars": 739,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::Input\n{\n struct TimedAction\n {\n be<floa"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Object.h",
"chars": 4938,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <boost/smart_ptr/shared_ptr.h>\n#include <Sonicteam/Camera/Cameraman.h>\n#i"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/PostureControl.h",
"chars": 2232,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IPostureControl.h>\n#include <Sonicteam/Player/IPostureS"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/RootFrame.h",
"chars": 1076,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IExportExternalFlag.h>\n#include <Sonicteam/Player/IPlug"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Score.h",
"chars": 378,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class Score : public IScore, public IVariable, "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/SonicGauge.h",
"chars": 1606,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player\n{\n class SonicGauge : public IGauge\n {\n publ"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/CommonContext.h",
"chars": 2419,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/State/ICommonContext.h>\n#include <Sonicteam/Player/IExp"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/CommonFall.h",
"chars": 278,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/State/CommonObject.h>\n\nnamespace Sonicteam::Player::Sta"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/CommonObject.h",
"chars": 166,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/State/Object2.h>\n\nnamespace Sonicteam::Player::State\n{\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/ContextSpeedAndJump.h",
"chars": 666,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class ContextSpeedAndJump \n {\n pub"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/ICommonContext.h",
"chars": 1333,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/State/ContextSpeedAndJump.h>\n#include <Sonicteam/Player"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/ICommonContextIF.h",
"chars": 281,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class ICommonContextIF\n {\n public:"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/IContext.h",
"chars": 352,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IPlugIn.h>\n#include <Sonicteam/Player/IVariable.h>\n#inc"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/IMachine.h",
"chars": 118,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class IMachine : public IPlugIn {};\n}\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/Machine2.h",
"chars": 554,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/State/IContext.h>\n#include <Sonicteam/Player/State/IMac"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/Object2.h",
"chars": 141,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class Object2 : public SoX::AI::StateMac"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/SonicContext.h",
"chars": 3148,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/State/CommonContext.h>\n#include <Sonicteam/Player/Sonic"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/SonicObject.h",
"chars": 126,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class SonicObject : public CommonObject "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/TailsContext.h",
"chars": 572,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class TailsContext : public CommonContex"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/State/TailsFlight.h",
"chars": 324,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::State\n{\n class TailsFlight : public CommonFall\n "
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Unit/ITestCase.h",
"chars": 253,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam::Player::Unit\n{\n class ITestCase\n\t{\n public:\n xp"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Weapon/SonicWeapons.h",
"chars": 820,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IPlugIn.h>\n#include <Sonicteam/Player/IFlagCommunicator"
},
{
"path": "MarathonRecomp/api/Sonicteam/Player/Zock.h",
"chars": 1430,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Player/IZock.h>\n#include <Sonicteam/Player/IFlagCommunicator.h"
},
{
"path": "MarathonRecomp/api/Sonicteam/PropFixture.h",
"chars": 246,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/Fixture.h>\n\nnamespace Sonicteam\n{\n class PropFixture : publ"
},
{
"path": "MarathonRecomp/api/Sonicteam/RaderMapManager.h",
"chars": 927,
"preview": "#pragma once\n\n#include <Marathon.inl>\n\nnamespace Sonicteam\n{\n class RaderMapManager : public Actor\n {\n public:\n"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ApplyBloom.h",
"chars": 272,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ApplyDevice.h",
"chars": 215,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ApplySceneParams.h",
"chars": 225,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/AutoSetAspect.h",
"chars": 348,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/Capture.h",
"chars": 622,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ClearRenderTarget.h",
"chars": 286,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ColorFill.h",
"chars": 271,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/CopyTexture.h",
"chars": 426,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/LockBlendMode.h",
"chars": 320,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/LockCullMode.h",
"chars": 317,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/LockZMode.h",
"chars": 308,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/MakeBloom.h",
"chars": 271,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/Movie.h",
"chars": 329,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/PrepareCalculateCSM.h",
"chars": 291,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/Rasterize.h",
"chars": 458,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/RasterizeBurnoutBlur.h",
"chars": 293,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ResetRenderStates.h",
"chars": 227,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ResetScissorRect.h",
"chars": 225,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/ResetViewport.h",
"chars": 219,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/Resolve.h",
"chars": 350,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/RunCommandBuffer.h",
"chars": 389,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetAutoZPass.h",
"chars": 323,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetBackStencilOp.h",
"chars": 574,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <d3dxb.h>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::Re"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetBlendMode.h",
"chars": 478,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetCSMTextures.h",
"chars": 484,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetClip.h",
"chars": 486,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetColorWriteEnable.h",
"chars": 610,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetConstantShader.h",
"chars": 821,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetCullMode.h",
"chars": 451,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetCurrentScreen.h",
"chars": 351,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetDepthTextures.h",
"chars": 458,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetFovY.h",
"chars": 403,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetFrameBufferObject.h",
"chars": 605,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetReflectionTextures.h",
"chars": 488,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetScissorRect.h",
"chars": 580,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetScissorTest.h",
"chars": 329,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetScreen.h",
"chars": 498,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetShaderGPRAllocation.h",
"chars": 502,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetStencilEnable.h",
"chars": 438,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetStencilFunc.h",
"chars": 586,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <d3dxb.h>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::Re"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetStencilOp.h",
"chars": 554,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <d3dxb.h>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::Re"
},
{
"path": "MarathonRecomp/api/Sonicteam/RenderAction/SetStencilWriteMask.h",
"chars": 356,
"preview": "#pragma once\n\n#include <Marathon.inl>\n#include <Sonicteam/MyRenderProcess.h>\n\nnamespace Sonicteam::RenderAction\n{\n cl"
}
]
// ... and 386 more files (download for full content)
About this extraction
This page contains the full source code of the sonicnext-dev/MarathonRecomp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 586 files (2.4 MB), approximately 650.9k tokens, and a symbol index with 1436 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.