提前道歉,因为这是一个老话题。我正在阅读以下关于任天堂徽标数据如何在引导期间被复制到 v-ram 之前如何解压缩和缩放的帖子,有趣的是,写入的数据确实看起来很乱(正如提问者所指出的那样),我已经尽力了(使用我编写的 gb 模拟器)产生相同的输出......但没有成功。
有问题的汇编代码是引导 rom 的这一部分:
LD C,A ; $0095 "Double up" all the bits of the graphics data
LD B,$04 ; $0096 and store in Video RAM
Addr_0098:
PUSH BC ; $0098
RL C ; $0099
RLA ; $009b
POP BC ; $009c
RL C ; $009d
RLA ; $009f
DEC B ; $00a0
JR NZ, Addr_0098 ; $00a1
LD (HL+),A ; $00a3
INC HL ; $00a4
LD (HL+),A ; $00a5
INC HL ; $00a6
RET
作为对上述帖子的回复,v-ram 的输出显示为:
8000: 00000000000000000000000000000000
8010: F000F000FC00FC00FC00FC00F300F300
8020: 3C003C003C003C003C003C003C003C00
8030: F000F000F000F00000000000F300F300
8040: 000000000000000000000000CF00CF00
... and so on
谁能解释这个输出是如何产生的,如果它确实是正确的?
提前谢谢了。
PS 假设 Nintendo 标志被明确地(在一些 C/Java 代码中)复制到 v-ram,0104h
在引导过程中从地址开始以测试引导程序。
.DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D
.DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99
.DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E