第二十章 破解6502密码(下)(1/2)
在完成了基础步骤之后,王秋阳所编撰的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
本章未完,点击下一页继续阅读。