Skip to content

otac0n/Codec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

188 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codec

Asset browser for Metal Gear Solid games (and others). This project is licensed under the MIT license. Support for M2 files is provided as a separate project, licensed under the GPL v3 license.

Support for the following formats is implemented:

  • Archives
    • Generic
      • .iso Images
      • .bin/cue Images
      • .zip Files [read & write]
      • .ciso GameCube images
    • Metal Gear Specific
      • M2 Archive (Master Collection v1)
        • .psb.m Packaging Format
      • .dar Archives (MGS1) [read & write]
      • .sdt Sound Packs (MGS2)
      • .sdx Sound Packs (MGS2)
      • STAGE.DIR Archive (MGS1 & MGSVR)
      • STAGE.DAT Archive (MGS2 & TTS)
      • FACE.DAT Archive (MGS1)
      • DEMO.DAT Archive (MGS1)
      • .brf Briefing Files (MGS1 & MGSVR)
      • .slot Data Files (MGS4)
  • Files
    • Generic
      • CD Audio Tracks
      • All Basic Image Formats (PNG, JPEG, BMP, etc.)
      • All Basic 3D Formats (FBX, OBJ, STL, STEP, etc.)
      • WAV & MP3 Audio Files
      • .pcx Image Files
    • Metal Gear Specific
      • .pll Image Files (MGS1)
      • .kmd Model Files (MGS1)
      • .kms Model Files (MGS2)
      • .tri Texture Files (MGS2 & MGS3)
      • .ctxr Texture Files (MGS2 & MGS3)
      • .txp Texture Files (MGS PW)
      • .mdn Model Files (MGS4)
      • .rpk Texture Files (MGS1) [read & write]

To view Master Collection resources, you will need to have a copy of the game on your system. The tool will automatically detect the Steam location of the game, but you can browse to any location as desired.

MGS1 MGS2
MGS3 MGS4
MG1 MGSVR

Running on Linux

sudo apt install -y libassimp-dev libmagickwand-dev mesa-utils
sudo apt-get install -y dotnet-runtime-9.0
chmod +x Codec.UI.Avalonia

Usage

// Setup
var services = Codec.UI.ServiceRegistration.RegisterHeadless();
var fsm = services.GetRequiredService<NestedFileSystemManager>(); // Grab the root filesystem.

// API
fsm.EnumerateEntries(@"G:\Rip\Exp\METAL GEAR SOLID DISC 1.CUE\MGS\FACE.DAT/0/f73b.face").Dump();

var path = "...";
using var readA = fsm.OpenRead(path);
using var readB = fsm.Open(path, new FileStreamOptions { Mode = FileMode.Open, Access = FileAccess.Read, Share = FileShare.Read });
using var readC = fsm.Open(path, new FileStreamOptions { Mode = FileMode.Open, Access = FileAccess.Read, Share = FileShare.None }); // Read/write file locks are supported hierarchically.
using var write = fsm.Open(path, new FileStreamOptions { Mode = FileMode.Open, Access = FileAccess.ReadWrite, Share = FileShare.ReadWrite }); // Read/write is supported on some filetypes.
// Some files are virtual and cannot be written. This will throw:
using var virtualA = fsm.Open(@"...\MGS\FACE.DAT/0/f73b.face/base.img", new FileStreamOptions { Mode = FileMode.Open, Access = FileAccess.ReadWrite, Share = FileShare.None });
// Some filesystems are read-only and cannot be written. This will throw:
using var virtualB = fsm.Open(@"...\METAL GEAR SOLID DISC 1.CUE\...", new FileStreamOptions { Mode = FileMode.Open, Access = FileAccess.ReadWrite, Share = FileShare.None });

// You can obtain bitmaps from known image types using:
var bitmap = fsm.Resolve<MagickImage>(path);
// Likewise with Auio streams:
var audio = fsm.Resolve<AudioStream>(path) ?? (AudioStream)fsm.OpenRead(path);
// And 3D Objects:
var scene = fsm.Resolve<RenderableScene>(path);

OpenSource Info

Project License Details
Silk.NET MIT 3D rendering and windowing
Assimp MIT + BSD-3-Clause 3D object loading and saving
Magick.NET Apache 2.0 Image loading and saving
NAudio MIT Audio loading and playing
System.IO.Abstractions MIT Nested filesystems
CueSharp BSD-2-Clause CUE format
DiscUtils MIT ISO format
GMWare.M2 GPL 3.0 M2 Archive format
metalgeardev/MGS1 Reference code
mgs_reversing Reference code
tools-mgs zlib Reference code
CtxrTool MIT Reference code
MGS-Master-Collection-Noesis Reference code
kmy2ob Reference code
Arsenal MIT Reference code
Solideye MIT Reference code
MGS-MDP-Noesis Reference code
MGS2-Sound-Tools MIT Reference code
Metal Gear Master Collection Non-transferrable You need your own license to this software, and your license may not cover this usage.
Digital-7 Font Freeware for home use Frequency display (coming soon)
Font Awesome Free Icons CC BY 4.0 Used for UI icons

About

No description, website, or topics provided.

Resources

License

Stars

3 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors

Languages