编程与软件工程lofibucket.com
在示波器上运行 Quake
Quake on an oscilloscope
2014 — 2017,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
作者把经典游戏《雷神之锤》(Quake) 移植到了示波器上:通过声卡输出精心构造的音频信号,驱动示波器的 X-Y 输入,用矢量线条在屏幕上实时渲染出可玩的 Quake 画面。文章详细介绍了实现原理,包括音频采样率限制和低通滤波带来的独特视觉效果。
为什么经久不衰:它展示了用完全非传统的方式驱动显示设备的极客创造力,这种'为什么不做?做了!'的项目精神历久弥新,对图形、信号处理爱好者至今仍有启发。
HN 评论精选
过来人回忆:示波器显示正是帧缓冲普及前的主流图形方式,并对比了几十年间硬件成本的巨变。
这就是 1980 年代帧缓冲器还买不起(低于 5 万美元)时我们做计算机图形的方式。1975 年我在 MIT 数字系统实验室,团队用 TTL 门电路搭了一个硬件版生命游戏,我负责设计显示:在示波器上按时序画 X-Y 点。那时 1KB 内存还要一百美元,实验室按团队配给内存芯片,我们把自动机存在两个 64x64 位的帧缓冲里,共 2KB。第一代图形语言都是面向矢量的,以支持示波器或笔式绘图仪。我 1980 年买的第一台彩色帧缓冲终端是 512x512x8 位,花了 3 万美元,如今在低端手机上成本不到一美元。
peter303查看英文原文
This was how we did computer graphics before there were affordable (less than $50K) frame buffers in 1980. In my 1975 MIT Digital Systems Lab my team constructed a hardware Game Of Life out of TTL gates. I designed the display as timed X-Y points on an oscilloscope. In those days a kilobyte of RAM still cost a hundred dollars, so the computer lab rationed the number of memory chips each team could use. I recall we stored the automata in a dual 64 x 64 bit frame buffer or two kilobytes overall. The first generation computer graphics languages were vector-oriented to support either oscilloscopes or pen-plotters. My first color frame buffer terminal was 512 x 512 x 8bits $30K AED in 1980. I think this costs than a dollar on a low-end cellphone now.
低通滤波造成的抖动线条反而形成独特美感,值得做成游戏风格。
文中提到发射频率很高(每周期 5 个采样点即 19.2 kHz),音频输出被低通滤波导致线条歪歪扭扭。这个效果其实看起来超棒,我真想玩一款这种美学的游戏。
mistercow查看英文原文
>This means the frequencies emitted are very high (5 samples per period is 19.2 kHz) and it seems the audio output is being low pass filtered resulting in silly wobbly lines. That effect actually looks amazing. I'd totally play a game with that aesthetic.
看似无用的项目背后是纯粹的求知欲和创造力,值得敬佩。
这就是那种'你为什么要做这个?'然后读完变成'好吧……抱歉问了,完全理解了'的文章。我非常赞赏这种好奇心。
schlowmo查看英文原文
This is one of those Why would you even do that? followed by Oh well...sorry for asking, totally got it article. I really applaud such curiosity.
又一段亲历者回忆:早期矢量显示器难用但演示模式令人着迷。
1979 年我在大学用过一台连接 DEC-10 的 Tektronix 矢量扫描显示器。因为大家讨厌它默认的非刷新模式,它几乎总是空闲。我发现只要在脑中把它当作两列的 ASR33 打字输出设备、手动翻页,就能凑合用。它的调试演示模式超酷,可以随心所欲地画正弦波,我在上面玩得很开心。
ggm查看英文原文
I used to play with a tektronix vector scan display at university in 1979. it was connected to a Dec-10 for specialist use. It was almost always free because people hated the non-refresh default operational mode. I found that as long as I somehow mentally treated it as a 2-column ASR33 typed-output device, and did page refresh by hand, it was ok to work on (the two page thing was just weird. it folded output down two halves of the display) Its debug-demo mode was uber-cool. you could plot sine waves to your hearts content. I had a lot of fun on that.
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选