This repository has been archived by the owner on Jan 19, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
judge.asm
110 lines (100 loc) · 2.2 KB
/
judge.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 日期:2021-4-11
; 食物:crnd $51
; 墙:cblk $66
; 像素:csnk
; 蛇头 (shead)
; 键入方向d(8bit)->
; 宽38 高23
;;;;;;;;;;;;;;;;;;;;撞墙伪码;;;;;;;;;;;;;;;;;;;;;;;;;
; ((shead) 与 d(new)运算)的位置的内容 CMP cblk
; 忘了 = ->sec
; 忘了 = ->clc
;;;;;;;;;;;;;;;;;;;撞自己伪码;;;;;;;;;;;;;;;;;;;;;;;;
; ((shead) 与 d(new)运算)的位置的内容 CMP csnk
; 忘了 = ->sev
; 忘了 = ->clc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; judgeout 判断是否出界/撞到自身
; 是->sec 即进位标志置1
; 否->clc 即进位标志置0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;关于指令cmp:
;;相等Z=1;不等Z=0
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
judgeout:
`judgeof cblk
bcs +
cmp #csnk
bne +
sec
* rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; judgefood 判断是否吃到食物
; 是->sec 即进位标志置1
; 否->clc 即进位标志置0
;;;;;;;;;;;;;;;;;;;;;;;食物伪码;;;;;;;;;;;;;;;;;;;;;;;
; ((shead) 与 d(new)运算)的位置的内容 CMP crnd
; 忘了 = ->sec
; 忘了 = ->clc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
judgefood:
`judgeof crnd
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; judgeof 两个判断的宏
; 是->sec 即进位标志置1
; 否->clc 即进位标志置0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.macro judgeof
lda d
ldy #0
;;方向向上
cmp #go_u
beq _gup
;;方向向下
cmp #go_d
beq _gdown
;;方向向左
cmp #go_l
beq _gleft
;;方向向右
cmp #go_r
beq _gright
jmp _End1 ;输入了一个无效字符,,,,,?
;是否撞墙;是否考虑溢出情况-不用;撞墙撞自己要不要分开写?
_gup:
`_m_ptr_minus 40
lda (_ptr),y
jmp _compare
_gdown:
ldy #40 ;地址+40
lda (shead),y
jmp _compare
_gleft:
`_m_ptr_minus 1
lda (_ptr),y
jmp _compare
_gright:
ldy #1 ;地址+1
lda (shead),y
_compare:
cmp #_1
beq _End2
;没吃到 默认情况
_End1: clc
jmp _end
;吃到了
_End2: sec
_end:
.macend
.macro _m_ptr_minus
lda shead
sec
sbc #_1
sta _ptr
lda shead+1
sbc #0
sta _ptr+1
.macend