快眼看书 > 网游竞技 > 红白机大时代 > 《红白机大时代》正文 第十九章 破解6502密码(中)

《红白机大时代》正文 第十九章 破解6502密码(中)

推荐阅读: 宝鉴   扶明录   叶辰萧初然   重生之再铸青春   女神的上门豪婿(又名:女神的超级赘婿,主角:赵旭)   女神的上门豪婿   女神的上门贵婿   逆天丹帝   神魂丹帝   神魂丹帝   重生之搏浪大时代   仙府种田   这个领主大人非常科学   六指诡医   重生之我真是富三代   刚被悔婚超级天后带娃堵门   踏枝   叶君临  

    一天后,横井俊平终于看到了让他牵挂了一晚上的答案。看到这个答案的时候,他差点要给自己一拳,因为这个答案点居然是最基础的理论。

    “堆栈!?”

    不错,王秋阳给出的答案就是堆栈。

    所谓堆栈,就是在单片机应用中,有一个特殊的存储区。它的主要功能是暂时存放数据和地址,通常用来保护断点和现场。这个存储区,就是堆栈。

    但堆和栈,又有些许的不同。

    堆,是队列优先,先进先出(fifo—first  first out)。

    栈,是先进后出(filo—first-st-out)。

    6502堆栈100--1ff最多只能存放127个双字节,所以jsr最大连续的转入深度为127层。如果还有其它数据入栈,子程序转入深度还要减少。所以在设计复杂的程序时,堆栈是会出现溢出的。堆栈溢出,意味着主机会死机。

    死机代表什么?

    横井俊平终于意识到了关键,因为死机不代表结束。对普通人来说死机意味着重启,而在黑客的手上死机意味着bug就要出来了。

    果然,王秋阳的回复中,依据堆和栈的特点,做出了不一样的文章。

    堆,因为是先进先出,理论上是由电脑自行运算。

    栈,由于是先进后出,因此可以人为控制其运算。

    说形象一点,堆就像地铁,乘客只要买票,上车后可以万事不管,轻轻松松的坐车到站。但是地铁只管到站,不会送你到家门口。

    而栈,则更像私家车。私家车需要自己驾驶,不像乘地铁那样轻松。但是它的自由度更大,想去哪儿就去哪儿,想什么时候出发随心所欲。

    一个栈,在没有数据进栈时堆栈指针s=ff。

    每当有一个数据进栈s-1→s。

    每当有一个数据出时栈s1→s。

    当执行jsr指令时,cpu把下一条指令地址-1,也就是两个字节自动入栈,即是程序的返回地址-1自动入栈,然后转入到子程序中执行。

    当遇到rts时弹出栈顶2个字节,作为程序的返回地址,并转到下一条指令中执行。而这次执行,是可以人为控制的。

    也就是说让堆自主运算,然后人为的控制栈的数据流动,这就能够让6502芯片自发的完成定时器的效果,造成和留白一样的假死机,也就是花屏。

    而且这个花屏的颜色,将不再是黑色,因为它已经bug过了。加之栈现在避开的电脑的自主操作,可以这次花屏可以人为的“默认”它显示灰阶。

    “还有这种操作?”

    看到这里,横井俊平直感慨,为什么自己的思维总跟不上节奏?再看之前的同显五十二色汇编语言,他甚至怀疑这篇稿件是未来的某个人写出来的才对。

    思路被打通之后,后面的内容,横井俊平看得就轻松了许多,但同样很扣人心弦。

    因为后面分析的,就是如何利用ppu增加发色数。

    现行ppu和65027芯片一样,是由理光设计,十六进制支持既定4x16色号调色版的型号。

    电脑的画面制作,是由ppu拟定原始色号,也就是物理运算芯片。之后由gpu负责运算,显示,最后cpu负责全程调控。可以说ppu是发色的基础,它的发色原理来源于芯片上的寄存器。

    寄存器本身分为两个概念,一个是物理概念,也就是寄存真实的颜色,比如红,绿,蓝这样的颜色。另一个概念,就是运算概念,ppu把这些颜色以数据的形式传送给电脑,再由gpu通过显卡把数据传送到屏幕上。当然,fc没有单独显卡,gpu是集成于主板上的。

    其中的物理概念,重点就在于寄存器对发色的选定。

    电脑的三源色是红,绿,蓝。6502的发色原理是构建两条垂直伸展的轴线,分别是x和y,从左上角向右方和下方延展。原色红居于正上方,蓝居于左下角方,绿居于右下方。

    由于6502认定屏幕的上和下,左和右是互通的,因此发色的区域左边自形成的白色起始,渐进到灰色,然后是从紫到红,向右渐变为青色,再到绿色,最后是黑色。

    自上而下,则是从红色渐变到橙色,再到黄色为止。而座标的斜方向,就是渐变的一些靠近主色的近色。ppu寄存器要做的,就是选定一个发色范围,同时将需要的颜色以数据的形式贮存下来。

    如果以后需要某种颜色,ppu就能够提交数据,迅速以相应的座标记忆将三原色搭配出的色彩毫无差错的构建出来。这也是电脑让人类无法企及的超强运算能力,哪怕只是八位处理性能的6502。

    试问,就是一位画家,他能够保证自己每次调配出来的色号完全一样吗?肯定不能,但是电脑就可以。

    和6502协同运算的ppu,座标记忆就是达到四乘以十六的一个区间,在寄存器中贮存下来。这些数据,就是电脑的调色板,即物理运算;而这些能够随时转化为颜色的座标数据,就是色号,即数据运算。

    6502要增加ppu上的游戏色号,这个堆栈就要联系到卡带上的临时贮存器。

    任天堂的卡带上有四个重要的组成部分,分别是ro-chr,ro-prg,c芯片,还有ra。当然还有电池,密码锁等和程序关系不大的配件。

    其中,ro-chr用来贮存游戏的图文,ro-prg贮存程序。

    而在游戏过程中,运算都是在ra中进行的。ra全称为rando-aess ory,代表游戏内存。它的功能是暂时存储数据供cpu调取。

    由于卡带的读取速度跟不上6502的处理速度,因此所有的程序运行都是先从卡带读取数据并加载到内存中,再写入cpu内部的高速缓存进行处理。

    人为增加发色数的过程,将在这里完成最后的步骤。

    ra在待机状态下为空,也就是说,ra负责在游戏运行时贮存临时数据。从某种意义上来说,ra和堆栈的作用很相似,只是它的容量非常之小,一般只有20kb(1kb等于8字节)。

    这个就是临时贮存器。在“定时器”的原理下,色号能存在两个。它能够把灰阶20像黑色那样,指定为花屏底色,强制电脑显示出来,使它成为可用色号。

    因为cpu显示出默认灰阶,成为了同显发色色号。因此人为的再使用灰阶30,就能够在黑色之外再增加一款发色数,而且本身并不占用到任何内存。

    如此一来,即便在没有c芯片的支持下,发色数也增加到了十四种。即黑色,灰阶,以及十二种彩色!

    看到这里,横井俊平忍不住感慨道:“科乐美为了研发c芯片,花了两年时间,增加了一款发色数。而这套汇编才用了两天,真是让人难以置信!”快眼看书小说阅读_www.bookcu.com

上一页 加入书签 目录 投票推荐

推荐阅读: 特种精英玩网游   重振大明   齐天大魔猴   仕途青云   神弃   神峰   网游之统领天下   网游之主宰万物   万能神戒   网游之影子大师   穿越之嫡女锋芒   约会大作战之反转士道   武侠英雄联盟系统   游戏王之竞技之城   撼仙   娇蛮小姐傲总裁   御龙无双   天玄剑传奇   婚城难入  

温馨提示:按 回车[Enter]键 返回书目,按 ←键 返回上一页, 按 →键 进入下一页,加入书签方便您下次继续阅读。章节错误?点此举报