易码技术论坛

 找回密码
 加入易码
搜索
查看: 2562|回复: 3

[源码] 修补nc3000的lvm的crc16函数源码

[复制链接]
发表于 2008-4-2 19:29:24 | 显示全部楼层 |阅读模式
SIZE EQU $80
SRC EQU $84
VALUE EQU $86
CRCHI EQU $BBBA
CRCLO EQU $BABA


.ORG $BA07
JSR $8AC4
JSR $8B3D
LDA #$00
STA VALUE
STA VALUE+1
LDY #$00
LOOP:
LDA SIZE
BNE LOOPA
LDA SIZE+1
BEQ END
LOOPA:
LDA (SRC),Y
EOR VALUE+1
TAX
LDA CRCHI,X
EOR VALUE
STA VALUE+1
LDA CRCLO,X
STA VALUE
INC SRC
BNE ADDA
INC SRC+1
ADDA:
LDA SIZE
BEQ DECSIZE
DEC SIZE
JMP LOOP
DECSIZE:
DEC SIZE
LDA SIZE+1
BEQ END
DEC SIZE+1
JMP LOOP
END:
LDA VALUE
STA $80
LDA VALUE+1
STA $81
LDA #$00
STA $82
STA $83
JMP $8B03

用6502sdk.lav编译后覆盖LAVA.bin的3b07处~
覆盖后调用系统的CRC16函数就正常了~
发表于 2008-4-3 12:40:10 | 显示全部楼层
貌似只需要改个地方就可以了。
发表于 2008-4-4 13:31:21 | 显示全部楼层
crc16有错?
什么错误?
发表于 2008-4-4 15:28:47 | 显示全部楼层
这是反NC3000的GVmaker.bin的Crc16的一段代码
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
code_be:;Crc16
jsr Popto80
jsr PopStackTo84
ldy #$00
sty $86
sty $87
lda $81
beq qba31
qba17:
lda $87
eor ($84),y
tax
lda Lbbba,x
eor $86
sta $87
lda Lbaba,x
sta $86
iny
bne qba17
inc $85
dec $81
bne qba17
qba31:
lda $80
beq qba4b
lda $87
eor ($84),y
tax
lda Lbbba,x
eor $86
sta $87
lda Lbaba,x
sta $86
iny
dec $80
bne qba17;应该改为bne qba31
qba4b:
lda $86
sta $80
lda $87
sta $81
lda #$00
sta $82
sta $83
jmp PushFrom80

[ 本帖最后由 yan 于 2008-4-4 15:29 编辑 ]
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-19 10:33 , Processed in 0.009992 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表