开发故事发布于 Thor's Workshopv0.9.13
写错的一个数字
世嘉创世纪的游戏在 Android 上完全无法运行。原因是一个数字:画面高度被记录得比实际少十六行。层层检查都没能发现,持续了数月。
发布前开发记录N-EMU 支持十一种机型。每种机型的画面尺寸都不同,因此这些数字集中放在一处,由 iOS 和 Android 共同读取。写一次就不会两边不一致——当初是这么想的。
世嘉创世纪那一栏写的是 320x224,而内核实际给出的画面是 320x240,多出十六行。
Android 会依据那个数字创建存放画面的容器。容器少了两万字节,画面放不进去,只留下「Native engine error 7」。世嘉创世纪的游戏一帧也没有画出来。
iOS 没有问题。它不会把画面复制进容器,而是直接在画面所在的位置绘制,所以即使尺寸记错也伤不到它。
没能发现的原因就在这里。iOS 的检查早就知道世嘉创世纪会输出 224 行或 240 行,并且写成两者都接受。知道真相的一方不会受伤,会受伤的一方却没有检查。两边的检查都是绿灯。
发现它靠的不是运气而是顺序。清点实机上究竟运行过什么之后,发现有六种机型一次也没有启动过。为了在没有游戏的情况下也能验证,制作了测试卡带,在平板上逐个运行,轮到世嘉创世纪时出现了错误。
数字已改为 320x240。游戏即使选择 224 行模式也能容纳其中,画面比例也恢复为与实机相同的 4:3。此外还新增了一项检查,确认每种机型实际输出的画面不超过所记录的尺寸——加进去的那一刻就抓出了这个问题。
相关开发故事
- 开发故事v0.9.11
与任天堂 DS 相似的折叠屏
折叠屏展开后可以把屏幕分成两块使用,任天堂 DS 同样有两块屏幕。利用这一相似结构,在展开的屏幕上像掌机本体那样把上屏放大,并把触摸屏放在方向键与按键之间。
- 开发故事v0.2.0
把多个机种放进一个应用
连接多个模拟器核心,让不同机种的游戏也能在同一个游戏库中选择和管理存档。