Blog - Metal Gear Solid (MGS1) - all weapons and items hack

Added on Sunday, 2022-11-20 18:06 UTC in categories Other, Programming

Metal Gear Solid (MGS1)

A few years ago I dusted off my original PlayStation (PS1) and same-era CRT TV. Still worked like a charm!

PlayStation + TV
(Yes, that's a PS2 controller… :P)

One of my favorite games at the time was Metal Gear Solid (MGS1), so I wanted to give that a try again.

MGS1 has two different endings, each of which gives you a (different) special item for your next playthrough:
  • Stealth camouflage, which makes you invisible to most guards and cameras;
  • A bandana, which effectively gives you infinite ammo (you don't expend any as you shoot).
I wanted to go for an easy playthrough, so I wanted to start my new game with both these items on easy difficulty. Unfortunately, I had lost all my MGS1 savegames, so I found some online.

Uploading the savegame

The PS1 doesn't have internet connectivity, so I'd need another device to write the savegame I found to the PS1's memory card. I used my PlayStation 2 (PS2) for this, which can read PS1 memory cards, and can run an FTP server.

The savegame I had found had normal difficulty, so I wanted to see if I could hack the savegame to make it easy instead.

Hacking the savegame

PS1 savegames are binary files that can have different formats. I'll be using the raw format in this blog post, but you can also find savegames in DexDrive format, emulator format, or PSP format. Luckily, you can easily convert them online.

Savegames have a title that shows up e.g. when loading a savegame, or in the PS1's memory card manager. These titles use Shift JIS encoding, which you can extract like this:
cat "$file" | tail -c+5 | head -c64 | iconv -f shift-jis -t utf-8
Running this on a few MGS1 savegames with different difficulties, I got:
  • MGS [EZ] 00:00 Dock
  • MGS [NM] 00:00 Dock
  • MGS [HD] 00:00 Dock
  • MGS∫[EX] 00:00 Dock
That's probably me screwing around with the savegame file on the last one :P Note that these aren't standard ASCII characters.

After looking at the hexadecimal dumps of these savegames some more, it became clear where to set the game's difficulty: at offset 0x0142.

Savegame diffs

I tried playing around a bit with other nearby values as well, hoping to be able to toggle the in-game radar, etc., but those savegames wouldn't load…

All weapons and items

I did stumble upon something else very interesting: if in a specific savegame I changed only the difficulty from "normal" (value 1) to "extreme" (value 3), then the game's difficulty would actually be set to "easy", and you'd have all weapons and items available from the very start! Talk about an easy playthrough :)

You can find this raw savegame here (it's the North American version; I haven't tested with other regions). I converted it from IcedMaidenDeth's DexDrive savegame hosted on Gamespot.

Note that this does not require any emulator cheats, Game Shark, etc. It's purely the savegame itself that triggers this, even on the original PlayStation console. (Btw., the savegame only loads when first starting the game. It won't load after having started a game, then dying and exiting.)

I have no idea why this happens. Maybe setting the game to "extreme" but with the radar still on triggers this? In any case, having all weapons and items available from the start allowed for some interesting changes to the game:
  • The very first area of the game is the only one where you can walk around under water. Normally you hardly have any items here, and you can't go back to this area later on, which probably explains why almost all items work just fine under water. You can use C4, target guards above water with the missile launcher, etc., and even equip a cardboard box or a gas mask. The latter makes you hold your breath longer :D

  • When you first get to the heliport, Solid Snake selects his binoculars (Scope) to look around. With all weapons and items unlocked, he selects his cigarettes instead, and just randomly walks around.


    Good thing he doesn't run straight into an enemy soldier :P
  • You can use the cardboard boxes to skip parts of the game. E.g., if you use Cardboard box B on the heliport, you get to the nuclear warhead storage building, skipping the jail scene and boss fights with Revolver Ocelot and Vulcan Raven. Those fights do still trigger if you backtrack, though :)
  • I got stuck escaping from the jail, because somehow planting C4 at the door where the guards arrive prevents them from throwing in grenades…
  • You start out with a Lv. 7 Card that'll open about any door, but it gets overwritten by a Lv. 1 Card after the jail scene.
With all weapons and items unlocked, it was mostly the beginning of the game that was a lot easier, plus it was fun to test out stuff under water, all of which gave an interesting twist to a game I've liked for decades :)

P.S.: recording a PS1 screencast

For those interested in how I captured the screencasts above:
mednafen --qtrecord raw.mov mgs1.cue

ffmpeg -i raw.mov -c:v libx264 -vf scale=720x540,setdar=4/3,format=yuv420p -acodec aac -ac 2 -ar 48000 -crf 20 out.mp4

ffmpeg -i raw1.mov -i raw2.mov -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' -map '[vid]' -c:v libx264 -crf 20 -map 0:a -c:a copy out.mp4