mirror of
https://github.com/fumiama/c64-snake.git
synced 2026-06-20 10:50:43 +08:00
main框架基本完成
This commit is contained in:
22
head.asm
Normal file
22
head.asm
Normal 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
|
||||||
33
main.asm
33
main.asm
@@ -1,21 +1,7 @@
|
|||||||
.outfile "snake.prg"
|
.outfile "snake.prg"
|
||||||
.require "platform/c64_0.oph"
|
.require "platform/c64_0.oph"
|
||||||
.require "platform/c64kernal.oph"
|
.require "platform/c64kernal.oph"
|
||||||
|
.require "head.asm"
|
||||||
.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
|
|
||||||
|
|
||||||
main:
|
main:
|
||||||
.scope
|
.scope
|
||||||
@@ -28,21 +14,26 @@ main:
|
|||||||
; init 初始化界面、变量
|
; init 初始化界面、变量
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
.macro init
|
.macro init
|
||||||
lda #147 ;清屏
|
lda #147 ; 清屏
|
||||||
jsr chrout
|
jsr chrout
|
||||||
lda #$ff
|
lda #$00
|
||||||
sta s
|
sta s
|
||||||
lda #$ff
|
lda #$00
|
||||||
sta s + 1
|
sta s + 1 ; 初始化分数为0
|
||||||
jsr printscore
|
jsr printscore ; 打印分数
|
||||||
|
lda #1
|
||||||
|
sta field + 11*38 + 19 ; 初始化蛇位置
|
||||||
|
sta c ; 初始化蛇长为1
|
||||||
|
jsr printfield ; 打印蛇,包括边框
|
||||||
.macend
|
.macend
|
||||||
|
|
||||||
.require "printscore.asm"
|
.require "printscore.asm"
|
||||||
.require "print16.asm"
|
.require "print16.asm"
|
||||||
|
.require "printfield.asm"
|
||||||
.require "print.asm"
|
.require "print.asm"
|
||||||
|
|
||||||
.checkpc $A000 ; text段边界
|
.checkpc $A000 ; text段边界
|
||||||
.data zp ; 零页段边界
|
.data zp ; 零页段边界
|
||||||
.checkpc $80
|
.checkpc $80
|
||||||
.data
|
.data
|
||||||
.checkpc $D000 ; data段边界
|
.checkpc $D000 ; data段边界
|
||||||
42
printfield.asm
Normal file
42
printfield.asm
Normal 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
|
||||||
Reference in New Issue
Block a user