重温儿时梦想:修复一台IBM PS/1 2168电脑

2025-09-12

1993年,14岁的作者对电脑充满热情,一台IBM PS/1 2168电脑成为他儿时的梦想。多年后,作者购入一台状况良好的二手IBM PS/1 2168,并进行了修复和升级,重温儿时与电脑相伴的美好时光。文章详细记录了修复过程,包括选购配件、安装系统、解决问题等,并着重介绍了这款经典电脑的独特设计和卓越性能,例如其经典的Model M键盘和出色的可扩展性。这不仅仅是一次电脑修复,更是一次充满怀旧情怀的旅程。

阅读更多
硬件

重温儿时梦想:修复一台IBM PS/1 2168电脑

2025-05-18

作者在1993年接触电脑后,一直对IBM PS/1 2168情有独钟。2024年冬天,他决定圆儿时梦,修复一台该型号电脑并运行DOOM游戏。文章详细描述了寻找、购买、以及修复这台30年前的经典电脑的过程,包括挑选键盘、屏幕、安装系统、升级CPU和缓存等,展现了作者对复古电脑的热爱和精湛的技术。

阅读更多
硬件 IBM PS/1

告别“Hello World”:深入理解可执行文件生成

2025-05-05

作者回顾了学习C和C++的愉快经历,但将程序编译成可执行文件的过程却异常痛苦。这促使他撰写了这个系列文章,旨在填补现有编程教材中关于编译过程的知识空白。文章将深入探讨编译器的核心概念,并通过可复现的步骤(基于bintools和驱动程序的详细模式)来验证结论,最终帮助读者构建完整的可执行文件生成流程认知图谱,不再被神秘的LNK2019和LNK4002等错误困扰。

阅读更多
开发 编译过程

fastDOOM:如何让DOOM在486上飞速运行

2025-03-04

本文讲述了fastDOOM项目如何将经典游戏DOOM的运行速度提升30%甚至更多。作者通过测试多个版本的fastDOOM以及原始DOOM,结合代码分析和git历史记录,深入挖掘了性能提升的秘诀。这其中包括精简代码、内联函数、优化渲染方式(如处理模式Y和模式13h)、以及针对不同CPU和总线进行的特定优化等。作者还探讨了不同视频模式(Mode Y和Mode 13h)对性能的影响,以及一些未成功的优化尝试。最终,作者对fastDOOM项目作者Victor Nieto的精湛技艺表达了由衷的赞叹。

阅读更多
游戏

Quake 3 源码回顾:网络模型

2024-11-23

本文回顾了Quake 3引擎优雅的网络模型,它基于UDP/IP协议,并采用快照和增量更新机制来最小化数据传输量和弥补UDP不可靠性的缺点。服务器端保存客户端最近的32个游戏状态快照,并通过比较当前状态和之前的快照生成增量更新包。即使UDP数据包丢失,系统也能自动重传旧数据和新数据。文章还解释了Quake 3如何使用C语言的预处理指令实现内存自省,以及NetChannel模块如何通过预分片避免路由器分片,并提供可靠和不可靠消息的抽象。

阅读更多
未分类 Quake 3 网络模型

超级任天堂图形系统工作原理

2024-08-21

本文介绍了超级任天堂游戏机图形系统的硬件架构和工作原理,包括像素处理单元(PPU1和PPU2)、VRAM、OAM、CGRAM等组件的功能,以及不同图形模式下VRAM的访问方式。文章还探讨了PPU内部结构的研究现状,并展望了未来对图块贴图和精灵渲染的深入研究。

阅读更多
未分类

SNES 图像:186.2 纳秒的挑战

2024-08-10

本文深入探讨了超级任天堂(SNES)图形系统的硬件和渲染机制。SNES 需要在极短的时间内(每像素 186.2 纳秒)生成像素并将其发送到 CRT。由于 VRAM 访问延迟的限制,SNES 巧妙地利用了 PPU 内部内存、平面贴图布局以及 HBLANK 时间等技术来实现多层背景和精灵渲染。文章还对比了不同游戏机时代的精灵渲染技术,例如精灵单元、行缓冲区和精灵帧缓冲区,并解释了 SNES 如何通过其独特的架构在有限的硬件资源下实现高效的图形处理。

阅读更多
未分类

深入解析超级任天堂视频系统

2024-07-29

本文作者从任天堂工程师的角度,深入浅出地解释了超级任天堂(SNES)视频系统的运作原理。文章从90年代初期电视机的结构入手,详细介绍了CRT显示器的构成、工作方式以及控制信号。作者以NTSC制式为例,解释了SNES是如何生成符合标准的视频信号,并详细分析了SNES的画面分辨率、刷新率、消隐区等技术细节,以及PAL制式下的差异。此外,文章还介绍了SNES支持的多种视频输出方式,包括RGB、复合视频和S-Video,并解释了欧洲版SNES在PAL制式下遇到的挑战和解决方案。

阅读更多

驱动编译器

2024-07-27

本文介绍了编译器驱动程序以及编译过程的三个阶段:预处理器、编译器和链接器。预处理器将源代码文件转换为翻译单元,编译器将翻译单元转换为可重定位的目标文件,链接器将所有目标文件组合在一起生成可执行文件。文章还介绍了如何在Linux平台上使用gcc和clang编译器驱动程序,并解释了与创建可执行文件相关的核心概念。

阅读更多