字体
第(1/3)页
关灯
   存书签 书架管理 返回目录
    在完成了基础步骤之后,王秋阳所编撰的6502同显最大发色数的谜底,也水到渠成。和同色号发色一样,渐近色号也能够通过相同的原理完成同屏发色。

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

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

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

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

    首先,

    ch_jo:色号(02)进栈

    p_stack

    bne ch_jo02

    p_stack

    ch_jo02:

    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

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

    ftosuf04:

    12“’“

    bne ftosuf 12’

    jsr ch_jo 遇“’”时直接入栈’

    ftosuf02 返回02循环

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

    ldy 00

    sty _lev

    lda (p_stack),y

    12“(“

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

    00

    beq stack_lev06

    ldx ff

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

    湛蓝的色号是12。

    假设x等于3

    lda 2002, x

    从内存地址(20023)处载入数据,即从2005处

    假设y等于2

    lda 2000, y

    从内存地址2002处载入数据

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

    通过代码:

    sobel:cb “ourpal“显示一个pal文件,

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

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

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

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

    在理论上,6502的五十二款色号,将有一个将永远无法使用。而实际上,在排选的过
上一章 目录 下一页