#Modding the MGS1 emulator

1 messages ยท Page 16 of 1

pure radish
#

but all I have is bits and bytes and pointers, I need some way of actually seeing what it looks like

#

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

pure radish
glad frost
#

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?

north estuary
#

Hi

#

it's been a while

#

So... tell me, how's the project going?

zinc ferry
#

@autumn raft this is the thread for MGSM2Fix btw. :>

pure radish
#

holy shit

#

lmfao

#

ok just discovered an array of thousands of shaders that seems used

#

and this

#

euwwwwwwwwwwwwwww

zinc ferry
#

Those be some color palettes and texture compress types ๐Ÿ‘€

pure radish
#

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

pure radish
#

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

woeful flare
glad frost
#

So close, and yet, so far

pure radish
#

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

pure radish
#

right, un-fucked the mod so its in a reasonable state to start exploring the higher layers

pure radish
pure radish
#

i think that "layer width" "layer height" stuff is actually "row pitch" and "depth pitch"

glad frost
#

damn, this is getting deep ๐Ÿ˜†

pure radish
#

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

pure radish
#

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

pure radish
#

that second VRAM buffer in the GPU object is unused

#

only the memento allocated one is used

#

guess a leftover of some sort

pure radish
#

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

#

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

pure radish
#

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

pure radish
#

alright, reversing some code for a bit, I think I finally know at least a bit of what I'm looking at now

pure radish
#

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

glad frost
#

Hell yeah

#

good progress

pure radish
#

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

glad frost
#

it's like a bad acid trip

pure radish
#

ohhhhh baby

#

that fucking

#

build_rep_image i found ages ago

#

think it holds the key

#

it only hits that line when it breaks

pure radish
#

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

pure radish
#

hahahahahahahaha

#

!!!!

zinc ferry
pure radish
#

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

pure radish
#

ok well I never got it to do this before

pure radish
#

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

autumn raft
#

Would it be possible to get the button prompts for other controllers to work as patches for other emulators?

autumn raft
#

The game versions in other languages are running in the PAL 50hz right?

scenic kelp
#

60Hz NTSC ( on the American one ) and 50Hz PAL ( on the European one )

zinc ferry
autumn raft
zinc ferry
autumn raft
pure radish
#

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

pure radish
#

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

#

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

autumn raft
#

Is the spanish version of MGS1 included with the master collection the rev 0 or rev 1 copy?

pure radish
#

probably 1.1

#

the .lib file in MGSM2Libs came from 1.1 and it boots

pure radish
#

huh

#

my IDA doesn't launch anymore ๐Ÿ˜ฆ

#

ah, fixed it

#

I installed a new disk and switching drive letters around broke it

pure radish
#
The Pasture

It happened. Nearly 5 years of paper writing, being snuck Committee Meeting notes on the DL until I could access them myself and absolve my co-conspirators of their sins, 5 different implementations/patches later, I can

woeful flare
pure radish
cerulean coral
#

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.

pure radish
#

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

cerulean coral
pure radish
#

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

cerulean coral
#

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

cerulean coral
pure radish
#

line 4 should probably be light <- null; to create a new slot

#

similar on 17/18/19

#

then I'd try ::light.SetKeyValue instead

cerulean coral
pure radish
#

local x as a global doesn't really make sense

#

e.g. in m2engage init.nut

#

and then it's quite common to see things like

cerulean coral
cerulean coral
# pure radish

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

pure radish
#

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 haHAA

cerulean coral
#

incredible, look how wonderful Source looks, especially because it accepts mods and has its own workshop.

scarlet harbor
#

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

timid hemlock
cerulean coral
#

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.

pure radish
#

yeah I mean it's gonna help if you get the API right laugh

cerulean coral
#

I found the code block explain use in this Squirrel

https://en.m.wikipedia.org/wiki/Code::Blocks

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...

pure radish
#

it has Squirrel support? neat

cerulean coral
#

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

pure radish
#

need to make a note of this... I had some plans to allow per-game configuration

cerulean coral
cerulean coral
pure radish
#

yeah it's similar enough to be familiar with what we have

#

but makes it a bit easier to express some stuff lol

cerulean coral
#

I think it was called yaml

scenic kelp
#

Toml is pretty nice. I use it for a project of mine

pure radish
#

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

hearty dirge
#

Have u ever seen 2001 space odyssey

pure radish
#

it gets even worse

pure radish
#

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

glad frost
#

Dear lord

pure radish
#

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

keen iris
#

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

red cradle
#

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

pure radish
#

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

red cradle
#

#modding-general message I hope virusek20's works will be success, pretty cool stuff

pure radish
#

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

keen iris
#

Oh? That sounds interesting

pure radish
#

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

keen iris
#

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

pure radish
#

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)

keen iris
#

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)
pure radish
#

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

keen iris
#

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

pure radish
#

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

keen iris
#

oh yeah, that has to be the problem, you're right

pure radish
#

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

keen iris
#

yep, now it works, ty
I guess fullunpack was a bit fuller than I expected (the unpacking, not the swap)

keen iris
#

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

pure radish
#

the executable is loaded separately so if you have any mods to that it won't get picked up if you patch the ISO

keen iris
#

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

pure radish
#

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

keen iris
#

but it isn't THAT much broken
it really is just that one single model I changed, everything else is fine

pure radish
#

hmm

#

oh

#

it's going to apply all the usual patches of course

#

which will probably blow up your file

keen iris
#

ah, ye

pure radish
#

you can turn them off in the m2fix ini

#

DisableRAM & DisableCDROM

keen iris
#

lemme try it with these

pure radish
#

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

pure radish
#

beautiful

keen iris
#

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)

pure radish
#

impressive

#

is it still broken with those ini settings?

keen iris
#

ye

pure radish
#

shit

keen iris
#

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

pure radish
#

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

keen iris
#

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

pure radish
#

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)

#

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

keen iris
#

oh god

pure radish
#

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

keen iris
#

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

pure radish
#

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

keen iris
#

you know what's interesting
if I run dumpsxiso and then mkpsxiso without changing anything it's actually ~1MB smaller ๐Ÿค”

pure radish
#

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

keen iris
#

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

pure radish
#

oooh

#

v7 = a4 - 320;
v8 = (_DWORD *)gMDisplay;
if ( a4 < 320 )
v7 = a4;

#

sus

keen iris
#

what am I looking at again

pure radish
#

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

keen iris
#

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

north estuary
#

Jesus...

#

What kind of portal to an alternative dimension is that?

keen iris
pure radish
#

im sure we'll work it out

pure radish
#

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

pure radish
#

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

pure radish
#

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

glad frost
#

this is a rabbit hole alright

pure radish
#

i dont mind when im making some sort of progress

#

im over some sort of hump and learning stuff now

glad frost
#

it almost sounds like you're saying the game doesn't bother sending more than 320x240?

pure radish
#

not quite

#

basically the shaders are written with the assumption of 320x240

glad frost
#

right

pure radish
#

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

glad frost
#

true

#

way beyond me, but sounds like you're making progress for sure

pure radish
#

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

sick osprey
#

Atp I don't think anyone would blame you for just throwing in the towel man.
You sound like a busy dude.

keen iris
#

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

pure radish
#

theres both

#

seems like for the ones that are relevant, HLSL ended up in the exe

cerulean coral
#

Hey can you support texture pack in mgsm2fix? it would be crazy ๐Ÿคฏ

pure radish
#

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

pure radish
#

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

cerulean coral
#

Hadn't you achieved something with Psycross? Will it not have support for changing textures?

pure radish
#

I only use it for the GTE at the mo, so it only affects geometry computations

hearty dirge
#

i thought there was already tools to change textures

cerulean coral
#

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

hearty dirge
#

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?

cerulean coral
#

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

cerulean coral
hearty dirge
#

yep

#

idk if its worth it

#

maybe as a side thing idk

pure radish
#

it uses D3D11

#

castlevania / contra use D3D9, so they upgraded API for MGS1

#

pretty sure bonus content is D3D11 too

autumn raft
#

is the Japanese version of mgs 1 the regular or premium package one

pure radish
#

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

autumn raft
#

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?

pure radish
#

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

#

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

autumn raft
#

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

pure radish
#

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)

autumn raft
#

what's the problem with creating xdelta patches with the original and MC bin files and then just creating cue files

pure radish
#

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

autumn raft
#

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.

pure radish
#

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

keen iris
pure radish
#

don't worry I post off-topic things here all the time

#

if it doesn't dominate it's ok

zinc ferry
pure radish
#

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

zinc ferry
#

Might've just been a change with the bios verification stuff which is removed in the MC anyway?

pure radish
#

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"

pure radish
#

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

pure radish
#

E+M for the pause menu

#

unreal

#

I am changing these bindings as first order of business after the gfx stuff

pure radish
#

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

zinc ferry
pure radish
#

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

red cradle
#

a researcher and expert of METAL GEAR SOLID.exe

pure radish
#

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

red cradle
#

yeah tbh this thread is keep moving forward is amazing enough

pure radish
#

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

woeful flare
#

was it in the PCgamingwiki

zinc ferry
#

think sooo

woeful flare
#

OH wait it's from TCRF

#

i forgot i added that lsdkjflkds

zinc ferry
cerulean coral
#

This forum is hidden from me a lot, I should turn it into a channel

pure radish
#

I have notifications on for all messages here

#

(pls don't spam)

pure radish
dusty radish
#

that's not what i thought ape.html would be sadge

indigo quartz
#

Has anyone made any progress or done any research into the remaining MGS1 audio issues? Such as the one's in ForceHub's video?

zinc ferry
red cradle
hearty dirge
#

Nice!

timid hemlock
#

Just tried it, you can convert them to SourceNext/MediaKite, and they'll work with the Classic REbirth patch. Pretty neat.

scarlet harbor
#

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?

scarlet harbor
pure radish
#

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

scarlet harbor
#

Got it thanks

scarlet harbor
# scarlet harbor

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)

zinc ferry
# scarlet harbor I'm also experiencing the same issue on the Steam Deck with MGS1 (I don't mean t...

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?

scarlet harbor
#

I do, really strange

#

I'm using an LCD, but that shouldn't matter

scarlet harbor
scarlet harbor
#

The letterboxing is equal in both cases

scarlet harbor
#

Itโ€™s definitely the render window, no doubt about it

scarlet harbor
#

Using this workaround solved the issue #modding-general message

#

Hope a proper fix isnโ€™t too far off

pure radish
#

g_darius_ps_ripped_washed-20210927.bin

#

playstation moment

pure radish
#

one 64bit, two 32bit

pure radish
#

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

woeful flare
pure radish
#

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

hearty dirge
#

What exactly can be done with them if they work with your program

#

I see they can be parsed

#

But what else?

pure radish
#

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

hearty dirge
#

Ah interesting so there could possibly be more specific fixes for each game if necessary using the m2fix

#

Along with general usage

pure radish
#

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

hearty dirge
#

How do you know which games use m2?

pure radish
#

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

cerulean coral
#

It is very unlikely that it is the SourceNext version, which is the best

red cradle
#

I think it can covert to SourceNext version, and even apply the Classic REbirth patch too

cerulean coral
#

oh that's good, does it include the gallery?

red cradle
#

I'm not the og player back then so I don't know, just searched the info so far

timid hemlock
#

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.

red cradle
#

Just like the GOG version of MGS1, I think it's great that you easily can mod these games with current made one

pure radish
#

can we get these on steam pls ๐Ÿ˜ฆ

pure radish
#

unreal dude

red cradle
#

HUH

pure radish
#

seems to be easier for me to find my way around than renderdoc so far (or just flat out has more info exposed)

red cradle
#

wow what a tool

pure radish
#

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

cerulean coral
# pure radish

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

cerulean coral
# pure radish

have you tried using Process Monitor (Procmon)? it is a good read and write tracker

pure radish
#

technology!

sick osprey
# pure radish

Is this available to the average win11 user or do I need a registry tweak to see it?

pure radish
#

probably need dev mode enabled

#

everything good these days is hidden behind some obstacle so

#

"dev mode" more like "not-boomer" mode

glad frost
#

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

pure radish
#

idk i don't use chrome it's cancer

#

i have it installed, i'll check

#

had win11 for about a year now

glad frost
#

fuck

#

well thanks, good to know

pure radish
#

consider the following: switch to firefox

#

the only major 3rd party browser needs market share

glad frost
#

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)

pure radish
#

i debloated on win10 and upgraded

glad frost
#

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

glad frost
#

Update: it was a goddamn group policy setting

red cradle
#

#modding-general message nice mod result I'll say

pure radish
#

dope

glad frost
#

Oh god......

glad frost
#

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...

โ–ถ Play video
#

@pure radish especially at around 2:30~ this sounded relevant

pure radish
#

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

pure radish
#

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

glad frost
#

Yeah true, and it sounds like a real clusterfuck too

pure radish
#

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

glad frost
pure radish
#

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

pure radish
#

this was his most tolerant audience being daytime TV

glad frost
#

๐Ÿ˜‚

pure radish
#

i save my cigs for occasions most deserving

#

tonight feels like one

dusty radish
#

this spliff goes out to keir... PES_Salute

pure radish
#

bro how many times, I don't 420 blaze it

#

Sakhir Starmer

#

STARMERGEDDON

#

Keith

pure radish
#

KEIR WE GO

glad frost
pure radish
#

hahahahahah i saw the L

#

Liz Truss too

cerulean coral
#

That shows that some higher-ups are just puppets.

pure radish
dawn flare
#

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?

pure radish
#

no

#

msx is on mgs3 engine not m2engage

dawn flare
#

Ah right right

#

thanks man

#

Appreciate you still trucking away on this one

autumn raft
#

the GOG version of MG1 seems better imo

pure radish
#

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

north estuary
hoary pier
#

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

autumn raft
#

tbh a new PC port would be the best solution

#

or a remaster of Twin Snakes Guilty

hearty dirge
#

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

autumn raft
#

I remember they downloaded the soundtrack from a fan website

meager yacht
#

Too bad it's not gonna happen ๐Ÿ˜ข

autumn raft
#

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

zinc ferry
# hearty dirge I think one of the dev team posted a whole run down of the challenges
malkia

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...

pure radish
#

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

dawn flare
#

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

pure radish
#

yup

#

i temporarily forgot that and would've had to look it up again

#

but now you've reminded me yes you're correct

dawn flare
#

Is there a way to unpatch the control glyphs?

pure radish
#

there really ought to be, you can disable every patch which will do it

dawn flare
#

Yeah, I don't know if I want to do that...

#

Just because I don't know the breadth of what's in there

pure radish
#

I need to work out if there's a more localised patchset I can stabilise around

#

at least for inputs

dawn flare
#

If I disable all the patches, that basically makes it stock MGS1?

pure radish
#

yeah

#

a few bits will be different still, like Johnny blur

#

also achievements and stuff will be disabled

dawn flare
#

Ah, I do want to keep achievements, so I'll keep them on

pure radish
#

some of them will work but not all IIRC

dawn flare
#

Maybe toss that bit in the ini so folks don't do a runthrough and end up SOL

pure radish
#

a lot of this stuff really needs more than just me working on it haha

dawn flare
#

I knoww

#

That's why I'm not throwing a whack of requests at you ๐Ÿ˜›

#

I've got them all stored up for later

pure radish
#

haha

dawn flare
#

Still gotta do Ghosts, VR Missions, Stealth Camo, and Big Boss

dawn flare
#

Hey @pure radish Do you know offhand if RestoreGhosts=True will break the ghost hunting achievement?

pure radish
#

shouldn't

#

no one has tested it tho

dawn flare
#

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

cerulean coral
#

Save MG3 online

pure radish
cerulean coral
#

MSX Metal Snake X

dawn flare
#

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

pure radish
#

its patch tuesday my dudes

#

update ur windows

glad frost
#

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

hearty dirge
#

At the most inconvenient times

#

Also sometimes slows it down somehow

glad frost
#

All of that is configurable though right

#

You can set it so it never restarts unless you tell it to, etc

hearty dirge
#

Most users donโ€™t know that tbh

sick osprey
#

Mine allows me to simply update whenever I shut down my pc /shrug

#

I am never inconvenienced by an update

hearty dirge
#

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

glad frost
#

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?

hearty dirge
#

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

glad frost
#

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

hearty dirge
#

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

glad frost
#

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

hearty dirge
#

However I think weโ€™ve exhausted the convo, letโ€™s get back to modding

dawn flare
#

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

dawn flare
#

Classic Jaskel reading-comprehension!

glad frost
#

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)

pure radish
#

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

dawn flare
#

Oh fer sure. Never any shade on Nuggs.

dawn flare
#

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

pure radish
#

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

#

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

dawn flare
#

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

pure radish
#

thats the one

#

so "memory 0" is RAM

dawn flare
#

So 1 is a disk patch

pure radish
#

no, you'll have a different attribute

#

"disc": 0 / "disc": 1

dawn flare
#

Gotcha

pure radish
#

semantics like this

dawn flare
#

Right

pure radish
#

its probably going to be pretty horrific to study without getting your hands dirty and writing some basic tools lol

dawn flare
#

Ugh. I wanna be helpful, but absolutely do not have the skillset to the level required =/

pure radish
#

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

dawn flare
#

Yeah, so you'd basically need to run through the game and manually ID the difference

pure radish
#

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

dawn flare
#

That might be doable, but fuck me that'd take forever considering both the number of isos and patches

pure radish
#

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

dawn flare
#

It's too bad there isn't a way to toggle a memory patch on and off at runtime

pure radish
#

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

dawn flare
#

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

pure radish
#

can be done if you want to write C++ in m2fix

dawn flare
#

Just thinking out loud mostly

pure radish
#

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

dawn flare
#

Yeah. I thought it was helpful

pure radish
#

im sure theres more than 0 known about 2&3 too lol

pure radish
cerulean coral
cerulean coral
red cradle
#

#mod-news message well the tool is out, modders can try put the models they want in MGS1 now

cerulean coral
#

If you do any reverse engineering to encrypt the files, tell us.

red cradle
#

also the mint mod patch is also there, maybe you can check what's went wrong with master collection one

keen iris
#

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

pure radish
#

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

keen iris
#

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

pure radish
#

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

glad frost
#

fuck

#

is this a step forward for the resolution thing or is this for some other aspect of modding?

sick osprey
#

This is a way to completely change MGS1 as we know if. We can now begin to add MGS2 mechanics to the game.

hearty dirge
#

Huh?

zinc ferry
sick osprey
#

We can fill mgs1 with mgs2 mechanics and call the mod "The Twin Snakes"

autumn raft
#

and then not accommodate for the level design in any way Guilty

dawn flare
#

"We'll make our own Twin Snakes! With blackjack! And hookers!"

pure radish
#

buncha memelords

#

going to replace the game with metal gear survive as punishment

zinc ferry
indigo quartz
#

What are the odds we don't get any more meaningful MC updates?

pure radish
#

0

#

i reckon we get something in vol1 for vol2 release

#

if they have any sense they're holding some stuff back for it

hearty dirge
#

I like to keep my expectations low

#

When the updates drop I get pleasantly surprised

pure radish
#

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

glad frost
#

In the most recent interview they said more updates were coming and not too far away either

zinc ferry
glad frost
#

they weren't super specific though

zinc ferry
glad frost
#

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

zinc ferry
#

No clue really, well seeeeee

pure radish
#

hopefully they are

#

then i can abandon it and do something im likely to make quicker progress on

pure radish
#

lol

zinc ferry
#

IDA Home: cloud decompilers unusable

#

That sure is a bug lmao

pure radish
#

fuk the cloud stuff

#

keygens are so back baby

pure radish
#

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

pure radish
#

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

pure radish