前言
其实早在2017年年底就已经能够正常运行,但有诸多显示问题,随着SDL2的逐渐完善,问题也逐渐减少。 在经历高考复习终止,暑假摸鱼搁置,开学没空继续 等等,一年的时间没有做。
终于在大学生活稳定后,vita-SDL2的11月的一次小更新后,让我想起了这个项目。经过连续几晚的爆肝,终于修复了绝大多数BUG。
各种小BUG也在后续的调试、内测中被修复。
虽然仍然存在一些BUG,但基本能运行所有ONS游戏了!
目前是阉割了部分显示效果以换来游戏的稳定运行
Github:https://github.com/wetor/ONScripter-jh-PSVita
Github活动
更新记录
Private 2017-2018
无UI版
Alpha0.1 2018.12.17
简单的vita2d UI选择游戏界面
Alpha0.2 2018.12.18
- 修复游戏数为0导致崩溃的BUG
- 修复上下键选择游戏显示BUG
Alpha0.3 2018.12.23
Alpha0.3已经能运行几乎所有的ONS游戏了,视频仍不能播放
- 修复内存不足的BUG,此BUG曾导致很多游戏资源无法正常读取。
- 准备增加视频播放相关
private 2018.12.25-2019.1.2
开始移植savemgr的GUI界面
- 移植起来挺麻烦的,比自己写要慢,但是效果肯定是移植的好…
- 最近学业比较繁忙,原计划在31号发布,但因为比赛所以暂定元旦假期发布
- [2018.12.30]增加启动设定方面的功能
- [2019.1.1]增加触摸开关、优化一些UI细节
- [2019.1.2]增加无UI启动游戏功能,为ONS游戏独立气泡做准备
private 2019.1.2
- ONScripter-jh更新0.7.6版(移植用的是0.7.4版),准备同步移植最新版,新版稳定后将转移至0.7.6版进行开发
- [2019.1.3]安装气泡功能测试正常,正在完善独立气泡功能。
- [2019.1.4]安装气泡功能基本完成,增加帮助。开始最后美化UI。预计周末与大家见面。
- [2019.1.5]优化细节。增加关于。调整GUI键位。部分小功能无法完整实现,不过不影响使用。
- [2019.1.6]增加显示文件夹大小功能。
public 2019.1.6 21:00
- 修复如果未创建ux0:onsemu文件夹启动软件报错的BUG,现已将配置文件移至ux0:data/onsemu内,onsemu文件夹仍要手动创建。
public 2019.1.15
- 修复许多游戏存档闪退的BUG,原因为部分游戏设定存档文件夹,文件夹不存在导致闪退。
Public Beta0.2 2019.1.15
Beta0.2(测试版0.2) GUIversion 101
下载地址
博客网盘下载
下载方法:https://drive.wetor.org/
下载地址:网盘下载
百度网盘
Beta0.2 2019.1.15 :https://pan.baidu.com/s/1dpPqlm1Rjo7p2vJacEpkyA 提取码: ONSV
备用链接: https://pan.baidu.com/s/1shfr_yPxFet-Z4J7TvZywA 提取码: c2b9
使用方法
将ONS的游戏直接放到 “ux0:/onsemu/” 或者 “ur0:/onsemu/” 或者 “uma0:/onsemu/” 下即可
确认 “onsemu/游戏名/nscript.dat” 或者 “onsemu/游戏名/0.txt” 存在
文件名可以并且建议用中文,是生成气泡的标题名
源代码使用&感谢
- 感谢 小凱(@kane33936)一直以来的支持!
- 感谢 jh10001 对我一些可笑问题的解答!
- 感谢 唯一、小凱、光影的初期协助测试!
源代码使用
ONScripter-jh 作者:jh10001(@jh2711H)
SDL2-Vita 和 SDL2相关库(ttf、mixer、image) 作者:rsn8887
VitaShell 作者:TheOfficialFloW(TheFlow)
vita-savemgr 作者:d3m3vilurr
vhbb 作者:devnoname120
vitacompanion 作者:devnoname120
debugnet 作者:psxdev
sdlpal-vita 作者:usineur
iniparser 作者:ndevilla
libvita2d 作者:xerpi
vita-luajit 作者:hyln9
更多待补充。
目前存在问题
序号 | 问题 | 描述 | 现状 |
---|---|---|---|
1 | 视频无法播放 | 寻求mp4播放解决方案,最好是能直拿来用的源码233 | 存在 |
2 | 存档缩略图全黑 | getscreenshot、savescreenshot 命令全军覆没 | 存在 |
3 | 部分游戏blt命令问题 | 如寒蝉鸣泣之时开头第一个动画效果 | 存在 |
4 | 存档文字问题 | 如美少女万花镜3读档部分存档无法显示时间、文字等 | 存在 |
5 | 文本框问题/菜单背景问题 | 部分游戏黑色半透明文本框强制隐藏,不然会出现黑屏BUG,如寒蝉就是被隐藏了半透明文本框,还有本来打开菜单背景会变暗的,现在也全都没了,取而代之的是菜单文本默认开启阴影 | 存在 |
6 | 逐帧动画卡顿 一些特效卡顿 | 如美少女万花镜3开头动画以及一些过场动画,原因是游戏分辨率太高(万花镜3是1280*720),ONS都是按照原分辨率进行运算和显示的【即虽然PSV分辨率为544P,但实际游戏窗口大小仍为游戏的720P,运算量也是720P的,仅输出到屏幕时被压缩成544P】,处理器太弱导致卡顿【不然为什么那么多PSV游戏要降低分辨率呢233】。此问题会尽量优化。 | 存在 |
7 | 载入慢 | PSV磁盘读取速度…有点慢,在加上单线程读取,绘制,所以不读取完是不能显示的。 | 存在 |
8 | GUI游戏名乱码 | 如女装山脉,应该是脚本编码问题 | 存在 |
9 | GUI游戏名为ONScripter-Game | 一些游戏没有使用caption(设置窗口标题)命令,所以无法读取标题 | 存在 |
10 | 部分简单自制游戏文本问题 | 不兼容jh版脚本写法,导致文本未被清除重叠显示 | 存在 |
11 | 过渡特效闪黑屏问题 | 由于问题 5 导致的一系列问题,如寒蝉(又是你233)的一些过场效果会先黑屏在转场,正常的应该是背景变暗然后转场变亮。 | 存在 |
12 | GUI制作气泡问题 | 1、生成的气泡只是一个快捷方式,游戏本体仍在onsemu/中,气泡大小一般在4MB左右。 2、生成的气泡名称是根据onsemu/中rom文件夹名称来决定的,因为一些游戏的标题可能会乱码(问题8)或者太长。vitashell好像不能修改中文文件夹名,所以传游戏时请改好文件夹名称,之后或许会有一些文件操作的功能。 3、生成气泡的TITLE ID(app文件夹中的9位唯一ID)是根据当前日期的 天、小时、分钟、秒决定的【本来是想弄序号递增的,但是我这简陋的GUI好像没权读取app文件夹中的TITLE ID,只能暂时用这个基本不会重复的方式命名了】,格式为”G”+两位天数+两位小时数+两位分钟数+两位秒数。 4、生成气泡的图标问题。这个问题的解决方法可能只有做图标包了,因为PSV的图标格式要求比较严格(png 8位index图像),不会写转换…只能用默认图标了,如果有人有意愿做图标包,可以联系我,功能可以加。 5、气泡重复问题。目前没有任何判重功能,也就是说一个游戏可以生成无限个气泡,如果需要更改气泡的默认启动设置,建议删掉气泡重新生成。 | 存在 |
13 | 存档位置问题 | 目前没有增加设置存档目录功能,全都是默认在rom目录中 | 存在 |
14 | GUI各种文本问题 | 超长不可避免,请手动无视 | 存在 |
15 | GUI字体问题 | 默认字体为苹方字体,在eboot目录中,不建议自己更换字体,可能会导致一些空格、文本错乱… | 存在 |
16 | 按键问题 | 主要出现在快进和自动模式,开启快进后再次按下很大几率不会停止快进,需要长按或者按三角才能正常停止快进。 | 存在 |
17 | 窗口化问题 | 在一些游戏中的设置,将全屏模式调为窗口模式后,两侧无用区域会停止刷新,导致画面残留。建议在启动时设置 | 存在 |
18 | 部分游戏存档闪退 | 如勇者大战魔物娘。学校发生过的恐怖故事也会闪退。 | 已修复 |
19 | GUI太丑 | emmmmm…有时间再说 | 不存在 |
想说的话
最早想做这个大概是17年年末,发现了SDL2的存在,趁着刚刚装好的VITASDK环境,想试着编译并运行ONS,不过当时还不太了解linux和vita自制程序的开发,尝试了很久也没有什么成果。
在一日 凯kane 发了一个关于SDLPAL(仙剑奇侠传SDL版)的PSV移植版本,看到了ONS移植的希望。当然,纯属只是在石头门零汉化弄完后闲着没事干而已。
最初遇到的最大问题就是编译问题,在此之前我甚至连makefile是什么都不知道,还有各种链接库,经过很久很久的尝试,才最终将makefile搞定,成功编译。但运行还是有很多问题。
当时我的机器是3.60版本,有一个非常好用的插件叫做psp2shell,这个插件能远程执行一些命令并且最强大的是用钩子获取一个vitasdk的printf的输出内容并输出到远程(PC)端控制台。
在很久的调试后终于能够正常在PSV上运行ONS了,当然,由于内存未解锁,对ONS的了解也不多,废了大量的时间也只是能够保证一些游戏正常运行但不能正常显示。记得我测试的第一个游戏是星之梦,单纯的只是因为体积小、我又玩过。
具体已经有些记不清了,不过可以确定的是,在2017年12月31号,我在多玩上发布了一个“伪预告”贴,当时是准备把ONS在很短时间内调试好并在新年发布。但是不太了解(SDL2、ONS)的我还是太天真了,仅仅修改ONS源码并不能解决一些严重的显示错误。何况,当时高三的我仅有的C#和C/C++基础能力实在有限,最后不了了之。
在2018年四月份还是五月份时,凯 突然告诉我SDL2更新了,我马上去测试,并且惊喜的发现很多问题被修复了,按键触屏也能使用了,不过一些坐标还是有问题。这里不得不说一下在这期间发生的让我不想继续的事,就是我的PSV升级到了3.65,psp2shell不能用了!
记得当时我还在贴吧发过牢骚,称3.65固话虽然能玩新游戏,但是一些插件却不能使用了。这个插件不能用,调试变得极为麻烦,虽然也向大神反馈过,得到的只有在很久以后另一个github用户给我推荐的另一个插件。
补充一下,当时我对psv自制程序开发还是几乎一片空白,对linux也一知半解,不过在不断的摸索与调试中,逐渐的了解了ONS-jh。顺便一提,调试的次数至少要好几百次。
不过由于学业(高考)和娱乐(暑假)再加上忙碌(大学),一直搁置到2018年11月底,因为SDL2的一次小更新,重启了这个项目。然后肝了几个晚上,以前一直很迷茫的问题也随着调试次数的增加而解决。其实移植下来代码并不需要大刀阔斧的修改,只需要修改一些关键地方,在加上对应的库稳定,makefile没问题,基本上就能运行游戏了。
最近这一个多月来,除了修复各种模拟器错误,还努力制作一个实用的UI界面。开始界面是自己写的,很简陋,功能上BUG很多,最后听小凯的意见开始修改savemgr的UI。这个UI功能比较完善,但是却很难移植(还是说vita的界面都那么复杂吗?),弄了好几天才把框架移植过去,之后就是漫长的修改、添加功能了,不过还好,这个时候我想起了Vita3K这个PSV自制程序模拟器,用来调试UI真的再方便不过了(无法运行ONS游戏)。
先不说成果如何,看起来依旧很简陋,不过我认为,我付出的确实很多,社团都鸽了好多次…顺便一提社团是指CTF(我是菜鸡)。再所有同学都不知道我在做什么,每天熬夜那么晚,仅有几个同学知道我是在移植模拟器的情况下,还是在2019年的第一个星期给怼完了beta版,正式版还是遥遥无期呢。
这里我要再次感谢一下小凯…谢谢每次听我吐槽这个ONS…
只是一个小东西,在大多数人看来不是很难得东西,我却浪费了很多时间,我自己都觉得有点不值得…
果然
我还是菜…
所以我要去学习…以前的坑会尽量填,如果不能填就把东西放出来(没错,就是指深渊矿坑,这个我会另外说的)
顺便,希望能遇到CTF逆向大佬带我飞
如果未来有钱买了NS,会研究NS版的,包括PSV不肯能移植到kirikiri,我会研究的(谁知道能不能成功呢233)。【NS版移植已完成】