红白机大时代
字体: 16 + -

第二十章 破解6502密码(下)

    在完成了基础步骤之后,王秋阳所编撰的6502同显最大发色数的谜底,也水到渠成。和同色号发色一样,渐近色号也能够通过相同的原理完成同屏发色。

    比如死机的花屏颜色,现在已经排除了黑阶,灰阶两种色号。如果再人为的制造花屏,电脑会自动寻找剩下的颜色,比如蓝屏,红屏都很正常。

    接下来,就是使用渐近色号,取代原本电脑默认的花屏色号。比如用02色号深蓝取代12号湛蓝,又比如用07号深红取代05号正红。

    只要在重新hack游戏的时候,把五十二种色号全部排选一遍,最后在理论上就能够使用任何一个色号。这就是6502同显六十四色号的原理。

    这套汇编理论,也是二十一世纪的百度达人“周哥”完成的。王秋阳曾经用它hack过好几款游戏,记忆尤深,如今也能把它很明晰的描述了出来。

    首先,

    ch_join:;色号(02)进栈

    inc p_stack

    bne ch_join02

    inc p_stack

    ch_join02:

    ldy #$00

    sta (p_stack),y

    rts

    然后,留存进栈数据,到达另一个栈,也就是临时贮存器’

    get_stack03:;色号出栈到(02’)

    ldy #$00

    lda (p_stack),y

    ldy p_stack

    dey

    sty p_stack

    cpy #$ff

    bne get_stack

    dec p_stack

    rts

    接下来,新色号再次指定入栈条件

    inftosuf04:

    cmp #12;“’“

    bne inftosuf #12’

    jsr ch_join ;遇“’”时直接入栈’

    jmp inftosuf02 ;返回02循环

    最后,得出栈顶算符优先级别,在(top_lev)中

    ldy #$00

    sty top_lev

    lda (p_stack),y

    cmp #12;“(“

    beq stack_lev06 ;把栈中的“(”设为0级

    cmp #$00

    beq stack_lev06

    ldx #$ff

    如此一来,电脑原本显示蓝屏的色号,就由12替换成02,都是蓝屏。

    湛蓝的色号是12。

    假设x等于3

    lda $2002, x;

    从内存地址($2002+3)处载入数据,即从$2005处;

    假设y等于2

    lda $2000, y;

    从内存地址$2002处载入数据

    其中:load和store指令可以采用一个标签作为基地址。

    通过代码:

    somelabel:.incbin “our.pal“;显示一个pal文件,

    标签即为它的首地址lda somelabel, x;

    从标签表示的地址+x处向12载入一个值y.

    于是色号02被锁死,但贡献出12这个色号可以任意使用。

    再重复一遍这个步骤,把12色号锁死,用22色号代替。这个时候02色号将获得释放,它和22色号将能够达到同显,于是发色数又增加了一款!

    在理论上,6502的五十二款色号,将有一个将永远无法使用。而实际上,在排选的过程中,可以通过释放灰阶00和10两个色号,将被锁死的色号由两个相同灰阶色号中的30取替,就像最开始释放02的时候一样。

    这个时候,再进行第二遍排选。

    6502的黑色色号有十一款之多,分别是0d至3d,0e至3e,1f至3f。由此可以相继贡献出十款被锁死,从而取替出十种可使用的彩色色号。

    最后6502锁定了一款灰阶和十款黑色,单片机除了显示最初不占用内存,也就是肉眼判定为黑色(0d),白色(灰阶20)两款色号之外,还能使用剩余彩色中的任意二十二款色号。

    这就是fc现在能够达到的最顶尖的机能。

    “好吧,我对此无话可说。”横井俊平放下了日志本,感觉好像看了一场大片一样。他整个人都有些虚脱,但又有一种难言的满足感。

    “二十四色!能够真正运用于游戏中的,可以达到同显二十四色?黑科技,黑科技,货真价实的hack!”

    “这是真的,数据是不会骗人的,我要见见这个人。如果他能够改良一款游戏,我和上村先生将有理由说服社长,把目光重新转移到主机之上!”

    横井俊平坐了起来,拿起了电话,拨通了冬野美纪的公寓:“喂,美纪酱?是我,横井叔叔。我,想见见这位写汇编的人。”

    冬野美纪也并不意外:“您知道不是我写的?”

    横井俊平笑了笑:“你别生气,如果是,横井叔叔倒会惊讶了。告诉我,这个人在哪儿?”

    冬野美纪说道:“您昨天还请他吃过饭呢。”

    “什么?真的是他!”

    ……

    九月九日,星期三。

    “您好横井先生,没有想到又能有幸受到您的邀请。”

    这天放学,冬野美纪再次将王秋阳约了出来。不过这一回并没有带上胖子和夏雨诗,因为这是比较正式的会面,发出邀请的正是横井俊平。

    王秋阳的剧本很成功。不光是汇编写得好,一步步将横井俊平勾搭了出来。同时他也把握住了身边的机会,以冬野美纪同学的身份,蹭过一顿饭。

    果然,两人见面没有那么生分的感觉,横井俊平也不再为王秋阳只是一个普通大学生感到不必要的震撼了。他掏出了那本日志,微笑着放在了王秋阳的手上。

    “年轻人,你真的把我吸引住了。没有想到中国的留学生中,竟然还有这样的人物,只是你的手段有些不够漂亮。其实你直接向任天堂投稿,我也会采纳你的提案。”

    王秋阳实话实说:“横井先生请见谅,因为我到底是外国人,如果突然涉及到fc的汇编,恐怕会引起不必要的麻烦。所以才会出此下策。”

    横井俊平听了,也明白了王秋阳的意思:“你说得也有道理。美纪啊,你真是认识了一位了不起的年轻人呢!”

    冬野美纪的脸色又是微微发红,不过目光中颇有些骄傲的神采。

    横井俊平说道:“现在刚刚放课,想来你们也饿了吧?我们先去吃饭,然后横井叔叔想和王君好好讨论一下fc的发展!王君,你想吃点什么?”

    王秋阳挠了挠头,说道:“老是蹭饭,怪让人不好意思的。横井先生,如果您不介意,我想吃那个行吗?”

    现在亰都还在“黄金周”,大小街道比平时更要热闹许多。二人顺着王秋阳的手指望去,见街边有一个手推式的面包铺。

    “密瓜包?”横井俊平有些哭笑不得。中国的男孩喜欢吃甜食吗?

    王秋阳也有些不好意思,只说道:“在中国的时候就特别想尝一尝日夲的密瓜包了,可惜一直没有机会。如今来了这里,又囊中羞涩……”

    “行,就吃它吧。你要几个?”

    “六个!”