1
0
mirror of https://github.com/fumiama/c64-snake.git synced 2026-06-05 08:40:26 +08:00

main框架基本完成

This commit is contained in:
fumiama
2021-04-03 16:46:56 +08:00
parent caaead7be0
commit c21a2a1efb
4 changed files with 76 additions and 21 deletions

22
head.asm Normal file
View File

@@ -0,0 +1,22 @@
.alias cblk $66 ; 边框
.alias csnk $a0 ; 像素
.alias csps $20 ; 空白
.alias go_u $55 ; 上
.alias go_d $5f ; 下
.alias go_l $1d ; 左
.alias go_r $32 ; 右
.alias st_g $a0 ; 开始/暂停
.alias ed_g $20 ; 结束
.data zp
.space d 1 ; 方向 值定义如上
.space c 1 ; 🐍长度 最大255 最小0
.space s 2 ; 得分 小端序
.data
.org $0400
.space title 40
.space field 960 ; 蛇所在屏幕内存区
.text

View File

@@ -1,21 +1,7 @@
.outfile "snake.prg"
.require "platform/c64_0.oph"
.require "platform/c64kernal.oph"
.alias cblk $a6
.alias go_u $55 ; 上
.alias go_d $5f ; 下
.alias go_l $1d ; 左
.alias go_r $32 ; 右
.alias st_g $a0 ; 开始/暂停
.alias ed_g $20 ; 结束
.data zp
.space d 1 ; 方向 值定义如上
.space c 1 ; 🐍长度 最大255 最小0
.space s 2 ; 得分 小端序
.text
.require "head.asm"
main:
.scope
@@ -28,21 +14,26 @@ main:
; init 初始化界面、变量
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.macro init
lda #147 ;清屏
lda #147 ; 清屏
jsr chrout
lda #$ff
lda #$00
sta s
lda #$ff
sta s + 1
jsr printscore
lda #$00
sta s + 1 ; 初始化分数为0
jsr printscore ; 打印分数
lda #1
sta field + 11*38 + 19 ; 初始化蛇位置
sta c ; 初始化蛇长为1
jsr printfield ; 打印蛇,包括边框
.macend
.require "printscore.asm"
.require "print16.asm"
.require "printfield.asm"
.require "print.asm"
.checkpc $A000 ; text段边界
.data zp ; 零页段边界
.data zp ; 零页段边界
.checkpc $80
.data
.checkpc $D000 ; data段边界

42
printfield.asm Normal file
View File

@@ -0,0 +1,42 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; printfield 打印蛇,包括边框
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
printfield:
.scope
.data zp
.space _ptr 2
.text
ldx #23 ; i代表行数不含边框
lda #<field ; 取地址低8位
sta _ptr
lda #>field ; 取地址高8位
sta _ptr + 1
ldy #0
* lda #cblk
sta (_ptr), y ; 打印左边框
lda #39
jsr _addptr
lda #cblk
sta (_ptr), y ; 打印右边框
lda #1
jsr _addptr
dex
bne -
lda #cblk
ldy #40
dec _ptr
* sta (_ptr), y ; 打印底边
dey
bne -
ldx #0
jsr plot
rts
_addptr:
clc
adc _ptr
bcc +
inc _ptr + 1
* sta _ptr
rts
.scend

BIN
snake.prg

Binary file not shown.