#Modding the MGS1 emulator
1 messages ยท Page 16 of 1
I just need to be sure what the right direction to go in is, I'm sure I can figure it out if I know where to go
I assume "GW" is "graphics wrapper"
so you have like
PSX GPU -> GW -> MDisplay -> D3D11
GW the abstraction layer for different emulated systems
MDisplay the native target for different rendering backends on different host platforms
so MGS1, "Bonus Content", Contra etc. talk to GW despite being for different consoles
GW talks to MDisplay which talks to different host backends (D3D11, whatever on Switch, etc.)
I can make great tools for debugging and manipulating CPUs with the experience I have but genuine gap in my knowledge is being able to inspect and study a graphics stack, dunno what tools look like for that
I'm gonna keep going tho, coz CPUs were this painful 10 years ago and I eventually got this good lmao
I'm just sharing this in case anyone has any resource that would help really
if I knew as much about graphics as I know about processors I'd be unstoppable with this sorta modding
I wonder if you might be able to get assistance from someone / some forum of people who are skilled in that graphical side of things?
@autumn raft this is the thread for MGSM2Fix btw. :>
holy shit
lmfao
ok just discovered an array of thousands of shaders that seems used
and this
euwwwwwwwwwwwwwww
Those be some color palettes and texture compress types ๐
wtf is "ast"
abstract syntax tree? ๐
that's what it is in my world
constantly have to take a step back with this to try and think outside of the box
is there a better way to learn what is going on etc
still my favourite way of fucking the thing up
hmm, maybe I can use imhex
that is starting to look framebuffery
i guess that pixel format is wrong though and can't change it lol
this is exactly what i want tho
also can't zoom in it seems
god, so close to being useful haha
MGS for ants.....
So close, and yet, so far
can't we actually see something in that
the "actual framebuffer" area is completely blank
top left quadrant
the rest is just texture memory
if thats right thats very fucking interesting
let me load up no$ for a sec
yeah, haha
the princess is in another castle
you can tally that up with the imhex stuff I sent earlier
no framebuffers in sight
so that's confirmation that i've basically been looking in the wrong place the entire time
the PSX layer is behaving correctly
it never handled the framebuffers in the first place
thats actually good news tbh
can stop tearing my hair out looking at the PSX layer
right, un-fucked the mod so its in a reasonable state to start exploring the higher layers
neat
i think that "layer width" "layer height" stuff is actually "row pitch" and "depth pitch"
damn, this is getting deep ๐
im learning and making progress ๐
its slow as its all completely new to me
really good to know I was looking at the wrong bit though
narrowing things down is the play
i "figured out" the row pitch thing from renderdoc
I should double-confirm it by changing the value in M2Fix and seeing if that updates it here
but that is what I'm currently setting the value to
Wtf
I found what uses that VRAM pointer that gets copied to the CPU object
the RTC is using a few pixels at the start to record the overclock ratio
I guess a debug feature?
it'll literally be just a pixel or two at the top-left
that second VRAM buffer in the GPU object is unused
only the memento allocated one is used
guess a leftover of some sort
bugged stuff goes through here
non-bugged stuff does not
wait
do I have the GLSL for this
I think so
these are the same thing in different representations, right
problem begins at line 32 in each file
tweaking this is probably not the answer, but I should be able to work backwards from here, it's the first actual piece of evidence of what causes the broken stuff to be broken and the working stuff to work
if it enters this it's fucked https://gist.github.com/nuggslet/2bfa0cdea042e0a262caf26702109783#file-b-glsl-L33-L36
which is equivalent to https://gist.github.com/nuggslet/2bfa0cdea042e0a262caf26702109783#file-b-dis-L35-L36
640x256...
that is 320x256 but for two framebuffers positioned horizontally adjacent
it's a kind of "is the data in the framebuffer area?" check
the missing piece is now just... where the fuck are the framebuffers being rendered
not in the PSX, as they're blank
and by the time it gets to my GPU its too late, the issue has already happened
bumping that 640x256 isn't the way to go as then I really do have to modify all the shaders, and other emulators don't do that
i need to make what is in that 640x256 range actually correct
its getting interesting, this
oh SHIT
goated tool
now we're cooking with gas
god where has this tool been all my life
never seen anything in that framebuffer area top left in the PSX GPU, ever, at all, nothing ever shows there with any pixel format
so doubly confirmed
alright, reversing some code for a bit, I think I finally know at least a bit of what I'm looking at now
so yes, it's quite clear that this is all coming from somewhere else
looking at the thing that constructs the "subresources"
that get sent to the host GPU
bit of a rabbit hole of code I haven't really looked at much yet
we've got all the tools on the go right now
debugging with breakpoints and using mem2pix haha
I found a point where its converted to rgb888
LOL
looks like they have some debug hook in here
it loads a function pointer and passes some gfx buffer in
but the function that gets loaded normally does nothing
xD
0xBAADF001
where the fuckin framebuffer
it's like a bad acid trip
ohhhhh baby
that fucking
build_rep_image i found ages ago
think it holds the key
it only hits that line when it breaks

allowing it to recover from my... perturbations gives this frame which is how it normally looks with the mod
the bottom what, 3 quarters of the top image certainly looks like a direction to go in
oh
I forgot I completely wrecked build_rep_image in the process here which is unnecessary and has visual side effects that might account for some of this looking weird
need to restart my game

the texture uploaded to the GPU is now correct
but the rendering is totally fucked
so.. sort of
need a mix of the two here
where im looking clearly holds the key
I think there is a small part of the code I need to rewrite basically
trying to kludge the existing stuff to do this really specific thing I want is a bit of a merry-go-round
this is sooo weird
i need to go to bed as the sun is coming up haha
im actually gonna keep it messed up like this for a bit because I think even though it's fucked it's actually closer to working
still need to find the bastard pixel framebuffer
Would it be possible to get the button prompts for other controllers to work as patches for other emulators?
The game versions in other languages are running in the PAL 50hz right?
60Hz NTSC ( on the American one ) and 50Hz PAL ( on the European one )
That'd be a standard romhack, that's already possible/supported.
https://github.com/Joy-Division/tools-mgs
Is there a guide on how to use these tools? By the way, I need a compiled dat-extract_enc.exe, as the one I have didn't compile properly.
these files all give an error, [these](#1170084323081330698 message) files are correct except the enc one, which has an error (the one in rar has 0xc000007b, and the one in zip has a missing "cygz.dll" file).
the scripts in the m2fix repo can export a prepatched ROM so kinda
well, except for the German version
which is something I think can be resolved eventually
each ROM has a base set of patches and then different sets for each button map
How to do that?
use MArchiveBatchTool to extract the game files, install python and its lz4 package, save all of these in the extracted roms folder https://github.com/nuggslet/MGSM2Libs and run the M2Patch script
its a bit rough and ready though owing to the fact that the patches havent really been individually identified
but for non-german it can produce a bootable ISO from MC files
https://github.com/nuggslet/MGSM2Fix/blob/master/M2Patch.py script is there if u cant find
hopefully someone figures out some categorisation for the patches and makes an easier tool to select groups of them to apply but
only so much I can do lol, I opened the door at least
try this
should be statically linked
I just checked and it works
Is the spanish version of MGS1 included with the master collection the rev 0 or rev 1 copy?
huh
my IDA doesn't launch anymore ๐ฆ
ah, fixed it
I installed a new disk and switching drive letters around broke it
REAL
Hello, I don't know if you could help me with Squirell, for Source. I am trying to write or modify a class of an entity (the GameObject of the engine) but I have used some functions and they do not seem to exist, such as SetKeyValue or directly the name of the class (which begins with "_" ) does not work either. I've seen this from constructors but I don't really know how it works.
you got any code I can look at?
the "does not seem to exist" thing can happen if method arguments have the incorrect types IIRC
there's also some notion of namespacing
e.g. you can prefix variables or functions with :: to force looking it up in the root table
to invoke a class method you need to explicitly name the instance of the class
from within a class you have to do e.g. this.otherMethod()
elsewhere it'll be bound to a variable so my_instance.otherMethod()
if you can show me the relevant code I can probably advise better
no promises though ๐
my experience with squirrel is mostly on the native side, havent actually written... any but I have some intuition for it to be able to interact via the native side
it blows my mind how robust it has been, but if something goes wrong it doesn't really tell you why, but even if you did something quite destructive or catastrophic it has incredible fault tolerance
There
is it EntFire you can't call?
RandomInt? Entities.FindByClassnameWithin?
try putting :: before them
(assuming Entities is either a static class or instance)
that page might help you
What I'm looking for is to interact with an entity called light, and alter its brightness class.
I'm sorry if I'm late in responding, I wanted to send more details... this code is what I tried to do. Works except for SetKeyValue
I mean, I've never used :: should I use it? just use the "." and ";" normal of a language
The code still does not alter the light because I get an error that SetKeyValue does not exist...or I don't know how to use it to modify the light in this way
line 4 should probably be light <- null; to create a new slot
similar on 17/18/19
then I'd try ::light.SetKeyValue instead
I used this at least to call the same script, and make it heal every 5 seconds of life
local x as a global doesn't really make sense
http://squirrel-lang.org/squirreldoc/reference/language/tables.html also worth reading since this is how globals are implemented
e.g. in m2engage init.nut
and then it's quite common to see things like
Okay, I'll try this, seeing new things gives me a lot of mental gaps and it's better to try to see how it works and thus try to master the language
I saw this clearly a long time ago when I was trying to understand how variables were stored in memory whether it was Debug or Master
its kind of like a stack of dictionaries ๐
:: forces lookup in the root table in case a "key" (name) has been shadowed
13 years ago I was writing sourcemod plugins so its a bit strange to see squirrel in source in 2024 
incredible, look how wonderful Source looks, especially because it accepts mods and has its own workshop.
If I were playing MGS1 on a 4K screen, would you recommend the built-in scanline filter or CRT ReShade?
Same question for a 720p screen
It's kind of up to personal preference. I personally would not recommend the built in scanlines, I suggest finding a proper CRT shader instead, or playing without scanlines. The built in scanlines are not great imho
Well, I think it doesn't work using ::light, but I partially learned about Entfire, and I can activate things like particles, but although the parameters do not match what I see in the properties, they are more like activating functions of those entities instead of directly mpdifying the variables. So I just have to see what functions or methods the light has.
yeah I mean it's gonna help if you get the API right 
I found the code block explain use in this Squirrel
Code::Blocks is a free, open-source, cross-platform IDE that supports multiple compilers including GCC, Clang and Visual C++. It is developed in C++ using wxWidgets as the GUI toolkit. Using a plugin architecture, its capabilities and features are defined by the provided plugins.
Currently, Code::Blocks is oriented towards C, C++, and Fortran. I...
it has Squirrel support? neat
oh yeah, that looks good. Unfortunately there are many things that were not implemented such as doing math and other things, and the documentation does not make it clear how to use the classes and with what, I had to see how personalized nut is.
so most highlight don't work
I will have to see decompile script and see more how they are built, the old way
I think I achieved something with a little trial and error xd
Oh similar cfg
yeah it's similar enough to be familiar with what we have
but makes it a bit easier to express some stuff lol
I think it was called yaml
Toml is pretty nice. I use it for a project of mine
progress on that sorta stuff would be a lot quicker than me attempting to butcher my way through a graphics pipeline ๐
but I want to sort the gfx first
i have superglue on my nails but not my fingers ยฏ_(ใ)_/ยฏ guess that will have to come off as the nail grows
well that hasnt happened b4
one command buffer gets converted to another command buffer
I was playing with the downstream one a while back but this is the upstream one
Dear lord
so as a reminder its supposed to look like
well, "supposed" to
so i've sort of managed to emit more pixels into the framebuffer sent to my GPU
except its overwritten everything else
thats not what i want it to do - i want it to scale it properly in the 240p area
but it might be a useful way to find out how that buffer is built
for sake of argument what happens if I shrink it
hmm
interesting
what happens if I set it to 0 ;o
black screen in those scenes obv
sending more data is not going to work without patching the shaders even if I increased the size of the VRAM texture sent to the GPU and somehow shuffled things around
i just need to scale it down somehow
Hi, are there any tools for modifiying alldata.bin in MC?
I'm trying to swap some textures and models, so I don't need to touch any of the actual executable data. I tried just changing the MGS_US_DISC1-washed.BIN file. The thing is that when I repack the files with MArchiveBatchTool it produces a file that's 11GB instead of 3GB for some reason and the game hangs on a black screen even before the main menu.
I'd just use ppf and Ketchup, but the file sizes differ between my image and the original image so I can't make a patch (or can I just do something dumb like pad the original with 0s)...
I also saw someone mentioned some built in patching system, but I couldn't find any specific info about it really
konami's patching system is all about suff like button ui/exorcism pictures and Johnny's underpants etc
so they don't have to create a bunch of the rom that only has controller button ui differences
yeah the system built into m2engage isn't really up to snuff by itself
they have a lot of tools internally for creating the patches in that format but it's pretty tricky to use without those tools
#modding-general message I hope virusek20's works will be success, pretty cool stuff
there is apparently a way to get m2engage to boot via an unpacked alldata, it was done on switch at least
I assume similar can be done on PC
that might help you iterate quicker
Oh? That sounds interesting
I think you have to delete alldata.bin tho lol
it has to be forced into doing it
if its dying on startup, m2fix might print something to the log that tells you why
the internal logging is captured by m2fix
In the end I really just want a way to distribute the mods I make
I don't really care if it involves extracting the alldata (well, it'll make steam redownload the whole file on update)
but lemme check the m2fix logs
definitely not done trying to make mods easier for sure
ketchup was just quick to do
i know about the issue with file size
#1168512986491670548 message
this was the alldata finding (with proper attribution :P)
I just get this and it hangs ๐ค
2024-06-23 01:32:59.124 ( 0.582s) [ DE4CDFB5] dllmain.cpp:328 INFO| Squirrel: SQVM is 0xbff38c8, SQSharedState is 0x147018f8.
2024-06-23 01:32:59.206 ( 0.664s) [ DE4CDFB5] debug.cpp:175 INFO| Squirrel: CallNative: {0x010DA260}(0x0BFF38C8)
2024-06-23 01:32:59.291 ( 0.749s) [ DE4CDFB5] dllmain.cpp:328 INFO| Squirrel: SQVM is 0xbff3980, SQSharedState is 0x147018f8.
2024-06-23 01:32:59.291 ( 0.749s) [ DE4CDFB5] dllmain.cpp:1007 INFO| Squirrel: SQVM 0xbff3980 hooked: debug info is enabled, exceptions are disabled.
2024-06-23 01:32:59.291 ( 0.749s) [ DE4CDFB5] debug.cpp:223 INFO| Squirrel: Call: system/script/init.nut:1 -> main()
2024-06-23 01:32:59.291 ( 0.749s) [ DE4CDFB5] debug.cpp:228 INFO| Squirrel: Line: system/script/init.nut:1
2024-06-23 01:32:59.291 ( 0.749s) [ DE4CDFB5] debug.cpp:223 INFO| Squirrel: Return: system/script/init.nut:1 <- main() -> {}
2024-06-23 01:32:59.291 ( 0.749s) [ DE4CDFB5] debug.cpp:175 INFO| Squirrel: CallNative: {0x00B44830}(0x0BFF38C8)
looks like it hasn't been repacked correctly
its supposed to be more like
line 9 is the entrypoint not line 1
so it looks like init.nut got repacked incorrectly at least
since init.nut looks like
line 9 is the first statement
yeah it's not seeing the files at all (I'm trying the extracted files with empty bin thing you sent)
I'll poke around it a bit more
I know MArchiveBatchTool has a bunch of different options, some of them delete the serialised versions of the files
i.e. the difference between "init.nut" and "init.nut.m"
something to be aware of, it won't accept deserialised stuff in most cases
IIRC when I had to modify a script I had to manually re-serialise it before doing the repack
it can all be done with MArchiveBatchTool but needs careful use of the options
I think the issue is something like, fullunpack by default won't keep the serialised file and the repack process doesn't regenerate it
oh yeah, that has to be the problem, you're right
there's some option to keep the serialised stuff when unpacking but I think for each file you modify you have to run the tool to serialise, then do the repack after that
yep, now it works, ty
I guess fullunpack was a bit fuller than I expected (the unpacking, not the swap)
well, I swapped it and the model freaks out
turns out I can't just slap the original US bin there lol
It did actually show parts of the model, but the rest was garbo
the executable is loaded separately so if you have any mods to that it won't get picked up if you patch the ISO
nope, I only change STAGE.DIR, nothing else
like it does get picked up and I see the character's hair
main menu also had different prompts
I wonder if the BIOS loads some filesystem geometry
and as m2engage is skipping BIOS and booting a RAM dump directly
maybe if you change file sizes it becomes out of sync
but it isn't THAT much broken
it really is just that one single model I changed, everything else is fine
hmm
oh
it's going to apply all the usual patches of course
which will probably blow up your file
ah, ye
lemme try it with these
this is going to get complicated to solve it long term lol
mod loader needs to recompute offsets for all of their built in patches if they're going to work at all
beautiful
the second I switch to first person everything gets fixed
so it is just my mod messing up the graphics pipeline (since that stops snake from being rendered)
ye
shit
I'll try patching the washed iso directly instead of inserting the US image
way safer legally when making a patch anyways
because if I made a patch now it'd fill in the zeroed game code
and I'd essentially redistribute the game
that all works as expected with mkpsxiso when I tried
it'd be fun to run renderdoc on whatever is going on there
it's conceivable that they have some specific hack for the snake model I suppose
they do run native code hooks that perform introspection on game state to run optimised implementations
untangling everything they've done here is a multidimensional mess
oh boy this is gonna be fun
I'll try the washed edit first
I'll also look into renderdoc for fun but I never actually used it
it's fairly simple to use but to use it with MGS you need to run the game through steamless to unshackle it from the steamstub DRM
same for debugging the process
but i havent been VAC banned or had my account stolen (yet)
e.g. the way the underpants "patch" actually works is native code: https://github.com/nuggslet/MGSM2Fix/blob/master/src/emulator.cpp#L213-L243
not using the "patching system" per se (which deals with byte substitutions)
theres a sort of instruction decode cache where a game-specific fix-up layer gets first dibs
which in some cases is used to do non-fix non-performance things like this
the snake model seems like such an obvious target if they were genuinely interested in things like performance optimisations
there are like 1000 of these
oh god
a very normal playstation virtual machine
i'd be amazed if they've fucked around with this much of the game and then left snake entirely alone
ok so I ran a diff on the original US PS1 disks STAGE.DIR and the washed disk STAGE.DIR and they are the same
yeah basically everything is
all the code in the executable part of the lz4a is the same (besides the bit they erased)
files on the disc are the same
you know what's interesting
if I run dumpsxiso and then mkpsxiso without changing anything it's actually ~1MB smaller ๐ค
divergence basically can only come from:
the patching system which does byte substitutions in the executable or disc (extracted and deserialised as json)
the boot style that skips the BIOS thus leaving some kernel memory areas static even if they would typically change in response to changes in the disc
the "accelerator" system that runs native x86 code via the decode cache at certain PSX program counter values
actual rendering issues due to shaders
at some point I wanted to restore BIOS boot
the feature is there, just not shipping in that configuration
well, this is gonna be fun
I could try looking at renderdoc and try to figure out if maybe some of vertex data is messed up or if at least the textures loaded correctly
other than that I'm not too sure
what am I looking at again
im deep in the renderer trying to fix bugs with the internal res boost
i found some cmd in one of the many cmd buffers where if I increase the res passed to it, it bulldozes the texture sent to my host GPU with far more pixels
so now I found what processes that cmd and found that code
I'll try swapping only the textures tomorrow to see if it's something with the swap in general or if it's just model related
0_o?
Jesus...
What kind of portal to an alternative dimension is that?
https://virusek20.kuub.io/2024-06/METAL_GEAR_SOLID_2024-06-23_14-23-40.png
Replacing just the textures still makes snake more broken that one would expect
the body texture seems ok, but everything else is just gray
- it messed up his shadow, which isn't even a texture that's tied to him in any direct way
so this seems to be calling into CreateDirect3D11SurfaceFromDXGISurface
still unbelievably have not managed to find a pointer I can stick into mem2pix and actually see the fucking framebuffer in its entirety
its just manifesting pixels out of the ether
nvm^ it is CContext::TID3D11DeviceContext_CopySubresourceRegion
that makes more sense
got the d3d11.pdb loaded so at least I'll have some way to orient
does this mean i can see the vtable now
yus
lovely
at some point the functions in this vtable are implemented by nvwgf2um so that's nice I guess

not interested in that 4 sure
i am merely trying to understand the improper use of the d3d11 api
(and where the fuck the framebuffer is)

these parameters make more sense
ooh, understanding obtained
its all a gpu-side issue thats why im not finding much on the cpu side LOL
a 2D render target has the framebuffer, in my case 1920x1440
that gets copied via this subresource region thing into something that looks more like PSX VRAM
and well it cuts off because it can't fit 1920x1440 into 320x240

is the copy step actually required
i'd really rather not modify directx shaders lmao
this is a rabbit hole alright
i dont mind when im making some sort of progress
im over some sort of hump and learning stuff now
it almost sounds like you're saying the game doesn't bother sending more than 320x240?
right
which is fine until it starts emulating these framebuffer effects
the render target is 1920x1440 in my case (not yet able to visualise it, but its a good clue that its all correct)
further evidenced by when it copies 320x240 from that render target, we get just the top left corner
so we've got a 2D render target that is "probably" correct
then the host GPU shader tries to emulate the PSX framebuffer
so it creates a texture of PSX framebuffer size
copies all the bullshit that is CPU emulated
all the texture memory and crap
then it goes to sample the render target and copy that into the PSX framebuffer region on the host GPU
whatever I do there, I'm already fucked, because
I can copy 320x240 and get the top left corner (the current issue)
or copy 1920x1440 and overwrite everything else
because there is only the space for 320x240
i cant really increase that without rewriting the shaders and changing the layout of that host texture away from PSX VRAM layout
i still want to track down how to visualise that render target, but it's GPU side, it's a d3d object, so all my usual tools are basically useless
maybe we will patch shaders, dunno, but I'd like to avoid it if possible
im at the point now where i need to sleep on it and think about it for a day or two
its interesting when you know some of whats happening haha
frustrating when I don't even know the rules of the game
im enjoying this puzzle for probably the first time
like basically this is the first time the problem has been understood lol
Atp I don't think anyone would blame you for just throwing in the towel man.
You sound like a busy dude.
I guess with the shaders it'll depend on whether they're shipping DXBC or HLSL source directly right? Taking a super quick look into ghidra I found over 500 of hits of what it seems like DXBC precompiled shaders (the magic number and 1 on bytes 20-23 match)...
At least getting them out won't be hard, but I still wouldn't want to manually touch shaders, but at least it looks like there are some already existing disassembly / decompilation tools
Hey can you support texture pack in mgsm2fix? it would be crazy ๐คฏ
dawg this isn't even the longest bug I've eventually tracked down

I once fixed something I was trying to tackle for 3 years
there's definitely things I could be doing that would progress a lot quicker, but they can wait, theres no rush
I've put a feature out there I want it to work acceptably
a lot of time passed where I wasn't really doing anything, ADHD and having a lot of distractions on my mind
so it seems to have taken longer than it really has so far
would be cool
definitely want to improve modding
anyway there's progress even if its a bit tedious proving its not beyond the wit of man to figure out whats going on
plus good for me to learn some graphics stuff, if I avoid it forever I never will
Hadn't you achieved something with Psycross? Will it not have support for changing textures?
I only use it for the GTE at the mo, so it only affects geometry computations
i thought there was already tools to change textures
Well, the emulator itself supports modifications, but they are somewhat more complicated and have to be overwritten in the SRAM. Also cheatcode, but I don't know anything about replacing textures, what it does is only change certain button actions and skip the Control menu for its own overlay
oh u mean like an emulator supported texture replacement thing
not actual iso modding
would it even be permanent or would you have to always check that option in the emulator?
also wouldnt this mean you'd need a textue dumper function as well?
I was wondering if the texture change was on the GTE. But I guess it is in the rendering where the emulator is used (video api)
and I don't know what type of API the emulator will use in the PC version, it could be Vulkan or D3D9-12, even GL
It could be useful, but at the end of the day it's only for 1 game
it uses D3D11
castlevania / contra use D3D9, so they upgraded API for MGS1
pretty sure bonus content is D3D11 too
is the Japanese version of mgs 1 the regular or premium package one
isnt the content of the discs the same in the premium package? or do you mean integral?
premium package is just a collectors edition with extra stuff in the box, right
I saw that they're separate on redump so I thought that they differ in some way
By the way what are the differences between the us version and revision 1?
i feel like for most games nobody knows what the damn differences are across these revisions
i would be surprised if there is anything from a gameplay point of view. probably just bug fixes
JP copy seems derived from http://redump.org/disc/1393/
I say derived because strictly speaking none of them are the same as the original discs
redump could show you non-functional differences between dumps of different discs
e.g. some metadata change like timestamp or disc ID but content-wise its the same
it gets murky quickly so I wouldn't read too much into it
the redump doesn't work for me for some reason
however I was just asking because I was making xdelta patches for all the roms from the master collection so they can be played on an emulator
you'll need to splice in the data from the .lz4a file for that to work
(and pull in the psyq libraries they obliterated from the executable)
what's the problem with creating xdelta patches with the original and MC bin files and then just creating cue files
sure, you can do that but you could just direct people to emuparadise at that point
all you've done really is rely on people having MC installed as a form of data compression
its a bit of an odd thing to do ๐
it saves people redownloading about 700mb of data
if you're worried about "piracy" and this is the solution you've landed on, well xdelta in your case will be doing a lot of heavy lifting from the original ISO (the entire executable) which doesn't make it any less questionable
if you were patching a couple of bytes, fine, but it won't be doing that, it'll be replacing entire files in the disc
so really all this does is create an awkward shortcut to avoid redownloading the game from emuparadise
I just did it if someone wanted to emulate a rom and didn't want to download a rom for some reason. This was just the best way that I knew how to do it.
sure, im not arguing, im just overthinking things as I usually do ๐
i guess its like
you could make a patch that turns MGS1 into gran turismo, you know
xdelta is like a hammer
im not sure how much it really matters which version you target assuming xdelta can relocate data efficiently
could tell someone to pick the integral ROM and have your patch turn it into USA
xdelta can be used for very cursed things (I hope slightly offtopic posts are ok :D)
https://virusek20.kuub.io/2024-06/explorer_2024-06-24_21-02-30.png

don't worry I post off-topic things here all the time
if it doesn't dominate it's ok
The MC US version is revision 0 to note
that must mean the code didn't change between 0 and 1
since I did ISO reconstruction with libraries from v1.1 and it booted
Might've just been a change with the bios verification stuff which is removed in the MC anyway?
I think it'd have to be the filesystem/assets contents rather than the executable unless there is a very trivial code change that doesn't disturb layout
e.g. a stage change
not sure what you mean by "bios verification stuff"
yeah that is just the executable being missing from the ISO
its in lz4a
but even that is incomplete
they removed all the PSX libraries
because it's all handled natively now
"PS-X EXE"...etc is just the executable preamble
I doubt they did this maliciously, it's just an unfortunate artifact of how the emulator works
but essentially what I did:
take the PSX libraries from the original disc
decompress lz4a, splice in the libraries into the obliterated section, grab the PS-X EXE range from there and write it to the washed disc
those libraries wouldn't work if there were non-trivial changes to the executable
as we see with the german copy
wonder if we can use ChatGPT to generate the libraries for germany
I'm like, convinced its amenable to statistical analysis
E+M for the pause menu
unreal
I am changing these bindings as first order of business after the gfx stuff
my gawd sometimes I have 3 steam games open at once
an idle game, MGS1 being debugged and a game i'm actually playing
its instinctually offensive, I should only have 1 open
would be nice if I could hide my MGS1 antics from steam
Right click -> Manage -> Mark as Private should hide it, no?
my entire profile is private so
doubt that will hide it from my own local steam client
METAL GEAR SOLID.exe is not a game its a piece of software to me at this point lol
a researcher and expert of METAL GEAR SOLID.exe
my sides
why was this the thing that captured me

my job takes care of all pretense and ego, so im just fucking about here
its gr8
in the before-times i had to work on things that would get my name in lights but now i dont give a shit
i want mgs on steam to be dope
yeah tbh this thread is keep moving forward is amazing enough
i dont quit bro
i take breaks but i dont quit
see >3 year bug
things will be quicker when im away from fucking graphics
but at least im learning stuff now
i found the function that calls UpdateSubresource but that itself is called all over the place
imma breakpoint it and see what happens
i should really transfer my IDA database to v1.5 since they haven't updated in a while
I assume we'll be on v1.5 for MGS1 for a while
oh hey i uploaded that! where'd you find that again?
was it in the PCgamingwiki
think sooo
Oh that's right, yeah. Reminds me I gotta update those articles too, been working on updating the pcgamingwiki ones so far today xP
This forum is hidden from me a lot, I should turn it into a channel
that's not what i thought ape.html would be 
Has anyone made any progress or done any research into the remaining MGS1 audio issues? Such as the one's in ForceHub's video?
Konami said they're still patching the collection as recently as a week ago, iirc Nuggs said they aren't gonna look into it until Konami is done so they don't end up wasting time on something that might get fixed officially anyway
https://x.com/gogcom/status/1805881218241560963 not MGS related but look at that, OG Resident Evil 1 2 3 on GOG
The good news does not end on Resident Evil 1.
Resident Evil 2 and Resident Evil 3 are both coming soon to GOG, and you can pre-purchase them in our convenient bundle containing all three Resident Evil games!
Grab it today: https://t.co/AqoZCLHrOZ
@RE_Games @CapcomUSA_
Nice!
Just tried it, you can convert them to SourceNext/MediaKite, and they'll work with the Classic REbirth patch. Pretty neat.
I just realized Metal Gear 1 & 2 exhibit the same letterboxing issue on Steam Deck, even with MGSHDfix installed
Is there a simple fix to adjust this? Or is it tied to whatever emulator MGS3 uses?
wrong channel rly, this is for the m2engage stuff (so MGS1 + bonus content, and some non-MG games)
the MSX games are using a different emulator embedded in MGS3
Got it thanks
I'm also experiencing the same issue on the Steam Deck with MGS1 (I don't mean the emulator letterboxing I mentioned awhile back, I mean overall the game is extra zoomed out on Steam Deck's 16:10 screen, just like the MG1 example above)
https://youtu.be/qceXP9TksHE
A bit hard to tell since I'm on my phone, but it seems you have even more border on the side than this guy?
00:00 - Main menu content
01:38 - Gameplay
This game is available on Steam: https://store.steampowered.com/app/2131630/METAL_GEAR_SOLID__Master_Collection_Version/
I don't know how to reproduce this, I'm still getting letterboxing even with fullscreen
My bad. Looking closer, I realized I was confused by the OLED's bigger screen. This guy has the same issue I have
The letterboxing is equal in both cases
Itโs definitely the render window, no doubt about it
Using this workaround solved the issue #modding-general message
Hope a proper fix isnโt too far off
one 64bit, two 32bit
will I be lucky enough that they all just work
holy shit
2024-06-27 22:25:59.696 ( 0.010s) [Main ] dllmain.cpp:286 INFO| Detected game: Darius Cozmic Arcade (app 1638330)
2024-06-27 22:25:59.698 ( 0.012s) [Main ] patch.cpp:39 INFO| M2: malloc is 0x4a7e8b.
2024-06-27 22:25:59.701 ( 0.015s) [Main ] patch.cpp:50 INFO| M2: realloc is 0x4a7ed9.
2024-06-27 22:25:59.703 ( 0.017s) [Main ] patch.cpp:61 INFO| M2: free is 0x4a8205.
2024-06-27 22:25:59.704 ( 0.017s) [Main ] patch.cpp:505 INFO| MGS 1: printf hook length is 8 bytes.
2024-06-27 22:25:59.704 ( 0.017s) [Main ] patch.cpp:506 INFO| MGS 1: printf hook address is 0x2a8960.
2024-06-27 22:25:59.704 ( 0.018s) [Main ] patch.cpp:395 INFO| CO | CA: SQVM::SQVM hook length is 10 bytes.
2024-06-27 22:25:59.704 ( 0.018s) [Main ] patch.cpp:396 INFO| CO | CA: SQVM::SQVM hook address is 0x38bc85.
2024-06-27 22:25:59.705 ( 0.019s) [Main ] patch.cpp:411 INFO| CO | CA: SQVM::CallNative hook length is 5 bytes.
2024-06-27 22:25:59.705 ( 0.019s) [Main ] patch.cpp:412 INFO| CO | CA: SQVM::CallNative hook address is 0x3913e3.
2024-06-27 22:25:59.705 ( 0.019s) [Main ] patch.cpp:427 INFO| CO | CA: Sqrat::BindFunc hook length is 5 bytes.
2024-06-27 22:25:59.705 ( 0.019s) [Main ] patch.cpp:428 INFO| CO | CA: Sqrat::BindFunc hook address is 0x243ab8.
2024-06-27 22:25:59.707 ( 0.021s) [Main ] patch.cpp:627 INFO| MGS 1: MWinResCfg::GetValue hook length is 5 bytes.
2024-06-27 22:25:59.707 ( 0.021s) [Main ] patch.cpp:628 INFO| MGS 1: MWinResCfg::GetValue hook address is 0x47fca0.
yes
red bit, blue bit
the 32bit stuff is a hybrid of MGS1 and Contra
that is craaaaaazy
oh god
the install directory has a non-ascii character
F
2024-06-27 22:29:01.804 ( 0.013s) [Main ] dllmain.cpp:286 INFO| Detected game: Rayโz Arcade Chronology (app 2478020)
2024-06-27 22:29:01.808 ( 0.017s) [Main ] patch.cpp:76 INFO| M2: malloc is 0x7ff7a05f7aa8.
2024-06-27 22:29:01.816 ( 0.025s) [Main ] patch.cpp:87 INFO| M2: realloc is 0x7ff7a05fa3c0.
2024-06-27 22:29:01.826 ( 0.034s) [Main ] patch.cpp:98 INFO| M2: free is 0x7ff7a05f7a68.
2024-06-27 22:29:01.826 ( 0.035s) [Main ] patch.cpp:524 INFO| MG | SR: printf hook length is 15 bytes.
2024-06-27 22:29:01.826 ( 0.035s) [Main ] patch.cpp:525 INFO| MG | SR: printf hook address is 0x7ff79fef8690.
2024-06-27 22:29:01.832 ( 0.041s) [Main ] patch.cpp:447 INFO| MG | SR: SQVM::SQVM hook length is 18 bytes.
2024-06-27 22:29:01.832 ( 0.041s) [Main ] patch.cpp:448 INFO| MG | SR: SQVM::SQVM hook address is 0x7ff7a04b0c83.
2024-06-27 22:29:01.837 ( 0.045s) [Main ] patch.cpp:463 INFO| MG | SR: SQVM::CallNative hook length is 17 bytes.
2024-06-27 22:29:01.837 ( 0.045s) [Main ] patch.cpp:464 INFO| MG | SR: SQVM::CallNative hook address is 0x7ff7a04b73a0.
2024-06-27 22:29:01.837 ( 0.045s) [Main ] patch.cpp:479 INFO| MG | SR: Sqrat::BindFunc hook length is 15 bytes.
2024-06-27 22:29:01.837 ( 0.045s) [Main ] patch.cpp:480 INFO| MG | SR: Sqrat::BindFunc hook address is 0x7ff79feb1e1a.
2024-06-27 22:29:01.843 ( 0.051s) [Main ] patch.cpp:647 INFO| MG | SR: MWinResCfg::GetValue hook length is 16 bytes.
2024-06-27 22:29:01.843 ( 0.051s) [Main ] patch.cpp:648 INFO| MG | SR: MWinResCfg::GetValue hook address is 0x7ff7a05c0ce9.
they all work to a very good degree straight out of the box
thank fuck for that
What exactly can be done with them if they work with your program
I see they can be parsed
But what else?
anything that m2fix can do will be ultimately cross-compatible
unless it's super game specific
the PSX one should even benefit from the stuff I'm doing with the PSX core in MGS1
e.g. the stuff like johnny's underpants obviously isnt applicable
but they're useful for me to research as things might apply in the other direction and I can learn things about MGS1 from them
Ah interesting so there could possibly be more specific fixes for each game if necessary using the m2fix
Along with general usage
i was expecting to have to put more work in to get them working and would've paused it for the time being if so
but they kinda just worked
awkward
How do you know which games use m2?
this sorta google search lol https://www.google.com/search?q=steamdb+windata+alldata
would be nice if steamdb detected it as an engine
very easy to detect if you have the files, which they do for an awful lot of stuff
can get some clues from the store page too sometimes
but yeah not very sophisticated haha
darius is doing some encryption
CryptAcquireContext get error : %08X
Microsoft Enhanced RSA and AES Cryptographic Provider
CryptAcquireContext newkey error : %08X
Microsoft Enhanced Cryptographic Provider v1.0
src/win/ArchDependCrypt.cpp
CreateAES256Key
MCrypt::ArchDependEncryptAES256
CryptEncrypt error: %d
CryptSetKeyParam error
CryptImportKey error
MCrypt::ArchDependDecryptAES256
CryptDecrypt error
CryptMagic
Cloud Data Version Mismatch
MBackupSegment::AutoLoadCore
MBackupSegment::AutoSaveCore
src/win/Backup.cpp
Cloud Data Size Mismatch
Cloud Data MD5 Error
Cloud Data CryptMagic Must be 0
Cloud Data CryptMagic Error
Local Data CryptMagic Must be 0
Local Data CryptMagic Error
related to this?
setTitleId
getTitle
setSecureFileId
getTitleId
setSecureAlgoType
getSecureFileId
getEnableMetaData
getSecureAlgoType
getEnableCloud
setEnableMetaData
SecureAlgoType
setEnableCloud
ORIGINAL
AES256
SUCCESS
LOGIN_CLOUD_RESULT

./emu_psx/gte.c
../emu_psxbase/gw_dx9.cpp
../emu_psx_fx_acc/acc_gdarius_r3000.c
../emu_psx_fx_acc/acc_gdarius_2_03J_r3000.c
acc_gdarius_r3000_wide.c
oh wow, the PSX game here is using D3D9 not D3D11
they really just building this thing however with whatever huh
anything goes
next one will use Vulkan

CheckSecurity
./acc/acc_arcade.c
CheckTAITOSecurity
sus
acc_lookup_by_sum
acc_register
thanks for the function names
Perfect collection for reverse engineering if you do not have the means to obtain a legal copy. But it depends what version it is.
It is very unlikely that it is the SourceNext version, which is the best
I think it can covert to SourceNext version, and even apply the Classic REbirth patch too
oh that's good, does it include the gallery?
I'm not the og player back then so I don't know, just searched the info so far
This is really not the forum, but for those interested: Yes, you can convert the GOG version of RE1 to MediaKite, which makes it compatible with Classic REbirth and by extension Seamless HD Project.
GOG versions of RE2 & 3 will likely be easy to convert to SourceNext, making them compatible with Classic REbirth as well.
High quality movie and audio fan mods will also be available, since the GOG versions use the lower quality original assets.
The explanation for this is that GOG are aiming to preserve the original US and JP releases, and the fact that every change they make needs to be greenlit by Capcom themselves.
Just like the GOG version of MGS1, I think it's great that you easily can mod these games with current made one
can we get these on steam pls ๐ฆ
HUH
seems to be easier for me to find my way around than renderdoc so far (or just flat out has more info exposed)
wow what a tool
it seems to have a much better capture capability because im here watching it redraw the entire game session without launching the game at all
312kb of what lol
Remote debbug, remote connection or encrypt function call?
A few weeks ago I tried to use renderdoc but I forgot how to rip models xd I had to opt for ninja ripper
have you tried using Process Monitor (Procmon)? it is a good read and write tracker
Is this available to the average win11 user or do I need a registry tweak to see it?
probably need dev mode enabled
everything good these days is hidden behind some obstacle so
"dev mode" more like "not-boomer" mode
On that note - does anyone here have W11, and also has the ability to right-click Chrome in the taskbar and open a new window or new incognito window?
that's my Chrome taskbar right-click since upgrading to W11 ๐ข used to have options there like 'new window' etc
idk i don't use chrome it's cancer
i have it installed, i'll check
had win11 for about a year now
consider the following: switch to firefox
the only major 3rd party browser needs market share
In my case I don't think it's a browser issue, and probably a Windows issue (I de-bloated it with Tiny 11 and customized it slightly with NT Lite before installing)
i debloated on win10 and upgraded
I have a feeling that since I gutted Edge from Windows, that is the reason
As bizarre as it may sound. I think Edge provides some components to Windows itself, such as this taskbar functionality
Update: it was a goddamn group policy setting
#modding-general message nice mod result I'll say
dope
Oh god......
Every wondered why the Sony PlayStation 1 graphics were warped, or why they jittered and wobbled around - especially compared to the Nintendo 64? In this video we take a look at the cause and how they could have been avoided.
โบ Consider supporting me - https://www.patreon.com/ModernVintageGamer
Social Media Links :
โบ Check me out on Facebook...
@pure radish especially at around 2:30~ this sounded relevant
yeah, relevant but nothing groundbreaking there unfortunately
we're definitely past the stage of this being a PSX issue anyway
"GW" has been aggressively optimised for PSX resolution and just need to unpick that a little bit
im discussing with a mate now who knows a bit more about gfx than I do lol
clearly we know what the issue is now
the problem with this has been - it's not really something i can splash a few minutes on
where lots of other work on the mod can be
i need a longer stint to make progress of any sort
Yeah true, and it sounds like a real clusterfuck too
good outcome in the UK
lovely jubbly
might even smoke a cig to celebrate
this lot can get to fuck
"this is going to take a long time to recover" hopefully you never do!
please jump off a cliff in minecraft!
god do we know how to course-correct in this country
Section 21 eviction, or section 8 eviction from Downing Street?
21 - funnier
8 - more accurate
I'd go with 21 given the tenant is about to fuck off to California
absolutely no infoleak about my political persuasion
I wish Labour was more left but I understand realpolitik and absolutely despise this administration, wouldn't piss on them if they were on fire
14 years not enough for the left to realise they have to win
otherwise ur a student debating chamber
I grew up under a soft-left government and so care about outcomes not necessarily methods
๐
this spliff goes out to keir... 
KEIR WE GO
That shows that some higher-ups are just puppets.

Hey folks, so I'm jumping back in to wrap up some achievements, but wondering what ppf3 mods are floating around for MGS1? A cursory Google search didn't come up with anything
Also, glad for your gov't not shitting the bed, nuggs
Also, just to jog my memory, m2fix works for both of these, right?
the GOG version of MG1 seems better imo
i would normally disagree because it's just an MSX game how hard can it bloody be
but they shipped something that is grafted onto the fucking heavyweight MGS3 engine
the steam version is pretty gross there, probably the worst part of MC
i'd have preferred it to be on m2engage (at least that is intended for emulation) but i guess they didn't have a core for it
and well, MG-on-MGS3 existed already so why reinvent
It's funny to think that Konami could have avoided all this drama of the Master Collection if they had just released the Integral PC version with fixes instead of the emulated PS one.
I don't know if they really could fix the old PC port at this point. I think emulation was the right call, they just needed to do it better
Have you heard of all the hurdles the dev team had to go thru with the mgs1 pc port
I think one of the dev team posted a whole run down of the challenges
I canโt remember
I remember they downloaded the soundtrack from a fan website
I would be awesome actually
Too bad it's not gonna happen ๐ข
played the game a while ago and have to agree tbh, they'd only need to fix the pathfinding bug in that one level I don't remember the name of
I worked on the port of MGS to PC back in 1999-2000. Here is what I've learned:- Models were not "skinned" as it was popular in the day. Some textures were covering only the front part of the body, others arms, etc. As such it was possible to use very little colors per texture (16) and use palettes (which is a very small "texture" in the graphic...
doesn't really present any challenge though
its just a team of juniors given code authored by 1337 hax0rs and having to figure it out
he even admits as such
obv the source code wasn't "lost" at that point in time (not convinced it is even lost now)
I think we've not seen anything since derived upon it because it's not amenable to any professional process, no sane engineer would want to go near it
it would now mean unwinding things like that pointer hack and replacing it
with 64bit systems everywhere
can't really rely on Windows userspace memory segmentation to just work out favourably lol
it'd be a challenge now to bring it up to any standard
Just outta curiosity, any idea what the different between fast and stable is for the controls options in the L1+R1 menu?
Oh, it's VSync
yup
i temporarily forgot that and would've had to look it up again
but now you've reminded me yes you're correct
Is there a way to unpatch the control glyphs?
there really ought to be, you can disable every patch which will do it
Yeah, I don't know if I want to do that...
Just because I don't know the breadth of what's in there
I need to work out if there's a more localised patchset I can stabilise around
at least for inputs
If I disable all the patches, that basically makes it stock MGS1?
yeah
a few bits will be different still, like Johnny blur
also achievements and stuff will be disabled
Ah, I do want to keep achievements, so I'll keep them on
some of them will work but not all IIRC
Maybe toss that bit in the ini so folks don't do a runthrough and end up SOL
a lot of this stuff really needs more than just me working on it haha
I knoww
That's why I'm not throwing a whack of requests at you ๐
I've got them all stored up for later
haha
Still gotta do Ghosts, VR Missions, Stealth Camo, and Big Boss
Hey @pure radish Do you know offhand if RestoreGhosts=True will break the ghost hunting achievement?
I think it's just a single ghost photo, so should be easy enough for me to try when I start my NG+
Will let you know if it borks. If you don't hear from me, assume it's fine
Save MG3 online

Metal Snake X
Hm, just trying to get MGS1 to boot up on steamdeck (with m2fix), and it tries to load, then just goes back to the steam menu
Added the launch options as per github (with out without, same issue)
Disregard. File verif fixed it
I un-ironically do windows update every tuesday ๐
literally never had any issues, it's funny cause everyone moans about how windows update is the devil
the trick (or one trick anyway) is to not take the preview updates
Itโs the literal devil, hijacks your pc
At the most inconvenient times
Also sometimes slows it down somehow
All of that is configurable though right
You can set it so it never restarts unless you tell it to, etc
Most users donโt know that tbh
Mine allows me to simply update whenever I shut down my pc /shrug
I am never inconvenienced by an update
I am, especially when you open up the pc ready to do some work and there is a long ass update
Even worse when youโre about to game
That is a symptom of it's own making
that only happens when you have neglected to update for so long that you really need to update right now
none of the updates should be 'long-ass' these days anyway unless you're on.... ADSL?
Not sure what that is
I would say declined would be a better way to word it than โneglectedโ
As previously mentioned, by you when you said โeveryoneโ moans about the updates, these experiences are not isolated and seems a majority of users donโt appreciate the updates
they are important though
if you follow that logic, nothing would get updated and shit would break
most of the moaning is due to users not configuring things properly, or exaggeration about just how badly they 'ruin' your pc
i mean, it's never 'hijacked' my pc for example, because i haven't declined them consistently enoguh that they reach that stage
Idk how important they are, thatโs debatable I would say but you just reinforced the fact that your use case is not most userโs experience
The opposite is most users experienced along with the hijacking, ofc thatโs hyperbole lol
I guess yeah, non-power users at least
they're marginal inconveniences though, and only if it's neglected, i wouldn't really call them the literal devil ๐
don't even really need to be a power user, just literally look in the settings on the update screen
Again itโs hyperbolic ๐
However I think weโve exhausted the convo, letโs get back to modding
I do wonder if these bugs are something that can be fixed.
- Audio Reverb Not Properly Implemented
- Midi Synth for Armory Music is incorrect
- All guards' cone of view on the soliton radar is incorrectly offset by 1 pixel up & 1 pixel left.
It looks like MGS1 is in a pretty good place as far as bugs go tho. Thanks to our lord and savior Nuggy
#1168512986491670548 message
Classic Jaskel reading-comprehension!
Nuggs has his work absolutely cut out for him trying to fix the widescreen resolution anyway
Dude is deep down the rabbit hole of GPU shaders
file photo of Nuggs (colorized)

can we wind the clock back 10 years so i can have more time for this
if i go quiet for a bit im usually trying to get my ducks in a row so there's some space in the diary
but i tend to not be too great at getting my ducks in a row at the moment
though i guess 10 years ago i'd have even less of a clue
swings and roundabouts
Oh fer sure. Never any shade on Nuggs.
Started poking through the decrypted data structure for the MGS1 launcher with the help of this doc. Looks like I've figured out what the various numbered subfolders are for. Any good way to figure out what the various .bin patches do? They're all super tiny files, opening them in HxD doesn't pull up anything interesting
oh nice, where'd this come from lol
the bin files themselves are without context so you probably won't get much from staring at them
you need to look at the psb trees (which MArchiveBatchTool decodes as json)
it'll specify whether they're ram or disc patches
and their addresses
i wrote this tool which understands it all https://github.com/nuggslet/MGSM2Fix/blob/master/M2Patch.py
but its a bit of a blunt instrument as a tool and needs some way to filter patches (the classic problem)
the bin files are also not all the patches
smaller ones are embedded in the psb/json
the ones that actually ended up as files are typically large or contain controller-specific assets
and the controller selection stuff just appends a suffix to the filename in the psb
not sure how they would've gone about that if they were embedded in the psb directly so i guess they chose which would become files and which not
So I have no idea where the doc came from
Using config/title_prof.json
087 - Master Book and Screenplay?
099 - Integral
101 - VR Missions
102 - Special Missions
980 - MGS1 (JP)
981 - MGS1 (USA)
982 - MGS1 (UK)
983 - MGS1 (DE)
984 - MGS1 (FR)
985 - MGS1 (IT)
986 - MGS1 (ES)
system - Launcher
Okay, so looks like config/title_patchdata.psb(json)...
"patchs": [{
"file": "patch.bin",
"memory": 0,
"offset": 2097152
},{
"file": "item_text_patch.bin",
"memory": 0,
"offset": 70300
},{
"file": "codec_press_select",
"memory": 0,
"offset": 72856
},{
"file": "codec_push_select",
"memory": 0,
"offset": 72928
So 1 is a disk patch
Gotcha
semantics like this
Right
its probably going to be pretty horrific to study without getting your hands dirty and writing some basic tools lol
Ugh. I wanna be helpful, but absolutely do not have the skillset to the level required =/
the problem is in a lot of cases there isn't anything to identify a patch by besides its offset and game ID
you can do some cute tricks when they have the same data content, or same filename
Yeah, so you'd basically need to run through the game and manually ID the difference
but not all do
yeah, or patch the game and compare the filesystems
extracting the ISO etc
seeing which files are different and then zoning in on it
its tedious work
That might be doable, but fuck me that'd take forever considering both the number of isos and patches
to get the basic feature requests in its probably doable, things like controller buttons etc
but categorising and identifying every single patch is yiiikes
even the things like the pill boxes was needle in haystack territory
and don't get me started on the fucking mosaic blur
with the emulator itself cooperating to pull it off
It's too bad there isn't a way to toggle a memory patch on and off at runtime
the disc patches cannot be removed without unmounting the disc
the memory patches can be "undone"
but its not necessarily meaningful to do, since the RAM can be changed by the game anyway
but chances are the RAM patches only patch read-only stuff
Yeah, I assumed the disc ones couldn't
I was kinda thinking one could toggle a given memory patch off and on rapidly to quickly nail down what it changes
can be done if you want to write C++ in m2fix
just noticed in that document
"Since MArchiveBatchTool does not support batch deserialization for multiple files"
wut
yea it does
--fullunpack
its all quite outdated so I assume it got abandoned
a shame, having a place where all info is collated would be neat
Yeah. I thought it was helpful
im sure theres more than 0 known about 2&3 too lol
Woooo hooooooooooooooooooo...
I've already become slow in English, but it's good that you explore the scripts
#mod-news message well the tool is out, modders can try put the models they want in MGS1 now
If you do any reverse engineering to encrypt the files, tell us.

also the mint mod patch is also there, maybe you can check what's went wrong with master collection one
I could probably make a special patch for the MC version of the iso because the xdelta is for the classic one without the stripped executable and all the other MC stuff
m2fix is "supposed" to handle the executable situation automatically
if you generate a patch that writes to the executable, it redirects those diffs to the RAM rather than the disc
actually, the MC image just has the executable zeroed out right, like with the exact same length and everything
maybe you could just apply the xdelta directly in that case because it doesn't touch any of the executable stuff
the MGS engine is actually pretty cool since it can just load completely new files with 0 code changes
ive somehow managed to convert the GLSL shaders to HLSL
so can recompile them for D3D11
yuss, can even apply mods to them in renderdoc now
do i even need all this game bullshit open, i dont think so
friendship ended with METAL GEAR SOLID.exe now renderdoc is my best friend
fuck
is this a step forward for the resolution thing or is this for some other aspect of modding?
This is a way to completely change MGS1 as we know if. We can now begin to add MGS2 mechanics to the game.
Huh?
One might even be able to say that it's a weapon to surpass Metal Gear.
We can fill mgs1 with mgs2 mechanics and call the mod "The Twin Snakes"
and then not accommodate for the level design in any way 
"We'll make our own Twin Snakes! With blackjack! And hookers!"
we did manage to get the owner of mgsdevwiki to reopen registration so people can actually contribute to it, i've been digging through MGS2's stuff and making tons of notes for when i finally go to update the page
https://www.mgsdevwiki.com/wiki/index.php/Main_Page
What are the odds we don't get any more meaningful MC updates?
0
i reckon we get something in vol1 for vol2 release
if they have any sense they're holding some stuff back for it
I like to keep my expectations low
When the updates drop I get pleasantly surprised
thats valid
but we must be getting vol2, they set off on a course with vol1
its obv u want to pump vol1 sales in anticipation of that
that in itself is cynicism if anything
they know how to make money and making money at that point in time will be assisted by a vol1 update
not healthy to be dependent on it, but it's in their interest financially
imagine the bundles bro
more likely we get a vol1 update with vol2 than any other time
In the most recent interview they said more updates were coming and not too far away either
They've specifically mentioned twice (once when 1.5.1 came out, and the second was 3 weeks ago) that upcoming patches will include proper high resolution support & input mapping / keybind customization
Yeah I am super keen to see what they're doing - I do remember they mentioned something about resolution
they weren't super specific though
https://steamdb.info/app/2131640/history/?filterkey=2
https://steamdb.info/app/2131650/history/?filterkey=2
It's also visible that patches are being staged/worked on, just gotta keep in mind console patch certification by Sony & Microsoft typically takes an extra week, so there's a lag time to be expected
Curious, if you had to guess, would you guess they're doing something similar to nuggs? or, would you say they're doing something even better
in terms of 'resolution'
presumably something low-key, i would've thought
but who knows
No clue really, well seeeeee
hopefully they are
then i can abandon it and do something im likely to make quicker progress on
Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.
fuk the cloud stuff
keygens are so back baby
its a shame they charge so extortionately for pro
the whole pricing model is effed
home is useful to no one
the whole product is aimed at pros
but you basically can't afford it unless your company licenses it for you
i'd happily pay for pro to fund what they do if it was reasonable
selling the individual decompilers separately is a joke
sometimes i have a need for any of them! as would any hobbyist or pro
and they have ghidra snapping at their heels
like 10 grand every few years is just insane
please hex rays. i need to eat
i guess this is just the photoshop problem
oh shit
i finally started replacing how i do all the detours lol
found something that seems to be a good fit and it just sprung to life
https://github.com/wader/fq i need to get using this

