虚拟男孩Nintendo 64:Episode II

四种颜色,三种尺寸,两种控制台和一种如何将它们组合在一起的宽松观念

上一次,在Virtual Boy:Episode I中的Nintendo 64中,我实质上是为这个项目写了我的概念(我建议在此之前先读一下,以便您大致了解这里的情况)。 当然,我对Nintendo 64仿真结束时的图形插件进行了一些探索,但是总体而言,我在这个项目中进展并不很快,只是对此感到非常兴奋。

这次,我将回顾到目前为止的一些早期开发工作,并更深入地解释它们如何组合在一起,或者至少我希望它们如何组合在一起。

首先,我想谈谈我对这个项目的灵感,它实际上来自看似无关的项目Depth3D。 不久以前,我就激动地意识到Depth3D(通常是ReShade)与Angrylion RDP Plus(以及一般是Nintendo 64仿真)兼容。 您可以参阅我的文章《如何演奏(改装的)时光陶笛》以获取更多信息。 无论如何,当我开始使用Depth3D玩游戏时,我现在都在修补从景深到环境光遮挡的所有内容,再到少数Nintendo 64游戏的像素完美仿真:这使我能够玩立体图游戏3D 当然,Depth3D可以做的还远远不止这些,但是立体3D是我真正的弱点。 如果您不熟悉,浮雕3D实际上就是您在那副红色和青色眼镜上弹出的“守旧派” 3D,以查看相应的图像,如下所示:

正是在这一点上,我意识到,对于Nintendo 64游戏而言,无需太多麻烦就可以产生令人信服的“ 3D”效果,嘿,Depth3D是开源的,因此我什至可以从其代码中学习如何做到这一点。 。 当然,Virtual Boy的3D与立体3D有点不同,但是一点点挑战使事情变得有趣。

无论如何,回到现在,我一直在努力为该项目组合更多的技术设计。 基于我对Nintendo 64的图形进行编码以输出到Virtual Boy的初步工作。 我在此处对仿真图像进行了快速比较,以使您大致了解此编码的含义(还有更多工作要做):

调整和优化编码是一回事,但是要真正理解需要调整和优化的内容则完全是另外一回事了(因为很难推断出实际硬件上的图像是什么样子),所以我开始在硬件方面进行工作东西的。 这是否是最实际的想法,或者甚至是否可行,还有待观察,但是在这个阶段,我想我可以利用Gameduino来解决这个问题。 至少有几个优势:首先,我已经拥有Gameduino,其次我对Arduino平台已经足够熟悉,希望这可以使我轻松地将它们拼凑在一起。

根据examera网站的说法,Gameduino 将Arduino连接到VGA显示器和扬声器,从而提供了功能强大的基于精灵和图块的图形,可用于创建视频游戏。 尽管进行了说明,但Gameduino实际上可以用于输出像素寻址的图形! 他们甚至提供了一个示例位图,以256×256像素4色位图的形式说明了像素寻址图形的设置。 听起来很方便,不是吗? 当然,这是通过将Gameduino可用的所有256个Sprite排列为16×16网格来完成的,每个Sprite本身都是16×16像素的网格,从而为我们提供了256×256像素的总体分辨率。 在这一点上,我不得不花点时间想出18×14网格中的精灵排列,而不是示例中的16×16。 一个18×14的网格仅使用256个可用精灵中的252个,但是它确实创建了288×224像素的总分辨率,这应该很好地适合Virtual Boy原生384×224分辨率的范围。 它与Nintendo 64的原生4:3长宽比也相差不远。

那么,要备份一秒钟, 我到底在做什么 ? 当然,具有288×224分辨率的图像对Gameduino有意义,但Gameduino输出VGA信号,对于Virtual Boy有什么好处? 我的思路是这样的:经过修改的我的《愤怒的小天使》不会像我们习惯的那样输出“视频信号”,因为这不像您可以将HDMI电缆插入PC并像显示器一样运行Virtual Boy分辨率为288×224,也许您可​​以做到,但是我觉得那是一件无用的工作。 我实际上在想的是,经过修改的Angrylion将输出数据流(像素数据),该数据流将通过USB运行到Arduino / Gameduino,然后将数据流处理为288×224染成红色的单色图像并通过VGA输出。 此外,这可以在修改后的Virtual Boy之前创建一个可测试的点,因为我可以将VGA信号提供给常规的VGA兼容显示器(可能是我的旧Trinitron CRT,因为我认为它应该支持这样的分辨率,如果不能,我可以玩以及我的一个洁牙机)。 总体而言,该过程看起来像这样(我尚未对该过程的第三个也是最复杂的阶段进行了深思熟虑):

然后,从生成VGA信号开始的步骤是在Virtual Boy上安装专用的VGA输入。 我对这种方法的喜欢是,它使我能够将经过改装的Virtual Boy与不同的设备混合使用,因为从长远来看,我的Arduino / Gameduino解决方案几乎肯定不是最佳解决方案,这种方法存在问题,没有怀疑。 首先,要接受通用的VGA信号并为Virtual Boy进行处理并不容易-我可以说,即使没有开始研究Virtual Boy实际将要接受的格式,但肯定是一种独特的格式对于像素数据,根本不是即插即用类型的东西。 无论如何,我确实希望虚拟男孩接受某种通用视频信号,所以我想这是我必须走的一条路。 另外,当您考虑如何通过它来管理任何种类的3D效果时,这种方法也会遇到问题。

所以我想现在,我正在为我的项目Virtual Boy Input Mod:Mark 1开发一个实验原型。 (稍后我会提出一个更好的名称)。 Mark 1只是一个项目,旨在学习如何拍摄图像并将其发射到每个人都喜欢的黑色和红色双筒望远镜上。 从那里开始,我将继续学习更精致的Mark 2 ,它将更加担心如何充分利用Virtual Boy。

无论如何,首先是第一件事:我挖出了Gameduino,然后开始了修改Angrylion的过程,以将流向下写入到Arduino,然后编写相应的程序以接受该流并将其处理为实际的流。视觉! 好奇的是,根据其Git-Hub页面,Angrylion由93.5%的C代码和5.6%的C ++组成,而Arduino编程语言本质上也是C / C ++。 现在,不可否认,我首先是.NET开发人员,所以C#是我的舒适地带,但是我似乎可以很轻松地通过C / C ++摸索自己的方式,并且我拥有与以前合作过的幸运经历Angrylion和一个Arduino项目将图像从GameBoy摄像头复制到PC,因此我无法完全不熟悉周围的环境。

我意识到这一点,本系列的第二集现在是第一集长度的两倍,所以我在这里省略。 下次,我将致力于该项目的技术架构,并真正开始着手开发流程! 希望届时我的新Virtual Boy和Virtual Boy部件也将到达邮件中。 下次见!