leesoft 发表于 2007-8-23 13:47:31

多用宏,少用直接地址,这样可移植性好

Loading 发表于 2007-8-23 20:41:13

是啵
可是在WQX上的编译器宏好象不怎么能用
LEE可以改进一下zhaofeixxx的那个么,那个是用lava1.0编的,偶想lee比谁都在行吧
或许你还可以加入我们不能做到的东东
比如说双语OK那样的狠东西除了lee谁能用lava1.0做出来

Loading 发表于 2007-8-23 20:43:24

这样的东东头都看麻了
line12345.....
辛苦作者了,怎么记的清楚这些标号意义额

POTO 发表于 2007-8-24 19:36:22

引用第2楼Loading于2007-08-23 20:41发表的“”:
是啵
可是在WQX上的编译器宏好象不怎么能用
LEE可以改进一下zhaofeixxx的那个么,那个是用lava1.0编的,偶想lee比谁都在行吧
或许你还可以加入我们不能做到的东东
比如说双语OK那样的狠东西除了lee谁能用lava1.0做出来
好啊
可以直接用了!
-------------
比如说双语OK那样的狠东西除了lee谁能用lava1.0做出来
yan可以
学过lav的也可以,我可以,你也一定能行!

dragon_ 发表于 2007-9-11 16:28:20

vnt这种东西还是得用汇编。Q-Player808的功能绝对是目前最强的。
还有POTO你那个midi的后台播放是怎么实现的?

gcwy 发表于 2007-8-23 13:32:17

4灰度下我写的一些函数

;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
页: [1]
查看完整版本: 4灰度下我写的一些函数