Sega Mega Drive图形系统如何工作:视频显示处理器


VDP概念说明


  • Vdp
    • 视频播放器”
    • 视频控制器芯片,用于处理图块图形,滚动平面和Genesis Sprite。 实际上不是处理器。
  • 虚拟RAM
    • 视频 RAM
      • VDP使用的RAM(RAM)
      • 包含图块(8x8像素的图像)
  • 控制台的两种主要类型
    • NTSC控制台
      • Sega Genesis,60赫兹机器,主要分布在美国
      • 权限
        • H 40模式-320x224像素( 40 x28个图块)。 最常见的分辨率模式
        • H 32模式-256x224像素( 32 x28像素) 不太受欢迎的分辨率模式
      • 我们的工作室Mega Cat发布NTSC游戏 ,因此它使用这些权限!
    • PAL控制台
      • Sega Mega Drive,全球售出50辆Hertz汽车
      • 权限
        • H 40模式-320x240像素( 40 x30个图块)。 最常见的分辨率模式
        • H 32模式-256x240像素( 32 x30像素) 不太受欢迎的分辨率模式

左:NTSC Model 2 Sega Genesis, 右:PAL Model 2 Mega Drive(欧洲)

3个平面图形


2个滚动平面

平面B是背景平面。 使用图块地图显示图块图形。

平面A是前景平面。 使用图块地图显示图块图形。 窗口子平面-平面A的子平面,其图形不会随平面的其余部分滚动。

瓷砖的每一行都逐列渲染。 每个平面上的图块可以具有优先级:高或低。


以常规格式渲染的Sprite的图块(4x4图块)

1个精灵平面

绘制精灵图块图形。

在控制台内,子画面以相反的顺序呈现,即 每个图块列逐行渲染。

子画面位于512x512像素的虚拟空间中,坐标(128,128)与电视屏幕的左上角重合。

Genesis可以在屏幕上同时显示多达80个硬件Sprite; Genesis可以在一个栅格行中显示大约20个Sprite,但存在大量问题,Sprite溢出有问题,因此它们不再显示。

对于硬件精灵,大小是有限的(wxh),其中w是宽度,h是高度,取值1-4个图块。

可以使用几个子画面获得比硬件子画面大的子画面。

与平面一样,用于子画面的图块可以具有较低或较高的优先级。 低优先级子画面显示在其他层的高优先级图块下方。 (实际上,一切都稍微复杂一些,但总体而言,概念如下)。


控制台内用于精灵的图块以精灵格式呈现(移动的图块和4x4的图块)


平面层优先级的可视化表示
资料来源: Genesis软件手册

VDP CRAM (“颜色RAM”-“彩色RAM”)

4列调色板,每列16种颜色

每种颜色的深度为4bpp (每个像素4位)

第一种颜色是磁贴图形的透明颜色

启用高阴影时,调色板线可以呈现稍微更浅或更深的颜色。


背景资料


Sega Genesis具有2个图块地图平面:背景平面(“平面B”)和前景平面(“平面A”)。 根据机器的类型(NTSC或PAL)和使用的视频模式(H40或H32),全屏磁贴卡的宽度为32或40磁贴,高为28或30磁贴。 每个图块均由一个8x8像素的图像组成,并且每个像素对应一个颜色索引(0-15)。 严格来说,窗平面是平面A的子平面; 它的图形将不会与其他飞机A一起滚动。飞机可以以多种不同方式使用,例如用于全屏前景和背景层,或用于许多世嘉创世纪游戏的技术: 视差滚动而闻名。 通过以不同的速度滚动平面上的单个图块线,可以创建深度的错觉。 不同平面的图块卡上的图块可以具有优先级参数:高或低。 此参数确定应将精灵(也具有高优先级或低优先级)显示在图块下方或上方。







VSRAM( 视频滚动 RAM- 滚动显示内存)

层A和层B可以具有大小为(wxh)的滚动平面的图块图,其中w是图块的宽度,h是图块的高度。 每个大小只能等于32、64或128个图块。 这些滚动平面以有效屏幕分辨率“滚入/滚出”(大小由机器类型和H32 / H40模式确定)。 不允许使用尺寸为128x64 / 64x128和128x128的滚动平面。 默认情况下,标准VRAM地址0xC000和0xE000的VRAM部分显示为“垃圾砖”,但实际上,这些“垃圾砖”中的每个像素都以紧凑的方式编码VSRAM砖图。 用户切勿将真实的图块写入这些“垃圾图块”中,否则,奇怪的图形错误/崩溃,将会变慢或在滚动平面上开始出现垃圾图块。 平面可以使用3种滚动模式中的一种:按栅格线,按图块或按块(2x2图块的截面)。 每个平面可以同时水平和垂直滚动。

色泽


磁贴一次只能使用4行调色板中的1行。 调色板的每一行包含16种颜色。 第一种颜色保留为透明色,建议将其设置为粉红色(255,0,255)(RGB)。 为了保持游戏风格的完整性,可以为单个元素选择1个或2个调色板。 例如,调色板第1行可用于玩家的角色,调色板第2行可用于UI元素。 您可以使用各种调色板来绘制敌人,背景和其他变化的元素。


为了获得最佳的色彩使用,此调色板使用两个调色板,一个用于图块地图平面的每一层。 前两个图像是单独的层(平面B和平面A),而第三个是完成的全屏图像,其中两个平面都组合在一起。 由于每个图块只能同时使用调色板的一行中的索引颜色,因此,将这种图像方案与两个平面一起使用,可以确保一个平面的图像无法访问的颜色数量。

有两种使用调色板的流行技术-调色板的循环更改(调色板循环)光栅效果(光栅效果) 。 通过在调色板的单独一行中更改某些元素的颜色,每隔几帧就可以实现瀑布,脉动照明等效果。

僵尸足球联赛中闪烁的Berserk条纹的调色板周期性变化的效果示例




光栅效果将替换特定光栅行之后的调色板行中的所有或部分颜色。 我们将不详细讨论该技术,但实质上,它在于在通过某个水平扫描线的电视电子束后替换所有CRAM颜色的一部分。 该技术对于实现水下物体的调色板移动非常有用。 特别是,它可用于刺猬索尼克(Sonic the Hedgehog)中迷宫区级别的水下颜色。


精灵



雪碧从《咖啡危机》中扮演阿什莉

Sega Genesis中的子画面定义为尺寸为( w x h )的图像,其中w是图块的宽度, h是图块的高度,可以使用1-4个图块的值。 每个子画面一次只能使用调色板的一行。 硬件精灵的最大大小为4x4瓦片。 Sega Genesis最多可以处理80个屏幕精灵,每条栅格线可以处理20个精灵,但是,为了避免刹车,最好不要达到此限制。 为了规避硬件子画面大小的限制,许多游戏使用多个子画面,从中收集一个角色/对象。 创建经典像素艺术的原理是选择足够大的分辨率以提供图像的必要细节和可读性,但又要足够小以使其易于动画制作。 所有Sega Genesis瓷砖图形应始终除以8像素以适合瓷砖尺寸。 Sprite可以水平(“ hflip”)和/或垂直(“ vflip”)翻转,并且具有高或低优先级标志。 此参数确定是将精灵显示在其他平面的图块之下还是上方(这些图块也具有高或低优先级参数)。 硬件精灵也可能具有链接值。 每个子画面必须具有自己的唯一链接值。 除其他因素外,它还会影响渲染:链接值低的精灵会绘制在链接值高的精灵上。

动画制作



僵尸橄榄球联盟的跑步装甲牛头怪足球运动员

在大多数游戏中,图形都是动画的,而不是简单的静态精灵。 通过逐渐更改子画面的帧,可以创建运动的错觉,并使用它来显示行走,攻击等。 Sega Genesis的游戏设计师需要记住每个动画的精灵和拼贴的数量,以免过多影响游戏速度。 创建精灵动画通常会在努力争取少量精灵与创造引人入胜的动作之间做出折衷。 对于Sega Genesis上的动画尤其如此。

如今,在ROM黑客Sonic the Hedgehog的开发人员中,一种称为“动态模式学习提示”(DPLC)的技术很普遍。 它包括动态地动态加载VRAM中Sprite的图块,而不是同时将所有Sprite帧的所有图块存储在VRAM中。 通常,详细的子画面(例如主角的子画面)会占用VRAM中用于子画面帧的太多图块。 如果仅将当前渲染的子画面帧所需的那些图块加载到视频内存中,则可以保存有限的VRAM,并用其他图块图形来占用它。 不幸的是,用于DPLC的图块必须在ROM中解压缩,以便快速加载到VRAM中并且不会减慢游戏速度。 (解压缩压缩的图形会占用CPU资源,并且占用太多时间。)SGDK Sprite Engine的功能(在头文件<sprite_eng.h>中)通常使用DPLC技术来切出未使用的图块。


推荐的调试和图形工具


寻找一款优秀的软件来创建复古图形,将像素图稿拆分为图块并将颜色数量减少到4bpp可能是一项挑战。 以下是用于创建复古图形的推荐软件列表,以及允许用户检查VRAM和平面内容的专用仿真器。

图形软件:
  • RetroGraphics工具包
  • Irfanview
    • 用于查看/编辑图像的通用应用程序,具有插件,并广泛支持多种类型的图像文件
    • 它可以编辑,导出和导入调色板,以及增加/减少图像颜色的数量并显示该数量。 对于准备用于rescomp SGDK引擎的图形文件很有用
    • 免费和开源软件
    • 有一个PNG插件,用于更改颜色深度, 同时保留调色板中的颜色顺序
    • 信息链接
  • 掌上电脑
    • 有用的软件,使您可以在几种不同的调色板格式之间进行转换。
    • 可用于从/转换为Megadrive .bin调色板和Irfanview JASC调色板格式
    • 导入格式
      • 图像BMP,GIF,PCX
      • 保存创世纪模拟器:GGD,GS *,MSD
      • 调色板文件Jasc,Megadrive,MS RIFF,Tile Layer Pro
    • 导出格式
      • Jasc,Megadrive和Tile Layer Pro调色板
    • 信息链接

推荐用于VDP调试的专用仿真器


SEGA GENESIS的游戏值得探索



Sega Genesis有许多精美的游戏,您可以从中学习各种技术和特殊效果。 包括:

  • 愤怒的街道系列
  • 刺猬索尼克系列
    • 水调色板的光栅效果
    • Sprite / Tile优先级(尤其是Sonic 2和Sonic 3 / Knuckles中的循环和两层片段系统)
    • 高性能,快速,高质量的游戏引擎
    • 雪碧DPLC
    • 出色的关卡设计和图形样式(尤其是在Sonic 3 / Knuckles中)
    • 周期性调色板更改的影响
    • 视差效果
  • 蝙蝠侠和罗宾的冒险
    • 一堆复杂的图形效果
  • 恶魔城血统
  • 阿拉丁
  • Jim吉姆系列
    • 流畅的动画
  • 梦幻之星系列
  • 红色区域
    • 初始屏幕中的1位平滑黑白视频
    • 精灵和瓷砖贴图旋转的软件仿真!
    • 等轴测图形/顶视图
  • Panorama Cotton(Jap)街头赛车
    • 图形让人联想到SNES Mode 7,非常复杂的线条滚动和图形效果
  • 硬驱动种族驱动
    • 3D,多边形图形的软件渲染
  • 零容忍零容忍 之外 (未发布)
    • 类似于DOOM的软件raycaster
  • 玩具总动员
    • 光栅调色板效果使您可以超出静态屏幕保护程序图像中CRAM颜色的数量
    • DOOM Raycaster第一人称水平
    • 伍迪1级几何的视差效果

  • 星际巡洋舰 (日本)
    • 3D,多边形图形的软件渲染
  • 相反:硬兵团
    • 第一层的巨型微型老板机器人是具有模拟磁贴纸牌/精灵旋转的磁贴纸牌
  • 一个巨大的自制RPG,名为Pier Solar
    • 出色的图形
    • 由粉丝,大师和自制开发人员Genesis团队创建的几年
    • 巨大的64 MB墨盒

请注意,不同的游戏如何使用Genesis硬件限制以及某些游戏如何最大限度地发挥作用。 在《愤怒之街》和《蝙蝠侠》中,出色地展现了恶劣的城市环境。 在Sonic游戏中,即使Sonic的速度很高,也有非常明亮的对比色使您能够识别环境。 阿拉丁和Earth吉姆拥有流畅有趣的动画,强调了角色的性格。

参考和其他阅读


Source: https://habr.com/ru/post/zh-CN471914/


All Articles