1
0
mirror of https://github.com/fumiama/c64-snake.git synced 2026-06-05 00:32:39 +08:00
Files
c64-snake/addfood.asm
2021-04-14 23:20:54 +08:00

86 lines
1.0 KiB
NASM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; addfood 随机生成食物
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
addfood:
.scope
.data
.space seed 6
.text
lda #<field
sta _ptr
lda #>field
sta _ptr + 1
`propagate seed, $c3
`propagate seed+1, $9e
`propagate seed+2, $26
`propagate seed, seed+1
`propagate seed+1, seed+2
`propagate seed+2, seed+3
lda seed + 5
ldx seed + 4
sta seed + 4
lda seed + 3
stx seed + 3
ldx seed + 2
sta seed + 2
lda seed + 1
stx seed + 1
ldx seed
sta seed
stx seed + 5
lda seed
tay
lda seed + 1
and #$03
beq +
clc
adc _ptr + 1
sta _ptr + 1
* cmp #$03
bne +
tya
cmp #$c0
bmi +
sbc #$c0
tay
* iny
lda (_ptr), y
cmp #csps
bne -
lda #crnd
sta (_ptr), y
rts
.scend
srand: ; 做随机种子的初始化
.scope
jsr rdtim
sta seed + 5
stx seed + 3
sty seed + 1
rts
.scend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; propagate 进位
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.macro propagate
lda _1
clc
adc _2
bcc _end
inc _1 + 1
bne _end
inc _1 + 2
bne _end
inc _1 + 3
bne _end
inc _1 + 4
bne _end
inc _1 + 5
_end:
sta _1
.macend