Releases: Strrationalism/CPyMO
Releases · Strrationalism/CPyMO
CPyMO Aria v1.1.9
停更说明
鉴于本人因工作原因和健康原因,无力继续维护CPyMO,故跳过1.1.4~1.1.8版本,直接发布1.1.9版本,之后到2024年1月19日之前,CPyMO将会只进行Bug修正,此后不再对CPyMO主分支进行维护。
注意
读取1.1.3及以前的存档时,将会出现立绘坐标错误、背景坐标错误、前景动画坐标错误的情况,在后面的场景中恢复正常后重新存档即可解决
引发这些问题的原因是此版本修改存档数据中坐标的表示方式,使其可以在各个不同分辨率大小的游戏之间通用
废弃
- 移除PSP SDL 1.2后端支持
- 移除GameCube Makefile
- 移除WiiU Makefile
- 消除宏
- 移除
pymo-convert.ps1
和pymo-convert-audio.ps1
新功能
- 增加乐曲《Song of PyMO》以作为某些平台上的启动音乐使用
- 在PSP平台上使用《Song of PyMO》作为启动音乐
- 不同分辨率大小版本的游戏之间存档可以通用
- Auto模式
- CPyMO ASCII Art现在使用备用缓冲区并关闭光标
- CPyMO ASCII Art现在可以运行时动态改变终端大小
- 使用
cpymo-tool strip
取代pymo-strip.ps1
- 使用
cpymo-tool convert
取代pymo-convert.ps1
和pymo-convert-audio.ps1
cpymo-tool gen-album-cache
现在可以自动搜索#album
命令,不再需要手动传入列表名称
Bug 修正
- 修正了在对话点击后没有刷新屏幕的问题
- 修正在定义了
GAME_SELECTOR_DIR_2
时,只能显示其中一个文件夹的游戏的Bug - 修正在
ENABLE_SCREEN_FORCE_CENTERED
状态中依然会在SDL2后端下设置逻辑渲染大小的Bug - PSV在O3优化下会出现奇怪的行为,因此修改为O2优化级别
- 修正背景效果层与Fade层的绘制顺序存在错误
- 修正album界面在显示CG时退出会导致的内存泄漏
- 修正在album中单张CG加载异常时产生的未定义行为
- 修正在music和album中找不到列表文件的情况下产生的segmentation fault
- change命令在加载脚本失败时触发segmentation fault
- mo2pymo中对mo2的
GOTO_ENDING
命令解释有误 - 秋之回忆2不能在结局部分正常跳回主界面的问题
- 修复
namealign
字段不能被正确解释的问题 cpymo-tool gen-album-ui
现在已经不会再覆盖已有的图像文件
优化
-
现在允许对内存分配进行剪裁,当以下情况不能获取足够内存时,将会进行内存剪裁并重试:
- 加载背景时
- 加载立绘时
- 关键字符串无法创建
- 需要播放BGM时
- 使用scroll命令时
-
当使用BG_FADE或背景淡化时间为0时,则以低内存的方式加载背景后重试
-
当进入album界面时,将会卸载背景图以降低内存占用
-
更好用的文本提取API
cpymo_engine_extract_text
-
现在允许在确定取消对话框中响应取消操作
-
改进头文件的导入方式,现在不需要再配置
-I
选项手动指定各种头文件了 -
优化右键菜单背景的缩放比例,使得右键菜单文字一般不会溢出到背景之外
CPyMO v1.1.3
平台支持
PSP平台支持
- 新增SDL 1.2后端
- SDL2后端版本提升至第一梯队,并使其支持ffmpeg以支持全部音频功能
- SDL2后端版本对话历史数量调到24
- 更新图标、启动声音和启动背景图
- 修正键位定义
- 设置PSP工作在333MHz CPU和167MHz总线下
- 已关闭masktrans功能以使其运行流畅
PSV平台支持
- 为减少存储卡IO,不再支持自动存档功能
- 在PSV2000日版和Vita3K上正常工作
- 设置了图标和背景图
- 调整键位以使得它和PSP版本一致
- 开启强制居中模式
- 开启444MHz CPU/222MHz Bus/222MHz GPU/166MHz GPUXBar模式
Wii平台支持
- Wii平台可以实机启动并正常运行
- Wii平台现在打包了元数据和图标
新功能
- 设置界面增加调整值的加减按钮
- 修改文字大小后会立刻反映到设置界面上
- 允许定义
DONT_PASS_PATH_TO_FFMPEG
以阻止FFmpeg直接使用路径加载文件 - CG界面将会对过长的CG进行滚动显示
- CG界面支持显示CG名称
- 创建CG界面缩略图时将会根据画面比例对图片进行剪裁
- 支持UWP ARM64
- 支持通过宏
DISABLE_AUTOSAVE
来关闭自动存档槽位并将其设置为手动存档槽位0 - SDL2默认makefile在设置
DISALBE_AUDIO
环境变量为1时将会禁止播放声音 - 多层UI堆叠
- msgbox允许设置关闭时回调
- SDL1.2后端支持使用SDL_ttf进行字体渲染
- SDL1.2后端支持使用SDL_image进行图片加载
- Switch、PSV支持+键/Start键快速退出
- 只有一个游戏时将会直接启动该游戏而不会启动游戏选择器
- 现在可以通过定义
DISABLE_MASKTRANS
宏来禁用masktrans - 尽管不能通过编译,但还是增加了WiiU的Makefile,日后WiiU Homebrew开发工具可用时可立刻使用
工具
- 修改
pymo-convert-audio-to-ogg
为pymo-convert-audio
使其通用 pymo-convert
现在对特殊平台启用强制音频转换以提升音频兼容性pymo-convert
现在可以完美支持目标为psp的输出
Bug修正
- 触屏和滚轮操作列表UI时选中项混乱
- SDL2后端上的强制居中功能现在将会缩放图像到合适大小
- 部分平台上SDL2后端文本图像会在另一端冒出来一两像素的问题
- 修复Switch上不能正确识别
pymogames
目录的问题 - SDL2后端上播放视频将尽可能利用屏幕空间
- 3DS上视频播放长宽比不正确的问题
- 视频播放器上存在av_frame未被av_frame_unref而产生泄露
- album界面增加绘制边缘选中提示,并且可以关闭加亮模式,以解决SDL1.2在不支持半透明方块混合的情况下不能正常显示CG界面的问题
- 由于O3DS播放视频过于卡顿,已关闭O3DS上的视频播放功能
- 播放视频时第一帧产生花屏问题
- 修正UI模式下错误的刷新行为
- 修正charas不能被即时清理导致skip时内存占用暴涨的问题
- 当
cpymo_backend_image_load
从cpymo_assetloader_load_image_with_mask
调用时会产生UB的问题 - 恢复支持Windows ARM64
- 恢复支持UWP ARM
- cpymo-tool中存在的warning
- 修复宏
LEAKCHECK
失效的bug - 尝试修复cpymo-tool中的内存泄漏问题
- CG鉴赏缩略图生成器内存泄漏Bug修正
- 修正stb_truetype下字体后端可能存在的写越界问题
- PSV版本修改了TITLE_ID
- 修复Switch版不显示标题的Bug
优化
- 当滑动List UI时将会隐藏选中项高亮框
- 安卓和iOS版本在游戏中退出现在将会退回到游戏选择器而非直接退出
- 现在BGM音量大小同时也会被作为视频音量大小
- 将所有的
NDEBUG
宏修改为!DEBUG
宏 - 仅在鼠标/触摸不移动时才会触发长按动作
- rmenu中的字体大小现在跟随设置中的字体大小
- 延长logo1和logo2的显示时长
- game selector翻页尽可能保守
- 3DS的视频播放器现在采用硬件加速的YUV到RGB转换过程
- 禁用了3DS和PSP版中不必要依赖的编译过程
- 3DS版改用64MB内存模式,以避免重启进入大内存模式
- 隐藏不必要公开的结构体
LOW_FRAME_RATE
宏启动的情况下不再允许设置对话速度- 重写
cpymo_textbox
使其拥有更好的性能 - 优化纹理加载失败时3DS后端
cpymo_backend_image_create
返回的错误信息
CPyMO v1.1.2
新功能
- 支持iOS。
- 现在允许仅跳过已读部分,可以在游戏设置中开关此功能。
- 已读内容变暗。
- 增加
software
后端用于在脱离硬件和系统API的情况下进行软件渲染,将输出RGB帧缓冲。 - CPyMO ASCII Art现在支持rule图淡化过场。
- SDL2后端可以通过
DISABLE_VSYNC
宏关闭垂直同步以提升快进速度。
PyMO行为一致性
- 现在say命令将会取消fade_out状态。
- goto和if goto失败时不会崩溃,而是继续执行。
- change不应该破坏调用栈。
Bug修正
- 历史记录中
max_lines
字段没有进行初始化。 - 已修正Win32与UWP平台下鼠标和触屏混合操作时List UI不灵敏的问题。
- 修复List UI上可能崩溃的问题。
- 加载带mask图像失败时可能会导致双重free。
体验改进
- 桌面版CPyMO在使用时若游戏窗口大小超过屏幕大小,则直接创建最大化窗口,并且挑选一个合适的窗口大小。
- SDL2后端新增Menu键支持。
- 支持在SDL 2.0.18及以上版本响应高精度触摸板的平滑滚动。
- 支持在SDL2、SDL1后端上当用户即将关闭窗口时询问是否确定关闭。
- 优化触屏长按操作手感,现在不再需要松开才能响应。
- CPyMO ASCII Art在Windows上的输出效率得到大幅优化,现在GitHub Action上提供Windows版CPyMO ASCII Art的二进制文件。
- rule图淡化方向现在与ONScripter一致。
- 滚动列表要在页面还满的时候就停止滚动,而不是滚动到只有一行。
优化
- 当使用call命令时,若该脚本已经被加载于其他的解释器,则直接调用其他解释器的脚本,而不是重新加载。
- 使用
stb_ds
优化cpymo_hash_flags
和cpymo_vars
。 - 使用柔性数组优化
cpymo_chara
。 - 从
cpymo_interpreter
中拆分出cpymo_script
。 cpymo_parser_stream_span
改名为cpymo_str
。- backlog功能的存储被移动到了堆上以减少静态存储区占用过大导致的崩溃问题。
- 使用
stb_leakcheck
进行内存泄漏检查。 - 在
text
后端上禁用了图像加载功能以减少内存占用。
CPyMO v1.1.1
重要提示
Android CPyMO已经更新签名,需要先卸载原有版本再安装新版本,卸载CPyMO不会造成存档丢失。
改进
- 列表UI添加了滑动惯性。
- 游戏界面向上滑动即可打开回想界面。
- 优化长按手感。
- PSP现在可以实机启动
- 更新PSP的构建环境
- 重写PSP的Makefile使文件布局整洁
- 重新映射PSP键位
- SDL2后端更新
- 允许自定义SDL2_Mixer音频后端的音频格式
- 允许禁用stb库,以替换成SDL2_image和SDL2_ttf
- 重新实现强制居中功能
- 允许禁用鼠标
- 同时按下ALT+ENTER切换全屏时现在不会引发ENTER键误触
- 新增
CPYMO_ARR_COUNT
和CPYMO_FOREACH_ARR
宏用于简化数组操作 - 视障帮助功能整理为
TEXT_EXTRACT
、TEXT_EXTRACT_COPY_TO_CLIPBOARD
和TEXT_EXTRACT_ANDROID_ACCESSIBILITY
- 修正在多个album列表文件的情况下不能正确产生对应album ui界面图像的问题
- 允许通过GNU工具链构建出具有自定义图标和不具有控制台窗口的Windows版CPyMO
- 文字菜单在选中时产生微弱移动效果使得选中状态更加直观。
- Bug修正:
cpymo_utils_replace_cr
具有不正确的行为。 - 增加
cpymo_assetloader_load_icon
及cpymo_assetloader_load_icon_pixels
函数用于加载图标。 - 在HDPI设备上修正了鼠标位置不正确的问题。
- pymo-convert支持在不支持的设备上剔除组件。
- pymo-convert可以显示更多信息。
- pymo-convert可以进行最大比例适配(并为3DS开启)。
- 3DS现在可以等比例拉伸去黑边(以屏幕下端对齐)。
- cpymo-tool现在支持生成album UI缓存图片。
- 3DS, PSV, Android, Emscripten上的ffmpeg已经升级到5.0.1。
- 使得movie行为与pymo一致。
- CPyMO将会检查PyMO版本兼容性。
- 3ds,psv,Emscripten将会从github安装ffmpeg。
CPyMO 1.1.0
改进
- 解决了O3DS上cia版本不能启动的问题。
- PSP上采用16位色帧缓存。
- 在Wii和PSP上流式加载图片。
- 优化Wii体验。
- Wii上可以按需刷新了。
- Wii上现在支持音频播放。
- SDL1后端上将会在srcrect和dstrect中绘制区域大小不同时进行居中处理。
- SDL1后端现在可以自由选择字体渲染质量更偏向质量还是性能。
- SDL2后端现在可以修改帧缓存格式。
- 移动了自动存档的发生时机,使其看起来更加流畅。
- 移除了多余的刷新。
- 已修复当使用CR换行符时CPyMO出现的未定义行为。
- 已修复gameconfig.txt中gametitle为空时的未定义行为。
- 定义
DISABLE_IMAGE_SCALING
宏即可阻止图片组件的缩放行为。 - 重启CPyMO游戏的时候不会再打印cpymo的logo。
- 将会尝试在包中查找长度超过31的长文件名。
- 由小涂增加的适用于Android平台的TTS音频视障帮助。
- 视障帮助中,退出backlog时不会阅读当前文本的问题已经解决。
- 新增CPyMO Text后端,它将仅在控制台上输出游戏文本。
- mo2pymo补丁不能正常读取游戏名称的bug修正。
- mo2pymo补丁不能正常生成
crs
命令的实现的问题。 - mo2pymo补丁现在将会处理秋之回忆1中的
#goto _END
找不到标签的问题。 - pymo2ykm不能正常处理
chara_pos
的问题。 - 改进了CMake和NMake的配置文件,现在它自动扫描源代码并编译,而不再需要手动指定。
- 整理gitignore。
- 为SDL1和SDL2的makefile提供了DEBUG选项。
CPyMO 1.0.9
改进
- 修复当快进时循环音效不会被覆盖的问题。
- cpymo-tool在resize图片时,若比率为1, 1,则只转换格式而不进行缩放。
- 修复pymo-converter在不存在chara目录的情况下报错的问题。
- 立绘命令缓存增加到64个,以应对复杂的立绘情况。
- 在图标不为57*57的情况下将会引发警告。
- 在mask渐变加载失败时将会引发警告。
- 修复找不到脚本文件时会引发UB的问题。
- 修复进入album界面时需要点击一下界面才能操作的问题。
- INVALID_ARG不再会导致游戏卡住。
- libpymo中新增来自YukimiScript编译器的
if
语法。 - 当播放视频时若找不到文件则不应当崩溃。
- 修复了当
select
系命令的init_position
超过选项数时会发生崩溃的问题。 - 修复了文本框不正常的问题。
- libpymo中if_goto的实现不正确,所有的运算符都会被强制替换为eq。
- 修复了在选择支关闭右键菜单时可能会引发崩溃的错误行为。
- 菜单的鼠标选择和点击统一以最后一个选中的目标为准。
- 优化album返回时可能会出现误操作的问题。
- 已经修复pymo-convert在某些情况下不能正常使用的问题。
- pymo-convert可以自动生成目标目录。
- 新增pymo-strip工具用于精简pymo游戏数据包。
CPyMO 1.0.8
新功能
- CPyMO ASCII ART变种,此变种将会在控制台上输出游戏画面。
- 增加SDL1.2后端支持,以在老旧的平台上运行。
- 新增Nintendo Wii平台支持。
改进
- Bug fixed: 不能正确读取存档中scroll的背景坐标的问题。
- 文本框显示效果优化。
- SDL2后端的头文件在大部分情况下将会使用更通用的路径<SDL2/*.h>。
- 禁用了游戏选择器中的退出键。
构建过程
- 所有的Windows构建都可以携带pymo的图标。
- 优化了所有的makefile,使其可以被mingw正确构建。
CPyMO 1.0.7
改进
- Emscripten现在可以使用FFmpeg播放音视频,并升到第二梯队
- Android现在可以使用FFmpeg播放音视频,并升到第二梯队
- Android最低版本要求从4.1提升到4.3
- Android上隐藏了状态栏
- Bug fixed: 桌面版不能正确加载3通道的icon.png问题
- Bug fixed: pymo-converter在PATH目录中工作时不能正常运行的问题
- Bug fixed: 当引擎启动失败时将不会创建save文件夹
- 3DS版C摇杆死区扩大
- 移动函数
cpymo_backend_text_render
到cpymo_backend_font_render
- Bug fixed: 某些游戏正常退出时会产生
NO_MORE_CONTENT
错误输出 - PSV现在使用FFmpeg作为音视频后端,并且使用vpk安装包
- 快进时不会播放非循环音效和语音以提升快进性能
- SDL2后端在脚本引起的崩溃中将会弹出错误对话框
- 设置了全局存档的dirty检测,减少不必要的写入
- Bug fixed: SDL2后端播放视频改为适配屏幕而非拉伸
- PSP禁用语音通道以降低内存占用
- 移动动画采用缓动曲线
工具
- 增加
convert-audio-to-ogg
工具用于将游戏音频转换为ogg - 现在可以通过nmake和GNU Make来构建CPyMO和cpymo-tool
- pymo-converter现在可以转换音视频
- cpymo-tool现在可以将一组图片打包为单张图片用于
select_img
等命令
构建过程
- 现在3DS和PSV平台的FFmpeg将会构建并安装到仓库内,不会污染开发环境
- 不使用CMake的用户现在可以在Windows下使用nmake来构建cpymo和cpymo-tool
v1.0.6
CPyMO 1.0.5
新功能
- 增加Android平台支持
- 增加UWP平台支持
改进
- 在rmenu界面中长按可退出rmenu界面