Давно у меня валялся файл игры с кряктро. Я решил посмотреть, как это работает, 1988 год это вам не в пузырьки пердеть. Например, так задаются цвета:
loc_961:
LDY #0
STY $43
loc_965:
LDY $43
LDA unk_9AA,Y
TAX
LDA unk_9AB,Y
STA $44
LDA unk_9AC,Y
LDY $44
JSR sub_994 ; fill line
INC $43
INC $43
INC $43
LDA $43
CMP #$18
BNE loc_965
LDA #1 ; character counter
STA $3F5
LDA #L0A54&255;$54 ; 'T' ; text pointer
STA $21
LDA #L0A54/256;$A
STA $22
JMP loc_9CA
sub_994:
STY $43
loc_965:
LDY $43
LDA unk_9AA,Y
TAX
LDA unk_9AB,Y
STA $44
LDA unk_9AC,Y
LDY $44
JSR sub_994 ; fill line
INC $43
INC $43
INC $43
LDA $43
CMP #$18
BNE loc_965
LDA #1 ; character counter
STA $3F5
LDA #L0A54&255;$54 ; 'T' ; text pointer
STA $21
LDA #L0A54/256;$A
STA $22
JMP loc_9CA
sub_994:
STX $44
STY $45
LDY #0
loc_99A:
STA ($44),Y
INY
CPY #$28 ; '('
BNE loc_99A
LDA #0
STA $D020 ; Border color (only bits #0-#3)
STA $D021 ; Background color (only bits #0-#3)
RTS
; End of function sub_994
; ---------------------------------------------------------------------------
; color RAM d800-dbff
unk_9AA: !byte $58
unk_9AB: !byte $DA
unk_9AC: !byte 1
!byte $80
!byte $DA
!byte 1
!byte $A8
!byte $DA
!byte $F
!byte $D0
!byte $DA
!byte $F
!byte $F8
!byte $DA
!byte $C
!byte $20
!byte $DB
!byte $C
!byte $48
!byte $DB
!byte $B
!byte $70
!byte $DB
!byte $B
Здесь задается таблица Адрес Color RAM, значение. Цвета тут. Ясно, что можно переписать короче.Теперь процедура сдвига для символов:
sub_8ED:
CLC
ROL $38
BCC loc_8F7
LDA #$FA ; 'ъ'
STA $67F
loc_8F7:
CLC
ROL $39
BCC loc_901
LDA #$FA ; 'ъ'
STA $6A7
loc_901:
CLC
ROL $3A
BCC loc_90B
LDA #$FA ; 'ъ'
STA $6CF
loc_90B:
CLC
ROL $3B
BCC loc_915
LDA #$FA ; 'ъ'
STA $6F7
loc_915:
CLC
ROL $3C
BCC loc_91F
LDA #$FA ; 'ъ'
STA $71F
loc_91F:
CLC
ROL $3D
BCC loc_929
LDA #$FA ; 'ъ'
STA $747
loc_929:
CLC
ROL $3E
BCC loc_933
LDA #$FA ; 'ъ'
STA $76F
loc_933:
CLC
ROL $3F
BCC locret_93D
LDA #$FA ; 'ъ'
STA $797
locret_93D:
RTS
Такое комментировать, только портить.
В общем, больше времени уходит на понимание такого замысловатого кода. Хоть в чем-то разобрался.Исходник+.PRG, не выложил игру по понятным причинам.
Комментарии
Отправить комментарий