- 注册时间
- 2005-5-25
- 最后登录
- 1970-1-1
|
;4灰度格式转为16灰度格式
;图片数据在$3380
;结果放在$2000
4GrayTo16:
LDA #$00
STA $80
LDA #$20
STA $81
LDA #$80
STA $82
LDA #$33
STA $83
grayto4:
LDX #$02
LDA #$00
STA $84
TAY
LDA ($82),Y
STA $85
grayto1:
LDA #$00
STA $84
TAY
ASL $85
ROL $84
ASL $85
ROL $84
LDA $84
TAY
LDA GTT1,Y
STA $86
LDA #$00
STA $84
TAY
ASL $85
ROL $84
ASL $85
ROL $84
LDA $84
TAY
LDA GTT2,Y
ORA $86
LDY #$00
STA ($80),Y
INC $80
BNE grayto2
INC $81
grayto2:
DEX
BNE grayto1
INC $82
BNE grayto3
INC $83
grayto3:
LDA $83
CMP #$40
BNE grayto4
RTS
GTT1:
.DB $F0,$A0,$50,$00
GTT2:
.DB $0F,$0A,$05,$00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;用背景色清除屏幕
BgColor=$03d0
ClearScreen:
LDA #$80
STA $80
LDA #$13
STA $81
LDA #$00
LDY #$00
CLC
LDX BgColor
BEQ color0
DEX
BEQ color1
DEX
BEQ color2
ADC #$55
color2:
ADC #$55
color1:
ADC #$55
color0:
STA ($80),Y
INC $80
BNE cl1
INC $81
cl1:
LDX $81
CPX #$20
BNE color0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;16灰度的dat数据转化为16灰度bmp数据
;入参:$2100-$38FF
;出参:$208A-$38FF
DatToBmp:
LDA #$00
STA $80
LDA #$21
STA $81
LDA #$B0
STA $82
LDA #$39
STA $83
DTB4:
LDY #$00
DTB1:
LDA ($80),Y
STA $3A00,Y
INY
CPY #$50
BNE DTB1
LDY #$00
DTB2:
LDA ($82),Y
STA ($80),Y
INY
CPY #$50
BNE DTB2
LDY #$00
DTB3:
LDA $3A00,Y
STA ($82),Y
INY
CPY #$50
BNE DTB3
CLC
LDA $80
ADC #$50
STA $80
LDA $81
ADC #$00
STA $81
SEC
LDA $82
SBC #$50
STA $82
LDA $83
SBC #$00
STA $83
CMP #$2D
BNE DTB4
LDA $82
CMP #$30
BNE DTB4
LDX #$00
DTB5:
LDA Bmp16Head,X
STA $208A,X
INX
CPX #$76
BNE DTB5
RTS
;16灰度bmp文件头
;数据个数:76H
Bmp16Head:
.DB 66,77,118,25,0,0,0,0,0,0,118,0,0,0,40,0,0,0,160,0,0,0,80,0,0,0,1,0,4,0,0,0,0,0,0,25,0,0,100,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,0,34,34,34,0,51,51,51,0,68,68,68,0,85,85,85,0,102,102,102,0,119,119,119,0,136,136,136,0,153,153,153,0,170,170,170,0,187,187,187,0,204,204,204,0,221,221,221,0,238,238,238,0,255,255,255,0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;$03c9 =$00:用背景色画
;$03c9 =$01:用前景色画
;$03c9 =$02:反显
;$03d0,$03d1:背景色,前景色
Graph_x1=$03c3
Graph_y1=$03c4
Graph_x2=$03c5
Graph_y2=$03c6
Graph_x=$03c7
Graph_y=$03c8
GraphType=$03c9
BgColor=$03d0
FgColor=$03d1
;画填充方块
GrayBox:
LDX Graph_y1
DEX
box1:
STX Graph_y
TXA
PHA
JSR LineX
PLA
TAX
INX
CPX Graph_y2
BNE box1
RTS
;画横线
LineX:
LDA Graph_x1
CMP #$A1
BCC line1
LDA #$A0
STA Graph_x1
line1:
LDA Graph_x2
CMP #$A1
BCC line2
LDA #$A0
STA Graph_x2
line2:
LDA Graph_y
CMP #$51
BCC line3
LDA #$50
STA Graph_y
line3
LDA Graph_x2
CMP Graph_x1
BCS line4
RTS
line4:
LDA Graph_x1
BNE line18
INC Graph_x1
line18:
LDA #$80
STA $80
LDA #$13
STA $81
LDX #$28
line5:
CLC
LDA Graph_y
ADC $80
STA $80
LDA $81
ADC #$00
STA $81
DEX
BNE line5
LDA Graph_x1
LSR
LSR
CLC
ADC $80
STA $80
LDA $81
ADC #$00
STA $81
LDA Graph_x1
AND #$03
TAX
JSR geta
STA $82
CPX #$00
BEQ line9
line6:
LSR
LSR
DEX
BNE line6
LDY #$00
JSR line11
INC $80
BNE line9
INC $81
line9:
LDA Graph_x2
SEC
SBC Graph_x1
LSR
LSR
TAY
TAX
CMP #$00
BNE line14
LDA Graph_x2
AND #$03
CMP #$00
BNE line15
JMP line13
line15:
RTS
line14:
CMP #$01
BNE line16
LDA Graph_x2
AND #$03
BEQ line7
JMP line13
line16:
LDA Graph_x2
AND #$03
BEQ line7
DEY
line7:
DEY
LDA $82
JSR line11
CPY #$00
BNE line7
line13:
LDA Graph_x2
AND #$03
TAY
LDA $82
CPY #$03
BEQ line17
CPY #$00
BNE line8
INX
line8:
ASL
ASL
INY
CPY #$03
BNE line8
line17:
PHA
TXA
TAY
DEY
PLA
JSR line11
RTS
line11:
PHA
LDA GraphType
CMP #$02
BEQ line12
PLA
STA ($80),Y
RTS
line12:
PLA
EOR ($80),Y
STA ($80),Y
RTS
geta:
LDY GraphType
BEQ Bg
LDY FgColor
JSR geta1
RTS
Bg:
LDY BgColor
JSR geta1
RTS
geta1:
LDA #$00
CLC
CPY #$00
BEQ geta2
DEY
BEQ geta3
DEY
BEQ geta4
ADC #$55
geta4:
ADC #$55
geta3:
ADC #$55
geta2:
TAY
DEY
TYA
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;$03c3~$03c6:x1,y1,x2,y2
;$92,$93:图片地址
Graph_x1=$03c3
Graph_y1=$03c4
Graph_x2=$03c5
Graph_y2=$03c6
GrayGraph:
LDA Graph_x1
CMP #$A1
BCC x1
LDA #$A0
STA Graph_x1
x1:
LSR
LSR
STA $80
LDA Graph_x2
CMP #$A1
BCC x2
LDA #$A0
STA Graph_x2
x2:
LSR
LSR
STA $81
SEC
SBC $80
STA $81
LDA #$80
STA $82
LDA #$13
STA $83
CLC
LDA $80
ADC $82
STA $82
LDA $83
ADC #$00
STA $83
LDX Graph_y1
BNE draw3
INX
draw3:
CLC
LDA $82
ADC #$28
STA $82
LDA $83
ADC #$00
STA $83
DEX
BNE draw3
SEC
LDA Graph_y2
SBC Graph_y1
TAX
draw2:
LDY #$00
draw1:
LDA ($92),Y
STA ($82),Y
INY
CPY $81
BNE draw1
DEX
BEQ drawend
CLC
LDA $82
ADC #$28
STA $82
LDA $83
ADC #$00
STA $83
TYA
CLC
ADC $92
STA $92
LDA #$00
ADC $93
STA $93
JMP draw2
drawend:
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;若四灰下使用INT $C006,按热键后没恢复为二色
;四灰度下用JSR Inkey代替INT $C006
Inkey:
LDA $C7
BMI inkey1
LDA #$00
STA $03F6
CLC
BCC Inkey
inkey1:
LDA $C7
CMP #$A1
BEQ inkey2
CMP #$98
BEQ inkey2
CMP #$80
BCC inkey3
CMP #$8D
BCS inkey3
inkey2:
LDA $C7
PHA
JSR Regain
PLA
STA $C7
inkey3:
INT $C006
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;将显存$19C0的内容发送到$1380
;$03d0:背景色0~3,$03d1:前景色0~3
;若背景色大于3,则背景色为0
;若前景色大于3,则前景色为3
ToGrayBuffer:
LDA $03D0
CMP #$04
BCC qjs
LDA #$00
STA $03D0
qjs:
LDA $03D1
CMP #$04
BCC send
LDA #$03
STA $03D1
send:
LDA #$C0
STA $80
LDA #$19
STA $81
LDA #$80
STA $82
LDA #$13
STA $83
LDY #$00
LDA $03D0
ASL
ASL
ASL
ASL
ASL
ASL
STA $84
LDA $03D1
ASL
ASL
ASL
ASL
ASL
ASL
STA $85
LDA #$00
STA $86
STA $87
send7:
LDX #$08
LDA ($80),Y
STA $88
send1:
ASL $88
BCC send2
LDA $85
ASL
ROL $87
ROL $86
ASL
ROL $87
ROL $86
CLC
BCC send3
send2:
LDA $84
ASL
ROL $87
ROL $86
ASL
ROL $87
ROL $86
send3:
DEX
BNE send1
LDA $86
STA ($82),Y
INC $82
BNE send4
INC $83
send4:
LDA $87
STA ($82),Y
INC $82
BNE send5
INC $83
send5:
INC $80
BNE send6
INC $81
send6:
LDA $81
CMP #$20
BNE send8
RTS
send8:
JMP send7 |
|