diff --git a/constants/map_constants.asm b/constants/map_constants.asm index 8c9d1a505..2e451f41e 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -1767,3 +1767,19 @@ CAVE EQU 4 GATE EQU 6 DUNGEON EQU 7 +; object struct +OBJECT_SPRITE EQU $2 +OBJECT_FLAGS EQU $5 +OBJECT_PALETTE EQU $6 +OBJECT_FACING EQU $d +OBJECT_STANDING_TILE EQU $e +OBJECT_NEXT_TILE EQU $f +OBJECT_MAP_X EQU $10 +OBJECT_MAP_Y EQU $11 +OBJECT_NEXT_MAP_X EQU $12 +OBJECT_NEXT_MAP_Y EQU $13 +OBJECT_SPRITE_X EQU $17 +OBJECT_SPRITE_Y EQU $18 +OBJECT_SPRITE_X_OFFSET EQU $19 +OBJECT_SPRITE_Y_OFFSET EQU $1a + diff --git a/main.asm b/main.asm index 625460c7c..b89457e11 100644 --- a/main.asm +++ b/main.asm @@ -3421,20 +3421,23 @@ Function5991: ; 5991 Function59a4: ; 59a4 xor a ld hl, $c2eb - ld bc, $000d + ld bc, 13 call ByteFill ld d, 0 - ld bc, $d4d6 + ld bc, ObjectStructs ld hl, $c2eb .asm_59b6 push hl call Function1af1 jr z, .asm_59d9 - ld hl, $000d + + ld hl, OBJECT_FACING add hl, bc ld a, [hl] - cp $ff + cp -1 jr z, .asm_59d9 + +; Define the sprite priority. ld e, $10 ld hl, $0005 add hl, bc @@ -3447,7 +3450,7 @@ Function59a4: ; 59a4 jr .asm_59e2 .asm_59d9 - ld hl, $0028 + ld hl, ObjectStruct2 - ObjectStruct1 add hl, bc ld b, h ld c, l @@ -3455,7 +3458,7 @@ Function59a4: ; 59a4 jr .asm_59ec .asm_59e2 - ld hl, $0028 + ld hl, ObjectStruct2 - ObjectStruct1 add hl, bc ld b, h ld c, l @@ -3474,13 +3477,14 @@ Function59a4: ; 59a4 Function59f3: ; 59f3 ld hl, $c2eb -.asm_59f6 +.next ld a, [hli] ld d, a and $f0 ret z cp c - jr nz, .asm_59f6 + jr nz, .next + push bc push hl ld a, d @@ -3489,11 +3493,11 @@ Function59f3: ; 59f3 call Function5a0d pop hl pop bc - jr .asm_59f6 + jr .next ; 5a0d Function5a0d: ; 5a0d - ld hl, $0002 + ld hl, OBJECT_SPRITE add hl, bc ld a, [hl] and $7f @@ -3518,7 +3522,7 @@ Function5a0d: ; 5a0d or $10 .asm_5a2e - ld hl, $0006 + ld hl, OBJECT_PALETTE add hl, bc ld d, a ld a, [hl] @@ -3533,34 +3537,37 @@ Function5a0d: ; 5a0d .asm_5a3f ld [$ffc2], a - ld hl, $0017 + ld hl, OBJECT_SPRITE_X add hl, bc ld a, [hl] - ld hl, $0019 + ld hl, OBJECT_SPRITE_X_OFFSET add hl, bc add [hl] + add 8 + ld e, a ld a, [$d14c] add e ld [$ffbf], a - ld hl, $0018 + ld hl, OBJECT_SPRITE_Y add hl, bc ld a, [hl] - ld hl, $001a + ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc add [hl] - add $c + add 12 + ld e, a ld a, [$d14d] add e ld [$ffc0], a - ld hl, $000d + ld hl, OBJECT_FACING add hl, bc ld a, [hl] cp -1 diff --git a/wram.asm b/wram.asm index d7ce8f5bb..c55c49c46 100644 --- a/wram.asm +++ b/wram.asm @@ -1637,6 +1637,8 @@ CurDay: ; d4cb ds 10 +ObjectStructs: + PlayerStruct: ; d4d6 ds 2 PlayerSprite: ; d4d8 @@ -1659,7 +1661,9 @@ PlayerAction: ; d4e1 ; 4 spinning ; 6 fishing ds 1 - ds 2 + ds 1 +PlayerFacing: ; d4e3 + ds 1 StandingTile: ; d4e4 ds 1 StandingTile2: ; d4e5