More actions
CPyMO | |
---|---|
General | |
Author | Seng-Jik, tuyunlei |
Type | Game Engine |
Version | 1.1.9 |
License | AGPL-3.0 |
Last Updated | 2023/08/14 |
Links | |
Download | |
Website | |
Source | |
CPyMO is a visual novel engine implemented in C for Nintendo 3DS, Windows, Linux, and macOS. It is based on the PyMO Engine and supports two backends: SDL2 and 3DS Citro2D.
This is working in progress, current version has support all of graphics features.
Installation
Note: Only run copies of games that you legally own.
Create a directory named pymogames
on your SD card.
Place your game data into pymogames
and make sure that pymogames/startup/gameconfig.txt
is accessible.
Note that the path should contain only alphanumeric characters and underscores.
Install the CIA file and start the application (or run the 3DSX file via Homebrew Launcher).
You will also need to dump your 3DS's DSP firmware to enable sound. You can install that with Luma3DS:
- Open Rosalina Menu with L+D-Pad Down+Select.
- Select Miscellaneous > Dump DSP Firmware.
User guide
Differences from PyMO
- CPyMO uses different save locations and formats compared to PyMO, so they are not interchangeable.
- CPyMO does not support MID format audio playback.
- The mask gradient animation effects in CPyMO differ from those in PyMO.
- CPyMO applies easing effects to animation timing curves, while PyMO uses linear effects.
- The menu and user interface in CPyMO are different from those in PyMO.
- CPyMO does not support preloading; any preloading options will be ignored.
- CPyMO ignores all font settings except font size, and automatically enables font shadows and anti-aliasing.
Debug mode
To view the CPyMO console, hold the L button while selecting a game from the list by pressing A.
Recommended settings for 3DS
Recommended settings for adapting PyMO games to the 3DS:
- Resolution - 400×300 (3DS native resolution is 400x240 but supports full-screen expansion)
- Audio Format - Ogg, 16-bit signed little-endian, 32000Hz
- Background Format - JPG
- Other Images - PNG with transparency; avoid additional mask grayscale images
- Platform Parameter - pygame
- Default Font Size - 28
- Video Format - H264 MP4, under 30FPS; only supported on New 3DS models
Fonts
The 3DS version of CPyMO does not load custom or TTF fonts from games but uses the Source Han Sans (思源黑体) font. This font is converted to the bcfnt format compatible with the 3DS and will be distributed with CPyMO for 3DS under its original SIL license.
If the default font does not meet your needs, you can place a bcfnt-format font at /pymogames/font.bcfnt
on your SD card. CPyMO will prioritize this font over the default.
Controls
Start - Quickly exit
Select - Change screen mode
CPyMO for 3DS supports 3D display; use the 3D slider to enable this feature.
ZL/ZR buttons serve the same functions as A/Y buttons for single-handed operation.
Screenshots
Changelog
v1.1.9 2023/08/14
Deprecated:
- Removed PSP SDL 1.2 backend support.
- Removed GameCube Makefile.
- Removed WiiU Makefile.
- Eliminated macros.
- Removed
pymo-convert.ps1
andpymo-convert-audio.ps1
.
New Features:
- Added the track "Song of PyMO" for use as startup music on some platforms.
- "Song of PyMO" now serves as startup music on the PSP platform.
- Save data is now compatible across different game resolutions.
- Auto Mode: CPyMO ASCII Art now uses an alternative buffer and hides the cursor.
- CPyMO ASCII Art now supports dynamic terminal resizing during runtime.
- Replaced
pymo-strip.ps1
withcpymo-tool strip
. - Replaced
pymo-convert.ps1
andpymo-convert-audio.ps1
withcpymo-tool convert
. cpymo-tool gen-album-cache
now automatically searches for#album
commands, eliminating the need to manually input list names.
Bug Fixes:
- Fixed an issue where the screen did not refresh after clicking dialogue.
- Fixed a bug where only one folder's games were displayed when
GAME_SELECTOR_DIR_2
was defined. - Fixed a bug where the logical render size was still set in the SDL2 backend under
ENABLE_SCREEN_FORCE_CENTERED
state. - Changed PSV optimization level to O2 to avoid strange behavior observed with O3 optimization.
- Corrected drawing order errors between background effect layers and Fade layers.
- Fixed a memory leak issue when exiting the
album
interface while displaying CGs. - Corrected undefined behavior caused by abnormal CG loading in the
album
. - Fixed segmentation faults caused by missing list files in
music
andalbum
. - Fixed a segmentation fault triggered by the
change
command when script loading fails. - Corrected the misinterpretation of the
GOTO_ENDING
command inmo2pymo
. - Fixed the issue where "Memories of Autumn 2" could not return to the main menu during the ending.
- Fixed incorrect interpretation of the
namealign
field. cpymo-tool gen-album-ui
no longer overwrites existing image files.
Optimizations:
- Added memory trimming for cases where adequate memory cannot be allocated:
- During background loading
- During sprite loading
- When creating critical strings
- When playing BGM
- When using the
scroll
command - When using
BG_FADE
or background fade time is 0, backgrounds will be loaded in a low-memory mode and retried
- Background images will be unloaded when entering the
album
interface to reduce memory usage. - Improved the text extraction API
cpymo_engine_extract_text
. - Allowed responding to cancel actions in confirmation dialogs.
- Improved header file imports, eliminating the need for manual
-I
option configuration. - Optimized the scaling ratio of the right-click menu background to prevent text from overflowing beyond the background.