mirror of https://github.com/zeldaret/tmc.git
gyorgBossObject.c: WIP
This commit is contained in:
parent
e589f75cf2
commit
05b2b864de
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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*);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue