aboutsummaryrefslogtreecommitdiff
path: root/samples/move.orgaasm
blob: 70e85cadae0bb192a97d56430f05c76e0cdefa2e (plain)
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
JMP ,main
include(std.orgaasm)

@main
	SLP
	/input/update
	/player/erase
	/player/update
	/player/draw
	JMP ,main

@input.kleft  0000
@input.kright 0000
@input.kup    0000
@input.kdown  0000
@input/update ( -- )
	-Input LDA
	DUP #0010 AND #0000 NEQ -input.kup    STA
	DUP #0020 AND #0000 NEQ -input.kdown  STA
	DUP #0040 AND #0000 NEQ -input.kleft  STA
	    #0080 AND #0000 NEQ -input.kright STA
	RET

@player.x 0040
@player.y 0040

@player/update ( -- )
@player/update/movex
	#0001 #0076
	-player.x LDA
	-input.kleft LDA SUB
	-input.kright LDA ADD
	/clamp -player.x STA
@player/update/movey
	#0001 #0076
	-player.y LDA
	-input.kup LDA SUB
	-input.kdown LDA ADD
	/clamp -player.y STA
	RET

@player/erase ( -- )
	-player.x LDA
	-player.y LDA
	-blacksquare
	/draw/sprite
	RET

@player/draw ( -- )
	-player.x LDA
	-player.y LDA
	-player.spr
	/draw/sprite
	RET

@draw/pixel ( x y col -- )
	ROT #007f AND
	ROT #007f AND
	#0007 LSF ADD -Screen ADD
	STA
	RET

@draw/sprite.oscr 0000
@draw/sprite ( x y addr -- )
	ROT ROT #0007 LSF ADD -Screen ADD ( spr scr )
	#0008                             ( spr scr n )
@draw/sprite/loop
	DEC
	OVR OVR #0007 LSF ADD             ( spr scr n oscr )
	#0080 ADD                         ( spr scr n oscr )
	-draw/sprite.oscr STA             ( spr scr n )
	ROT SWP OVR OVR #0003 LSF ADD     ( scr spr n ospr )
	-draw/sprite.oscr LDA             ( scr spr n ospr oscr )
	#0008 /memcpy                     ( scr spr n )
	SWP ROT ROT                       ( spr scr n )
	DUP JNZ ,draw/sprite/loop
	POP POP POP RET

@blacksquare
	0000 0000 000f 000f 000f 000f 0000 0000
	0000 0000 0000 0000 0000 0000 0000 0000
	000f 0000 000f 000f 000f 000f 0000 000f
	000f 0000 000f 000f 000f 000f 0000 000f
	000f 0000 000f 000f 000f 000f 0000 000f
	000f 0000 000f 000f 000f 000f 0000 000f
	0000 0000 0000 0000 0000 0000 0000 0000
	0000 0000 000f 000f 000f 000f 0000 0000

@player.spr
	0000 ffff ffff ffff ffff ffff ffff 0000
	ffff 0000 ffff ffff ffff ffff 0000 ffff
	ffff ffff ffff ffff ffff ffff ffff ffff
	ffff ffff ffff ffff ffff ffff ffff ffff
	ffff ffff ffff ffff ffff ffff ffff ffff
	ffff ffff ffff ffff ffff ffff 0000 ffff
	ffff ffff 0000 0000 0000 0000 ffff ffff
	0000 ffff ffff ffff ffff ffff ffff 0000