易码技术论坛

 找回密码
 加入易码
搜索
查看: 2388514|回复: 73

[公告]一些lee独立编写的汇编源代码公开

[复制链接]
发表于 2004-11-27 08:16:00 | 显示全部楼层
支持!
发表于 2004-11-27 09:36:00 | 显示全部楼层
我也支持,虽然我很菜
 楼主| 发表于 2004-11-27 11:42:00 | 显示全部楼层
这么冷清啊。看来wqx汇编的确要淡出舞台了。
先抛砖引玉吧。《末日传说》的一个文件。
include h/mori.h
include ../bios/h/graph.h
public start
public start0
public next_game

extrn set_get_buf
extrn clear_sprite
extrn write_map
extrn move_map
extrn wait_key
extrn get_head_object
extrn show_talk
extrn get_object
extrn pop_menu
extrn add_friend
extrn run_juqing
extrn run_juqing0
extrn if_juqing
extrn goods_inc
extrn get_box_flag
extrn set_box_flag
extrn random_it
extrn fight
extrn refreshmap
extrn scroll_to_lcd
extrn delay
extrn write_160x80x
extrn continue_game
extrn play_staff
extrn get_flag
extrn xor_flag
start:
ldx #StackTop
txs

if nc1020
BREAK_BANK __CloseAll
else
BREAK_BANK __FileCloseAll
endif

CiAll
lda io_bank_switch
sta game_bank
jsr set_get_buf ;为以后读数据而把程序移到ram
lda game_second_m2
eor kbdrow
ora #1
sta my_seed ;随机数初始化
lm put_key,#0 ;无强制键
sta no_enemy ;遇敌
jsr disp_logo
start0:
lm2 bank_data_ptr,#TITLE
jsr write_160x80x
jsr scroll_to_lcd
start1:
jsr wait_key
cmp #'b'
beq first_game
cmp #'n'
beq start2
cmp #'m'
bne start1
lm down_ram_set,#0 ;退出到网络,但不执行网络热键设定
BREAK_BANK __main
start2:
jsr continue_game
jmp start0
next_game:
lm juqing_id,#0ffh
bne next_game1
first_game:
jsr game_init
lm movedir,#0
next_game1:
jsr init_step ;遇敌步数初始化
lda mv_num
and #7fh
sta mv_num
lda #0
sta hour2
sta minute2
jsr clear_sprite
lm spriteid,#0
jsr refreshmap
lda juqing_id
cmp #0ffh
beq wait_for_key
jsr run_juqing
wait_for_key:
jsr wait_key
SWITCH rpg_cmd_len,rpg_cmd
jsr if_juqing
lda no_enemy
bne wait_for_key

lda step_count
bne wait_for_key
lda #MAPENEMY_CLASS
ldx mapid
jsr get_object
jsr ram_get256
lda data_read_buf
beq to_init_step ;本地图无随机敌人
lda my_data+LEVEL_OFF ;主角级别
sec
sbc data_read_buf+1
bcc get_enemy0
clc
adc #2
jsr random_it
cmp #0
beq to_init_step
get_enemy0:
lda data_read_buf
jsr random_it
asl a
asl a
tax
ldy #0
get_enemy:
lda data_read_buf+2,x
sta enemyid,y
inx
iny
cpy #4
bcc get_enemy
lm fight_set,#0
jsr fight
jsr refreshmap
to_init_step:
jsr init_step
jmp wait_for_key
rpg_cmd:
db LEFT_KEY
db RIGHT_KEY
db UP_KEY
db DOWN_KEY
db CR_KEY
db F4_KEY
rpg_cmd_len equ $-rpg_cmd
dw proc_left
dw proc_right
dw proc_up
dw proc_down
dw proc_cr
dw pop_menu
proc_left:
dec step_count
lm movedir,#4
lm spriteid,#0
jmp move_map
proc_right:
dec step_count
lm movedir,#3
lm spriteid,#0
jmp move_map
proc_up:
dec step_count
lm movedir,#1
lm spriteid,#0
jmp move_map
proc_down:
dec step_count
lm movedir,#2
lm spriteid,#0
jmp move_map
proc_cr:
jsr get_head_object
bcc proc_cr_rts
tya
and #40h
beq proc_cr_rts
tya
and #3fh
cmp #SAY_CLASS
bne proc_cr1
jsr get_object
jsr ram_get256
lm2 string_ptr,#data_read_buf+2
jmp show_talk
proc_cr1:
cmp #JUQING_CLASS
bne proc_cr2
tya
bpl proc_cr_rts
jmp run_juqing0
proc_cr2:
cmp #BOX_CLASS
bne proc_cr6
stx a1h
txa
jsr get_box_flag
bne proc_cr_rts
lda a1h
jsr set_box_flag
ldx a1h
lda #BOX_CLASS
jsr get_object
jsr ram_get256
proc_cr21:
lda data_read_buf
jsr goods_inc
ldy #0
proc_cr3:
lda get_goods_msg,y
sta ScreenBuffer,y
beq proc_cr4
iny
bne proc_cr3
proc_cr4:
ldx data_read_buf
lda #GOODS_CLASS
jsr get_object
jsr ram_get256
ldy #5
proc_cr5:
lda data_read_buf+1,y
sta ScreenBuffer+6,y
dey
bpl proc_cr5
lm2 string_ptr,#ScreenBuffer
jmp show_talk
proc_cr_rts:
rts
proc_cr6:
cmp #BOX2_CLASS
bne proc_cr7
stx a1h
txa
ora #80h
jsr get_box_flag
bne proc_cr_rts
lda a1h
ora #80h
jsr set_box_flag
ldx a1h
lda #BOX2_CLASS
jsr get_object
jsr ram_get256
lm data_read_buf,data_read_buf+2
jmp proc_cr21
proc_cr7:
cmp #SWITCH_CLASS
bne proc_cr71
jsr get_object
jsr ram_get256
lda data_read_buf+4
jsr xor_flag
jmp refreshmap
proc_cr71:
cmp #RSAY_CLASS
bne proc_cr_75
jsr get_object
jsr ram_get256
lda data_read_buf+2
jsr random_it
sta a1
ldy #3
lda a1
beq proc_cr74
proc_cr72:
lda data_read_buf,y
beq proc_cr73
iny
bne proc_cr72
proc_cr73:
tya
adda2 bank_data_ptr
jsr ram_get256
ldy #1
dec a1
bne proc_cr72
proc_cr74:
jmp proc_cr11
proc_cr_75:
cmp #SSAY_CLASS
bne proc_cr_rts
jsr get_object
jsr ram_get256
ldy #2
proc_cr8:
lda data_read_buf,y
bmi proc_cr10
sta a1h
lda data_read_buf+1,y
jsr get_flag
eor a1h
bne proc_cr9
iny
iny
bne proc_cr8
proc_cr9:
iny
iny
lda data_read_buf,y
bpl proc_cr9
proc_cr91:
iny
lda data_read_buf,y
bne proc_cr91
tya
adda2 bank_data_ptr
jsr ram_get256
ldy #1
bne proc_cr8
proc_cr10:
iny
proc_cr11:
tya
clc
adc #<data_read_buf
sta string_ptr
lda #>data_read_buf
adc #0
sta string_ptr+1
jmp show_talk
get_goods_msg:
db '获得:攻略书',0      
game_init:
lda #INIT_CLASS
ldx #0
jsr get_object
jsr ram_get256
ldy #0
game_init1:
lda data_read_buf,y
sta init_data,y
iny
cpy #INIT_LEN
bcc game_init1
lda door_top
beq not_door
lda #INIT_CLASS
ldx #INIT_DOOR
jsr get_object
jsr ram_get256
lda door_top
asl a
asl a
tax
dex
game_init2:
lda data_read_buf,x
sta door_stack,x
dex
bpl game_init2
not_door:
lm a3,#3
game_init3:
ldy a3
lda friends,y
bmi next_friend
jsr add_friend
next_friend:
dec a3
bpl game_init3
lda goods_num
beq game_init5
lda #INIT_CLASS
ldx #INIT_GOODS
jsr get_object
jsr ram_get256
lda goods_num
asl a
tay
dey
game_init4:
lda data_read_buf,y
sta my_goods,y
dey
bpl game_init4
game_init5:
lda goods_num
asl a
tay
lda #0
game_init6:
sta my_goods,y
iny
cpy #MAX_GOODS*2
bcc game_init6
ldy #31
lda #0
game_init7:
sta flag_buf,y
sta box_buf,y
dey
bpl game_init7 ;清旗标区
lm game_hour,#0
sta game_min
rts
init_step:
lda #6
jsr random_it
clc
adc #8
sta step_count
rts
disp_log
if nc1020
BREAK_BANK __clrscreen
else
extrn _Bclrscreen
jsr _Bclrscreen
endif

lm _a3,#90
disp_logo0:
lm x0,#80
lm y0,#40
lm circle_r,_a3
lm lcmd,#1

if nc1020
BREAK_BBS _Bcircle_draw
else
extrn _Bcircle_draw
jsr _Bcircle_draw
endif

dec _a3
lda _a3
cmp #36
bcs disp_logo0
ldy #127
disp_logo1:
lda logo,y
sta data_read_buf,y
dey
bpl disp_logo1
lm _a3,#49
lm _a3h,#64
disp_logo2:
jsr write_logo
ldx #1
jsr delay
lm x0,_a3
lm x1,_a3h
lm y0,#24
lm y1,#55
lm lcmd,#0

if nc1020
BREAK_BBS _Bblock_draw
else
extrn _Bblock_draw
jsr _Bblock_draw
endif

ldx #6
jsr delay
add1 _a3,#3
add1 _a3h,#3
lda _a3h
cmp #110
bcc disp_logo2
jsr write_logo
lm x0,#68
lm x1,#91
lm y0,#58
lm y1,#67
lm2 fccode,#lee

if  nc1020
BREAK_BBS _Bw_block
else
extrn _Bw_block
jsr _Bw_block
endif

jsr wait_key
ldy #0
disp_logo3:
lda warning_msg,y
sta data_read_buf,y
iny
bne disp_logo3
lda #0
jsr play_staff
jmp wait_key
write_log
lm x0,#64
lm y0,#24
lm x1,#95
lm y1,#55
lm2 fccode,#data_read_buf

if  nc1020
BREAK_BBS _Bw_block
else
jsr _Bw_block
endif
rts
log
db 07Eh,0FBh,0FFh,0FFh,0FFh,0FFh,0FFh,0BFh
db 0FFh,0FFh,0FFh,0FBh,0FFh,0FFh,0FBh,0F7h
db 0DFh,0FFh,0FFh,0CFh,0FFh,0FFh,0FFh,08Fh
db 0FFh,0F0h,00Fh,01Fh,0FFh,0C0h,002h,03Fh
db 0FFh,080h,000h,07Dh,0FFh,01Fh,080h,0FFh
db 0FEh,07Fh,0E0h,07Fh,0FCh,0FFh,0C0h,03Fh
db 01Dh,0FFh,080h,03Fh,0FBh,0FFh,004h,01Fh
db 0FBh,0FEh,00Ch,01Fh,0FFh,0FCh,01Eh,01Fh
db 0FFh,0F8h,03Eh,01Fh,0FFh,0F0h,07Eh,01Fh
db 0FFh,0E0h,0FEh,01Fh,0FFh,0C1h,0FEh,01Fh
db 0EFh,083h,0FEh,01Fh,0FFh,007h,0FCh,03Fh
db 0FEh,00Fh,0FCh,03Fh,0FCh,01Fh,0F8h,07Fh
db 0F8h,03Fh,0F0h,0FFh,0F0h,07Fh,0E1h,0FBh
db 0E0h,0DFh,083h,0FBh,0C1h,0F0h,00Fh,0FFh
db 083h,0FFh,0FFh,0FFh,087h,0FFh,0FFh,0BFh
db 08Fh,0BFh,0DFh,0FFh,07Fh,0FFh,0FFh,0FFh
lee:
db 000h,000h,000h,000h,060h,000h,000h,0A0h
db 000h,001h,040h,000h,001h,046h,060h,002h
db 08Ah,0A0h,004h,01Dh,0C0h,01Fh,013h,020h
db 01Fh,0CCh,0C0h,000h,000h,000h
warning_msg:
db '          警  告          '
db '    本软件的代码由LEE独立 '
db '编写,其余数据归DOOM-TEAM '
db '所有。任何单位和个人,未经'
db '授权,严禁进行任何形式的反'
db '编译、修改、数据引用以及商'
db '业性质的复制、传播。违者必'
db '究。                      '
db 0
end

[em05]
发表于 2004-11-27 12:26:00 | 显示全部楼层
俺不懂汇编...
3627_4215_1509.jpg
发表于 2004-11-27 13:43:00 | 显示全部楼层
强烈支持!希望尽快把整个程序贴出来!
14739_4223_6219.bmp

14739_4223_6077.rar

16 KB, 下载次数: 187

14739_4223_6091.rar

16 KB, 下载次数: 211

发表于 2004-11-27 14:40:00 | 显示全部楼层
在下佩服不已
发表于 2004-11-27 14:45:00 | 显示全部楼层
支持一下~
 楼主| 发表于 2004-11-27 14:52:00 | 显示全部楼层
再公布《末日传说》的一个文件。
如果获得足够支持,就公布全部《末日传说》源代码及文档。
include h/mori.h
include ../bios/h/graph.h

public write_map
public move_map
public get_map_addr
public refreshmap
public scroll_to_lcd
public lcd_to_scroll
public write_16x16
public disp_sprite
public get_16x16
public write_16x16x
public write_32x32x
public write_32x32x0
public write_64x64x
public write_160x80x
public disp_num
public close_screen
public open_screen
public play_staff
extrn mul_ax
extrn can_move
extrn get_object
extrn get_flag
extrn get_box_flag
extrn w_block
extrn get_8x8_font
extrn write_8x8_font
extrn delay
extrn gblcd12x
extrn clear_attr
extrn get_map_data0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;取16*16点阵图形
; Input: bank_data_ptr 图形id号
;  cursor_posx 列号(0-9,每列16点)
;  cursor_posy 行号(0-4,每行16点)
; Output: scroll_buf
; Destory: intc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
get_16x16:
lm bank_no,#graph_bank
asl2 bank_data_ptr
asl2 bank_data_ptr
asl2 bank_data_ptr
asl2 bank_data_ptr
asl2 bank_data_ptr
lda bank_data_ptr+1
clc
adc #40h
sta bank_data_ptr+1
jmp ram_get256 ;在调用前必须确保ram_program有set_get_buf1程序
write_16x16:
write_sprite:
jsr get_16x16
lda cursor_posy
asl a
tax
lm20x intc,scroll_addr_tbl
lda cursor_posx
asl a
adda2 intc
ldy #0
write_16x161:
lda data_read_buf,y
sta (intc),y
iny
lda data_read_buf,y
sta (intc),y
iny
lda #18
adda2 intc
cpy #32
bne write_16x161
rts
scroll_addr_tbl:
l = scroll_buf  
rept 5
dw l
l = l+20*16
endr
write_16x16x:
jsr get_16x16
lda x0
clc
adc #15
sta x1
lda y0
clc
adc #15
sta y1
lm2 fccode,#data_read_buf
jmp w_block
write_32x32x:
jsr get_16x16
write_32x32x0:
lda x0
clc
adc #31
sta x1
lda y0
clc
adc #31
sta y1
lm2 fccode,#data_read_buf
jmp w_block
write_64x64x:
jsr get_16x16
lda x0
clc
adc #63
sta x1
lda y0
clc
adc #31
sta y1
lm2 intc,#data_read_buf
jsr w_block
inc bank_data_ptr+1
jsr ram_get256
lda x0
clc
adc #63
sta x1
lda y0
clc
adc #32
sta y0
clc
adc #31
sta y1
lm2 fccode,#data_read_buf
jmp w_block
write_160x80x:
jsr get_16x16
lm2 intc,#scroll_buf
lm a1,#6
write_160x80x1:
ldy #0
write_160x80x2:
lda data_read_buf,y
sta (intc),y
iny
bne write_160x80x2
inc intc+1
inc bank_data_ptr+1
jsr ram_get256
dec a1
bne write_160x80x1
ldy #0
write_160x80x3:
lda data_read_buf,y
sta (intc),y
iny
cpy #40h
bcc write_160x80x3
rts
;---------------------------------------
; 将scroll_buf ==> new_lcdbuf
; 总共 CPR*VDPS bytes
;---------------------------------------
scroll_to_lcd:
lm2 a1,#scroll_buf
lm2 a2,#new_lcdbuf
scroll_to_lcd0:
ldx #80
to_lcd_begin1:
ldy #0
lda (a1),y
and #7fh
sta (a2),y
iny
to_lcd_begin2:
lda (a1),y
sta (a2),y
iny
cpy #CPR
bcc to_lcd_begin2
dex
beq to_lcd_rts
lda #CPR
adda2 a1
lda #CPR
adda2 a2
jmp to_lcd_begin1
to_lcd_rts:
rts
lcd_to_scroll:
lm2 a2,#scroll_buf
lm2 a1,#new_lcdbuf
jmp scroll_to_lcd0
close_screen:
lm _a3,#1
close_screen0:
lm2 a1,#scroll_buf
lm2 a2,#new_lcdbuf
ldx #0
close_screen1:
txa
and #0fh
cmp _a3
bcc close_screen4
ldy #0
lda (a1),y
and #7fh
sta (a2),y
iny
close_screen2:
lda (a1),y
sta (a2),y
iny
cpy #CPR
bcc close_screen2
close_screen21:
inx
cpx #80
beq close_screen3
lda #CPR
adda2 a1
lda #CPR
adda2 a2
jmp close_screen1
close_screen3:
ldx #17
jsr delay
inc _a3
lda _a3
cmp #17
bcc close_screen0
rts
close_screen4:
ldy #0
lda #7fh
sta (a2),y
iny
close_screen5:
lda #0ffh
sta (a2),y
iny
cpy #CPR
bcc close_screen5
jmp close_screen21
open_screen:
lm _a3,#16
open_screen0:
lm2 a1,#scroll_buf
lm2 a2,#new_lcdbuf
ldx #0
open_screen1:
txa
and #0fh
cmp _a3
bcc open_screen4
ldy #0
lda (a1),y
and #7fh
sta (a2),y
iny
open_screen2:
lda (a1),y
sta (a2),y
iny
cpy #CPR
bcc open_screen2
open_screen21:
inx
cpx #80
beq open_screen3
lda #CPR
adda2 a1
lda #CPR
adda2 a2
jmp open_screen1
open_screen3:
ldx #17
jsr delay
dec _a3
bne open_screen0
jmp scroll_to_lcd
open_screen4:
ldy #0
lda #7fh
sta (a2),y
iny
open_screen5:
lda #0ffh
sta (a2),y
iny
cpy #CPR
bcc open_screen5
jmp open_screen21
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;画地图:
; Input: mapid  地图id号
;  mapx  列号(0-255,每列16点)
;  mapy  行号(0-255,每行16点)
; Output: scroll_buf
; Destory: intc,a1,a2,a3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
write_map:
jsr get_map_addr
lm2 a1,#map_buf
lm a3,#5
lm a2h,#0
lda map_xlen
asl a
sta a2
bcc write_map2
inc a2h
write_map2:
jsr ram_get256
ldy #19
write_map3:
lda data_read_buf,y
sta (a1),y
dey
bpl write_map3
lda #20
adda2 a1
add bank_data_ptr,a2
dec a3
bne write_map2
lda #0
sta cursor_posx
sta cursor_posy
sta a1
write_map4:
ldy a1
lda map_buf,y
sta bank_data_ptr
iny
lda map_buf,y
sta bank_data_ptr+1
iny
sty a1
jsr get_map_data0
bit bank_data_ptr+1
bvc write_map5
jsr get_class_graph
write_map5:
jsr write_16x16
inc cursor_posx
lda cursor_posx
cmp #10
bcc write_map4
lm cursor_posx,#0
inc cursor_posy
lda cursor_posy
cmp #5
bcc write_map4
rts
get_map_addr:
lm bank_no,#map_bank
lm bank_data_ptr+1,#88h
lda mapid
asl a
sta bank_data_ptr
bcc write_map1
inc bank_data_ptr+1
write_map1:
jsr ram_get2 ;取map地址
stx bank_data_ptr
sty bank_data_ptr+1
jsr ram_get2 ;取map长宽
stx map_xlen
sty map_ylen
lda mapy
jsr mul_ax
lda mapx
adda2 a1
inc2 a1 ;map长宽2字节
asl2 a1 ;一个map元素2字节
add bank_data_ptr,a1
rts
get_class_graph:
lda bank_data_ptr+1
and #3fh
cmp #BOX_CLASS
beq get_class_graph1
cmp #SWITCH_CLASS
beq get_class_graph3
ldx bank_data_ptr
jsr get_object
jsr ram_get2
stx bank_data_ptr
sty bank_data_ptr+1
rts
get_class_graph1:
push a1
lda bank_data_ptr
jsr get_box_flag
bne get_class_graph2
lm2 bank_data_ptr,#BOX
pull a1
rts
get_class_graph2:
lm2 bank_data_ptr,#BOXX
pull a1
rts
get_class_graph3:
ldx bank_data_ptr
jsr get_object
jsr ram_get256
push a1
lda data_read_buf+4
jsr get_flag
bne get_class_graph4
lm2 bank_data_ptr,data_read_buf
pull a1
rts
get_class_graph4:
lm2 bank_data_ptr,data_read_buf+2
pull a1
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;处理人物移动:
; Input: movedir  人物移动方向(0:静止)
;  spriteid 精灵id(0:主角 1-7:剧情npc)
; Output: scroll_buf
; Destory: intc,a1,a2,a3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
move_map:
lda movedir
bne move_map1
move_map0:
refreshmap:
jsr write_map
jsr disp_sprite ;显示8个sprite
jsr scroll_to_lcd
rts
move_map1:
lda spriteid
asl a
asl a
tax
lda mandir,x
bmi move_map2
lda movedir
sta mandir,x ;改变sprite方向
jsr can_move ;判断能否移动
bcc move_map0 ;不能移动
move_map2:
lda movedir
asl a
tax
lm20x a1,move_tbl-2
jsr to_a1
jmp move_map0
up_move:
lda spriteid
bne to_move_man ;是剧情sprite,不移动背景
lda mapy
beq to_move_man
lda many
cmp #2
bcs to_move_man
dec mapy
jmp write_map
to_move_man:
lda spriteid
asl a
asl a
tax
dec many,x
rts
down_move:
lda spriteid
bne to_move_man2 ;是剧情sprite,不移动背景
lda mapy
clc
adc #5
cmp map_ylen
bcs to_move_man2
lda many
cmp #3
bcc to_move_man2
inc mapy
jmp write_map
to_move_man2:
lda spriteid
asl a
asl a
tax
inc many,x
rts
right_move:
lda spriteid
bne to_move_man3 ;是剧情sprite,不移动背景
lda mapx
clc
adc #10
cmp map_xlen
bcs to_move_man3
lda manx
cmp #8
bcc to_move_man3
inc mapx
jmp write_map
to_move_man3:
lda spriteid
asl a
asl a
tax
inc manx,x
rts
left_move:
lda spriteid
bne to_move_man4 ;是剧情sprite,不移动背景
lda mapx
beq to_move_man4
lda manx
cmp #2
bcs to_move_man4
dec mapx
jmp write_map
to_move_man4:
lda spriteid
asl a
asl a
tax
dec manx,x
rts
to_a1:
jmp (a1)
move_tbl:
dw up_move
dw down_move
dw right_move
dw left_move
disp_sprite:
lm a1,#7
disp_sprite1:
lda a1
asl a
asl a
tax
lda mandir,x
bpl disp_sprite11
sta bank_data_ptr+1
lda manid,x
sta bank_data_ptr
jmp disp_sprite12
disp_sprite11:
lda manid,x
asl a
asl a
clc
adc mandir,x
sta bank_data_ptr
dec bank_data_ptr
lda #0
sta bank_data_ptr+1
disp_sprite12:
lda manx,x
cmp #10
bcs disp_sprite2
sta cursor_posx
lda many,x
cmp #5
bcs disp_sprite2
sta cursor_posy
jsr write_sprite
disp_sprite2:
dec a1
bpl disp_sprite1
rts
disp_num:
push lcdch
push scrncv
BIN2BCD
ldx #4
disp_num0:
lda bcdbuf,x
sta ccgbuf,x
dex
bpl disp_num0
pull scrncv
pull lcdch
ldy #0ffh
disp_num1:
iny
cpy #4
bcs disp_num2
lda ccgbuf,y
cmp #'0'
beq disp_num1
disp_num2:
sty temp_y
lda ccgbuf,y
jsr get_8x8_font
jsr write_8x8_font
inc lcdch
ldy temp_y
iny
cpy #5
bcc disp_num2
rts
play_staff:
sta _a3h
CLS
jsr clear_attr
ldy #0
play_staff1:
lda data_read_buf,y
sta ScreenBuffer+26*3,y
iny
cpy #78
bcc play_staff1
jsr gblcd12x
jsr scroll_to_lcd
lda _a3h
bmi play_staff11
asl a
asl a
tax
lm20x intc,word_tbl
lda word_tbl+2,x
sta intc+2
lda key
cmp #ESC_KEY
beq play_staff11
push bank_no
push2 bank_data_ptr
BREAK_BANK __play_word
pull2 bank_data_ptr
pull bank_no
jsr scroll_to_lcd
play_staff11:
lm _a3,#78
play_staff2:
jsr get_one_line
beq play_staff4 ;结束
lm _a3h,#0
play_staff3:
jsr scroll_one_line
ldx #50
jsr delay
inc _a3h
lda _a3h
cmp #13
bcc play_staff3
jmp play_staff2
play_staff4:
rts
get_one_line:
ldx #0
ldy _a3
get_one_line0:
lda data_read_buf,y
beq get_one_line2
cmp #1
beq get_one_line3
sta ScreenBuffer,x
iny
bne get_one_line1
stx a1
inc bank_data_ptr+1
jsr ram_get256
ldx a1
ldy #0
get_one_line1:
inx
cpx #26
bcc get_one_line0
sty _a3
get_one_line11:
jsr gblcd12x
lda #1
get_one_line2:
rts
get_one_line3:
iny
sty _a3
bne get_one_line4
inc bank_data_ptr+1
jsr ram_get256
get_one_line4:
ldy #25
lda #20h
get_one_line5:
sta ScreenBuffer,y
dey
bpl get_one_line5
jmp get_one_line11
scroll_one_line:
php
lm2 a1,#new_lcdbuf+2*CPR
lm2 a2,#new_lcdbuf+CPR
lm a3,#6
ldy #0
scroll_one_line1:
lda (a1),y
sta (a2),y
iny
bne scroll_one_line1
inc a1h
inc a2h
dec a3
bne scroll_one_line1
scroll_one_line2:
lda (a1),y
sta (a2),y
iny
cpy #4
bcc scroll_one_line2
lda _a3h
asl a
tax
lm20x a1,last_line_addr
lda (a1),y
and #7fh
sta (a2),y
iny
scroll_one_line3:
lda (a1),y
sta (a2),y
iny
cpy #CPR+4
bcc scroll_one_line3
pla
ife IN_MON
ife CAN_MON
and #10h ;此处为一陷阱,在真正的6502上php时B标志会置1,在仿真器则不会
beq scroll_one_line
endif
endif
rts
word_tbl:
db 55h,90h,1,0 ;warning
db 43h,56h,1,0 ;staff

last_line_addr:
l = scroll_buf+CPR-4
rept 13
dw l
l = l+CPR
endr
end
3631_4238_1511.jpg
发表于 2004-11-27 15:11:00 | 显示全部楼层
好的,强烈支持
发表于 2004-11-27 15:47:00 | 显示全部楼层
支持~~~~
发表于 2004-11-27 20:37:00 | 显示全部楼层
支持
发表于 2004-11-27 21:15:00 | 显示全部楼层
好长的贴啊..................

14739_4322_6079.rar

14 KB, 下载次数: 188

14739_4322_6080.rar

16 KB, 下载次数: 184

发表于 2004-11-28 10:41:00 | 显示全部楼层
我不懂汇编呀
我还是支持LEE
发表于 2004-11-28 13:38:00 | 显示全部楼层
哇,严重支持
发表于 2004-11-28 15:24:00 | 显示全部楼层
嘿嘿~果然不错~先收下了~
发表于 2004-11-28 15:30:00 | 显示全部楼层
疯狂支持哦~~!
发表于 2004-11-28 20:26:00 | 显示全部楼层
怎么会冷清呢,在下支持死了,快支持不住了,但是还有支持,直到死~~(只要前辈不断的发,哈哈,难得LEE大开放源码,高兴死了,因为爱死汇编~~~~)
 楼主| 发表于 2004-11-28 21:20:00 | 显示全部楼层
什么叫难得LEE大开放源码?
lee不开放源代码时候是因为要继续开发,保持版本的纯洁性。现在不打算开发6502汇编了,所以就拿出来共享,发挥余热。
哈哈
[em01]
发表于 2004-11-28 21:32:00 | 显示全部楼层
以前没有开放,现在开放,所以就“难得”啦,所谓“大”,是为了修饰 “末日传说,pctools,systools” 的多(至少对在下来说是很多了,而且都是很想知道的),现在贴出来了那就是开放代码!加起来就是大开放源码啦!哇哈哈~~~~
发表于 2004-11-29 12:03:00 | 显示全部楼层
这是纯6502的?
怎么可能有include h/mori.h
include ../bios/h/graph.h
public start
public start0
public next_game
extrn set_get_buf
extrn clear_sprite
extrn write_map
extrn move_map
extrn wait_key
extrn get_head_object
extrn show_talk
extrn get_object
extrn pop_menu
extrn add_friend
extrn run_juqing
extrn run_juqing0
extrn if_juqing
extrn goods_inc
extrn get_box_flag
extrn set_box_flag
extrn random_it
extrn fight
extrn refreshmap
extrn scroll_to_lcd
extrn delay
extrn write_160x80x
extrn continue_game
extrn play_staff
extrn get_flag
extrn xor_flag
是什么意思?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2024-3-29 19:50 , Processed in 0.013586 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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