;---------------- ; Animation Subs ;---------------- SECTION "Animation Variables", HRAM hCameraX: dw hCameraY: dw hWorkingX: dw hWorkingY: dw hWorkingScreenX: db hWorkingScreenY: db hWorkingState: db hWorkingCounter: db hWorkingData: dw hWorkingTile: dw hWorkingEnd: SECTION "Animations Subs", ROM0 ; RenderActor: ; takes a pointer to an actor struct ; and renders it to shadow OAM, advancinc ; the animation frame and constructing ; each frame as needed. ; initial input: ; [hl] <- start of Actor Struct in WRAM ; output: ; an oam object for each line in the frame data, ; copied to shadowOAM (wShadowOAM) RenderActor:: ; load world X and Y to temp RAM ld a, [hli] ld [hWorkingX], a ld a, [hli] ld [hWorkingX+1], a ld a, [hli] ld [hWorkingY], a ld a, [hli] ld [hWorkingY+1], a ; done loading X and Y ; figure out if within 256 of camera ; --------- ; first compare upper byte of XXYY ; if this is more than 1 away, break ld a, [hCameraX] ld b, a ld a, [hWorkingX] ; b = camera byte ; a = actor byte ; work out if actor minus camera is <= 1 sub b ; --------- .skipRendering