
You can see the code and recent progress on GitLab.
For a rough description of game-specific progress, please see the Screenshots page.
My goal is to have the most important three classic titles fully functional, enhancements and all, by version 1.00. Don't ask me how long that's going to take, though.
Changelog:
0.92
- Published on Github
- Further SDL2 integration
- User-controllable vsync and UI magnification options
- Further sakurascript work, many new commands
- New game-selector frontend, if you run the engine without specifying a dat
- Dat modding support
- Consolidated screen transitions to just the least tacky effects
- Mouseonly mouseoverables to use with things like sliders
- Added scrollable textboxes, more robust than previous hard paging
- Choices in textboxes can now coexist with non-choosable text
- Support for drop-in English translations for Japanese games
- Shell and Python scripts to assist automatic translation
- Dropdown console in-game; Ctrl-T to show game text transcript, Ctrl-D to show debug log and execute script commands at runtime if debug mode is on
- Other bugfixes
0.91
- Switched to SDL2
- Created a supersakura-con port, which plays the games using character graphics in a console
- Redesigned the script parser; now has dynamically typed named variables, Powershell-style commands with dynamic parameters, scripts are split by label instead of by script file, and text is UTF-8 encoded
- Added Shift-JIS to UTF-8 conversion in Decomp
- Added decompiling support for PC-98 Nocturnal Illusion and Mayclub cat and lib files
- Separated strings from scripts into a separate resource; string tables can be imported and exported into tsv spreadsheets for localising
- Redesigned textboxes, now with anchor points, free scrolling, flexible decorations, and a UI size multiplier user preference
- Decomp now only prints labels for lines that are jumped to within the script, making the new label-grouped code more efficient
- Added pause and single-stepping modes to help debugging, and script breakpoints, and co-operative multifibering
- Added explicit Z-levels for gobs
- Moved a bunch of common code into a separate unit, mccommon
- Spun off the asset loader into a separate unit, mcsassm, and disabled the asset precacher for now; made the asset loader 100% thread-safe and way sleeker
- Rewrote the graphics loading and resizing, only to find that retaining subpixel accuracy under this new model would be a big pain, dropped subpixel optimisation for now
- MCGLoder is no longer dependent on the Windows unit
- Massive code clean-up and re-organisation
0.90b
- Made viewports more flexible
- Rewrote the bash effect and made it work on individual gobs
- Merged box styles into the main text box structures, moved box indexes up by one so box 0 can be a system text box or console
- Added an intermediate output buffer for Recomp so the final resource file is built in memory first; it's faster and reduces file system fragmentation
- Added a simple alpha rendering optimisation, 10-30% faster
- Smarter drawing region handler, now crops out partial overlaps
- Fixed invalid memory read when drawing many gobs during a single frame
- Unified debug output paradigm, allows implementing an in-game debug console later
- The engine crash output now includes recent game script bytecode history to help debugging
- Added commands: gfx.adopt, gfx.orphan, choice.go, choice.get, choice.cancel
0.90
- Expanded script code escape handling, allowing dynamic resource references from strings and variables
- Changed escape code from backslash to ampersand to stop Shift-JIS conflict
- Made image area selection by keyboard a bit more intuitive
- Textbox autowaitkey on overflow now preserves text color changes
- Fixed and optimised mipmapped full-view pop-in transition
- Fixed bugs in textbox transition handling
- Added a gfx.solidblit script code command, to draw any graphic object with a solid color, handy for fades and making sprites flash
- Added a sys.alreadyplayed command to allow automatic intro skipping
- Made Runaway fade to black ending look smoother in framed mode
- Improved support for Deep
- Improved support for Tasogare no Kyoukai, thanks to Zus at SakuraSoftFan Group
- Preliminary support for Muchimuchi Sekushii Pafe, also thanks to Zus
- Fixed decompiling of bytecode 0B-49 (immediate bitmasked multiple choice)
- Fixed handling of overlapping sleep states
- Fixed lacking edge-alpha corner case in scaling algorithm
0.89
- Rewired all screen transitions to work correctly inside a viewport
- Made all swipe transitions use a snazzy fat fuzzy edge
- Redesigned textbox properties to allow using a tiled base graphic, as well as improved positioning precision
- Made textbox movement and size changes relative to time instead of framerate
- Made the choice selection box correctly ignore escape codes
- Added tbox.move and tbox.resize script commands
- Added snap to edge textbox style option
- Added retro-style textbox background negation
- Made pretty textboxes for 3sis
- Optimised text rendering, enabling anti-aliased in-line glyph printing
- Fixed off-by-1-pixel errors in scaling algorithm, hopefully for the last time
0.88
- Upgraded compiler to 2.6.0
- Fixed a textbox garbage bug upon fullscreen switch
- Fixed an embarrassing bitmap byte order inconsistency
- Fixed several special effects bugs
- Rewrote the bash effect to play nice with everything else
- Added an always-topmost flag for gobs
- Separated implicit and explicit gob coordinates for consistency and precision
- Moved implicit waitkeys from SSakura into Decomp for streamlining and automatic double-waitkey elimination, which works surprisingly well
- Made mouseoverable areas selectable by keyboard
- Changed numeric expression handling to use powerful Reverse Polish Notation
0.87
- Rewrote the gamma correction effect for efficiency and compatibility
- Fixed gamma slide duration
- Added global subscript call ability
- Allowed indirect variable references in scriptcode
- Added INC/DEC scriptcode commands as shorthand for equivalent LET
- Implemented an event system (mouseover, timed, user interrupt)
- Made new title screens with clickable options for the prime three games
0.86
- Changed output to 32bpp to avoid dib padding issues, had to painfully rewire all drawing interface functions
- Separated text control codes from printing buffer for consistency
- Improved textbox location precision and autofitting
- Rewrote user choice handling for greater flexibility
- Enhanced script code string handling
- Fixed textbox alpha pre-multiplication
- Made the text drop shadow use a proportional size
- Added subtle sprite edge smoothing in Decomp-beautify
- Reimplemented the credit roll effect
- Wrote ending scripts for the three prime games
0.85
- Big compatibility boost! Added translation of bytecodes 0B-04, 0B-37, 0B-46, 0B-49, 0B-4B, 0E-xx, 11-06, 11-09, and 09-xx-yyzz, a redundant runscript in Transfer Student
- Added basic support for Maririn DX
- Fixed a graphic object adoption bug
- Rationalised case statements in script code
0.84
- Fixed viewframe bugs, scripted viewframe logic for all supported games
- Made sleep after transitions explicit, for better effects control
- Wrote a Maki-chan Graphic reader for Angel Collection 1
- Enhanced and unified the bash effect
- Added sys.quit script command
0.83
- Reimplemented gfx.getsequence, gfx.setsequence and gfx.setframe, for manual animation control
- Added gob movement effect, and gob alpha slide effect
- Fixed a bug in .SC5 Recomposer midi translation
- Hammered screen updates into a cleverer paradigm
- Improved animation loading logic during decompilation
- Fixed text alignment issues
0.82
- Separated text strings from each script into a structure of their own
- Implemented persistent tracking of seen text and graphics
- Implemented "Skip seen messages" command
- Restructured graphic handling in Decomp, enhanced MCGloder
- Added hardcoded image compositing
0.81
- Reimplemented vanilla image scaler, now runs 4 times as fast
- Fixed a graphics offset bug after fullscreen switch
- Fixed some textbox bugs
- Added emoticon glyph printing
- Implemented 2x supersampling for textbox contents, but it sucked, so removed it
- Added instant, fade, and left-to-right swipe textbox transitions