Homebrew Homebrew game Marathon Recompiled (Sonic the Hedgehog - 2006) Switch Port

  • Thread starter Thread starter Nagaa
  • Start date Start date
  • Views Views 3,036
  • Replies Replies 13
  • Likes Likes 10
Some comments on the port
(Tested it with 2400/1267/2400 using old EOS)

You can set it below 60fps, though I don't recommend it since the game breaks a lot, for example, at the start you can't take the rings path if fps is at 30; Sonic falls into the water.
If fps is set to 60 and the overclock isn't enough, the game drops to 30fps at 50% speed (even 20fps if the overclock is really low), I'm guessing this is double buffering.
If I set 59fps or lower, when it drops to 30 it'll run at 100% speed, but like I mentioned before, the game isn't built to run that way and bugs show up (in the pic it got stuck).

The resolution scale seems to only affect the title screen; being able to lower the resolution would help hit 60fps.

I tried lowering other graphics options too, though I'm not sure how to fully disable them (shadows, reflections), but I noticed a slight performance improvement lowering them.

The settings I used:

...
ResolutionScale = 1
Fullscreen = true
VSync = true
TripleBuffering = "Auto"
FPS = 59
ShowFPS = true
MaxFrameLatency = 2
Brightness = 0.5
AntiAliasing = "Off"
TransparencyAntiAliasing = false
AnisotropicFiltering = 4
ShadowResolution = "512"
ReflectionResolution = "Eighth"
RadialBlur = "Off"
CutsceneAspectRatio = "Original"
UIAlignmentMode = "Edge"
 

Attachments

  • 20260709_144055.jpg
    20260709_144055.jpg
    1.5 MB · Views: 19
Sometimes I question my life choices...
Going to try and optimize this steaming pile of doo doo.
First optimized build so far.
It seems like optimisations will be largely on the CPU side of things to make this playable with less OC.



1790850227850.png
 
Last edited by ChanseyIsTheBest,
Sometimes I question my life choices...
Going to try and optimize this steaming pile of doo doo.
First optimized build so far.
It seems like optimisations will be largely on the CPU side of things to make this playable with less OC.



View attachment 593453

Thank you. It's a very bug-free recomp but let's be real. It runs like utter shit, and 06 starts to break below its target 60fps. It's literally why the devs did not implement frameskipping into gameplay-code. If you skip deltatime tics you'll miss collisions or get bounced to nowhere. Some levels cannot be finished in the current version due to framerate problems.

For starters, the game should be allowed to render lower than 720p. I doubt you can reach the 60fps target at stock clocks, and some of us don't wanna overclock, or our old Switches power off before they give the battery warning.
 
Thank you. It's a very bug-free recomp but let's be real. It runs like utter shit, and 06 starts to break below its target 60fps. It's literally why the devs did not implement frameskipping into gameplay-code. If you skip deltatime tics you'll miss collisions or get bounced to nowhere. Some levels cannot be finished in the current version due to framerate problems.

For starters, the game should be allowed to render lower than 720p. I doubt you can reach the 60fps target at stock clocks, and some of us don't wanna overclock, or our old Switches power off before they give the battery warning.
If I remember you lower resolution in the config menu. But the issue with the game is not GPU it's CPU at the moment (I've improved GPU pref by about 80% anyway) I want to give users similar performance to original 360 game on stock handheld clocks which means optimising CPU a lot.

EDIT: Yeah I'm not going to implement resolution scaling because game runs well on 460mhz GPU now at 720p. I will increase resolution to 1080p docked though. The main target is really CPU. I'll be honest don't care about this game super much but I will improve CPU pref a lot.
Post automatically merged:

https://github.com/ChanseyIsTheBest/MarathonRecomp-NX/releases/tag/1.0.3
1.0.3
- 2x performance increase or more vs prior versions
- Recommended OC:
- 1428mhz CPU
- Can change resolution using resolutions.txt
- Default 720p Handheld 900p Docked
 
Last edited by ChanseyIsTheBest,
If I remember you lower resolution in the config menu. But the issue with the game is not GPU it's CPU at the moment (I've improved GPU pref by about 80% anyway) I want to give users similar performance to original 360 game on stock handheld clocks which means optimising CPU a lot.

EDIT: Yeah I'm not going to implement resolution scaling because game runs well on 460mhz GPU now at 720p. I will increase resolution to 1080p docked though. The main target is really CPU. I'll be honest don't care about this game super much but I will improve CPU pref a lot.
Post automatically merged:

https://github.com/ChanseyIsTheBest/MarathonRecomp-NX/releases/tag/1.0.3
1.0.3
- 2x performance increase or more vs prior versions
- Recommended OC:
- 1428mhz CPU
- Can change resolution using resolutions.txt
- Default 720p Handheld 900p Docked
Just curious - Is it the recompilation process that creates such unoptimised code that gives you so much room for improvement? Or are you doing something more equivalent to optimising the original code?
 
Just curious - Is it the recompilation process that creates such unoptimised code that gives you so much room for improvement? Or are you doing something more equivalent to optimising the original code?
The recompilation process produces quite conservative code designed to exactly replicate/emulate 360 behaviour in terms of CPU and GPU and other things and has to make assumptions to preserve behaviour. Remember as well that Xbox 360 is PowerPC architecture and GPU is completely different vs Switch AArch64 architecture and GPU. Plus the Switch homebrew Vulkan driver is no where near as good as the official one, driver performance is hard.

So we can (AI lol Opus 5.5) write more optimal code and take shortcuts as long as we get the same result. Some game functions that are the heaviest on CPU are fully rewritten as native ARM code for the most performance but at the end of the day they get the same result. PC's are way more powerful then Switch so they can bruteforce through lol.
 
The recompilation process produces quite conservative code designed to exactly replicate/emulate 360 behaviour in terms of CPU and GPU and other things and has to make assumptions to preserve behaviour. Remember as well that Xbox 360 is PowerPC architecture and GPU is completely different vs Switch AArch64 architecture and GPU. Plus the Switch homebrew Vulkan driver is no where near as good as the official one, driver performance is hard.

So we can (AI lol Opus 5.5) write more optimal code and take shortcuts as long as we get the same result. Some game functions that are the heaviest on CPU are fully rewritten as native ARM code for the most performance but at the end of the day they get the same result. PC's are way more powerful then Switch so they can bruteforce through lol.
Can't you just tell the Arm CPU to read it more like an Xbox 360?
 

Site & Scene News

New Hot Discussed User Submitted