Giter VIP home page Giter VIP logo

triggerstools.catsystem2's Introduction

TriggersTools.CatSystem2 AppIcon

NuGet Version NuGet Downloads Creation Date Discord

A library for extracting resources from, decompiling scripts from, and working with the CatSystem2 visual novel game engine.

See the CatSystem2 Documentation Wiki for ongoing documentation of CatSystem2 file specifications, undocumented features, debugging, decompiling scripts, and more.

Features

  • Patches for translating CatSystem2 tools into English.
  • Decrypting and extracting from KIF int archive files.
  • Extracting images from HG-2 and HG-3 format. (Improved over asmodean's code)
  • Decompiling cst, fes, and anm scripts into a modifiable and compileable state.

This is a Work in Progress.

CatSystem2 English Debug Mode

Other Projects/Tools of Note & Special Thanks

triggerstools.catsystem2's People

Contributors

trigger-segfault avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

triggerstools.catsystem2's Issues

Hidden(?) byte in "cptype" tag.

Hello,

I decided to fiddle with Idol Magical Girl Chiru Chiru Michiru since it's the only CatSystem2 game I own and noticed the last byte of "cptype" 's name is not necessarily null. For instance: cptype\x00\xBE. (done on sys_title.hg3)

Does anyone know if it means anything?

About the CST format

Hey, thanks for compiling all of this information in one place! It's been very useful.

I thought I'd share some of my own findings about the CST format, but unfortunately the wiki seems to be read-only.

What you call the "Input Offset Table" is actually the list of script blocks.

Conceptually, a CatScene script consists of a number of blocks, where each block contains one or more lines.
Blocks are not only used for skipping, they are also essential so how saving and loading works.
It is not possible to create a save state in the middle of a block, just between them.
When you save while a block is being executed and load the resulting save file, the entire block will start from the beginning.

When debug mode is enabled and you open the "Messages" window, what you are seeing is actually a list of script blocks you can jump to. So if a block contains multiple message lines (even if they are not consecutive), they will be displayed as one concatenated string.

I've also created a a formal definition of the binary format:
https://github.com/AtomCrafty/TriggersTools.CatSystem2/wiki/cst.ksy

While disassembling the script compiler (mc.exe), I've discovered some more facts:

  • You can terminate any line with a backslash to concatenate it with the next line.
    This also works in the middle of a command, not just in messages (only one script line will be generated).

  • If the first character in a line is a backslash, the line will be treated as a message instead of a command.

  • The compiler supports several (case insensitive) command line flags, some of which are undocumented:
    -u or /u only overwrite scripts if the .txt file is newer than the .cst file
    -l or /l write source file and line number information to the .cst script
    -x or /x skips the compression step and writes an uncompressed .cst script
    -d or /d appears to do nothing
    Flags only apply to file names specified after the flag.

  • The line type is actually just a single byte value, the byte before it is hardcoded to 0x01.

  • There are two more line types that are not currently listed on the wiki page;
    ScriptName (0xF0) and LineNo (0xF1). They are only emitted when the -l flag is set.

Good Work

Well, to begin with, I'm sorry for creating an invalid issue.
I just wanted to congratulate you for making these tools and the wiki.
I decided to comment just because I was happy to know that after about 5 years one of my tools was relevant to the learning of third parties, creating then something better implemented in relation to my original.
I found your project by chance after receiving a star in another project of mine, I went to explore your profile, something I usually do a lot.
I have said and repeated several times that many, if not most, of my tools are more of an aid to learning than something for practical use, I don't usually spend a lot of time putting touches on to make the tool usable/friendly.
And usually all I see is at most someone commenting on how sad the interface of my tools is. (lol)
So I was extremely happy to know that one of my children, specifically the Debug Patch, was a reference for another developer (after all that was one of my main goals), happy to know that it was even improved, after you dig deeper into the engine (which I hardly do).
I am someone who loves and admires the open source community from the bottom of my heart, so I am happy to see that my work had an influence on it, no matter how trivial it was.
So good work on researching and improving the methods of dealing with this engine, even offering a wiki for anyone who wanted to learn, something I never feel excited to do thanks to my bad English.

Have a good day, when you read you can close the issue, if I notice that you are AFK and stay a few weeks open I will close or delete it just for the purpose of organizing your repository.

Multiple files inside .hg3

Hello.

I'm trying to convert a single .hg3 that contains multiple images inside. The documentation says that adding @ to the beginning of the layer (PSD) results in all of them being copied, but I have not been able to. Can you tell me what I'm doing wrong?

Here's a sample of the original file.

Thank you.

.FES file extract and repack Catsystem2 engine visual novel

Hi , when i'm using Garbro and extract fes.int in this game (which i'm thinking contains UI images for main menu and battle-gameplay part .hg3 files) >> I got a bunch of .fes files instead and can't extract it using Garbro
https://vndb.org/r71356

My question here is how to extract ,edit and then repack .fes files ? I just want to make a simple UI patch to play with Textractor (correct me if I'm wrong about the files contains UI ,because according to online guide I found , the UI images of games using CS2 engine normally is in image.int or sth like that but in this new game I did't see any using Garbro)
I can edit the script file scene.int using CatSceneEditor tool but stuck with UI images
SKMK English script

any chance of making a cstl decompiler

hi i'm working on Cyanotype Daydream on steam but all the English translations are on cstl files any chance of making a decompiler like the one you made foe CST files

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.