- Notifications
You must be signed in to change notification settings - Fork2
An open source remake of the CatSystem2 visual novel engine.
NotificationsYou must be signed in to change notification settings
kokseen1/FelineSystem2
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An open source remake of the CatSystem2 visual novel engine.
A makeshift demo of the current version can befound here.
Click
/Scroll
- Advance text
Ctrl
/Enter
- Advance text, hold to skip
SPACE
- Hide message window
f
- Toggle fullscreen
1-9
- Select choice
Shift + Alt
+1-9
- Quick save to slot1-9
Shift
+1-9
- Quick load from slot1-9
- Multi-platform (WASM, Windows SDL2)
- Raw KIF archive decryption
- HG-3 image decoding and caching
- Custom-built CatScene recursive-descent parser
FelineSystem2 implements a custom database of the game's KIF archives and assets, stored as a binary file.
Data Type | Value | Description |
---|---|---|
char[len] | ArchiveName | NULL-terminated filename of the KIF archive |
uint32 | EntryCount | Number of entries in archive |
unsigned char | IsEncrypted | 0x01 if archive is encrypted,0x00 otherwise |
byte[4] | FileKey | Blowfish key for decrypting entries (Only exists if IsEncrypted is0x01 ) |
0x00 | TableEnd | Signifies end of table |
Data Type | Value | Description |
---|---|---|
char[len] | FileName | NULL-terminated deobfuscated filename |
uint32 | Offset | The offset to the entry's data |
uint32 | Length | The length of the entry's data |
- If statements must contain a whitespace after the closing parenthesis of the condition
if (#300==0) #(950+#300)=512
- Operators follow C-Style left-to-right precedence and associativity
- Integers and strings are the only data types that exist
#300=0
str 50 bg02
- Variable names can only be integers
- Variable names can be dynamically evaluated
#(950+#300)=512
blend
argument specifies the alpha value that the image will be displayed atcg 0 blend 255
will display a completely opaque CG whilecg 0 blend 0
will display a completely transparent CG
rdraw
command after an image specifies the duration to fade to the target opacityrdraw 30
will take30
frames to fade the image from alpha0
to the target alpha (e.g.255
by default)- Units are likely in frames at
60
fps (0.0167s/frame
) regardless of the game's refresh rate setting - An
rdraw
command will apply to all images within a script block (from a user input to the nextwait
command)
wait
command without arguments will block until any time-based command completeswait
after ardraw 30
command will wait for the30
frames taken to completely fade in the images before proceeding to the next command
wait
with arguments behaves differently from standalonewait
wait 60
will block for60
frames before proceeding to the next commandwait 60
will not be aware of any time-based commands likerdraw
and will not block untilrdraw
completeswait
is sometimes used along withwait 60
consecutively
cg 0 attr 1 (70+0) (80+0)
cg 0 attr 2 (75+0) (85+0)
- Assigns the
BaseX
,BaseY
values of the specified imagecg 0
to the variables#(75+0)
and#(85+0)
respectively
- Assigns the
- Trigger for creating such anamazingly comprehensive knowledgebase of the CS2 engine
- asmodean for being a pioneer in reversing the CS2 engine
- Dodder forHacking the Grisaia for localization
- koestl for his impeccable translations and contributions to localization