Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ulysseswu/freemote

Managed Emote/PSB tool libs.
https://github.com/ulysseswu/freemote

pimg psb scn

Last synced: about 9 hours ago
JSON representation

Managed Emote/PSB tool libs.

Awesome Lists containing this project

README

        

# FreeMote
[![Build Status](https://github.com/UlyssesWu/FreeMote/actions/workflows/build.yml/badge.svg)](https://github.com/UlyssesWu/FreeMote/actions/workflows/build.yml)

Managed EMT/PSB tool libs.

[Download FreeMote Toolkit](https://github.com/UlyssesWu/FreeMote/releases)

It's required to attach the text of [FreeMote.LICENSE](https://github.com/UlyssesWu/FreeMote/blob/master/FreeMote/FreeMote.LICENSE.txt) with your release if you're using FreeMote codes or binaries.

## About PSB
FreeMote is a set of tool/libs for `M2 Packaged Struct Binary` file format. The file header usually starts with `PSB`/`PSZ`/`mdf`,
and the file extensions usually are `.psb|.psz|.mdf|.pimg|.scn|.mmo|.emtbytes|.mtn|.dpak|.psb.m`.

However, there are some other file formats using the same extensions. They are NOT supported:
* `.psb`: PlayStation Binary (PS3) | PhotoShop Big (Photoshop)
* `.mdf`: Mirror Disc File (Alcohol 120%) | Primary Data File (MSSQL)
* `.mtn`: Motion File (Live2D)

Before submitting an issue or asking a question, please check your PSB file header with a hex editor.

## Components
### FreeMote
Basic functions. Decrypt or encrypt EMT PSB files.
### FreeMote [SDK](https://github.com/Project-AZUSA/FreeMote-SDK)
Special API libs for EMT engine, which take _pure_ (unencrypted) PSB files as input.
### FreeMote.Psb
Parse and generate PSB.
### FreeMote.PsBuild
Compile and decompile PSB files. Convert PSB among different platforms. Recover EMT projects.
### FreeMote.Plugins
External/Experimental features. Read [wiki](https://github.com/UlyssesWu/FreeMote/wiki) for usages.

* Images: TLG encoding/decoding support via [**FreeMote.Tlg** (x64)](https://github.com/UlyssesWu/FreeMote.Tlg).
* Shells: Compression/decompression support, such as [**FreeMote.FastLz** (x64)](https://github.com/UlyssesWu/FreeMote.FastLz).
* Audio: Experimental support for audio used in PSB.

### FreeMote.Purify (Unreleased)
Infer and calculate the key used by EMT PSB file just from the PSB file (rather than get from engine).

## Tools
Read [wiki](https://github.com/UlyssesWu/FreeMote/wiki/CommandLine-Usage-for-Tools) for detailed usages.

### EmtConvert (FreeMote.Tools.EmtConvert)
Convert EMT PSB files.
### PsbDecompile (FreeMote.Tools.PsbDecompile)
Decompile PSB files to json files and resources.
### PsBuild (FreeMote.Tools.PsBuild)
Compile PSB json files and resources to PSB.
### EmtMake (FreeMote.Tools.EmtMake) (Preview)
Convert an EMT PSB to MMO project. **The output file is always licensed under [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). No commercial usage allowed!**
### FreeMote Viewer (FreeMote.Tools.Viewer)
Open and render EMT _pure_ PSB. This tool is powered by [FreeMote.NET](https://github.com/UlyssesWu/FreeMote.NET#freemoteviewer).

## Build
This project requires **VS 2022** and .NET **4.8** to build.

**FreeMote.Plugins** / **FreeMote.Plugins.x64** require a [MyGet feed](https://www.myget.org/feed/monarchsolutions/package/nuget/FreeMote.Tlg) to get external libs made by us. If you don't need FreeMote Plugins, you can unload Plugins projects and remove them from other projects' reference.

To install our own nuget packages, add this feed to your IDE:

`https://www.myget.org/F/monarchsolutions/api/v3/index.json`

## Test
Get PSB samples for test and research from [FreeMote.Samples](https://github.com/Dual-Vector-Foil/FreeMote.Samples).

Thanks for everyone who provided these samples!

---
by **Ulysses** ([email protected])

Creative Commons License
FreeMote is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).

Some outputs of FreeMote (mmo/psd etc.) are transformed from FreeMote code and are considered as **Adapted Material**. Therefore they're always licensed under **CC BY-NC-SA 4.0**. [wiki](https://github.com/UlyssesWu/FreeMote/wiki/License)

[Issue Report](https://github.com/UlyssesWu/FreeMote/issues) · [Pull Request](https://github.com/UlyssesWu/FreeMote/pulls) · [Wiki](https://github.com/UlyssesWu/FreeMote/wiki)

[![Support Us](https://az743702.vo.msecnd.net/cdn/kofi2.png?v=0 "Buy Me a Coffee at ko-fi.com")](https://ko-fi.com/Ulysses)

## Thanks

* @9chu for so much help.
* @number201724 for PSB format references. LICENSE: MIT
* @WcLyic for PSB samples and Editor help.
* @nalsas (awatm) for Editor help.
* [MonoGame](https://github.com/MonoGame/MonoGame) for [DxtUtil](https://github.com/UlyssesWu/FreeMote/blob/master/FreeMote/DxtUtil.cs) code. LICENSE: Ms-PL
* Singyuen Yip for [Adler32](https://github.com/UlyssesWu/FreeMote/blob/master/FreeMote/Adler32.cs) code.
* @gdkchan for [DxtCodec](https://github.com/gdkchan/CEGTool/blob/master/CEGTool/DXTCodec.cs) code.
* @mfascia for [TexturePacker](https://github.com/mfascia/TexturePacker) code.
* @morkt for [ImageTLG](https://github.com/morkt/GARbro/blob/master/ArcFormats/KiriKiri/ImageTLG.cs), [ArcPSB](https://github.com/morkt/GARbro/blob/master/ArcFormats/Emote/ArcPSB.cs), [PspDecompression](https://github.com/morkt/GARbro/blob/master/ArcFormats/Will/ArcPulltop.cs), [Bc7Decoder](https://github.com/morkt/GARbro/blob/master/ArcFormats/Unity/Bc7Decoder.cs) code. LICENSE: MIT
* @xdaniel & @FireyFly for [GetPixelCoordinatesPSP](https://github.com/xdanieldzd/Scarlet/blob/8d9e9cd34f6563da4a0f9b8797c3a1dd35542a4c/Scarlet/Drawing/ImageBinary.cs#L1278) and [PostProcessing](https://github.com/xdanieldzd/GXTConvert/blob/master/GXTConvert/Conversion/PostProcessing.cs) code. LICENSE: MIT
* @Nyerguds for [BitmapHelper](https://stackoverflow.com/a/45100442) code.
* @[HopelessHiro](https://forums.fuwanovel.net/profile/25739-hoplesshiro/), @skilittle as sponsors!
* [vgmstream](https://github.com/vgmstream/vgmstream) and @SilicaAndPina for VAG related code.
* @mafaca for [AstcDecoder](https://github.com/mafaca/UtinyRipper/blob/master/uTinyRipperGUI/ThirdParty/Texture%20converters/AstcDecoder.cs) code. LICENSE: MIT
* @RickStrahl for [ColorConsole](https://gist.github.com/RickStrahl/52c9ee43bd2723bcdf7bf4d24b029768) code.
* @GMMan (Yukai Li) for [information](https://gitlab.com/modmyclassic/sega-mega-drive-mini/marchive-batch-tool) of mzs, PSBv1, trie form etc.
* All nuget references used in this project.