Game Boy / Color 的架构

Rodrigo Copetti 的实用分析

译者:Carryspider

经典版 - 最后更新于:2024年12月21日

可用语言:🇬🇧 - English, 🇫🇷 - Français, 🇵🇱 - Polski, 🇪🇸 - Español, 🇨🇳 - 简体字, 🇹🇷 - Türkçe, 👋 - 添加翻译


关于此版本

“经典版”是 “现代版” 的替代版本。 它不需要 Javascript、最新的 CSS 或复杂的 HTML 支持就能工作。 它更适合电子书用户、过时的浏览器或使用无障碍工具的读者阅读。另外,电子书用户现在可以从这里查看 电子书版

两个版本内容完全相同, 只是交互式部件被简化为纯 HTML。 如果读者想尝试“完整版”,可以使用切换回原始文章的链接。

和其他文章一样,这篇文章可在 Github 上查看,这样读者可以报告错误或提出修改。这里还有一个 前置阅读材料 可用来帮助理解该系列文章。作者还接受 捐助翻译 以帮助提高现有文章和即将发表的文章的质量。


目录

  1. 相关影像
  2. 快速入门
    1. 型号多样化,分析也要多样化
  3. 中央处理器 (CPU)
    1. CPU 核心
      1. 彩色效果
    2. 硬件访问
    3. 可用内存
  4. 图形
    1. 硬件组织
    2. 构造帧
      1. 图块
      2. 背景层
      3. 窗口
      4. 精灵
      5. 结果
    3. 机密与限制
      1. 晃动效果
    4. 添加色彩
      1. 操作模式
      2. 整理(新)内容
        1. 视觉效果
        2. 额外的空间
  5. 音频
    1. 功能
      1. 脉冲
      2. 噪声
    2. 秘技与局限
  6. 操作系统
    1. 启动过程的变化
  7. 游戏
    1. 卡带的类型
    2. 外部通信
  8. 反盗版
  9. 这就是全部了,伙计们。
  10. Copyright and permissions
  11. 来源 / 继续阅读
  12. 参与贡献

相关影像

型号

Image
原版 GameBoy。
发布于 1989 年 4 月 21 日(日本)/ 7 月 31 日(美国)/ 1990 年 9 月 28 日(欧洲)。
Image
下一代 GB 名为 GameBoy Color。
发布于 1998 年 10 月 21 日(日本)/ 11 月 18 日(北美)/ 11 月 23 日(欧洲)。

主板

Image
主板
主板可见版本号“04”。 注意“DMG”(名称取自 Dot Matrix Game)是原版 GameBoy 的代号。
Image
带有重要部件标签的主板

图示

Image
主架构图
基于原版 GameBoy 绘制。

快速入门

GameBoy(GB)系列可以看作 NES (即日版的 FamiCom) 的便携版,只是在性能上受到了限制。不过,它的一些非常有趣的功能,仍然能够让我们眼前一亮。

型号多样化,分析也要多样化

该掌机的火爆导致其各种变体的出现(例如 Pocket、Light,甚至是兼容 超级任天堂 的型号)。 其实,GameBoy 系列掌机横跨两个世代(即第四、第五世代): 第四世代诞生的是单色版的 GameBoy(以及它的各种改进版本);而在第五世代诞生的是 GameBoy Color(虽然有时也被归为第四世代,但它比第五世代的 Virtual Boy 出现得更晚)。 好消息是,这篇文章将这两款都包括在内。 所以读完这篇文章,您会很好地理解 GameBoy 的工作原理,以及它是如何演变成 Color 版本的。


中央处理器 (CPU)

任天堂没有选择在主板上放置许多现成的芯片,而是采用 单芯片设计 来容纳(和隐藏)包括 CPU 在内的大部分组件。 这种芯片被叫做 SoC(System on a Chip,“片上系统”)—— 在这里,SoC 就是专门为这款游戏机打造的芯片,这使得任天堂能够根据自己的需求(能效、反盗版与额外的 I/O ,等等)进行定制。 同时也意味着,这种芯片不可能通过零售渠道买到,这让当时的竞争对手更难以仿制它。

GameBoy上使用的 SoC 被称为 DMG-CPU(也叫 Sharp LR35902[1],从名字里可以看出,这是由 Sharp 生产的。 这家公司和生产 NES CPU 的供应商 Ricoh 一样,与 Nintendo 的关系非常密切。

CPU 核心

DMG 的主处理器是 Sharp SM83 ——这是 Zilog Z80 与 Intel 8080 相融合的产物。Z80 在当时的应用非常广泛,你可以在家用计算机、德仪图形计算器,以及 Sega Master System(SMS) 和 Game Gear 中见到它。 SM83 运行于大约 4.19 MHz,看上去比 1 MHz 的CPU更快;但这里必须指出,处理器的时钟频率有时是会 骗人 的。

Image
位于 GameBoy 主板上的 DMG-CPU

回顾我们在 SMS 上的分析,我说过“Z80 是 8080 的‘超集’” 。 所以与这两个处理器相比,SM83 多了什么,又缺了什么? [2]

此外,Sharp 还增加了一些不存在于 Z80 和 8080 的 新指令 , 这些额外的指令针对 Nintendo 与 Sharp 对硬件的安排进行优化。 其中一个是 LDH,即“读取高位地址内存”(LoaD from High memory)[3] —— 这里的“高位地址”,位于内存的最后 256 个字节,即开始于 $ff00。这样写程序的时候可以少写一个字节,速度也更快一些。

彩色效果

Image
Game Boy Color的主板[4]
Image
同样是主板的照片,但标注了重要部件

过了将近 10 年,随着 Virtual Boy 与它的 先进技术 被人遗忘,一个不起眼的继任者出现了:GameBoy Color(GBC,代号 CGB), 里面的新 SoC 被叫做 CPU CGB。它的功能更多了, 但它的核心 SM83 还在,只是时钟频率翻倍,达到约 8.38 MHz

很难想象十年后 Nintendo 仍然捆绑使用同一颗 CPU。但这种方案仍然有一些好处:

但在九十年代后期,仍然使用这种过时技术是要被玩家痛骂的。 稍微看一眼 当时 CPU 的市场行情,就能明白这个掌机究竟错过了什么(但说实在的,Nintendo 保守不保守真的很难讲,例如 Virtual Boy)。

硬件访问

SM83 沿用了 8 位数据总线** 和** 16 位地址总线,可以寻址 64 KB 的内存。 内存映射的结构如下[5]

这些都将在后面为大家说明。

可用内存

Image
DMG(原版 GameBoy)的内存架构 PPU负责对VRAM的访问进行仲裁

Nintendo 装在主板上的 8 KB RAM 是为“一般用途”准备的,这部分就是所谓的 WRAM。 这一大小可是 NES 的四倍。

另外还有 127 B RAM 位于 SoC 中, 这便是 HRAM。借助 SM83 独特的 LDH 指令,这部分空间的数据能够以更快的速度读取。 这与 6502(NES 上的处理器)上的“Zero Page”模式非常相似,它也是利用内存位置优化性能的。 从技术上讲,它跟外面的那部分相比没有实质性区别,但这是 CPU 优先访问的区域。 这里先放一边,等到“图形”章节讨论到 DMA (Direct Memory Access,直接内存访问)组件的时候,您就会明白这意味着什么。

Image
扩展后的CGB内存架构(Game Boy Color)。 PPU再次负责对VRAM的访问进行仲裁

在 GameBoy Color 中,WRAM 扩大到 32 KB。 然而,由于 CPU 还是那个 CPU(特别是因为它有限的内存总线),直接把这些内存加进去会造成地址空间溢出,显然很不现实。 为了解决这个问题,Nintendo 的工程师引入了 “地址组切换” 机制。 这种机制继承自 NES 的卡带,使得 GameBoy Color 可以只使用 8 KB 的内存来访问 32 KB 的 WRAM。 技巧相当简单:8 KB 内存中,后面的 4 KB 可以在 7 个不同的 Bank 之间进行交换。 这样一来,为了让开发者能够检查扩展内存,CPU 又捆绑了一个额外的寄存器,即 SVBK,作为地址组切换器。


图形

所有的图形计算都由 CPU 完成,然后由 图形处理单元(PPU)进行渲染。 PPU 是 DMG-CPU 内部的另一个组件,可以说是 前代图形芯片(同名)的改进版。

图像显示在集成的 LED 屏幕上:它具有 160 x 144 的分辨率;在单色版本的 GameBoy 上,每个像素可呈现四种灰度(白、浅灰、深灰、黑)。 不过,因为原版 GameBoy 的 LED 屏幕呈绿色,实际看上去是 发绿 的。

如果您读过NES的文章,您或许会记得 PPU 是为 CRT 电子束设计的。 但很显然,GameBoy使用的是液晶屏幕。 不过,这颗新的 PPU 采用了同一种技术,因为液晶屏幕也是逐行刷新的。 如此一来,主机也有了 如同CRT一般的特效,让开发者能够尽情发挥自己的想象力。

硬件组织

Image
PPU的内存架构。

PPU 与一个 8 KB 的 VRAM 相连。 这样一来,PPU 就需要通过仲裁机制,从 CPU 手中拿过对内存的控制权。 这 8 KB 包含了PPU渲染图形所需的大部分数据。 其他的数据就直接储存在 PPU 中,因为它们需要更快的读取速率。

游戏负责在不同区域填充正确类型的数据。 此外,PPU公开了寄存器,因此游戏可以指示PPU如何组织数据。 尽管如此,仍有许多规则需要遵循(您将在以下章节中看到这些规则)。

构造帧

来看看 PPU 是如何在屏幕上渲染图像的。 为了演示,我用 Super Mario Land 2(超级马力欧大陆2 六个金币)作为例子。

图块

Image
多个图块
Image
被网格分隔的图块
Image
一个图块。
在图块表中找到的图块。

PPU 使用 图块(Tiles)作为渲染图形的基本元素 —— 更具体地说,是 精灵和背景

所谓“图块”就是一张 8x8 的位图,它存放于 VRAM 里一个叫 图块集(Tile set),或者叫“图块模式表”(Tile pattern table)的区域中,每个像素对应四种灰度的任意一种。 这里的“灰度”是通过“调色板”(colour palette)来选择的。 单色版本的 GameBoy 有一个定义这种调色板的寄存器, 正如我之前所说,它只能选择四种颜色(或者说“灰度”),所以使用 8 位的寄存器来储存这种调色板是完全没有问题的。 尽管如此,系统还是提供了 3 个寄存器(也就是 3 个可编程调色板),但它们的使用受到 限制(稍后再详细说明)。

此外,图块还被归类到两个图案表中。

为了构建图片,图块被引用到另一种称为图块映射的表中。 这些信息将告诉PPU在何处渲染图块。 存储的两个映射用于构建每一帧的不同层。

下一章节会解释如何用图块构建图层。

背景层

Image
VRAM中分配的背景图
Image
背景图上被选择的区域。 注意选中的部分包括顶部的一部分,这部分将被窗口图层重叠。
Image
显示的背景图。
背景图渲染过程

背景图层是包含 静态图块 的图,大小为 256x256 像素(32x32 图块)。 但是,请您注意,屏幕上只能看到 160x144 的范围。也就是说,游戏要决定背景的哪些部分需要显示。 于是,游戏可以在玩家游玩的过程中,移动要显示的背景区域。这就是 滚动效果 实现的原理。

两个图块映射中的一个可用于创建背景图层。 另外,背景图层只能使用 一个 调色板。

窗口

Image
已分配的窗口图
Image
显示的窗口图。 游戏会在最后一行扫描时激活它。 因此,屏幕底部只显示第一行。
窗口图渲染过程

“视窗”(windows)是一个 160x144 像素 的图层,包括显示在背景或精灵顶部的图块。 这个图层 不会 滚动。

剩下的图块可以分配给该图层;它们也可以与背景图层共用相同的调色板。

这个功能听上去很傻: 因为窗口图层没有透明度,它完全遮盖住了背景。您可能会想,“都遮住了还看个毛啊?” 嗯…… 其实视窗图层可以与背景 合用,分别显示屏幕的各部分。 该图层主要是为了在屏幕底部显示固定信息,只不过在 NES 上需要执行 复杂的定时写入,但 GameBoy 的 PPU 可以自动处理。

因此,游戏通常用它显示玩家的统计数据、得分等“常驻”信息。

精灵

Image
渲染的Sprite图层.

“精灵”(sprite)是可以在屏幕上独立移动的图块。 它们可以互相重叠,也可以隐藏在背景后面,能否看到则取决于它们显示的优先级顺序。

这个图层还有额外的可用(或必需)的颜色:透明度。 这首先意味着它们只能显示三种不同的灰度,而不是四种。 幸运的是,这个图层特意预留了 两个 专用调色板可供选择。

对象属性内存(Object Attribute Memory,OAM)是 PPU 中专门存储精灵图块的内存区域。 不同于其他图块的是,精灵是由 OAM 定义的。 游戏一般通过调用 OAM DMA 单元 来填充这个区域,DMA 会从 RAM(或游戏 ROM)提取数据,并发送到 OAM。 不过,当 DMA 正在运行的时候,CPU 就不能访问 WRAM 了(这也体现了为什么 HRAM 这么重要)。

除了图块索引以外,每个条目还包括下列属性:X-Y 位置、所选的调色板、显示优先级与翻转标志(以允许垂直或水平翻转)。

PPU 的渲染存在限制,每行扫描只能渲染至多 10 个 精灵(即每秒 40 帧);超过这部分的精灵将不会被渲染。

结果

Image
最后的结果 嗒哒!

完成了一帧,是时候继续下一帧了! 然而,在 PPU 读取 VRAM 的时候,CPU 不能修改它。这样一来,当 PPU 闲置的时候,系统就要触发中断。 这种行为与 NES 如出一辙。

完成一行扫描后,水平消隐 周期开始(即从一行扫描线的末尾到下一行扫描线的开头,约 204 微秒), 给这一帧没渲染完的部分提供时间。

完成全部扫描后,垂直消隐 周期开始(即从最后一行扫描线的末尾到第一行扫描线的开头,约 1.1 毫秒),指定的某个中断被调用。 现在游戏可以更新下一帧的图像。

在扫描线开头,会触发一个名为 OAM search 的额外状态,此时 PPU 正在处理该扫描线中将显示哪些精灵。这时游戏可以更新除 OAM 以外的任何区域。

机密与限制

窗口层和额外中断的加入使新的内容和效果得以实现。

晃动效果

塞尔达传说:织梦岛(1993年原版) <剧透警告!!!>

水平中断允许在帧渲染完成之前改变帧。 这意味着可以在每一行应用不同的滚动值,从而使帧的每一行以不同的速度移动。

这就实现了一种有趣的摇摆效果(Wobbling)(我不确定这是不是它的正式名称)。

添加色彩

Game Boy Color的PPU是原版的超集。 现在,您将看到该品牌所谓的“Color”机型增加了哪些功能。

操作模式

Image
塞尔达传说:织梦岛 DX(1998 年重置版)。
这是一款“GBC 增强”游戏,现在运行于 CGB 模式。
Image
GameBoy Color 上的 Super Mario Land 2。 后者增加了彩色调色板,并以DMG模式运行。

首先,出于兼容性的考虑,新的PPU有两种工作模式。 然而,任天堂希望Color用户即使只玩单色游戏,也能看到增强的效果。 因此,两种操作模式如下:

整理(新)内容

CGB主板现在可容纳16 KB 的 VRAM,是原来 VRAM 容量的两倍。 由于CPU的寻址限制,这种新的安排以两个8 KB地址库的形式实现,由一个新寄存器(称为VBK)作为切换器。 另一方面,PPU可以同时访问这两个存储体。 说到底,这意味着程序员只需借助VBK填充VRAM地址库,然后在图块映射中指定图块所在的库,剩下的就交给PPU处理。

所以说,这些额外的 VRAM 可以做哪些事情? 很多很多:

视觉效果

得益于新的 PPU,现在程序员可以定义调色板了。他们有多达 32,768 种 颜色能够选择。

首先,开发者现在必须填充新的内存区域:调色板内存,它最多可以存储 16 个 调色板(一半给背景和窗口,一半给精灵),每个调色板编码 4 种 颜色 [6], 每种颜色由 16 位 / 2 字节的值来表示(但只使用其中的 15 位)。 此时 CPU 不处理调色板内存,但提供新的寄存器作为调色板内存的缓冲区(可以在 超级任天堂(SNES)上找到)。 总之,CPU 就是这么定义调色板的。

不过,“背景”和“窗口”图块可以引用这八个调色板中的任何一个。 同样的情况也会发生在精灵图块上,只不过它们只能使用三种颜色的调色板,因为有一个条目是为“透明”颜色预留的。

额外的空间

现在,图块集的大小是原来的两倍。 因此,程序员可以在VRAM中存储双倍数量的图块。 背景/窗口图块映射也得到了扩展,从而产生了额外的元数据编码。 从而扩展了这些图层的功能。 例如,它们的图块现在可以水平和垂直翻转,从而使游戏无需在VRAM中存储重复的图形(反过来,也可以利用这些图形绘制更多独特的内容)。

此外,CPU CGB还捆绑了一个额外的DMA单元,可将Game Pak或WRAM中的内容复制到VRAM中。 它以两种模式运行[7]

该设备再次为程序员提供了提供更丰富内容的新可能性,因为它可以利用原本空闲的时间。


音频

音频系统由 音频处理单元(APU)执行,这是一颗具有四波段的 PSG 芯片 [8]

奇怪的是,在不同型号之间,音频系统是少数没有改进的部分之一 —— 事实上,它甚至无法加速:如果改变振荡器的速度,你听到的不是 “更好”的声音,而是更高的音调。

功能

四个通道中的每一个通道都为特定的波形预留:

脉冲

脉冲1通道的示波器图像
脉冲2通道的示波器图像
所有音频通道的示波器图像
取自 宝可梦 红/绿(1996)。

脉冲波形有非常明显的声,所以它主要被用于旋律或音效

APU预留了两个通道,每个通道可容纳一个脉冲波。 它们使用四种不同音调中的一种,通过改变脉冲宽度来构建。 第一个通道有一个专用的扫频控制

由于通道数量有限,当游戏过程中需要播放音效时,旋律往往会被打断。 这一点在口袋妖怪红/蓝(Pokemon Red/Blue)等游戏中非常明显,因为在战斗过程中,小精灵的叫声会与所有音乐通道重叠;这也是为什么口袋妖怪的战斗音乐都不使用打击乐的原因。

自定义波形通道的示波器图像
所有通道的示波器图像
取自 宝可梦 红/绿(1996)。

APU允许定义自定义波形,以便从其第三通道听到。 波形由32个4位采样组成,存储在一个波表中。

该通道还可以控制波形的频率(使其能从同一入口产生不同的音符)和音量。

噪声

噪声通道的示波器图像
所有音频通道的示波器图像
取自 宝可梦 红/绿(1996)。

噪音基本上是一组听起来像白噪声的随机波形。 噪音波形被分配了一个通道。

游戏用它来创造 “鼓点”效果

该通道只有两种音调可用,一种产生干净的白噪声,另一种产生机器人白噪声。 不过频率是可以调整的。

秘技与局限

混音器以立体声输出,所以不同通道可以分配到左声道或右声道。但只在插入耳机的时候起作用! 因为扬声器是单声道的。

另外,混音芯片与卡带的其中一个专用引脚相连,这能够在卡带的控制下,通过 额外的通道 输出模拟音频(但需要额外的硬件支持)。 不过直到最后,市面上也没出现使用这个功能的游戏;在 GameBoy Advance向后兼容组件 中,也已经见不到这个引脚了。


操作系统

与直接进入游戏的 NES 不同,GameBoy 被设计成始终从内部 256 B 的 ROM (Boot ROM)启动,然后才跳转到游戏。 以下是启动过程 [9]:

  1. 主机打开后,CPU 从地址 0x0000 开始读取内存。前 256 B 正是其 Boot ROM。
  2. RAM 与 APU 完成初始化。
  3. “Nintendo” logo 的数据从卡带 ROM 复制到 VRAM,然后 PPU 从屏幕的顶部开始绘制它。 如果没有卡带被插入,logo 中就会有“垃圾图块”出现。 卡带没插好的情况下也会如此。
  4. logo 向下移动后,播放标志性的 po-ling 声。
  5. 游戏中的任天堂 logo 是与主机 ROM 中存储的 logo 相匹配的。 之后,主机会对磁带盒的 ROM 头进行 快速校验,以确保磁带盒正确插入。 如果检查过程出现任何问题,主机就会卡死。
  6. Boot ROM 从内存映射中删除。
  7. CPU 开始执行游戏程序。

不过,显示在屏幕上的 Nintendo logo 仍然在 VRAM 当中。这样一来,游戏就可以应用一些动画和特效来引入自己的 logo。这一点相当有可玩性。

Game Boy的启动屏幕以及20y,一个摆弄此启动屏幕上任天堂Logo的自制演示

启动过程的变化

Image
Game Boy Color 的开机屏幕,Logo不再滑动,但出现了彩虹效果。

就 Game Boy Color 而言,我们又一次发现 ROM 的内容发生了巨大变化。 例如,现在 Boot ROM 的大小为 2 KB [10];启动过程也有了新的行为:


游戏

游戏用汇编语言写成,大小最多为 32 KB,这是有限的地址总线造成的。 不过,使用 地址组切换器(即之前提到的 动态映射),游戏可以变得更大。 市面上容量最大的 GameBoy 卡带,具有 1 MB 的 ROM(在 GameBoy Color 上,则是 8 MB)。

卡带可以内置一个实时时钟、一个外置电池,以及用于保存数据的 SRAM,但所有这些都是可选的。

卡带的类型

由于 Game Boy Color 支持两种模式,任天堂列出了 三种不同类型 的 Game Boy 游戏:

外部通信

Image
为多种Game Boy变体使用的Game Boy Link电缆[11] 自初代游戏机发布以来,后续的修订版在保持针脚数量不变的情况下对接口进行了小型化。

游戏第一次能够利用 GameBoy Link 线缆(即“对打线”)进行通讯,它提供了多人游戏的功能。 线缆采用的是非常原始的 串行通信接口(Serial Communication Interface, SCI)。

原版 GameBoy 的数据传输速率为每秒 8 千比特(即每秒 1 KB),在 Color 型号上可以达到每秒 512 千比特(每秒 64 KB);其中后者称“高速模式”。

另外,Color 型号还内置 红外发射与接收器,分别由红外 LED 和光电晶体管组成[12]。 这种装置可以实现无线通讯,就像在 宝可梦 金/银 等游戏里看到的那样。 然而,您会发现这个通讯系统不依赖任何协议:它只是有一个寄存器(名为 RP)来编码它的动作(发射或接收)、传输的某一个比特和接收的最后一个比特(01)。 即便如此,Nintendo 还是在官方的开发手册里编写了参考实现方案,以减轻开发者的困惑。


反盗版

正如您在 “操作系统”部分所看到的,控制台不会立即运行游戏,它首先会执行一系列检查,防止运行未经授权的卡带,并确保卡带 正确插入

要通过这些检查,就必须把 Nintendo logo 的图块副本写入游戏 ROM 头部 [13],这样 Nintendo 就能以侵犯 版权与商标权 为由,对“未经授权”的开发商提出诉讼。 (真有你的, Nintendo)

不过,竞争对手 SEGA 后来也利用了这种技俩(Trademark Security System,TMSS):在开机时检查到字符串“SEGA”后才会启动。但后来的 世嘉诉 Accolade 案 认定任何公司都有权使用受版权保护的商标,因为这也属于合理使用。(在 Mega Drive 上市后,因为 SEGA 的封闭管理,为这个主机开发游戏非常不容易。因此 Accolade 对 Mega Drive 进行了逆向工程,以确保其兼容性;后来就被 SEGA 起诉,理由就是未经 SEGA 同意,“擅自使用” SEGA 商标,侵犯其商标权和版权。话说回来,SEGA 怎么好事轮不到,坏事都是它)

也就是说,游戏里面的反盗版措施要更加多样了。比如检查 SRAM 的大小(通常“未经授权”的卡带 SRAM 会更大),或者在游戏里随机对 ROM 进行校验。


这就是全部了,伙计们。


参与贡献

这篇文章是 游戏主机架构 系列的一部分。如果您觉得我的文章很有趣,请考虑捐赠。您的资助将用于购买工具和资源,以帮助我提高现有文章和即将发表的文章的质量。

Donate with PayPal
Become a Patreon

你也可以购买英语版本的电子书。我会将获得的利润视为捐赠。

Image

在这里追踪本文所需工具和最新购置情况:

Interesting hardware to get (ordered by priority)

或者,您可以通过 建议更改添加翻译 来提供帮助。


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-gameboy,
    url = {https://classic.copetti.org/writings/consoles/game-boy/},
    title = {Game Boy / Color Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2019}
}

or a IEEE style citation:

[1]R. Copetti, "Game Boy / Color Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://classic.copetti.org/writings/consoles/game-boy/. [Accessed: day- month- year].

Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


来源 / 继续阅读

音频

CPU

游戏

图形

操作系统

影像