You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

107 lines
1.3 KiB

INCLUDE "hardware.inc"
INCLUDE "util.inc"
SECTION "Header", ROM0[$100]
_entry:
di
jp start
rept $150 - _entry
db 0
endr
SECTION "Frame", WRAM0
frame:: db
SECTION "VBlank", ROM0[$40]
handle_vblank:
reti
SECTION "Code", ROM0
start:
ld hl, rLCDC
res 7, [hl]
res 2, [hl]
ld hl, rIE
ld [hl], IEF_VBLANK
call OAM_Init
; call Keys_Init
; call Player_Init
ld hl, intro_Data
call Map_Load
; set palette
ld a, %11100100
ld hl, rOBP0
ld [hl], a
ld hl, rBGP
ld [hl], a
; enable lcd, sprites and interrupts
ld hl, rLCDC
set 7, [hl]
set 1, [hl]
ei
.loop:
ld hl, frame
inc [hl]
call Keys_Update
call scroll_update
; wait for vblank
halt
call Map_Update
; ~160 cycles
ld a, HIGH(_OAM)
call DMA_Start
jp .loop
; TODO: Move into player movement routine
scroll_update:
; scroll map with arrow keys
ld a, [keys]
and PADF_UP
jr z, .down
ld d, 1
call Map_ScrollUp
ret
.down:
ld a, [keys]
and PADF_DOWN
jr z, .right
ld d, 1
call Map_ScrollDown
ret
.right:
ld a, [keys]
and PADF_RIGHT
jr z, .left
ld d, 1
call Map_ScrollRight
ret
.left:
ld a, [keys]
and PADF_LEFT
ret z
ld d, 1
call Map_ScrollLeft