ROM Hack Increasing Metal Gear Solid 3D's Draw Distance [CTRPF/Gateway]

Kyim

Member
OP
Newcomer
Joined
Sep 18, 2019
Messages
8
Trophies
0
Age
29
XP
73
Country
United Kingdom
Hello all! New here.

I'm working on a code to increase the draw/render distance for Metal Gear Solid 3D Snake Eater v 1.0 for use on Citra. I'm attempting to use IdaPro to disassemble the .3DS file and locate what I assume is a float responsible for said draw distance. To my understanding I should only have to change one value. But.
I'm at a loss.

IdaPro doesn't seem to play well with the .3DS format, or perhaps I am simply doing it wrong. No methods/functions are displayed, I can't find any indication of the renderer's processes, the the decomplied code that is pumped out is, to me, illegible. I've been modding games for over a decade but this method is very new to me.

The end goal is to at the very least, increase the draw distance of grass to a more realistic degree, as PCs can most likely handle it.

All of the documentation/tutorials I can find mostly address very basic value injection or go over the ol' "Search>Change Something>Search>Repeat" method for narrowing down values but, akin to what one might do with Cheat Engine. To my knowledge, the render distance is a static float, so I have no method to isolate it.

I've chatted with Leo, the creator of Project Restoration for Majora's Mask 3D, which his what lead me here.

If anyone has any tips, suggestion, input, or links to tutorials that you feel may be beneficial, I'd greatly appreciate it.
 

Kyim

Member
OP
Newcomer
Joined
Sep 18, 2019
Messages
8
Trophies
0
Age
29
XP
73
Country
United Kingdom
100+ views and no replies. Is this the wrong section for this topic? I will gladly move it if there is a more appropriate place to post about this.
 

OkazakiTheOtaku

no thanks, I don't want a custom title
Member
Joined
Jul 20, 2016
Messages
1,460
Trophies
1
Location
127.0.0.1
XP
3,081
Country
Japan
Are you trying to disassemble the .3ds file directly? A .3ds file is just an archive, it isn't the executable itself. Extract the .3ds and try to disassemble the binary in the exefs
 
D

Deleted-481927

Guest
idk the answer but i'd love this MGS3D is a great game (and ofc original)

im wondering if n3ds clock could make it run 30fps?
 

pachemapache

Member
Newcomer
Joined
Nov 11, 2016
Messages
15
Trophies
0
Age
24
XP
96
Country
Hey, I think that the problem is that the .3DS format (probably it is actually a cxi) isn't an executable, but a file containing all the game assets, the banner, manual etc.
The actual executable is the code.bin, that is located inside the ExFS. I'll link a very good wiki where it explains it in beautiful detail and explains how to extract and decrypt everything: https://github.com/ihaveamac/3DS-rom-tools/wiki
 

Kyim

Member
OP
Newcomer
Joined
Sep 18, 2019
Messages
8
Trophies
0
Age
29
XP
73
Country
United Kingdom
Are you trying to disassemble the .3ds file directly? A .3ds file is just an archive, it isn't the executable itself. Extract the .3ds and try to disassemble the binary in the exefs
That is exactly what I was doing. Butts, I feel thick. Thanks for pointing that out, Okazaki! :)

idk the answer but i'd love this MGS3D is a great game (and ofc original)

im wondering if n3ds clock could make it run 30fps?
Yes! Overclocking is possible, but will drain the battery like no other. Personally, I feel that emulation is a preferable method for higher FPS.

Hey, I think that the problem is that the .3DS format (probably it is actually a cxi) isn't an executable, but a file containing all the game assets, the banner, manual etc.
The actual executable is the code.bin, that is located inside the ExFS. I'll link a very good wiki where it explains it in beautiful detail and explains how to extract and decrypt everything:
That is exactly the problem! And this wiki looks quite helpful! I'll look into it right away. Thank you, Pachemapache!

--------------------- MERGED ---------------------------

can you give an example (in the form of an screenshot) of the render distance issue?
I don't think I have the user rights to post images yet, but the render distance for grass is roughly 3-4 meters from the player character in most areas barring the area wherein one fights The End. Therein the draw distance is roughly 10 meters.
 

Vague Rant

Deceptively cute
Member
Joined
Aug 7, 2008
Messages
2,397
Trophies
0
Location
Melbourne
Website
vaguerant.tumblr.com
XP
2,543
Country
Yes! Overclocking is possible, but will drain the battery like no other. Personally, I feel that emulation is a preferable method for higher FPS.
As far as I know, the game has a hardcoded 20 FPS cap, so no amount of overclocking will get you 30 FPS, it will just help with smoothing out some of the dips below 20 FPS.
 
  • Like
Reactions: Kyim

Kyim

Member
OP
Newcomer
Joined
Sep 18, 2019
Messages
8
Trophies
0
Age
29
XP
73
Country
United Kingdom
As far as I know, the game has a hardcoded 20 FPS cap, so no amount of overclocking will get you 30 FPS, it will just help with smoothing out some of the dips below 20 FPS.
Right, like the 15 FPS drops during cutscenes and such. I remember reading something about Luma3DS helping with this, but I could be wrong.
 
  • Like
Reactions: Vague Rant
D

Deleted-481927

Guest
That is exactly what I was doing. Butts, I feel thick. Thanks for pointing that out, Okazaki! :)


Yes! Overclocking is possible, but will drain the battery like no other. Personally, I feel that emulation is a preferable method for higher FPS.


That is exactly the problem! And this wiki looks quite helpful! I'll look into it right away. Thank you, Pachemapache!

--------------------- MERGED ---------------------------


I don't think I have the user rights to post images yet, but the render distance for grass is roughly 3-4 meters from the player character in most areas barring the area wherein one fights The End. Therein the draw distance is roughly 10 meters.
is the fps locked?
 

Kyim

Member
OP
Newcomer
Joined
Sep 18, 2019
Messages
8
Trophies
0
Age
29
XP
73
Country
United Kingdom
So, after many months of searching, I managed to get this code snippet from a great modder who claims to have figured out how to increase the draw distance of grass in MGS3D, but he does not want to release the mod for personal reasons, instead preferring to just give this as a hint.


#"ENEMY" "EAR" 1 # 敵の耳 0=OPEN 1=CLOSE
#"PLANTS" "GRASS" 2 # 草セット 0=PS2 1=3DS 2=OFF
#"PLANTS" "TREES" 1 # 木セット 0=NORMAL 1=ALL_OFF 2=ALL_ON 3=NAME 4=CAMERA

Apparently he edited something called "debug.cnf"

He says he used HxD and Cheat Engine to achieve the desired effect. I have no idea how to apply this information. If anyone can make sense of this, please let me know.
 
Last edited by Kyim,
General chit-chat
Help Users
  • No one is chatting at the moment.
    KenniesNewName @ KenniesNewName: 10 year old hardware now still emulates switch pretty decently