Combining two things into one because they are related.
In the multiplayer mode of Double Dash, the game reduces the graphics quality for performance and memory reasons. While necessary on console, I prefer playing on emulator, and I reject being bound by arbitrary limitations.
So, I made a cheat code for the PAL version to restore (almost) everything:
$Multiplayer full detail
041895A4 4E800020 # RaceMgr::getProcLevel: Force best procLevel
041CE90C 48000008 # loadCourseTask: force single-player track
0418B750 48000030 # setRace: force best LOD and mIsTinyProcess to false
041F87AC 60000000 # GeoTree: force animation
04186AB8 38000001 # RaceMgr: TexLODControl bias
041FB2B4 38000001 # Item box animTbl
041FB33C 38000001 # Item box sizeAnimTbl
041FB6D4 38000001 # Item box bmdName
041FC990 38000001 # Double item box bmdFileName
041FCA24 38000001 # Double item box animTable
041FCAB8 38000001 # Double item box sizeAnimTable
041CD8B8 60000000 # RaceApp::calc: never set 30 FPS in LAN
(Needless to say, if playing in LAN, every player needs to have to code enabled to avoid desyncs.)
Unused lines
04207E6C 38000001 # ItemObjMgr: force use shadow model data
Unfortunately, this only works on player 1. Also, on 3P/4P, shadows add to each other instead of oring (dunno what controls it), which makes the character shadow look horrible.
It looks like something that controls quality? Maybe? I'm not adding if I don't know what it is. (The decomp doesn't cover this yet.)
However, basically only due to the first line, using only this code may crash the game when loading a track (depending on the number of players, track, and game mode).
Yes, some tracks crash the game in Grand Prix but not in VS Race (with bots forced), even with everything else being the same: Luigi Circuit (non-50cc) and Yoshi's Circuit in 2 players are an example. It appears that the difference in memory usage is caused by the result screen of all things.
But this can be fixed by increasing the RaceApp heap:
$Increase RaceApp heap
041CCE3C 3C800065 # RaceApp: ~300 extra KiB (original `3C800060`) for the heap (tested loading all tracks with 4 players in VS with bots forced)
So...
It might seem that increasing the RaceApp heap would require enabling the extended memory in MKDD Extender, but... it's not needed? Up to 3C800071, there's no crash on load. I don't know if the game is actually leaving unused RAM by default, or what I'm doing without memory extension may cause problems...
If extending the memory was needed, I would be saying: "MKDD Extender should definitely increase that heap's size when enabling the extended memory, and have a checkbox to force the full graphics quality in multiplayer", but since this is not the case, whether this "belongs" in MKDD Extender is a bit muddy.
Though I suppose that on heavy custom tracks, a heap of size 0x710000 may not be enough.
I don't really have a conclusion for this (kinda) feature request, aside from... thoughts?
For reference, conversation on Discord.
Combining two things into one because they are related.
In the multiplayer mode of Double Dash, the game reduces the graphics quality for performance and memory reasons. While necessary on console, I prefer playing on emulator, and I reject being bound by arbitrary limitations.
So, I made a cheat code for the PAL version to restore (almost) everything:
(Needless to say, if playing in LAN, every player needs to have to code enabled to avoid desyncs.)
Unused lines
Unfortunately, this only works on player 1. Also, on 3P/4P, shadows
addto each other instead oforing (dunno what controls it), which makes the character shadow look horrible.It looks like something that controls quality? Maybe? I'm not adding if I don't know what it is. (The decomp doesn't cover this yet.)
However, basically only due to the first line, using only this code may crash the game when loading a track (depending on the number of players, track, and game mode).
Yes, some tracks crash the game in Grand Prix but not in VS Race (with bots forced), even with everything else being the same: Luigi Circuit (non-50cc) and Yoshi's Circuit in 2 players are an example. It appears that the difference in memory usage is caused by the result screen of all things.
But this can be fixed by increasing the RaceApp heap:
So...
It might seem that increasing the RaceApp heap would require enabling the extended memory in MKDD Extender, but... it's not needed? Up to
3C800071, there's no crash on load. I don't know if the game is actually leaving unused RAM by default, or what I'm doing without memory extension may cause problems...If extending the memory was needed, I would be saying: "MKDD Extender should definitely increase that heap's size when enabling the extended memory, and have a checkbox to force the full graphics quality in multiplayer", but since this is not the case, whether this "belongs" in MKDD Extender is a bit muddy.
Though I suppose that on heavy custom tracks, a heap of size
0x710000may not be enough.I don't really have a conclusion for this (kinda) feature request, aside from... thoughts?
For reference, conversation on Discord.