mirror of https://github.com/zeldaret/tmc.git
manager28.c: ok
This commit is contained in:
parent
9dc15ba380
commit
0dab5bbc99
342
asm/manager28.s
342
asm/manager28.s
|
@ -1,342 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start sub_0805C934
|
|
||||||
sub_0805C934: @ 0x0805C934
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _0805C948 @ =gUnk_08108D28
|
|
||||||
ldrb r1, [r0, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805C948: .4byte gUnk_08108D28
|
|
||||||
|
|
||||||
thumb_func_start sub_0805C94C
|
|
||||||
sub_0805C94C: @ 0x0805C94C
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xa]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0805C9B0
|
|
||||||
adds r6, r4, #0
|
|
||||||
adds r6, #0x20
|
|
||||||
adds r1, r6, #0
|
|
||||||
movs r2, #0
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x3c
|
|
||||||
_0805C962:
|
|
||||||
str r2, [r0]
|
|
||||||
subs r0, #4
|
|
||||||
cmp r0, r1
|
|
||||||
bge _0805C962
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0805CA6C
|
|
||||||
adds r5, r0, #0
|
|
||||||
cmp r5, #1
|
|
||||||
ble _0805C9A8
|
|
||||||
bl GetEmptyManager
|
|
||||||
adds r2, r0, #0
|
|
||||||
cmp r2, #0
|
|
||||||
beq _0805C9A8
|
|
||||||
movs r0, #9
|
|
||||||
strb r0, [r2, #8]
|
|
||||||
movs r0, #0x28
|
|
||||||
strb r0, [r2, #9]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r2, #0xa]
|
|
||||||
strb r5, [r2, #0xe]
|
|
||||||
adds r1, r2, #0
|
|
||||||
adds r1, #0x20
|
|
||||||
adds r0, r6, #0
|
|
||||||
ldm r0!, {r3, r5, r6}
|
|
||||||
stm r1!, {r3, r5, r6}
|
|
||||||
ldm r0!, {r3, r5, r6}
|
|
||||||
stm r1!, {r3, r5, r6}
|
|
||||||
ldm r0!, {r3, r5}
|
|
||||||
stm r1!, {r3, r5}
|
|
||||||
adds r0, r2, #0
|
|
||||||
movs r1, #6
|
|
||||||
bl AppendEntityToList
|
|
||||||
_0805C9A8:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl DeleteManager
|
|
||||||
b _0805C9B8
|
|
||||||
_0805C9B0:
|
|
||||||
movs r1, #0
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r4, #0xf]
|
|
||||||
_0805C9B8:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0805C9BC
|
|
||||||
sub_0805C9BC: @ 0x0805C9BC
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
mov r7, sb
|
|
||||||
mov r6, r8
|
|
||||||
push {r6, r7}
|
|
||||||
sub sp, #4
|
|
||||||
adds r6, r0, #0
|
|
||||||
bl sub_0805CB48
|
|
||||||
ldrb r0, [r6, #0xe]
|
|
||||||
subs r0, #1
|
|
||||||
mov sb, r0
|
|
||||||
ldrb r1, [r6, #0xf]
|
|
||||||
adds r0, r1, #1
|
|
||||||
strb r0, [r6, #0xf]
|
|
||||||
movs r0, #1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0805CA22
|
|
||||||
movs r2, #0
|
|
||||||
cmp r2, sb
|
|
||||||
bge _0805CA62
|
|
||||||
movs r0, #0x20
|
|
||||||
adds r0, r0, r6
|
|
||||||
mov r8, r0
|
|
||||||
_0805C9EC:
|
|
||||||
lsls r1, r2, #2
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x20
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r3, [r0]
|
|
||||||
adds r4, r2, #1
|
|
||||||
adds r5, r4, #0
|
|
||||||
ldrb r1, [r6, #0xe]
|
|
||||||
cmp r5, r1
|
|
||||||
bge _0805CA1A
|
|
||||||
lsls r0, r5, #2
|
|
||||||
mov r1, r8
|
|
||||||
adds r7, r0, r1
|
|
||||||
_0805CA06:
|
|
||||||
ldm r7!, {r1}
|
|
||||||
adds r0, r3, #0
|
|
||||||
str r3, [sp]
|
|
||||||
bl sub_08004484
|
|
||||||
adds r4, #1
|
|
||||||
ldr r3, [sp]
|
|
||||||
ldrb r0, [r6, #0xe]
|
|
||||||
cmp r4, r0
|
|
||||||
blt _0805CA06
|
|
||||||
_0805CA1A:
|
|
||||||
adds r2, r5, #0
|
|
||||||
cmp r2, sb
|
|
||||||
blt _0805C9EC
|
|
||||||
b _0805CA62
|
|
||||||
_0805CA22:
|
|
||||||
movs r2, #0
|
|
||||||
cmp r2, sb
|
|
||||||
bge _0805CA62
|
|
||||||
movs r1, #0x20
|
|
||||||
adds r1, r1, r6
|
|
||||||
mov r8, r1
|
|
||||||
_0805CA2E:
|
|
||||||
lsls r1, r2, #2
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x20
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r3, [r0]
|
|
||||||
adds r4, r2, #1
|
|
||||||
adds r5, r4, #0
|
|
||||||
ldrb r0, [r6, #0xe]
|
|
||||||
cmp r5, r0
|
|
||||||
bge _0805CA5C
|
|
||||||
lsls r0, r5, #2
|
|
||||||
mov r1, r8
|
|
||||||
adds r7, r0, r1
|
|
||||||
_0805CA48:
|
|
||||||
ldm r7!, {r0}
|
|
||||||
adds r1, r3, #0
|
|
||||||
str r3, [sp]
|
|
||||||
bl sub_08004484
|
|
||||||
adds r4, #1
|
|
||||||
ldr r3, [sp]
|
|
||||||
ldrb r0, [r6, #0xe]
|
|
||||||
cmp r4, r0
|
|
||||||
blt _0805CA48
|
|
||||||
_0805CA5C:
|
|
||||||
adds r2, r5, #0
|
|
||||||
cmp r2, sb
|
|
||||||
blt _0805CA2E
|
|
||||||
_0805CA62:
|
|
||||||
add sp, #4
|
|
||||||
pop {r3, r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov sb, r4
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_0805CA6C
|
|
||||||
sub_0805CA6C: @ 0x0805CA6C
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r6, r0, #0
|
|
||||||
movs r5, #0
|
|
||||||
ldrb r0, [r6, #0xb]
|
|
||||||
bl GetCurrentRoomProperty
|
|
||||||
adds r4, r0, #0
|
|
||||||
cmp r4, #0
|
|
||||||
bne _0805CACE
|
|
||||||
movs r0, #0
|
|
||||||
b _0805CAE4
|
|
||||||
_0805CA82:
|
|
||||||
movs r0, #8
|
|
||||||
b _0805CAE4
|
|
||||||
_0805CA86:
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r0, r2
|
|
||||||
cmp r0, #3
|
|
||||||
bne _0805CACC
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0805CAF0
|
|
||||||
adds r2, r0, #0
|
|
||||||
cmp r2, #0
|
|
||||||
beq _0805CACC
|
|
||||||
movs r3, #0
|
|
||||||
cmp r3, r5
|
|
||||||
bhs _0805CAB8
|
|
||||||
ldr r0, [r6, #0x20]
|
|
||||||
cmp r0, r2
|
|
||||||
beq _0805CAB8
|
|
||||||
adds r1, r6, #0
|
|
||||||
adds r1, #0x20
|
|
||||||
_0805CAAA:
|
|
||||||
adds r1, #4
|
|
||||||
adds r3, #1
|
|
||||||
cmp r3, r5
|
|
||||||
bhs _0805CAB8
|
|
||||||
ldr r0, [r1]
|
|
||||||
cmp r0, r2
|
|
||||||
bne _0805CAAA
|
|
||||||
_0805CAB8:
|
|
||||||
cmp r3, r5
|
|
||||||
bne _0805CACC
|
|
||||||
lsls r1, r5, #2
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x20
|
|
||||||
adds r0, r0, r1
|
|
||||||
str r2, [r0]
|
|
||||||
adds r5, #1
|
|
||||||
cmp r5, #8
|
|
||||||
beq _0805CA82
|
|
||||||
_0805CACC:
|
|
||||||
adds r4, #0x10
|
|
||||||
_0805CACE:
|
|
||||||
ldrb r2, [r4]
|
|
||||||
adds r0, r2, #0
|
|
||||||
cmp r0, #0xff
|
|
||||||
beq _0805CAE2
|
|
||||||
ldr r0, [r4]
|
|
||||||
ldr r1, _0805CAE8 @ =0x00FF000F
|
|
||||||
ands r0, r1
|
|
||||||
ldr r1, _0805CAEC @ =0x00280009
|
|
||||||
cmp r0, r1
|
|
||||||
bne _0805CA86
|
|
||||||
_0805CAE2:
|
|
||||||
adds r0, r5, #0
|
|
||||||
_0805CAE4:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805CAE8: .4byte 0x00FF000F
|
|
||||||
_0805CAEC: .4byte 0x00280009
|
|
||||||
|
|
||||||
thumb_func_start sub_0805CAF0
|
|
||||||
sub_0805CAF0: @ 0x0805CAF0
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r3, r0, #0
|
|
||||||
ldrh r1, [r3, #8]
|
|
||||||
ldr r2, _0805CB34 @ =gRoomControls
|
|
||||||
ldrh r0, [r2, #6]
|
|
||||||
adds r5, r1, r0
|
|
||||||
ldrh r1, [r3, #0xa]
|
|
||||||
ldrh r0, [r2, #8]
|
|
||||||
adds r4, r1, r0
|
|
||||||
ldr r1, _0805CB38 @ =gUnk_03003D90
|
|
||||||
ldr r2, [r1, #4]
|
|
||||||
cmp r2, r1
|
|
||||||
beq _0805CB42
|
|
||||||
_0805CB0A:
|
|
||||||
movs r6, #0x2e
|
|
||||||
ldrsh r0, [r2, r6]
|
|
||||||
cmp r5, r0
|
|
||||||
bne _0805CB3C
|
|
||||||
movs r6, #0x32
|
|
||||||
ldrsh r0, [r2, r6]
|
|
||||||
cmp r4, r0
|
|
||||||
bne _0805CB3C
|
|
||||||
ldrb r0, [r3, #2]
|
|
||||||
ldrb r6, [r2, #9]
|
|
||||||
cmp r0, r6
|
|
||||||
bne _0805CB3C
|
|
||||||
ldrb r0, [r2, #8]
|
|
||||||
cmp r0, #3
|
|
||||||
bne _0805CB3C
|
|
||||||
ldrb r0, [r3, #3]
|
|
||||||
ldrb r6, [r2, #0xa]
|
|
||||||
cmp r0, r6
|
|
||||||
bne _0805CB3C
|
|
||||||
adds r0, r2, #0
|
|
||||||
b _0805CB44
|
|
||||||
.align 2, 0
|
|
||||||
_0805CB34: .4byte gRoomControls
|
|
||||||
_0805CB38: .4byte gUnk_03003D90
|
|
||||||
_0805CB3C:
|
|
||||||
ldr r2, [r2, #4]
|
|
||||||
cmp r2, r1
|
|
||||||
bne _0805CB0A
|
|
||||||
_0805CB42:
|
|
||||||
movs r0, #0
|
|
||||||
_0805CB44:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0805CB48
|
|
||||||
sub_0805CB48: @ 0x0805CB48
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r5, #0
|
|
||||||
ldrb r1, [r4, #0xe]
|
|
||||||
cmp r5, r1
|
|
||||||
bge _0805CB84
|
|
||||||
adds r3, r4, #0
|
|
||||||
adds r3, #0x20
|
|
||||||
adds r6, r3, #0
|
|
||||||
_0805CB5A:
|
|
||||||
ldr r0, [r3]
|
|
||||||
ldr r2, [r0, #4]
|
|
||||||
cmp r2, #0
|
|
||||||
bne _0805CB7A
|
|
||||||
subs r0, r1, #1
|
|
||||||
cmp r0, r5
|
|
||||||
bne _0805CB6C
|
|
||||||
str r2, [r3]
|
|
||||||
b _0805CB74
|
|
||||||
_0805CB6C:
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r6, r0
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r3]
|
|
||||||
_0805CB74:
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
_0805CB7A:
|
|
||||||
adds r3, #4
|
|
||||||
adds r5, #1
|
|
||||||
ldrb r1, [r4, #0xe]
|
|
||||||
cmp r5, r1
|
|
||||||
blt _0805CB5A
|
|
||||||
_0805CB84:
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
cmp r0, #1
|
|
||||||
bhi _0805CB8E
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_0805CB8E:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
sub_0805C94C: @ 0x0805C94C
|
||||||
|
push {r4, r5, r6, lr}
|
||||||
|
add r4, r0, #0
|
||||||
|
ldrb r0, [r4, #0xa]
|
||||||
|
cmp r0, #0
|
||||||
|
bne _0805C9B0
|
||||||
|
add r6, r4, #0
|
||||||
|
add r6, r6, #0x20
|
||||||
|
add r1, r6, #0
|
||||||
|
mov r2, #0
|
||||||
|
add r0, r4, #0
|
||||||
|
add r0, r0, #0x3c
|
||||||
|
_0805C962:
|
||||||
|
str r2, [r0]
|
||||||
|
sub r0, r0, #0x4
|
||||||
|
cmp r0, r1
|
||||||
|
bge _0805C962
|
||||||
|
add r0, r4, #0
|
||||||
|
bl sub_0805CA6C
|
||||||
|
add r5, r0, #0
|
||||||
|
cmp r5, #0x1
|
||||||
|
ble _0805C9A8
|
||||||
|
bl GetEmptyManager
|
||||||
|
add r2, r0, #0
|
||||||
|
cmp r2, #0
|
||||||
|
beq _0805C9A8
|
||||||
|
mov r0, #0x9
|
||||||
|
strb r0, [r2, #0x8]
|
||||||
|
mov r0, #0x28
|
||||||
|
strb r0, [r2, #0x9]
|
||||||
|
mov r0, #0x1
|
||||||
|
strb r0, [r2, #0xa]
|
||||||
|
strb r5, [r2, #0xe]
|
||||||
|
add r1, r2, #0
|
||||||
|
add r1, r1, #0x20
|
||||||
|
add r0, r6, #0
|
||||||
|
ldm r0!, {r3, r5, r6}
|
||||||
|
stm r1!, {r3, r5, r6}
|
||||||
|
ldm r0!, {r3, r5, r6}
|
||||||
|
stm r1!, {r3, r5, r6}
|
||||||
|
ldm r0!, {r3, r5}
|
||||||
|
stm r1!, {r3, r5}
|
||||||
|
add r0, r2, #0
|
||||||
|
mov r1, #0x6
|
||||||
|
bl AppendEntityToList
|
||||||
|
_0805C9A8:
|
||||||
|
add r0, r4, #0
|
||||||
|
bl DeleteManager
|
||||||
|
b _0805C9B8
|
||||||
|
_0805C9B0:
|
||||||
|
mov r1, #0
|
||||||
|
mov r0, #0x1
|
||||||
|
strb r0, [r4, #0xc]
|
||||||
|
strb r1, [r4, #0xf]
|
||||||
|
_0805C9B8:
|
||||||
|
pop {r4, r5, r6, pc}
|
|
@ -135,6 +135,16 @@ typedef struct Entity {
|
||||||
/*0x86*/ union SplitHWord field_0x86;
|
/*0x86*/ union SplitHWord field_0x86;
|
||||||
} Entity;
|
} Entity;
|
||||||
|
|
||||||
|
typedef struct LinkedList {
|
||||||
|
Entity* last;
|
||||||
|
Entity* first;
|
||||||
|
} LinkedList;
|
||||||
|
|
||||||
|
extern LinkedList gEntityLists[9];
|
||||||
|
extern LinkedList gUnk_03003D90;
|
||||||
|
|
||||||
|
extern LinkedList gUnk_03003DA0;
|
||||||
|
|
||||||
#define TILE(x, y) \
|
#define TILE(x, y) \
|
||||||
((((x - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
|
((((x - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
|
||||||
(((y - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
|
(((y - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
|
||||||
|
@ -189,6 +199,4 @@ enum {
|
||||||
#define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2)
|
#define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2)
|
||||||
#define Direction8FromAnimationState(expr) (expr << 2)
|
#define Direction8FromAnimationState(expr) (expr << 2)
|
||||||
|
|
||||||
extern Entity gUnk_03003DA0;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -321,4 +321,5 @@ extern void sub_08008790(Entity*, u32);
|
||||||
extern u32 CheckIsDungeon();
|
extern u32 CheckIsDungeon();
|
||||||
extern void sub_0804ACF8();
|
extern void sub_0804ACF8();
|
||||||
extern void sub_08073904(Entity*);
|
extern void sub_08073904(Entity*);
|
||||||
|
extern void sub_08004484(Entity*, Entity*);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -81,4 +81,6 @@ extern RoomVars gRoomVars;
|
||||||
extern void SetTileType(u32, u32, u32);
|
extern void SetTileType(u32, u32, u32);
|
||||||
extern void sub_08080964(u32 time, u32 magnitude); // shake screen
|
extern void sub_08080964(u32 time, u32 magnitude); // shake screen
|
||||||
|
|
||||||
|
extern void* GetCurrentRoomProperty(u32);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -510,7 +510,7 @@ SECTIONS {
|
||||||
asm/manager25.o(.text);
|
asm/manager25.o(.text);
|
||||||
asm/manager26.o(.text);
|
asm/manager26.o(.text);
|
||||||
src/manager/manager27.o(.text);
|
src/manager/manager27.o(.text);
|
||||||
asm/manager28.o(.text);
|
src/manager/manager28.o(.text);
|
||||||
asm/manager29.o(.text);
|
asm/manager29.o(.text);
|
||||||
asm/manager2A.o(.text);
|
asm/manager2A.o(.text);
|
||||||
asm/manager2B.o(.text);
|
asm/manager2B.o(.text);
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
extern void sub_080A2CC0();
|
extern void sub_080A2CC0();
|
||||||
extern void sub_0806F69C();
|
extern void sub_0806F69C();
|
||||||
extern void EnqueueSFX();
|
extern void EnqueueSFX();
|
||||||
extern Entity* GetCurrentRoomProperty();
|
|
||||||
|
|
||||||
void BladeTrap(Entity* ent) {
|
void BladeTrap(Entity* ent) {
|
||||||
u16 uVar1;
|
u16 uVar1;
|
||||||
|
|
|
@ -132,12 +132,6 @@ void ClearDeletedEntity(Entity* ent) {
|
||||||
gEntCount--;
|
gEntCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct LinkedList {
|
|
||||||
Entity* last;
|
|
||||||
Entity* first;
|
|
||||||
} LinkedList;
|
|
||||||
|
|
||||||
extern LinkedList gEntityLists[9];
|
|
||||||
extern EntityType gUnk_03003DB8;
|
extern EntityType gUnk_03003DB8;
|
||||||
|
|
||||||
void DeleteAllEntities(void) {
|
void DeleteAllEntities(void) {
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
|
|
||||||
void LoadRoomEntityList(EntityData* dat);
|
void LoadRoomEntityList(EntityData* dat);
|
||||||
extern EntityData* GetCurrentRoomProperty(u32 unk);
|
|
||||||
extern void sub_0804B058(EntityData* dat);
|
extern void sub_0804B058(EntityData* dat);
|
||||||
extern void LoadRoomTileEntities(EntityData* dat);
|
extern void LoadRoomTileEntities(EntityData* dat);
|
||||||
extern void sub_0801AC98();
|
extern void sub_0801AC98();
|
||||||
|
|
|
@ -0,0 +1,130 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "manager.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "room.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Manager manager;
|
||||||
|
Entity* unk_20[8];
|
||||||
|
} Manager28;
|
||||||
|
|
||||||
|
extern void (* const gUnk_08108D28[])(Manager28*);
|
||||||
|
|
||||||
|
void sub_0805C934(Manager28*);
|
||||||
|
void sub_0805C94C(Manager28*);
|
||||||
|
void sub_0805C9BC(Manager28*);
|
||||||
|
u32 sub_0805CA6C(Manager28*);
|
||||||
|
Entity* sub_0805CAF0(EntityData*);
|
||||||
|
void sub_0805CB48(Manager28*);
|
||||||
|
|
||||||
|
void sub_0805C934(Manager28* this) {
|
||||||
|
gUnk_08108D28[this->manager.action](this);
|
||||||
|
}
|
||||||
|
|
||||||
|
NONMATCH("asm/non_matching/manager28/sub_0805C94C.inc", void sub_0805C94C(Manager28* this)) {
|
||||||
|
if (!this->manager.unk_0a) {
|
||||||
|
s32 tmp2;
|
||||||
|
int tmp4;
|
||||||
|
for (tmp4 = 0; tmp4 < 8; tmp4++) {
|
||||||
|
this->unk_20[tmp4] = 0;
|
||||||
|
}
|
||||||
|
tmp2 = sub_0805CA6C(this);//maybe 2 params?
|
||||||
|
if (tmp2 > 1) {
|
||||||
|
Manager28* tmp3 = (Manager28*) GetEmptyManager();
|
||||||
|
if (tmp3) {
|
||||||
|
tmp3->manager.type = 9;
|
||||||
|
tmp3->manager.subtype = 0x28;
|
||||||
|
tmp3->manager.unk_0a = 1;
|
||||||
|
tmp3->manager.unk_0e = tmp2;
|
||||||
|
for (tmp4 = 0; tmp4 < 8; tmp4++) {
|
||||||
|
tmp3->unk_20[tmp4] = this->unk_20[tmp4];
|
||||||
|
}
|
||||||
|
AppendEntityToList(tmp3, 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DeleteManager(&this->manager);
|
||||||
|
} else {
|
||||||
|
this->manager.action = 1;
|
||||||
|
this->manager.unk_0f = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END_NONMATCH
|
||||||
|
|
||||||
|
void sub_0805C9BC(Manager28* this) {
|
||||||
|
s32 n;
|
||||||
|
s32 i;
|
||||||
|
s32 j;
|
||||||
|
Entity* tmp;
|
||||||
|
sub_0805CB48(this);
|
||||||
|
n = this->manager.unk_0e - 1;
|
||||||
|
if ((this->manager.unk_0f++) & 1) {
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
tmp = this->unk_20[i];
|
||||||
|
for (j = i + 1; j < this->manager.unk_0e; j++) {
|
||||||
|
sub_08004484(tmp, this->unk_20[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
tmp = this->unk_20[i];
|
||||||
|
for (j = i + 1; j < this->manager.unk_0e; j++) {
|
||||||
|
sub_08004484(this->unk_20[j], tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 sub_0805CA6C(Manager28* this) {
|
||||||
|
u32 re = 0;
|
||||||
|
EntityData * tmp = GetCurrentRoomProperty(this->manager.unk_0b);
|
||||||
|
if (!tmp) return 0;
|
||||||
|
for (; *((u8*) tmp) != 0xFF && !(tmp->type == 9 && tmp->subtype == 0x28); tmp++) {
|
||||||
|
Entity* tmp2;
|
||||||
|
u32 i;
|
||||||
|
if (tmp->type != 3) continue;
|
||||||
|
tmp2 = sub_0805CAF0(tmp);
|
||||||
|
if (!tmp2) continue;
|
||||||
|
for (i = 0; i < re; i++) {
|
||||||
|
if (this->unk_20[i] == tmp2) break;
|
||||||
|
}
|
||||||
|
if (i != re) continue;
|
||||||
|
this->unk_20[re++] = tmp2;
|
||||||
|
if (re == 8) return 8;
|
||||||
|
}
|
||||||
|
return re;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity* sub_0805CAF0(EntityData* unk1) {
|
||||||
|
u32 x, y;
|
||||||
|
Entity* i;
|
||||||
|
LinkedList* tmp;
|
||||||
|
x = unk1->xPos + gRoomControls.roomOriginX;
|
||||||
|
y = unk1->yPos + gRoomControls.roomOriginY;
|
||||||
|
tmp = &gUnk_03003D90;
|
||||||
|
for (i = tmp->first; (u32) i != (u32) tmp; i = i->next) {
|
||||||
|
if (x == i->x.HALF.HI
|
||||||
|
&& y == i->y.HALF.HI
|
||||||
|
&& unk1->subtype == i->entityType.subtype
|
||||||
|
&& 3 == i->entityType.type
|
||||||
|
&& unk1->form == i->entityType.form) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805CB48(Manager28* this) {
|
||||||
|
s32 i;
|
||||||
|
for (i = 0; i < this->manager.unk_0e; i++) {
|
||||||
|
if (this->unk_20[i]->next == 0) {
|
||||||
|
if (this->manager.unk_0e-1 == i) {
|
||||||
|
this->unk_20[i] = this->unk_20[i]->next;
|
||||||
|
} else {
|
||||||
|
this->unk_20[i] = this->unk_20[this->manager.unk_0e-1];
|
||||||
|
}
|
||||||
|
this->manager.unk_0e--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this->manager.unk_0e <= 1) DeleteThisEntity();
|
||||||
|
}
|
|
@ -83,7 +83,6 @@ void ManagerB_WaitForDone(ManagerB* this) {
|
||||||
ManagerBHelper* CreateHelper(Manager*);
|
ManagerBHelper* CreateHelper(Manager*);
|
||||||
void ManagerBHelper_Monitor(ManagerBHelper*, Entity*, u32);
|
void ManagerBHelper_Monitor(ManagerBHelper*, Entity*, u32);
|
||||||
|
|
||||||
extern EntityData* GetCurrentRoomProperty(u8);
|
|
||||||
extern Entity* LoadRoomEntity(EntityData*);
|
extern Entity* LoadRoomEntity(EntityData*);
|
||||||
|
|
||||||
void ManagerB_LoadFight(Manager* this) {
|
void ManagerB_LoadFight(Manager* this) {
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
|
|
||||||
extern Entity* GetCurrentRoomProperty(u8);
|
|
||||||
extern void LoadRoomEntityList(Entity*);
|
extern void LoadRoomEntityList(Entity*);
|
||||||
extern void DeleteThisEntity(void);
|
extern void DeleteThisEntity(void);
|
||||||
extern void DeleteManager(Manager*);
|
extern void DeleteManager(Manager*);
|
||||||
|
|
|
@ -26,7 +26,6 @@ static u8 sub_08086954(Entity*);
|
||||||
|
|
||||||
extern u32 sub_080562CC(u32, u32, u32, u32);
|
extern u32 sub_080562CC(u32, u32, u32, u32);
|
||||||
extern void sub_08078AC0(u32, u32, u32);
|
extern void sub_08078AC0(u32, u32, u32);
|
||||||
extern void* GetCurrentRoomProperty(u8);
|
|
||||||
|
|
||||||
extern void (*const gUnk_081206B4[])(Entity*);
|
extern void (*const gUnk_081206B4[])(Entity*);
|
||||||
extern BoundingBox gUnk_081206AC; // TODO: should be const
|
extern BoundingBox gUnk_081206AC; // TODO: should be const
|
||||||
|
|
|
@ -9,7 +9,6 @@ extern void sub_0809EAD8(Entity*);
|
||||||
extern void sub_0809EABC(Entity*);
|
extern void sub_0809EABC(Entity*);
|
||||||
extern void EnqueueSFX(u32);
|
extern void EnqueueSFX(u32);
|
||||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||||
extern Entity* GetCurrentRoomProperty(u32);
|
|
||||||
extern void SetTile(u32, u32, u32);
|
extern void SetTile(u32, u32, u32);
|
||||||
extern void sub_0806F69C(Entity*);
|
extern void sub_0806F69C(Entity*);
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
|
||||||
extern Entity* GetCurrentRoomProperty(u32);
|
|
||||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||||
|
|
||||||
extern u16 gUnk_08123318[];
|
extern u16 gUnk_08123318[];
|
||||||
|
|
|
@ -323,7 +323,7 @@ void sub_0808EBB8(Entity* this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Entity* sub_0808EC80(int form) {
|
static Entity* sub_0808EC80(int form) {
|
||||||
Entity* entityA = &gUnk_03003DA0;
|
Entity* entityA = (Entity*) &gUnk_03003DA0;
|
||||||
Entity* entityB = entityA->next;
|
Entity* entityB = entityA->next;
|
||||||
while (entityB != entityA) {
|
while (entityB != entityA) {
|
||||||
if ((entityB->entityType.type == 0x6 && entityB->entityType.subtype == 0x48) &&
|
if ((entityB->entityType.type == 0x6 && entityB->entityType.subtype == 0x48) &&
|
||||||
|
|
Loading…
Reference in New Issue