Hacker News 中文摘要

RSS订阅

SDL现已支持DOS系统 -- SDL Now Supports DOS

文章摘要

开发者AJenbo提交了一个Pull Request,为SDL库添加了对DOS平台(DJGPP)的支持。该请求编号为#15377,旨在扩展SDL的跨平台兼容性。

文章总结

SDL 添加 DOS 平台支持 (DJGPP)

主要内容概述

该 Pull Request 为 SDL (Simple DirectMedia Layer) 库添加了对 DOS 平台的支持,使用 DJGPP 工具链进行开发。这是由 AJenbo 发起,多位贡献者共同完成的合并请求。

主要特性

已实现功能

  • 视频: 支持 VGA 和 VESA 1.2+ 帧缓冲,RGB 和 8 位索引色模式,支持 VGA DAC 调色板编程,带垂直同步的硬件页面翻转,退出时保存/恢复 VBE 状态
  • 音频: 支持 Sound Blaster 16 (16 位立体声,最高 44.1 kHz)、Sound Blaster Pro (8 位立体声,最高 22 kHz) 和 Sound Blaster 2.0/1.x (8 位单声道),均通过 IRQ 驱动的 DMA 和双缓冲自动初始化
  • 输入: 支持带扩展扫描码的 PS/2 键盘,INT 33h 鼠标接口,通过 BIOS INT 15h 自动校准的游戏手柄
  • 线程: 使用 setjmp/longjmp 和栈修补的协作式调度器
  • 定时器: 基于 PIT 的定时器,使用 DJGPP 的 uclock() 提供约 1.19 MHz 分辨率
  • 文件系统: 通过 DJGPP 的 searchpath() 实现 GetBasePath/GetPrefPath,回退到 POSIX 文件系统操作
  • 构建: 提供 CMake 交叉编译工具链文件,DJGPP CI 作业,预填充缓存以加快配置

未实现功能

  • 音频录制功能(仅支持播放)
  • 原生 SDL_TIME 实现(复用 Unix gettimeofday
  • 共享库加载支持(无 SDL_LoadObject

构建方法

bash cmake -S. -Bbuild-dos \ -DCMAKE_TOOLCHAIN_FILE=build-scripts/i586-pc-msdosdjgpp.cmake \ -DCMAKE_BUILD_TYPE=Release cmake --build build-dos -j$(nproc)

贡献者

该功能是多人协作的成果,主要贡献者包括: - @icculus - @madebr - @glebm - @jayschwa - @ccawley2011 - AJenbo(负责最终完善和稳定性修复)

测试情况

该端口已在 DOSBox 中通过 DevilutionX 进行了广泛测试,但尚未在真实硬件上进行测试。大多数演示程序都能正常工作,但自动化测试中仍有一些格式化函数相关的问题。

后续工作

合并后可能需要进一步优化和改进,特别是: - 光标透明度处理 - 页面翻转功能在某些 NVIDIA GPU 上的兼容性问题 - 性能优化

该功能计划作为 SDL 3.6.0 版本的特性发布,不会回溯到 3.4.x 版本。

评论总结

总结评论内容如下:

  1. 对DOS环境下运行SDL的期待与兴奋

    • 多位用户表达了对SDL支持DOS的积极态度,认为这将扩展游戏运行环境。
    • 引用:"All that's left now is SDL for UEFI, and then all our games can run in a pre-OS environment." (ronsor)
    • 引用:"Good - now we can play more DOS games again!" (shevy-java)
  2. 对技术实现的讨论

    • 用户提到已有类似技术(如HXDOS)能够通过模拟DirectDraw支持SDL运行。
    • 引用:"Technically this already worked with HXDOS, which emulated DirectDraw well enough that SDL could use it." (Dwedit)
    • 引用:"This is an especially funny screenshot as DosBOX itself is built on SDL." (alnwlsn)
  3. 对实际用途的质疑

    • 部分用户质疑现代是否还有人需要DOS环境运行SDL,认为其应用场景有限。
    • 引用:"Uhm... excuse me? Why? Is there anyone even using DOS for anything serious these days?" (jan_Sate)
  4. 对开源项目维护的信任

    • 用户认为SDL作为开源项目,已有多个移植版本,对其维护能力表示信任。
    • 引用:"But they already have a lot of ports, so I trust they know what they're getting themselves into." (looneysquash)
  5. 其他观点

    • 个别用户表达了困惑或幽默,如误读标题或调侃技术栈的复杂性。
    • 引用:"I got really confused and thought this was sdf, I only read the comments and none of them made sense" (dwedge)
    • 引用:"Perfect! I was just doing some Turbo C development inside DOSBox-X inside Debian GNU/Linux inside VMware Fusion inside macOS this morning." (jlokier)

总结:评论整体对SDL支持DOS持积极态度,但对其实际需求和维护能力存在不同看法,同时包含一些技术讨论和幽默调侃。