⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 save.s

📁 这是由文曲星的开发者LEE写的汇编游戏末日传说.rar代码
💻 S
字号:
	include	h/mori.h
	
	if	nc1020
	include	../filesys_rom/h/GFFS.h
	include	../filesys_rom/h/GFFS.mac
	endif

	public	check_save
	public	save_file
	public	load_file

	if	nc1020
check_save:
	BREAK_BANK	__CDRoot
enter_my_dir:
	move	dirname,FileName,#16
	BREAK_BANK	__DirEnter	;gmud
	bcc	check_save2
        cmp1    FileErrorCode,#ERR_NOT_EXIST    ;判断是否是"目录不存在"错误
	beq     check_save1
	sec
	rts
check_save1:
        lm      FileAttribute,#11110000b        ;创建目录
        lm      FileAttribute+1,#0ffh
        lm      BlockType,#DIR_BLOCK
        lda     #0ffh
        sta     FileExpireDate
        sta     FileExpireDate+1
        sta     FileExpireDate+2
        BREAK_BANK      __FileCreate
        bcc     enter_my_dir
        rts
check_save2:
	lda	#0
	jsr	save_name
	jsr	save_head
	sta	_a3
	ldx	#11
check_save4:
	lda	data_read_buf,x
	sta	ScreenBuffer+36,x
	dex
	bpl	check_save4
	lda	#1
	jsr	save_name
	jsr	save_head
	sta	_a3h
	ldx	#11
check_save7:
	lda	data_read_buf,x
	sta	ScreenBuffer+62,x
	dex
	bpl	check_save7
	rts

save_file:
	lm	game_ver,#01h
	lda	_a3
	jsr	save_name
	lm      FileOpenMode,#OPEN_WRITE
	BREAK_BANK	__FileOpen
	bcc	replace_file
	cmp1	FileErrorCode,#ERR_NOT_EXIST
	bne	save_rts
new_file:
        lm      FileAttribute,#NORMAL_NODE_ATTR         ;创建文件
        lm      FileAttribute+1,#FILE_UNTRANS_FLAG
        lm      BlockType,#NORMAL_USER_BLOCK
        lda     #0ffh
        sta     FileExpireDate
        sta     FileExpireDate+1
        sta     FileExpireDate+2
        BREAK_BANK      __FileCreate
        bcs 	save_rts
save_file1:	
	lm2	DataBuffer,#save_data
	lm2	DataSize,#save_len
	BREAK_BANK	__FileWrite
	BREAK_BANK	__FileClose
save_rts:	
	rts
replace_file:
	lm2	DataOffset,#0
	sta	DataOffset+2
	BREAK_BANK	__FileLocate
	jmp	save_file1
	
load_file:
	lda	_a3
	jsr	save_name
	lm	FileOpenMode,#OPEN_READ
	BREAK_BANK	__FileOpen
	bcs	load_file1
	lm2	DataBuffer,#save_data
	lm2	DataSize,#save_len
	BREAK_BANK	__FileRead
	BREAK_BANK	__FileClose
	sec
	rts
load_file1:
	clc
	rts

save_name:
	bne	save_name1
	move	save1,FileName,#16
	rts
save_name1:
	move	save2,FileName,#16
	rts
	
save_head:
	lm	FileOpenMode,#OPEN_READ
	BREAK_BANK	__FileOpen
	bcs	save_head1
	lm2	DataBuffer,#data_read_buf
	lm2	DataSize,#12
	BREAK_BANK	__FileRead
	BREAK_BANK	__FileClose
	lda	#1
	rts
save_head1:
	ldx	#11
save_head2:
	lda	no_save,x
	sta	data_read_buf,x
	dex
	bpl	save_head2
	lda	#0
	rts
	
	else
check_save:
	ldx	#3
check_save1:
	lda	dirname,x
	sta	FileName,x
	dex
	bpl	check_save1
	BREAK_BANK	__DIREnter
	lda	#0
	jsr	save_name
	jsr	save_head
	sta	_a3
	ldx	#11
check_save4:
	lda	data_read_buf,x
	sta	ScreenBuffer+36,x
	dex
	bpl	check_save4
	lda	#1
	jsr	save_name
	jsr	save_head
	sta	_a3h
	ldx	#11
check_save7:
	lda	data_read_buf,x
	sta	ScreenBuffer+62,x
	dex
	bpl	check_save7
	rts

save_name0:
	bne	save_name2
	ldx	#0
save_name1:
	lda	save1,x
	sta	data_read_buf,x
	beq	save_name4
	inx
	bne	save_name1
save_name2:
	ldx	#0
save_name3:
	lda	save2,x
	sta	data_read_buf,x
	beq	save_name4
	inx
	bne	save_name3
save_name4:
	rts

save_name:
	jsr	save_name0
save_name5:
	stx	RecordSize
	lm	RecordSize+1,#0
	lm2	RecordBuffer,#data_read_buf
	BREAK_BANK	__FileHeadCheck
	lda	FileErrorCode
	rts

save_head:
	bne	save_head1
	lm	FileOpenMode,#OPEN_READ
	BREAK_BANK	__FileOpen
	lda	FileErrorCode
	bne	save_head1
	lm2	RecordBuffer,#data_read_buf
	lm	RecordSize,#12
	lm	RecordOffset,#0
	sta	RecordOffset+1
	sta	RecordSize+1
	BREAK_BANK	__FileRead
	BREAK_BANK	__FileClose
	lda	#1
	rts
save_head1:
	ldx	#11
save_head2:
	lda	no_save,x
	sta	data_read_buf,x
	dex
	bpl	save_head2
	lda	#0
	rts

save_file:
	lm	game_ver,#01h
	lda	_a3
	jsr	save_name
	bne	save_file1 ;无该文件
	BREAK_BANK	__FileDelete
	jmp	save_file
save_file1:
	lm	FileAttribute,#ATTR_LB
	lm2	RecordSize,#save_len
	BREAK_BANK	__FileCreate
	lda	FileErrorCode
	bne	save_file2
	lm	FileOpenMode,#OPEN_WRITE
	BREAK_BANK	__FileOpen
	lda	FileErrorCode
	bne	save_file2
	lm2	RecordBuffer,#save_data
	lm2	RecordSize,#save_len
	lm	RecordOffset,#0
	sta	RecordOffset+1
	BREAK_BANK	__FileWrite
	lda	_a3
	jsr	save_name0
	stx	RecordSize
	lm	RecordSize+1,#0
	lm2	RecordBuffer,#data_read_buf
	BREAK_BANK	__FileHeadWrite
	BREAK_BANK	__FileClose	
save_file2:
	rts

load_file:
	lda	_a3
	jsr	save_name
	bne	load_file1 ;无该文件
	lm	FileOpenMode,#OPEN_READ
	BREAK_BANK	__FileOpen
	lda	FileErrorCode
	bne	load_file1
	lm2	RecordBuffer,#save_data
	lm2	RecordSize,#save_len
	lm	RecordOffset,#0
	sta	RecordOffset+1
	BREAK_BANK	__FileRead
	BREAK_BANK	__FileClose
	sec
	rts
load_file1:
	clc
	rts
	endif

	if	nc1020
dirname:
	db	'应用程序        '
	else
dirname:
	db	'udf '
	endif

save1:
	db	'doom1.sav       ',0
save2:
	db	'doom2.sav       ',0
no_save:
	db	'空白存档    '

	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -