Heroes-Hacking-Central / Project-X

A potential "big" project for Sonic Heroes. Name pending.
5 stars 0 forks source link

Create Unified Heroes Modding API #4

Closed Sewer56 closed 4 years ago

Sewer56 commented 5 years ago

So far, all Heroes mods and projects have their own copy of the code used to interact with the game, be it structs, function declarations or other helper methods. Ideally, for a big project, and the future of Heroes modding a single, easy to use API should be formed.

Code to Start API from:

CRI

https://github.com/Sewer56/CriFsHook.ReloadedII : Whole CRI folder, i.e. FileTable.cs, FileTableFactory.cs

Graphics

https://github.com/Sewer56/Heroes.Graphics.Essentials.ReloadedII : Heroes.Graphics.Essentials.Unoptimized and Heroes.Graphics.Essentials/Heroes/

Hints

https://github.com/Sewer56/Heroes.Hint.Editor/tree/master/Heroes.Hint.Library Entry.cs (Hint Files)

Colours

https://github.com/Sewer56/Heroes.Colourizer/tree/master/Heroes.Fun.AuraColorizer/Heroes : RGBA Colour Struct

https://github.com/Sewer56/Heroes.Colourizer/blob/master/Heroes.Fun.AuraColorizer/Collections/BarrierColours.cs Barrier Colours

https://github.com/Sewer56/Heroes.Colourizer/tree/master/Heroes.Fun.AuraColorizer/Enums Various Colours

Physics

https://github.com/Sewer56/Adventure.Physics.Swap/blob/bca688a5ea749279343758bd29cd9d3c5ca6b4f9/Adventure.Physics.Swap.ReloadedII/PhysicsMod.cs#L51 Physics Addresses

https://github.com/Sewer56/Adventure.Physics.Swap/blob/master/Adventure.Physics.Swap.Shared/Structs/AdventurePhysics.cs Physics Struct (Convert back to struct)

Freecam

https://github.com/Sewer56/Heroes.Freecam.ReloadedII/tree/master/sonicheroes.utils.freecam/Structs Character Pointers and Camera API

Controller/Input

https://github.com/Sewer56/Heroes.Controller.Hook.ReloadedII/tree/master/Heroes.Controller.Hook/Heroes This folder.

Stage Loading/Injection

https://github.com/Sewer56/Heroes.StageInjector.ReloadedII/tree/master/sonicheroes.utils.stageinjection.common Spline structures, spawn positions.

Collision

https://github.com/Sewer56/HeroesPowerPlant.RemoteControl.ReloadedII/tree/master/HeroesPowerPlant.RemoteControl/Functions Realtime Unload/Reload

Timers, Some Game Control Stuff

https://github.com/Sewer56/SonicHeroes.Utils.DiscordRPC.ReloadedII/tree/master/sonicheroes.utils.discordrpc/Heroes/

https://github.com/Sewer56/SonicHeroes.Utils.DiscordRPC.ReloadedII/blob/dbf32fd46b0b6a3abf9ceb88fd05f74158ded572/sonicheroes.utils.discordrpc/Heroes/Heroes.cs#L68

RenderWare Versioning

https://github.com/Sewer56/TONERR.ReloadedII/blob/master/sonicheroes.utils.toner/RenderWare/RwVersion.cs

Complete ONE Archive Class

https://github.com/Sewer56/TONERR.ReloadedII/tree/master/sonicheroes.utils.toner/Heroes/One

Including ONE Parser that can parse from file or memory. (HeroesONE-R needs to integrate to that parser)

Particle Systems?

These would be fun to hijack. There's some code for these in HeroesPowerPlant. https://github.com/igorseabra4/HeroesPowerPlant/blob/aa426c74e367d2305a50a685863d9bbdefdc373c/HeroesPowerPlant/ParticleEditor/Particle.cs

Might be worth porting over and seeing if it's possible to hijack those ingame.

SCHG

Anything in this age old page here http://info.sonicretro.org/SCHG:Sonic_Heroes/EXE_Editing

Sewer56 commented 5 years ago

Added one on particle systems.