• Please stop embedding files/images from Discord. Discord has anti-hotlinking logic in place that breaks links to Discord hosted files and images when linked to from anywhere outside of Discord. There are a multitude of file/image hosting sites you can use instead.

    (more info here)

TSC Editor+

May 6, 2026 at 1:31 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
TSC Editor+ v2.1 STABLE
1778698366352.png

TSC Editor+ is a multi-language editor for .tsc script files used in Cave Story, Cave Story+ (Steam/Switch) and related engines/mods.
This project focuses on improving the workflow for modders, translators, and script editors with tools like syntax highlighting, encoding detection, project management, and built-in command documentation.


Features (2.1) – STABLE

FULL INTERNATIONALIZATION (English / Espanol / Nihongo)
- All menus, dialogs, messages, status bars and history entries are now fully translatable – no hardcoded strings.
- Change language at any time in Settings (Ctrl+K); saved in settings.json.
- Three built-in languages (English, Spanish, Japanese) are fully supported.

BACKUP SYSTEM
- Backup current TSC file (Ctrl+B) – creates a dated subfolder and copies the file.
- Backup all TSC files in the loaded folder (Ctrl+Shift+B) – batch backup with a progress bar.
- Configurable backup directory in Settings (custom path, or leave empty to use default backups/ folder).
- Backups are never overwritten (each operation creates a new timestamped folder).

SMART REPLACE ALL TSC FILES
- Batch version of the "Smart Replace Special Characters" feature.
- Applies to every .tsc file in the currently loaded folder.
- Replaces n -> n, removes accents (aeiouu) and deletes inverted exclamation and question marks.
- Shows a progress bar with file names and reports results (processed, modified, errors).

NINTENDO SWITCH ANIMATED FACES
- Full support for Switch-style face commands:
- <FAC10XX – Idle animation (blinking) using anim1 (eyes open), anim4 (half-closed), anim5 (closed)
- <FAC11XX – Talk animation (mouth movement) using anim1 (closed), anim2 (half-open), anim3 (fully open)
- <FAC01XX – Static Switch face (no animation)
- Automatic mode detection – right-click on any Switch FAC code and the correct animation starts immediately (Idle or Talk).
- Smart image loading – placeholder images that are pure green (#00FF21) are automatically skipped; only real sprites are used.
- Multiple naming formats – supports full 4-digit codes, padded 2-digit, or short names.
- Folder structure for Switch (place inside faces/switch/):
anim1/ – Idle eyes open / Talk mouth closed
anim2/ – Talk mouth half-open
anim3/ – Talk mouth fully open
anim4/ – Idle eyes half-closed
anim5/ – Idle eyes closed

ENCODING OVERHAUL – NO MORE REPLACEMENT CHARACTERS
- Improved auto-detection now correctly distinguishes cp1252 (Spanish) from shift_jis (Japanese/English).
- Fallback chain for Shift-JIS: shift_jis -> cp1252 -> cp932 -> latin-1.
- Suspicious characters trigger an automatic fallback to shift_jis or cp1252.
- Cipher 0 (plain text) is never forced to UTF-8 – TSC files are saved with their original encoding unless manually overridden.
- Manual encoding/cipher dialog includes a live preview to help choose the correct settings.

UTF-8 EXPORT FIX – NO EXTRA BLANK LINES
- When exporting to .txt or .cstsc, line endings are normalised to LF (\n).
- Prevents the game from misinterpreting empty lines (a common issue with Windows CRLF).
- Files originally using \r\n are converted to \n internally.

ENHANCED COMMAND INFO (RIGHT-CLICK)
Now shows detailed information for many more commands:
- FAI / FAO – direction names (Left, Up, Right, Down, Center, INVALID)
- TRA – full map names (Arthur's House, Egg Corridor, etc.)
- Weapon commands (AM+, AM-, AMJ, GIT, TAM) – weapon names (Snake, Polar Star, Missile Launcher, etc.)
- Item commands (GIT, IT+, IT-, ITJ) – item names (Arthur's Key, Map System, Silver Locket, etc.)
- SOU – descriptive sound effect names (e.g., "Message typing", "Door", "Explosion")
- CMU – already had song names; improved consistency

QUICK DOCS HINTS PANEL
- A rotating hint panel appears at the bottom of the Quick Docs tab.
- Hints change every 5 seconds and are fully translated (English, Spanish, Japanese).
- Provides useful tips (character counter, backups, cipher issues, testing with F5, etc.).

OTHER IMPROVEMENTS
- Settings window now has a scrollbar (all options are accessible even on smaller screens).
- "Suggest" button in export settings now proposes both encoding and the original file's cipher (no more forced 0).
- Theme button is now always visible – change theme from Settings (Ctrl+K) or the toolbar.
- Sidebar file highlight works reliably after theme changes or file switching.
- About dialog updated to version 2.1 with a complete list of features (fully localised).
- Auto-installer now only downloads required libraries (ttkbootstrap, Pillow, pywinstyles).
- Full compatibility with Python 3.14 (32-bit and 64-bit).


BUG FIXES (v2.1)

- KeyError: 'face_version_switch' – added missing translation key.
- UnboundLocalError in command syntax analyzer – initialised variable before use.
- Backup folder creation in temporary folder when compiled as .exe – resolved (backups now go to executable's folder by default).
- Encoding auto-detection incorrectly choosing cp850 for Japanese files – improved heuristics and fallback order.
- Latin-1 being wrongly selected – penalised when suspicious characters appear; added bonus for Japanese characters.
- Missing translation for "New Empty Tab" – added key.
- Tab manager context menu ("Close", "Close Others", "Close All") – now localised.
- History entries for undo/redo/copy/paste/cut/backspace/enter/space/handwrite – now use translation keys.
- Editor startup history entry ("Editor started") – now localised.
- "Game launched" history entry – now localised.
- Character counter dialog – "No text selected", "Selected text is empty", "Characters:", "Limit:" now localised.
- Face preview dialog – "Cancel" button now uses translation key.
- Backup progress label ("Copying: filename") – now localised.


DEPENDENCIES (auto-installed)

Library Purpose Version
ttkbootstrap Modern themes (Darkly, Vapor, Cosmo) 1.10.1
Pillow Face sprite preview (FAC command) 10.0.0
pywinstyles Windows title bar color (dark/light) 1.8

No manual installation needed – the program installs them into the libs/ folder automatically.


KEYBOARD SHORTCUTS (updated)

Shortcut Action
Ctrl + O Open .tsc
Ctrl + Shift + O Open project (.cstsc)
Ctrl + Shift + Alt + O Open folder
Ctrl + S Save project
Ctrl + Shift + S Export .tsc (or .txt)
Ctrl + B Backup current TSC
Ctrl + Shift + B Backup all TSC files
Ctrl + F Focus search tab
Ctrl + R Smart replace
Ctrl + Z Undo
Ctrl + Y Redo
Ctrl + H Show history
Ctrl + K Open settings
Ctrl + Shift + C Command syntax analyzer
Ctrl + N / Ctrl + T New empty tab
Ctrl + W Close current tab
Ctrl + Shift + W Close all tabs
Ctrl + Alt + W Close other tabs
F5 Test game
Alt + F4 Exit


FOLDER STRUCTURE (updated for Switch)

TSCEditor/
├── main.py
├── tsc_editor/ (Main package)
├── faces/ (Face sprites)
│ ├── free/ (fac_sprite_freeXX.png)
│ ├── steam/ (fac_sprite_steamXX.png)
│ └── switch/ (Animated sprites)
│ ├── anim1/
│ ├── anim2/
│ ├── anim3/
│ ├── anim4/
│ └── anim5/
├── backups/ (Default backup folder, created on first backup)
├── libs/ (Auto-downloaded dependencies)
└── settings.json (Saved settings)


UPGRADING FROM v2.0

Replace all files in the tsc_editor/ folder with the new ones.
Your settings.json, custom_commands.json, and command_colors.json will be automatically upgraded (new keys added).


KNOWN ISSUES / NOTES

- Antivirus false positives: The executable is packaged with PyInstaller, which sometimes triggers generic alerts (e.g., "Gen:Variant.Tedy", "Wacatac"). It is 100% safe. An "Antivirus Notice.txt" file is included in the ZIP.
- Switch animated faces require the correct folder structure and image naming (see above). Placeholder green images (#00FF21) are automatically skipped.
- Encoding auto-detection is much improved but not perfect. You can always switch to manual encoding/cipher selection in Settings.
- Backup directory in Settings uses relative paths from the executable's location (not the temporary folder). Use ./backups or an absolute path for reliability.

Supported Encodings​

  • Shift-JIS​
  • CP932​
  • UTF-8​
  • Latin-1​
  • CP850​
  • CP12​

Supported Languages​

  • English​
  • Español​
  • 日本語​

Keyboard Shortcuts​

Ctrl + O Open .tsc
Ctrl + Shift + O Open project
Ctrl + Shift + Alt + O Open folder
Ctrl + S Save project
Ctrl + Shift + S Export .tsc
Ctrl + F Search
Ctrl + R Smart replace
Ctrl + Z Undo
Ctrl + Y Redo
F5 Test game

Notes​

  • Windows is currently the primary supported platform.​
  • Linux/macOS support is experimental.​
  • Some encrypted TSC formats may behave differently depending on the engine version or mod.​

License​

MIT License

Credits​

Inspired by the Cave Story modding community.
Developed with Python.
Carrot Lord's Encryptor and Decryptor (Booster's Lab) (Cave Editor) was used

Author​

EdwarlyGamer999+

Requirements

Python 3.8+ (Release 2.1) (Windows 7/8/10/11)
Python 3.8+ (Release 2.0) (Windows 7/8/10/11)
Python 3.8+ (Release 1.2) (Windows 7/8/10/11)
Python 3.8+ (Release 1.1) (Windows 7/8/10/11)
Python 3.9+ (Release 1.0)
Python 3.8 (Required For Lite Version) (Windows 7)
 
Last edited:
May 7, 2026 at 1:13 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Nov 29, 2025
Location: Venezuela
Posts: 75
Age: 21
Pronouns: He/Him
Gender Notes: I'm a Deathcore Purist.
You can search how it works TSC in the source code of all the editors or the TSC decoder of Carrotlord, 'cause you must decode first before edit...
 
May 8, 2026 at 3:29 AM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
You can search how it works TSC in the source code of all the editors or the TSC decoder of Carrotlord, 'cause you must decode first before edit...
The editor now works with freeware CS+ Steam (I'm not sure if it will work since there are betas from 2026 and it probably won't be stable) and CS+ Switch. I'm translating, improving the UI, and adding tools.

A Quick Look at the Project's Small Progress...
1778341765146.png
 
May 10, 2026 at 1:12 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Nov 29, 2025
Location: Venezuela
Posts: 75
Age: 21
Pronouns: He/Him
Gender Notes: I'm a Deathcore Purist.
Nice!


It will have A Dark Mode?
 
May 10, 2026 at 10:57 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
It will have A Dark Mode?
Unfortunately, No, I have tried it and Tkinter only changes the color of the canvas (not the window) although I think it is because I do not know how to change the color of the window, at the moment it will not have the dark mode like modern editors (Sky Dragon Editor).
Edit: I'll Add It But The Window Won't Change Its Color
 
Last edited:
May 11, 2026 at 10:37 PM
The miracles of alchemy...!
Bobomb says: "I need a hug!"
Join Date: Jul 20, 2015
Location: Under sea level or something
Posts: 836
Age: 27
Pronouns: 菓子
Interesting to see this pop up.

Are you planning to add any special features?
 
May 12, 2026 at 3:30 AM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
Interesting to see this pop up.

Are you planning to add any special features?
Yes, of course!
You can import an entire folder of TSC files so you don't have to import them one by one. Special characters will be highlighted in red (you can also delete all special characters with a button). There will be TSC documentation for the freeware, Steam, and Switch versions. You can change the font in the editor. It has autosave every 6 minutes (disabled by default). The UI will switch to three languages depending on the PC: English, Japanese, and Spanish. It will have a character counter (to prevent <MSG tags from going over the text box). You can zoom with the mouse wheel. It has a word/file search function. You can extract TSC files as projects (.cstsc is the autosave extension) or as .txt files. These are more or less the additional features that will be added in the first version; more features will be added soon.
 
May 12, 2026 at 7:55 AM
The miracles of alchemy...!
Bobomb says: "I need a hug!"
Join Date: Jul 20, 2015
Location: Under sea level or something
Posts: 836
Age: 27
Pronouns: 菓子
Special characters will be highlighted in red (you can also delete all special characters with a button).
I'm curious what prompted this because I feel lile more often than not someone will insert a 'special character' by intent rather than accidentally (AI generated TSC wasn't a thing yet last I checked) and can sooner come from things like OoB flags (dephending on the definition of special) and translations (ie. German's ß, chinese, accents etc.).
 
May 12, 2026 at 1:09 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Nov 29, 2025
Location: Venezuela
Posts: 75
Age: 21
Pronouns: He/Him
Gender Notes: I'm a Deathcore Purist.
AI generated TSC wasn't a thing yet last I checked
The AI don't generate TSC correctly, it creates commands that doesn't exist or confuse their significate. So the modding don't depend of AI!
I'm curious what prompted this because I feel lile more often than not someone will insert a 'special character' by intent rather than accidentally (AI generated TSC wasn't a thing yet last I checked) and can sooner come from things like OoB flags (dephending on the definition of special) and translations (ie. German's ß, chinese, accents etc.).
I talk spanish, but in my mods I put accents accidentaly or I use this: "¡¿", that doesn't characters in english.
It will have a character counter (to prevent <MSG tags from going over the text box)
WOOOOOOOAH!
 
Last edited:
May 12, 2026 at 2:39 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
The AI don't generate TSC correctly, it creates commands that doesn't exist or confuse their significate. So the modding don't depend of AI!

I talk spanish, but in my mods I put accents accidentaly or I use this: "¡¿", that doesn't characters in english.

WOOOOOOOAH!
An Example of This Function in Action:

Normal Text:

<PRI<MSG¿Cómo Estás?<NOD<END

You Trigger the Automatic Removal of Special Characters:

<PRI<MSGComo Estas?<NOD<END

Automatic Removal Can Damage Your TSCs If You Select the Commands; Make Sure to Select Only the Text (This Action Can Be Undone with Ctrl+Z).
 
Last edited:
May 12, 2026 at 5:27 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Dec 22, 2018
Location: Sand Zone Residence
Posts: 59
Pronouns: he/him
May 12, 2026 at 5:51 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
Perhaps you could make the TSC editor work with the language server for diagnostics, hints, autocomplete, etc.? Might be a fun challenge to implement an LSP client for it: https://github.com/nimblebun/tsc-language-server
That would be a good idea, but for now it won't be added to the first version because I don't know much about the Go programming language. I only know C++ and Python. I'll keep it in mind after I release the first version of TSC Editor+
 
May 12, 2026 at 8:50 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Dec 22, 2018
Location: Sand Zone Residence
Posts: 59
Pronouns: he/him
You can implement an LSP client in any language, it just needs to communicate with the tsc-ls binary via stdio or TCP and it's all JSON-RPC under the hood.

Maybe when I have some free time, I'll make a Python client library for it.
 
May 12, 2026 at 10:29 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
You can implement an LSP client in any language, it just needs to communicate with the tsc-ls binary via stdio or TCP and it's all JSON-RPC under the hood.

Maybe when I have some free time, I'll make a Python client library for it.
Sure, it would be quite useful as it facilitates TSC code verification. I wish you luck creating that library. One question: Can it be installed with the pip install command or by downloading it and extracting it into the Python folder?

I'm curious what prompted this because I feel lile more often than not someone will insert a 'special character' by intent rather than accidentally (AI generated TSC wasn't a thing yet last I checked) and can sooner come from things like OoB flags (dephending on the definition of special) and translations (ie. German's ß, chinese, accents etc.).
Currently, the only special characters detected by the editor are Spanish. In the future, I will add more that the original engine cannot support (without patches), such as ç or č. This way, people can translate the game into any language without altering the executable.
 
Last edited:
May 13, 2026 at 2:06 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Nov 29, 2025
Location: Venezuela
Posts: 75
Age: 21
Pronouns: He/Him
Gender Notes: I'm a Deathcore Purist.
It has bugs that can't be fixed, like the dark theme which looks awful (Unless your operating system allows you to completely change the window color).
You'd tried to use ttk-themes?
 
May 13, 2026 at 8:11 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
TSC Editor is out, Woohoo!! If you find any bugs, please let me know.

You'd tried to use ttk-themes?
I didn't know, maybe in the next version I'll fix the dark theme and other things.
Edit: I will also use pywinstyles, ttkbootstrap
1778707980005.png
What The Hell?
 

Attachments

  • 1778705719528.png
    1778705719528.png
    20.9 KB · Views: 6
May 14, 2026 at 3:42 AM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
This makes me feel... pain.... *cry.

Can I adapt it to Python 3.8??
Does your PC not support Python 3.9? Did you at least try to run the program? (I think you have Windows 7)

Removing some additional features will increase compatibility, although version 2.0 will no longer be compatible with Python 3.9 due to new libraries and the "TSC server".

I might make a Lite version (without Dark Mode since it's only visible on Windows 10/11), since before I added Dark Mode it only required Python 3.6+. You can try all the other features of version 1.0 except for those of version 2.0, which will be more professional. This version will be lightweight and may add more features that aren't modern. I hope you like it! :D

But remember, for a complete experience your PC must have Windows 10 at least (even with low-end components).

I'll let you know when the Lite version is released.
 
Last edited:
May 14, 2026 at 1:24 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Nov 29, 2025
Location: Venezuela
Posts: 75
Age: 21
Pronouns: He/Him
Gender Notes: I'm a Deathcore Purist.
May 14, 2026 at 4:23 PM
Senior Member
"Wahoo! Upgrade!"
Join Date: Oct 23, 2025
Location: Dominican Republic
Posts: 64
Age: 18
Pronouns: he/him
My fault XD
It's not your fault, dark mode was planned from the start, the only thing I hadn't considered was your PC, which I'd forgotten is 4x worse than mine XD
 
Back
Top