gbdk-releases/gbdk-lib/libc/gb/scroll_s.s
2015-01-10 16:25:08 +01:00

37 lines
499 B
ArmAsm

.include "global.s"
;; BANKED: checked, imperfect
.area _BASE
;; Move sprite number C at XY = DE
.scroll_sprite::
LD HL,#.OAM ; Calculate origin of sprite info
SLA C ; Multiply C by 4
SLA C
LD B,#0x00
ADD HL,BC
LD A,(HL)
ADD E ; Set Y
LD (HL+),A
LD A,(HL)
ADD D ; Set X
LD (HL+),A
RET
_scroll_sprite::
PUSH BC
LDA HL,4(SP) ; Skip return address and registers
LD C,(HL) ; C = nb
INC HL
LD D,(HL) ; D = x
INC HL
LD E,(HL) ; E = y
CALL .scroll_sprite
POP BC
RET