[实验] SMBX-38A 运行时强制全屏程序
项目链接:https://github.com/HengShao233/smbx38a-ext-launcher
该工程的作者为 @小豆
该工程有两个目的:
- 规范化 38a 版的 SMBX 游戏体验流程,断掉原引擎本身的编辑器功能;
- 增强 38a 版 SMBX 游戏的体验(强制全屏并修正全屏表现,扩展图形渲染能力(比如提供屏幕后处理)等功能)
构建制品
如果成功构建,构建制品见 ./build 目录。
./build/engine-extension/engine-extension.dll
:该文件是扩展引擎的核心库。
./build/main/main.exe
:该文件是扩展引擎的启动器。
./build/redirection/redirection.dll
:该文件负责在 engine-ext.exe 启动时拉起扩展引擎。
./build/shaders/*.cso
:这些 cso 文件是 ./engine-extension/shaders/
下所有着色器的编译制品,着色器的类型判定遵循如下规则:
以 _vs
结尾的、以 vert
开头的、以 _v
结尾的会判定为顶点着色器,入口函数为 main
以 _ps
结尾的、以 pix
开头的、以 _p
结尾的会被判定为像素着色器,入口函数为 main
以 _cs
结尾的、以 _c
结尾的会被判定为计算着色器,入口函数为 main
成品目录结构
大体结构参考 ./template
目录,以下步骤以该目录作为根目录:
- 将构建制品中的 main.exe 和 engine-extension.dll 放到
./
目录(根目录)下。
- 将 smbx38a editor 放到
./engine
目录下,并删除原 editor.exe(smbx.exe)。我们使用目录中原本放有的一个打了补丁的 engine-ext.exe 作为 smbx 本体的启动程序。
- 将构建制品中的 redirection.dll 放到
./engine
目录下。
- 将构建制品中的着色器编译结果 (
*.cso
)放到 ./assets/shaders/
目录下。
- 将游戏关卡放到
./assets/game
目录下。并用记事本编辑该目录下的 main 文件。该文件分为两行,第一行为从 ./
目录到关卡文件的路径,第二行为打开游戏后的窗口名(扩展引擎靠这个定位到 smbx 的主窗口对象,如果不填第二行窗口名则默认为 Super Mario Bros. X by 38A - Version 1.4.5
)。

配置好上述结构后打开根目录的 main.exe 即可进入游戏。
其中 main.exe 可通过特定软件更改图标(如 Resource Hacker)。
理论上的正确运行效果:

👆全屏,且无错误缩放(为了让 4 : 3 的画幅适应绝大多数宽屏,程序里留了黑边)。