Sooooooo about that
.
I’ve been working on this since my last post. I’ve implemented a bunch of things while also doing my best not to mess with the foundation because it’s a fantastic foundation that makes scripting content like this very intuitive (very important if you’re going to script a 60 page doujin).
When I said that I dreamt of something like this I was not kidding. And so I put every thing I ever wanted. After rigorous testing, a ton of bug zapping, debugging, and creating 4 unique scripts to showcase the possibilities, I present my spin on CFSReader 2.0.
CFSReader v2.0
1) Script by Page (Simple)
(Check out Emma Frost Doujin)
The first layer is page-level scripting.
Each page has its own base script values (max, min, freq, decline_ratio) and optional page-level playback options (duration, loop, override_duration).
How it is used:
- Set one script for a whole page.
- Useful for pages that should stay consistent the entire time.
- Fastest Scripting Method
- Serves as the fallback/default source when no section or panel override is active.
2) Section Scripting (Intermediate/Designed for Audio Doujin)
(Check out Sousou no Frieren Doujin)
Section scripting adds time-based control and playback inside a page.
How it works:
- A page timeline can be split into sections with start/end times.
- Each section has its own script override.
- During playback, the section timeline follows along.
- Sections can be moved/resized for precise timing.
- You can align script behavior to dialogue, moans, rhythm changes, scene pacing, and transitions.
- In per-page audio mode, each page can carry its own timed choreography.
- There are multiple levels of grid snap and beat-snap editing make timing adjustments much faster.
3) Panel Scripting (Advanced)
(Check The Goon Files #1)
Panel scripting adds area-based interaction on top of timeline/page logic.
How it works:
- Draw panel rectangles on the page.
- Assign panel script values.
- Panel triggers can be hover or click.
- Panel script can temporarily override active output.
Common use cases:
- Emphasize interactive “focus zones” on a page.
- Add alternate motion behavior when users inspect a panel.
- Create responsive interaction without changing whole-page timing data.
4) Linking Panels to Sections (Visual + Script Coordination)
(Checkout The Aunt Staying Over)
Sections can be linked to specific panel IDs.
What linking does:
- The linked panel can highlight while that section is active.
- Linked panel script can be merged with section output.
- Gives a direct visual mapping between timeline moments and on-page regions.
5) Virtual Playback by Duration (No Audio Required)
The app supports full playback even with no audio file.
How it works:
- Playback uses page
duration as virtual timeline length.
- Scrubber, section timing, and script output still run normally.
- Useful for silent projects, draft passes, or mixed libraries with inconsistent audio coverage.
6) Beat System + Custom Sounds (Including Sound Pack Support)
Beat feedback is integrated as an optional authoring aid.
Current capabilities:
- Enable/disable beat sounds.
- Use default beat sound or load a custom file.
- Volume control and test playback in Preferences.
- Optional mode to trigger beats only on bottom peaks.
Sound pack support:
- You can point beat sound to any compatible file from a pack.
- Included sound resources make it easy to try different beat textures immediately.
7) Audio Doujin by Page Pairing (Per-Page Audio Mode)
The app supports per-page audio mapping for audio doujin workflows.
How it works:
- Place audio files in the comic folder using page base names.
- Example:
001.jpg pairs with 001.ogg (or mp3/wav/flac/etc.).
- On page switch, matching page audio is loaded for that page.
- If a page has no matching audio, the page can still run through virtual duration mode.
This allows page-by-page authored timing without forcing one global track.
8) Audio Doujin Extractor for Doujins.com (How to Use)
The extractor is meant to prepare assets from sources so they can be used in per-page workflows.
Basic usage flow:
- Open
tools/doujins_extractor.user.js.
- Install/run it using a tampermonkey extension ( I recommend using firefox).
- Open up the audio slideshow and click through every page quickly.
- Exit out of fullscreen and press the scan button and it will find every page and mp3 and should have them in order.
- Export/download extracted assets (It will download everything to a folder name with the CFS file on the outside.
- Place extracted folder into your comic folder with page-matching names and the CFS file in your cfs folder.
- Open the comic in CFSReader; per-page mode will detect numeric audio files automatically.
Key requirement:
- File naming must match page names (
001.*, 002.*, etc.) for automatic pairing.
There are a lot of things you can do. I made an Interactive Goon File with hidden panels (unless you press the edit panels button ofc) that you wont find until you hover over them. Doing so triggers a script. A VERY rewarding treasure hunt 
Minor Additions / QoL
- Separate smoothness controls for script transitions and page transitions.
- Improved page transition presentation (crossfade behavior).
- Better scrubber behavior in virtual playback mode.
- Snap and beat-snap timeline authoring controls.
- Section context actions: copy, paste script, duplicate, delete.
- Debug mode in the help menu if you run into any bugs.
- Trace export tooling for diagnostics.
- Improved panel overlay geometry sync and interaction reliability.
I spent some time and created 4 Comic Funscripts to showcase what these different modes can do. I didn’t explain everything because honestly I’m dead tired. Just give it a go and please let me know if yall find any bugs or take it and build upon it even further.
Just download the script zip and drop the files into the root folder of the CFS 2.0 folder
run the install_requirements.bat (Full download is around 750mb) and then the CFSReader.bat
Please Enjoy!
