clear OAM, set sprite macro, empty tile equ

This commit is contained in:
2019-01-03 22:42:14 +01:00
parent bbbff34952
commit 635a9f4fb2

View File

@@ -2,6 +2,8 @@ INCLUDE "hardware.inc"
RENDER_IN_HBL EQU 0
EMPTY_BG_TILE EQU 17
_VRAM_BG_TILES EQU $9000
SECTION "Memory Copy", ROM0
@@ -31,6 +33,23 @@ MemorySet:
jr nz, MemorySet
ret
; \1: sprite ID
; \2: X position
; \3: Y position
; \4: tile number
; \5: flags
SetSprite: MACRO
ld hl, _OAMRAM + \1 * 4
ld a, \3
ld [hl+], a
ld a, \2
ld [hl+], a
ld a, \4
ld [hl+], a
ld a, \5
ld [hl+], a
ENDM
AddConstantToHL: MACRO
IF \1 == 1
inc hl
@@ -129,7 +148,6 @@ Conway: MACRO
.dead\@
ENDM
SECTION "Load cell group and 8 neighbors to HRAM, then compute", ROM0
; \1..\8 offset to neighbors
; destroys all registers
ConwayGroup: MACRO
@@ -214,6 +232,12 @@ Start:
ld bc, TilesEnd - Tiles
call MemoryCopy
; clear OAM
ld hl, _OAMRAM
ld d, 0
ld bc, 40 * 4
call MemorySet
; set scrolling to (0, 0)
xor a
ld [rSCX], a
@@ -221,7 +245,7 @@ Start:
; clear screen (both buffers)
ld hl, _SCRN0
ld d, 17 ; empty tile
ld d, EMPTY_BG_TILE
ld bc, 32 * 32 * 2
call MemorySet
@@ -383,14 +407,13 @@ ENDC
jr .waitRender
.swap
; enable only v-blank interrupt
di
IF RENDER_IN_HBL != 0
; enable only v-blank interrupt and wait for vbl
ld a, IEF_VBLANK
ld [rIE], a
xor a
ldh [rIF], a
; wait v-blank
halt
ENDC