下一页 »
PowerVR2 核心
PowerVR2 核心架构。
在这里图形被赋予了生命,从TA(译注:纹理地址单元/Texture Address Unit)接收到的显示列表告诉核心使用
内部帧缓冲区
来渲染单个图块的几何图形。 过程如下:
图像合成处理器
或“ISP”获取基元(三角形或四边形)并执行
隐藏表面去除
以去除看不见的多边形。 然后,在计算其Z轴缓冲区和模板缓冲区后,数据通过
深度测试
以避免渲染会出现在其他多边形后面的多边形,如果它们位于2D多边形后面则不可见的几何图形(也称为
遮罩
),就会通过
模板测试
以剔除。
请注意这些测试是如何在管道开始时有效执行的。 与之相对的,以前的主机
使用懒加载z轴缓冲
在管道末端丢弃几何形状。 ISP可以防止处理最终将被丢弃的几何图形
[12]
,从而节省资源。
纹理和阴影处理器
或“TSP”在图块区域上应用着色、阴影和多种效果。
在导出图块之前不会应用纹理,这意味着出现的重绘(如果有)不会降低填充率。
这些操作完成后,渲染好的图块被写入VRAM中的主帧缓冲区。 这一过程将一直重复直到所有图块都得到处理为止。 一旦完成,生成的帧缓冲区由
视频编码器
拾取并通过视频信号发送。
全景
除了明显的架构差异之外,纹理和着色处理器还具有许多功能,可以让人们了解这台游戏机与旧的
土星
差距多大。 以下是一些值得注意的例子:
Alpha混合
:组合重叠图层的颜色以实现透明效果。
在这个系统中所使用的实现透明度的方法被称为
顺序无关透明度
该算法在混合颜色之前自动对图元进行排序,虽然这减慢了渲染过程,但避免了依赖游戏本身手动进行的所有排序。 也因为如此,Dreamcast游戏擅长显示透明对象。
结合基于图块的系统,顺序独立透明度完全解决了以前的
显示灾难
。
Mip-Map
:根据所需的详细级别自动选择纹理的缩小版本。 这样做是为了防止处理远离相机的大纹理(这将浪费处理能力并产生锯齿现象)。
环境映射
:对纹理应用反射。
双线性、三线性和各向异性过滤
:这些是用于平滑纹理和防止像素化的不同算法。 它们按“最差”到“最佳”排序,其中每一个的结果质量与所需的计算量成正比。
这是从土星以来一个巨大的进步,因为前者没有提供任何纹理过滤器!
凹凸映射
:在不额外消耗多边形的情况下模拟表面缺陷。
获取细节
Holly现在可以绘制比其
前代
多10倍的多边形,这里有一个
之前和之后
示例,展示了模型设计如何不再受限制。 试着调整他们!
线框
表面
纹理
土星的索尼克竞速(1997)。
286个三角形(或185个四边形)。
线框
表面
纹理
Dreamcast的索尼克大冒险(1999)。
1001个三角形。
视频模式
视频系统被设计为支持多种类型的屏幕和格式,因此视频编码器输出到一个统一形状的插口,该插口支持以下类型的信号:
复合视频接口(译注:就是AV线)
:将显示视频所需的三个信号(色度、亮度和同步)组合成一个信号,只需要一根单针电缆。
S-Video
:结合亮度和同步,同时保持色度分离(总共两条视频线)。
RGB
:发送单独的红-绿-蓝信号并提供不同的同步类型可供选择(复合同步或从视频合成或S-Video中提取)。
VGA
:将RGB与两个同步信号(水平和垂直)相结合,总共徐亚五条视频线。 这使得能够在逐行模式下显示尽可能高的分辨率(720x480),因此这种模式通常被称为‘480p’。 VGA在当时实际上已经成为计算机显示器使用的标准格式/介质一段时间了。
为了使用这种类型,世嘉提供了一个VGA适配器作为额外的配件。
Dreamcast 无法同时对所有这些信号进行编码,因此 GPU 和音频处理器包含了一个名为
图像模式
的寄存器,用于协调哪些视频/音频总线会被激活以生成所需的信号。 CPU检测插入的电缆类型(通过检查视频连接器的哪些“选择位”处于活动状态)并将所需值写入GPU。 最后,这些值被转发到音频处理器。
由于VGA严格来说是一种逐行信号(与传统的
隔行扫描
相反),因此仅为隔行扫描视频设计的游戏会出现一些兼容性问题。 这些游戏会在其代码中明确声明不会在VGA上显示,这将让CPU阻止游戏执行,直到用户将VGA电缆换成另一种类型。
音频
音频功能由雅马哈制造的名为
AICA
的定制芯片处理,它是
土星中使用的
SCSP的改进版本,由四个组件组成:
声音集成电路
或“IC”:一组模块(合成器、DSP和混音器),用于生成音频信号并对其施加效果。 它支持多达
64个PCM通道
,分辨率为
16或8位
,采样率为
44.1 kHz
。 总的来说,这是播放音频的最佳质量。
此外,它还包括一个
ADPCM解码器
,用以减轻CPU的部分工作负担。
奇怪的是,它还提供了
两个MIDI引脚
来连接MIDI乐器,尽管这是在开发过程中使用的。
2 MB的SDRAM
:存储声音数据和程序。 它由主CPU使用DMA填充。
运行频率为
~2.82 MHz
的
ARM7DI
:控制声音IC。 该CPU通过启动存储在SRAM中的小型软件(称为
驱动程序
)进行编程,该软件解释音频数据并相应地操作声音IC。
内存控制器
:接口连接2 MB的SDRAM。
为了帮助开发,官方SDK包含多个满足不同需求(排序、解码等)的声音驱动程序。
进化
自从
Mega Drive/Genesis(译注:日版和美版MD)
问世以来,我们已经走了这么远,为了展示声音合成取得了很大的进步。这里有两个游戏的例子,一个是Mega Drive,另一个是Dreamcast,它们使用了相同的作品:
No support for video.
索尼克3D:爆炸(1996)用于Mega Drive/Genesis。
前身执行FM合成以动态生成音频信号。
No support for video.
Dreamcast的索尼克冒险(1999)。
新的音频子系统能够无烦恼地处理PCM样本。
如果您想在播放乐谱时在两者之间切换,也可以尝试此小部件:
MegaDrive / Genesis
Dreamcast
No support for audio.
No support for audio.
MegaDrive/Genesis:
索尼克3D:爆炸(1996)。
Dreamcast:
索尼克大冒险(1999)。
补充说明
索尼克大冒险的作曲家并没有对FM芯片进行编程,而是在内部制作了他们的配乐,然后将其编码为“ADX”,这是一种由CRI中间件开发的有损格式。 因此,它只使用64个PCM通道(立体声)中的两个。
ADX压缩使游戏能够解码并将数据从GD-ROM流式传输到声卡IC,而不会运行内存溢出或带宽。 此外,也可以通过多种方式实现相应的驱动程序,因为有多种方法可以平衡主CPU和ARM7的工作负载。
保持活动状态
不知何故,该芯片还负责为BIOS提供
实时时钟
(RTC),它还连接到时钟电池以在没有交流电源的情况下继续工作。
操作系统
有
2 MB的“系统ROM”
存储
BIOS
。 这是CPU在启动时读取的第一个位置。 ROM中包含的代码指示CPU要么启动游戏,要么显示交互界面。
此外,BIOS还包含游戏可用于简化I/O功能的例程
[13]
,例如从GD-ROM驱动器读取数据。
交互界面
就像
世嘉土星
一样,如果没有插入有效的游戏光盘,游戏机将启动一个可视交互界面。
没有放入光盘时的界面
界面包含一个简单的图形用户交互界面,使用户能够执行基本但必要的任务,例如:
开始游戏,如果它并没有在执行。
操作存储在VMU中的保存数据(稍后会解释有关此设备的更多详细信息)。
如果插入了音频CD,则播放音乐。
更改某些设置,如日期、时间、声音等。
Windows CE
自从Dreamcast宣布之后,就被传成该游戏机是运行
Windows CE
的。 事实上,您只需查看游戏机的A面即可注意到Microsoft的logo…… 这是怎么回事?
有机械正面Windows CE的logo。 巧合的是,你可能会在同一时代的其他手持设备上发现类似的logo。
首先,Windows CE到底是什么? 这只是微软在90年代中期开始的众多项目之一,旨在征服传统个人电脑市场之外的领域。 随着比x86更高效的中央处理器架构和手持设备的出现,微软的一个新团队负责将Windows生态系统引入这些新设备
[14]
。
这导致了Windows CE的诞生:一个完整的操作系统,从头开始开发,同时还提供了现有Windows API、开发工具和服务的子集。
Windows CE 3.0(2000),与桌面和几个业务应用程序捆绑在一起。
与Windows 95或NT不同,新系统具有以下优点:
它运行在各种CPU架构
[15]
上,包括SuperH甚至
NEC/MIPS VR4300
(任天堂64使用)。
它的设计考虑了受限的硬件,例如有限的电源(AA电池)、内存(2 MB RAM)和存储(4 MB ROM)。
此外,Windows CE作为一组
构建块
出售给制造商,允许他们挑选要捆绑的组件。 然后,制造商可以将其集成到各种硬件中(例如手持设备、零售点终端甚至汽车系统里)。 不管怎样,Windows CE作为掌上电脑(PDA的前身)的操作系统获得了重要的关注,有效地与Apple Newton和Palm竞争。
随着90年代后期手机行业的蓬勃发展,微软利用Windows CE的模块化构建了
PocketPC
,这是另一个完全专注于PDA和手机的操作系统(后来称为“Windows Mobile”)。
Windows CE 2.11’掌上电脑版’1.2(1999)
PocketPC(2000),基于Windows CE 3。
微软试图将Windows CE推向PDA市场。
那么,所有这些和Dreamcast有什么关系呢? 在那阶段的某个时候,微软和世嘉提出了为Dreamcast
[16]
制作Windows CE包的想法。 毕竟,Windows CE已经运行在日立的CPU之上。 最后,这并没有在完整的桌面界面或与微软在线服务的集成中实现。 与之替代的是,它是作为充当
可选抽象层以简化硬件操作
而存在的。
与任天堂提供的
Nintendo 64
类似,微软发布了一个基于Windows CE的SDK(通常称为
Dragon SDK
),用于为世嘉Dreamcast编写应用程序。 这些库包括CE的一个子集,其中包含辅助图形、音频和调试所需的最少组件。 作为“加入微软俱乐部”的一部分,开发人员现在可以利用微软的明星IDE(
Visual Studio 6.0
)和
VisualC++6.0
进行开发。
一些开发人员发现这个选项非常有吸引力。 由于CE中包含的音频/图形框架正是
DirectX 6
,因此理论上,大量PC游戏可以轻松移植到Dreamcast。 然而,Dreamcast和传统PC之间的架构差异太大,不容忽视。 因此最终,程序员必须经过大量优化才能达到最佳性能
[17]
。 此外,由于Dreamcast的BIOS没有捆绑任何Microsoft的框架,因此SDK必须静态链接到游戏。 因此,与世嘉接近硬件级别的库相比,Dragon SDK增加了游戏的加载时间(毕竟,必须从游戏光盘上加载一个单独的操作系统层),并且在整个游戏运行过程中,Windows CE层消耗了大量的资源。
总之,“Windows CE for Dreamcast”只是开发人员选择的辅助SDK。 尽管如此,相当多的Dreamcast游戏最终还是利用了它。
顺便说下,如果你对Windows CE和Windows Mobile的命运感到好奇,那么可以告诉你,微软在手持设备市场的情况并不特别好。 Windows CE于2013年被放弃。 而在前一年,Windows Mobile基于CE的核心也被Windows NT取代(与基于桌面的Windows 8保持一致)。 尽管如此,Windows Mobile最终宣告了对新平台(安卓和iOS)的败北宣言,并于2019年停产。
I/O
GPU还包括另一个用于处理大部分I/O的模块,称为
系统总线
。 它提供以下接口:
G1
接口:可以访问
BIOS ROM
及其保存的配置和
GD-ROM
内容。
G2
接口:提供对
调制解调器
和
声音控制器
的访问。
Maple
接口:在控制器(以及连接到它们的附件)和CPU之间传输数据块。 它是一个
串行总线
并提供专用的DMA。
SH-4
接口:连接主CPU以进行通用通信。
DDT
接口:控制CPU总线以在DMA传输期间访问其主存储器。
PVR
接口:使用专用DMA将CPU与图块加速器连接起来。
游戏
开发主要用
C
或
C++
开发完成。 起初,C是最被推荐的选择,因为可用的C++编译器最初在功能(和质量)上非常有限。
世嘉还提供了开发硬件,形式类似于一台PC塔式机,被称为
Sega Katana 开发盒(译注:当年妖刀katana也是DC的开发代号)
。 这包含用于开发的增强I/O的Dreamcast硬件。 它还附带一张CD,其中包含要安装在Windows 98 PC上的官方
Katana SDK
。
如前所述,开发人员还可以选择在Sega之上采用Microsoft的Dragon SDK。 在这种情况下,DirectX 6.0和VisualC++6.0也可以用。
存储介质
游戏存储在GD-ROM中,它们只是具有更高坑密度(达到千兆字节容量)的
CD-ROM
。 速度是12倍速,与土星的2倍速光驱相比,这至少不算太寒酸。
在线平台
Dreamcast附带安装了
调制解调器
模块,游戏可以使用该模块“拨号联网”在线游戏的拨号服务。 世嘉提供了两项服务:
世嘉网
(在美国和日本使用)和
梦幻竞技场
(欧洲同行)。
玩家使用
DreamKey
注册服务,这是与一些游戏捆绑在一起的额外光盘。 DreamKey提供了一个网络浏览器来注册一个帐户。 最初,DreamKey是根据地区预设的服务,但后来的修订允许用户更改其ISP设置以连接到其中任何一个。
还有一个Dreamcast品牌的键盘和鼠标可供购买,方便喜欢用
PC风格
上网的用户。
不幸的是,世嘉网和梦想竞技场在推出两年后就停止服务了。 因此,完全依赖它们的游戏变得无法使用,除非使用额外的工具(如DreamPi,一种在用户社区维护的服务器的帮助下复制它们的树莓派映像)来模拟这些服务。
交互式存储卡
Dreamcast的另一个创新功能是
视觉记忆单元
或称之为“VMU”。 它连接到控制器上,并且除了作为记忆卡之外,还是一个完全功能的设备,包括
[18]
:
未连接的VMU。
未连接VMU的手柄。
已经插上VMU的手柄
A
Sanyo LC86K87
:8位低功耗CPU。
具有四个附加图标的32x48单色LCD:使用196 BXRAM(外部RAM)作为帧缓冲区命令。
两个串行连接器
:一个用于输入,另一个用于输出。
六个物理按钮
:当VMU与控制器分离时使用。
A
16 KB Mask-ROM
:存储BIOS-IPL。
64 KB的Flash
:32 KB用于存储单个程序(从游戏机传输),另32 KB用于保存Dreamcast的游戏存档。
RAM的512 B
:为系统保留256 B,只留下256 B可用于程序。
VMU有两种操作模式:
插在手柄上
:官方手柄有两个插槽来连接VMU和其他形状相同的配件,如果VMU插入第一个插槽(从手柄正面可见),它可以在游戏过程中显示图像。 此外,Dreamcast可以在VMU上存储存档和程序。
与控制器分离
:该小工具变成了带有时钟和保存管理器的类似Tamagotchi(译注:宠物蛋,万代南梦宫出的,俗称拓麻歌子)的设备,并且还可以运行Dreamcast之前传输的任何程序。 两个VMU也可以连接以共享内容。
反盗版&自制
使用专有的GD-ROM格式有助于禁止生产未经授权的游戏副本(并在其他游戏机上运行它们)。 Dreamcast游戏也是
区域锁定
的,这意味着游戏机将拒绝运行不同区域的游戏。
破解
实际上,由于世嘉留下了一个巨大的后门:
MIL-CD
,这将导致其反盗版措施完全没用。 音乐互动直播光盘或“MIL-CD”是世嘉创建的一种格式,用于通过互动节目扩展音频光盘… Dreamcast被设计与它兼容
[19]
。
最终,未经世嘉批准,未经授权的商业光盘(作弊加载器、电影播放器等)伪装成MIL-CD在游戏机上运行。 后来,不同的黑客社区剖析了这个漏洞,并想出了一个使用CD-ROM启动盗版游戏的变通方法。 这引起了一股势不可挡的ISO网上发布浪潮。
之后出现了一些问题:尽管GD-ROM可以存储1GB的数据,但CD-ROM只能容纳大约700MB,那么“破解者”如何才能将较大的游戏压缩以适应CD呢? 最终想出了通过重新压缩音乐和图形,直到它缩减到合适的大小。 他们甚至尝试将其分成两张盘来解决这个问题。 毕竟,游戏数据不再是一个单一的整体(像旧式的卡带那样),而是现在被组织成文件和目录的层级结构。
这就是全部了,伙计们。
为了在这里写很多东西,我必须得到一个Dreamcast。
对它的年龄来说不算太糟糕!
我希望你喜欢这篇文章。 我在大学最后一年开始时完成了它。
从现在开始我可能会很忙,但是我确实喜欢写这些文章,所以希望你能在几周内收到下一篇文章!
下篇文章见!
Rodrigo
参与贡献
这篇文章是
游戏主机架构
系列的一部分。如果您觉得我的文章很有趣,请考虑捐赠。您的资助将用于购买工具和资源,以帮助我提高现有文章和即将发表的文章的质量。
你也可以购买英语版本的
电子书
。我会将获得的利润视为捐赠。
在这里追踪本文所需工具和最新购置情况:
### Interesting hardware to get (ordered by priority)
- Nothing else, unless you got something in mind worth checking out
### Acquired tools used
- A Dreamcast console with controllers and VMUs (£40)
url = {https://www.copetti.org/writings/consoles/dreamcast/} ,
title = {Dreamcast Architecture - A Practical Analysis} ,
author = {Rodrigo Copetti} ,
year = {2019}
or a IEEE style citation:
[1]R. Copetti, "Dreamcast Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://www.copetti.org/writings/consoles/dreamcast/. [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
.
« Nintendo 64 架构
PlayStation 2 Architecture »