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
|
cpu gameboy
option output-file,gb.gb
option output-format,gameboy
option gameboy-irq,vbl,vbl_code
VRAM equ $8000
SCRN equ $9800
OAM equ $fe00
LCDC equ $ff40
STAT equ $ff41
READY equ $ff81
XPOS equ $ff82
VBLANK macro
push af
.wait
ldh a,(LCDC)
cp $91
jr nz,wait
pop af
endm
;
; **********
; CODE START
; **********
;
org $150
di
xor a
ldh (READY),a
ld sp,$fffe
; Set LCD so only sprites show
;
ld a,$82
ldh (LCDC),a
ld a,$10
ldh (STAT),a
; Copy to VRAM
;
ld hl,VRAM
ld de,sprite
ld a,16
VBLANK
.copy
ld a,(hl+)
ld (de),a
inc de
dec a
jr nz,copy
ld a,1
ldh (READY),a
.idle
halt
nop
jr idle
vbl_code:
ldh a,(READY)
jr z,finish
ldh a,(XPOS)
inc a
ldh (XPOS),a
ld (OAM+1),a
xor a
ld (OAM),a
ld (OAM+2),a
ld (OAM+3),a
.finish
reti
sprite:
defs 16,$ff
|