gyorgBossObject.c: WIP

This commit is contained in:
Ibot02 2021-12-30 10:48:36 +01:00
parent e589f75cf2
commit 05b2b864de
10 changed files with 161 additions and 499 deletions

View File

@ -7,486 +7,6 @@
.text
thumb_func_start GyorgBossObject
GyorgBossObject: @ 0x080A16DC
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A1700 @ =gUnk_08124ED0
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080A1DCC
adds r0, r4, #0
bl sub_080A1C9C
pop {r4, pc}
.align 2, 0
_080A1700: .4byte gUnk_08124ED0
thumb_func_start sub_080A1704
sub_080A1704: @ 0x080A1704
.ifdef EU
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sl, r0
movs r0, #0x7b
bl CheckFlags
cmp r0, #0
beq _080A0F5A
bl DeleteThisEntity
_080A0F5A:
ldr r0, _080A1050 @ =gEntCount
ldrb r0, [r0]
cmp r0, #0x45
bhi _080A1044
movs r0, #0x40
bl zMalloc
adds r7, r0, #0
cmp r7, #0
beq _080A1044
movs r6, #0
movs r0, #1
mov sb, r0
mov r2, sb
mov r1, sl
strb r2, [r1, #0xc]
str r7, [r1, #0x64]
adds r1, #0x6e
movs r3, #0
mov r8, r3
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r1]
mov r0, sl
adds r0, #0x6c
strh r6, [r0]
mov r0, sl
str r0, [r7]
movs r0, #0x5c
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r7, [r1, #0x64]
str r1, [r7, #4]
movs r0, #0x5d
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
ldr r4, _080A1054 @ =gRoomControls
movs r2, #0x80
lsls r2, r2, #2
adds r5, r2, #0
ldrh r3, [r4, #6]
adds r0, r5, r3
strh r0, [r1, #0x2e]
movs r2, #0xe0
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #8]
adds r0, r0, r3
strh r0, [r1, #0x32]
str r7, [r1, #0x64]
str r1, [r7, #8]
movs r0, #0x5d
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
movs r2, #0x98
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #6]
adds r0, r0, r3
strh r0, [r1, #0x2e]
movs r2, #0xd8
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #8]
adds r0, r0, r3
strh r0, [r1, #0x32]
str r7, [r1, #0x64]
str r1, [r7, #0xc]
ldr r2, _080A1058 @ =gScreen
ldr r0, _080A105C @ =0x00001E07
strh r0, [r2, #0x2c]
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #4
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
mov r0, sl
adds r0, #0x70
strh r6, [r0]
adds r0, #2
strh r6, [r0]
adds r0, #2
mov r1, r8
strb r1, [r0]
adds r0, #6
strb r1, [r0]
subs r0, #4
movs r1, #0xc0
strh r1, [r0]
adds r0, #2
strh r1, [r0]
ldr r0, _080A1060 @ =gScreenTransition
adds r0, #0x39
mov r2, sb
strb r2, [r0]
ldr r2, _080A1064 @ =gPlayerState
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #0xa
orrs r0, r1
str r0, [r2, #0x30]
ldrh r3, [r4, #6]
adds r5, r5, r3
strh r5, [r2, #0x16]
movs r1, #0x84
lsls r1, r1, #2
adds r0, r1, #0
ldrh r4, [r4, #8]
adds r0, r0, r4
strh r0, [r2, #0x18]
_080A1044:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A1050: .4byte gEntCount
_080A1054: .4byte gRoomControls
_080A1058: .4byte gScreen
_080A105C: .4byte 0x00001E07
_080A1060: .4byte gScreenTransition
_080A1064: .4byte gPlayerState
.else
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sl, r0
movs r0, #0x7b
bl CheckFlags
cmp r0, #0
beq _080A171E
bl DeleteThisEntity
_080A171E:
ldr r0, _080A1828 @ =gEntCount
ldrb r0, [r0]
cmp r0, #0x45
bhi _080A181C
movs r0, #0x40
bl zMalloc
adds r7, r0, #0
cmp r7, #0
beq _080A181C
movs r6, #0
movs r0, #1
mov sb, r0
mov r2, sb
mov r1, sl
strb r2, [r1, #0xc]
str r7, [r1, #0x64]
adds r1, #0x6e
movs r3, #0
mov r8, r3
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r1]
mov r0, sl
adds r0, #0x6c
strh r6, [r0]
mov r0, sl
str r0, [r7]
movs r0, #0x5c
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r7, [r1, #0x64]
str r1, [r7, #4]
movs r0, #0x5d
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
ldr r4, _080A182C @ =gRoomControls
movs r2, #0x80
lsls r2, r2, #2
adds r5, r2, #0
ldrh r3, [r4, #6]
adds r0, r5, r3
strh r0, [r1, #0x2e]
movs r2, #0xcc
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #8]
adds r0, r0, r3
strh r0, [r1, #0x32]
str r7, [r1, #0x64]
str r1, [r7, #8]
movs r0, #0x5d
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
movs r2, #0x98
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #6]
adds r0, r0, r3
strh r0, [r1, #0x2e]
adds r2, #0xb0
adds r0, r2, #0
ldrh r3, [r4, #8]
adds r0, r0, r3
strh r0, [r1, #0x32]
str r7, [r1, #0x64]
str r1, [r7, #0xc]
ldr r2, _080A1830 @ =gScreen
ldr r0, _080A1834 @ =0x00001E07
strh r0, [r2, #0x2c]
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #4
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
mov r0, sl
adds r0, #0x70
strh r6, [r0]
adds r0, #2
strh r6, [r0]
adds r0, #2
mov r1, r8
strb r1, [r0]
adds r0, #6
strb r1, [r0]
subs r0, #4
movs r1, #0xc0
strh r1, [r0]
adds r0, #2
strh r1, [r0]
ldr r0, _080A1838 @ =gScreenTransition
adds r0, #0x39
mov r2, sb
strb r2, [r0]
ldr r2, _080A183C @ =gPlayerState
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #0xa
orrs r0, r1
str r0, [r2, #0x30]
ldrh r3, [r4, #6]
adds r5, r5, r3
strh r5, [r2, #0x16]
movs r1, #0x84
lsls r1, r1, #2
adds r0, r1, #0
ldrh r4, [r4, #8]
adds r0, r0, r4
strh r0, [r2, #0x18]
ldr r0, _080A1840 @ =0x80100000
bl SoundReq
ldr r0, _080A1844 @ =gArea
movs r2, #0x86
lsls r2, r2, #4
adds r1, r0, r2
ldr r3, _080A1848 @ =0x00000864
adds r0, r0, r3
ldr r0, [r0]
str r0, [r1]
_080A181C:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A1828: .4byte gEntCount
_080A182C: .4byte gRoomControls
_080A1830: .4byte gScreen
_080A1834: .4byte 0x00001E07
_080A1838: .4byte gScreenTransition
_080A183C: .4byte gPlayerState
_080A1840: .4byte 0x80100000
_080A1844: .4byte gArea
_080A1848: .4byte 0x00000864
.endif
thumb_func_start sub_080A184C
sub_080A184C: @ 0x080A184C
push {lr}
adds r3, r0, #0
adds r1, r3, #0
adds r1, #0x6e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A1874
movs r0, #2
strb r0, [r3, #0xc]
subs r1, #2
movs r2, #8
movs r0, #8
strh r0, [r1]
ldr r0, [r3, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
strb r2, [r0]
_080A1874:
ldr r2, _080A1894 @ =gPlayerState
ldr r1, _080A1898 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {pc}
.align 2, 0
_080A1894: .4byte gPlayerState
_080A1898: .4byte gRoomControls
thumb_func_start sub_080A189C
sub_080A189C: @ 0x080A189C
push {lr}
adds r3, r0, #0
ldr r0, [r3, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A18E6
movs r0, #3
strb r0, [r3, #0xc]
movs r0, #0x23
strb r0, [r3, #0xe]
adds r1, r3, #0
adds r1, #0x6c
movs r2, #1
movs r0, #1
strh r0, [r1]
adds r1, #0xc
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r1]
adds r0, r3, #0
adds r0, #0x7b
strb r2, [r0]
ldr r0, [r3, #0x64]
ldr r0, [r0, #8]
adds r0, #0x45
movs r1, #0xc
strb r1, [r0]
movs r0, #0x94
lsls r0, r0, #1
bl SoundReq
movs r0, #0x96
movs r1, #1
bl sub_08080964
_080A18E6:
ldr r2, _080A1904 @ =gPlayerState
ldr r1, _080A1908 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {pc}
.align 2, 0
_080A1904: .4byte gPlayerState
_080A1908: .4byte gRoomControls
thumb_func_start sub_080A190C
sub_080A190C: @ 0x080A190C
push {r4, lr}
adds r4, r0, #0
bl sub_080A1FF0
ldr r3, [r4, #0x64]
ldr r2, [r3, #8]
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A197C
adds r0, r4, #0
adds r1, r2, #0
bl sub_080A20B8
cmp r0, #0
beq _080A1956
movs r0, #4
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x6c
movs r0, #0x10
strh r0, [r1]
adds r1, #0xc
movs r0, #0xc0
strh r0, [r1]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
ldrb r1, [r0, #0x14]
adds r0, r4, #0
bl sub_080A1D70
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
movs r1, #0x18
strb r1, [r0]
_080A1956:
ldr r2, _080A1974 @ =gPlayerState
ldr r1, _080A1978 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
b _080A1988
.align 2, 0
_080A1974: .4byte gPlayerState
_080A1978: .4byte gRoomControls
_080A197C:
ldr r1, _080A198C @ =gPlayerState
ldrh r0, [r2, #0x2e]
strh r0, [r1, #0x16]
ldr r0, [r3, #8]
ldrh r0, [r0, #0x32]
strh r0, [r1, #0x18]
_080A1988:
pop {r4, pc}
.align 2, 0
_080A198C: .4byte gPlayerState
thumb_func_start sub_080A1990
sub_080A1990: @ 0x080A1990
push {lr}

View File

@ -22,10 +22,26 @@ typedef struct {
} GyorgFemaleEntity;
typedef struct {
GenericEntity* unk_00;
u8 unk_04[0x4];
Entity* unk_08;
Entity* unk_0c;
Entity base;
u8 unk_68[4];
u16 unk_6c;
u16 unk_6e;
u16 unk_70;
u16 unk_72;
u8 unk_74;
// u8 unk_75[1];
u16 unk_76;
u16 unk_78;
u8 unk_7a;
u8 unk_7b;
u8 unk_7c[0xc];
} GyorgBossObjectEntity;
typedef struct {
GyorgBossObjectEntity* boss;
GyorgFemaleEntity* female;
Entity* male1;
Entity* male2;
void* unk_10;
void* unk_14;
void* unk_18[0x8];

View File

@ -129,7 +129,7 @@ typedef struct Entity_ {
/*0x60*/ u16 spriteVramOffset;
/*0x62*/ u8 spriteOffsetX;
/*0x63*/ s8 spriteOffsetY;
/*0x64*/ u32* myHeap;
/*0x64*/ void* myHeap;
#ifndef NENT_DEPRECATED
/*0x68*/ union SplitHWord field_0x68;
/*0x6a*/ union SplitHWord field_0x6a;

View File

@ -180,7 +180,6 @@ extern void sub_080026F2(u8*, void*, u8*, u32);
extern u32 sub_0805F7A0(u32);
extern u32* sub_0805F25C(u32);
u32 sub_0806FCB8(Entity*, u32, u32, u32);
extern void sub_080A1D70(Entity*, u32);
extern void sub_0806F62C(Entity*, u32, u32);
extern void sub_080A1ED0(u32, u32, u32);
extern u32 sub_0806F5B0(u32);

View File

@ -887,6 +887,7 @@ SECTIONS {
src/object/well.o(.text);
asm/windTribeTeleporter.o(.text);
asm/objectB9.o(.text);
src/object/gyorgBossObject.o(.text);
asm/gyorgBossObject.o(.text);
src/object/windcrest.o(.text);
asm/litArea.o(.text);

View File

@ -101,7 +101,7 @@ void sub_0804625C(GyorgFemaleEntity* this) {
}
}
sub_080465C8();
if (((GyorgFemaleHeap*)super->myHeap)->unk_00->field_0x6c.HWORD & 0x38) {
if (((GyorgFemaleHeap*)super->myHeap)->boss->unk_6c & 0x38) {
super->action = 2;
super->actionDelay = 0;
this->unk_7a = 0;
@ -111,7 +111,7 @@ void sub_0804625C(GyorgFemaleEntity* this) {
this->unk_80 = 0;
return;
}
if (((GyorgFemaleHeap*)super->myHeap)->unk_00->field_0x6c.HWORD & 0x40) {
if (((GyorgFemaleHeap*)super->myHeap)->boss->unk_6c & 0x40) {
super->action = 3;
this->unk_70 = 0x3c;
super->actionDelay = 0;
@ -121,7 +121,7 @@ void sub_0804625C(GyorgFemaleEntity* this) {
this->unk_80 = 0;
return;
}
if (((GyorgFemaleHeap*)super->myHeap)->unk_00->field_0x6c.HWORD & 0x100) {
if (((GyorgFemaleHeap*)super->myHeap)->boss->unk_6c & 0x100) {
if (--this->unk_70 == 0) {
this->unk_70 = 0x168;
sub_08046634(this, 1);
@ -150,11 +150,11 @@ void sub_0804632C(GyorgFemaleEntity* this) {
}
}
}
if (((GyorgFemaleHeap*)super->myHeap)->unk_00->field_0x6c.HWORD & 0x80 && --this->unk_70 == 0) {
if (((GyorgFemaleHeap*)super->myHeap)->boss->unk_6c & 0x80 && --this->unk_70 == 0) {
this->unk_70 = 0x168;
sub_08046634(this, 0);
}
if ((((GyorgFemaleHeap*)super->myHeap)->unk_00->field_0x6c.HWORD & 0x38) == 0) {
if ((((GyorgFemaleHeap*)super->myHeap)->boss->unk_6c & 0x38) == 0) {
super->action = 1;
this->unk_70 = 0x3c;
#ifndef EU
@ -355,6 +355,6 @@ void sub_080466A8(GyorgFemaleEntity* this) {
void sub_080467DC(GyorgFemaleEntity* this) {
u32 i;
for (i = 0; i < 8; i++) {
((GyorgFemaleHeap*)super->myHeap)->unk_18[i] = 0;
(*((GyorgFemaleHeap**)(&super->myHeap)))->unk_18[i] = 0;
}
}

View File

@ -47,10 +47,12 @@ void sub_080489CC(GyorgFemaleEyeEntity* this) {
case 16 ... 18:
case 24 ... 26:
#endif
((GyorgFemaleHeap*)parent->base.myHeap)->unk_18[super->type] = super->field_0x4c;
((GyorgFemaleHeap*)parent->base.myHeap)->unk_38 = (gPlayerEntity.x.HALF.HI + super->x.HALF.HI) / 2;
((GyorgFemaleHeap*)parent->base.myHeap)->unk_3a = (gPlayerEntity.y.HALF.HI + super->y.HALF.HI) / 2;
((GyorgFemaleHeap*)parent->base.myHeap)->unk_3c = (super->knockbackDirection ^= 0x10);
(*(((GyorgFemaleHeap**)&parent->base.myHeap)))->unk_18[super->type] = super->field_0x4c;
(*(((GyorgFemaleHeap**)&parent->base.myHeap)))->unk_38 =
(gPlayerEntity.x.HALF.HI + super->x.HALF.HI) / 2;
(*(((GyorgFemaleHeap**)&parent->base.myHeap)))->unk_3a =
(gPlayerEntity.y.HALF.HI + super->y.HALF.HI) / 2;
(*(((GyorgFemaleHeap**)&parent->base.myHeap)))->unk_3c = (super->knockbackDirection ^= 0x10);
#ifndef EU
break;
default:
@ -174,9 +176,9 @@ u32 sub_08048D70(GyorgFemaleEntity* parent) {
if (parent->base.health != 0) {
return 1;
}
tmp = ((GyorgFemaleHeap*)parent->base.myHeap)->unk_08;
tmp = ((GyorgFemaleHeap*)parent->base.myHeap)->male1;
if (!tmp) {
tmp = ((GyorgFemaleHeap*)parent->base.myHeap)->unk_0c;
tmp = ((GyorgFemaleHeap*)parent->base.myHeap)->male2;
}
if (tmp->health != 0) {
return 0;

View File

@ -5,6 +5,9 @@
#include "functions.h"
#include "effects.h"
// todo: wrong types
extern void sub_080A1D70(Entity*, u32);
void (*const gUnk_080D1AFC[8])(Entity*);
void (*const gUnk_080D1B1C[7])(Entity*);
void (*const gUnk_080D1B38[5])(Entity*);

View File

@ -0,0 +1,121 @@
#define NENT_DEPRECATED
#include "global.h"
#include "entity.h"
#include "object.h"
#include "area.h"
#include "room.h"
#include "screen.h"
#include "enemy/gyorg.h"
extern void sub_080A1DCC(GyorgBossObjectEntity*);
extern void sub_080A1C9C(GyorgBossObjectEntity*);
void sub_080A1FF0(GyorgBossObjectEntity*);
u32 sub_080A20B8(GyorgBossObjectEntity*, Entity*);
void sub_080A1D70(GyorgBossObjectEntity*, u32);
extern void (*const gUnk_08124ED0[])(GyorgBossObjectEntity*);
void GyorgBossObject(Entity* this) {
gUnk_08124ED0[this->action]((GyorgBossObjectEntity*)this);
sub_080A1DCC((GyorgBossObjectEntity*)this);
sub_080A1C9C((GyorgBossObjectEntity*)this);
}
void sub_080A1704(GyorgBossObjectEntity* this) {
GyorgFemaleHeap* heap;
Entity* tmp;
if (CheckFlags(0x7B)) {
DeleteThisEntity();
}
if (gEntCount > 0x45)
return;
heap = zMalloc(sizeof(GyorgFemaleHeap));
if (!heap)
return;
super->action = 1;
super->myHeap = heap;
this->unk_6e = 0x258;
this->unk_6c = 0;
heap->boss = this;
tmp = CreateEnemy(GYORG_FEMALE, 0);
tmp->myHeap = heap;
heap->female = (GyorgFemaleEntity*)tmp;
tmp = CreateEnemy(GYORG_MALE, 0);
tmp->x.HALF.HI = gRoomControls.roomOriginX + 0x200;
#ifdef EU
tmp->y.HALF.HI = gRoomControls.roomOriginY + 0x380;
#else
tmp->y.HALF.HI = gRoomControls.roomOriginY + 0x330;
#endif
tmp->myHeap = heap;
heap->male1 = tmp;
tmp = CreateEnemy(GYORG_MALE, 1);
tmp->x.HALF.HI = gRoomControls.roomOriginX + 0x260;
#ifdef EU
tmp->y.HALF.HI = gRoomControls.roomOriginY + 0x360;
#else
tmp->y.HALF.HI = gRoomControls.roomOriginY + 0x310;
#endif
tmp->myHeap = heap;
heap->male2 = tmp;
gScreen.bg3.control = 0x1E07;
gScreen.lcd.displayControl |= 0x800;
this->unk_70 = 0;
this->unk_72 = 0;
this->unk_74 = 0;
this->unk_7a = 0;
this->unk_76 = 0xc0;
this->unk_78 = 0xc0;
gScreenTransition.field_0x39 = 1;
gPlayerState.flags |= 0x20000;
gPlayerState.startPosX = gRoomControls.roomOriginX + 0x200;
gPlayerState.startPosY = gRoomControls.roomOriginY + 0x210;
#ifndef EU
SoundReq(0x80100000);
gArea.musicIndex = gArea.pMusicIndex;
#endif
}
void sub_080A184C(GyorgBossObjectEntity* this) {
if (--this->unk_6e == 0) {
super->action = 2;
this->unk_6c = 8;
((GyorgFemaleHeap*)super->myHeap)->female->base.health = 8;
}
gPlayerState.startPosX = gRoomControls.roomOriginX + 0x200;
gPlayerState.startPosY = gRoomControls.roomOriginY + 0x210;
}
void sub_080A189C(GyorgBossObjectEntity* this) {
if (((GyorgFemaleHeap*)super->myHeap)->female->base.health == 0) {
super->action = 3;
super->actionDelay = 0x23;
this->unk_6c = 1;
this->unk_78 = 0x400;
this->unk_7b = 1;
((GyorgFemaleHeap*)super->myHeap)->male1->health = 0xC;
SoundReq(0x128);
sub_08080964(0x96, 1);
}
gPlayerState.startPosX = gRoomControls.roomOriginX + 0x200;
gPlayerState.startPosY = gRoomControls.roomOriginY + 0x210;
}
void sub_080A190C(GyorgBossObjectEntity* this) {
sub_080A1FF0(this);
if (((GyorgFemaleHeap*)super->myHeap)->male1->health == 0) {
if (sub_080A20B8(this, ((GyorgFemaleHeap*)super->myHeap)->male1)) {
super->action = 4;
this->unk_6c = 0x10;
this->unk_78 = 0xC0;
sub_080A1D70(this, ((GyorgFemaleHeap*)super->myHeap)->female->base.animationState);
((GyorgFemaleHeap*)super->myHeap)->female->base.health = 0x18;
}
gPlayerState.startPosX = gRoomControls.roomOriginX + 0x200;
gPlayerState.startPosY = gRoomControls.roomOriginY + 0x210;
} else {
gPlayerState.startPosX = ((GyorgFemaleHeap*)super->myHeap)->male1->x.HALF.HI;
gPlayerState.startPosY = ((GyorgFemaleHeap*)super->myHeap)->male1->y.HALF.HI;
}
}

View File

@ -47,7 +47,7 @@ void sub_080A0624(Entity* this) {
void sub_080A0640(Entity* this) {
if (this->type == 0) {
PositionRelative(*(Entity**)(this->parent->myHeap + 0x4), this, 0, 0x80000);
PositionRelative(*(((Entity**)this->parent->myHeap) + 4), this, 0, 0x80000);
} else {
CopyPosition(this->parent, this);
}