Decompile manager36

This commit is contained in:
octorock 2021-08-28 14:39:45 +02:00
parent 8418fa7c9c
commit 87038a31bf
22 changed files with 72 additions and 108 deletions

View File

@ -1,81 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Manager36_Main
Manager36_Main: @ 0x0805DDB4
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
lsls r0, r0, #2
ldr r1, _0805DDE0 @ =gUnk_08108DA8
adds r3, r0, r1
ldrb r0, [r2, #0xc]
adds r1, r0, #0
cmp r1, #0
bne _0805DDCE
adds r0, #1
strb r0, [r2, #0xc]
strb r1, [r2, #0xe]
_0805DDCE:
ldrb r0, [r2, #0xe]
cmp r0, #0
bne _0805DDE4
ldrh r0, [r3]
strb r0, [r2, #0xe]
ldrh r0, [r3, #2]
bl SoundReq
b _0805DDE8
.align 2, 0
_0805DDE0: .4byte gUnk_08108DA8
_0805DDE4:
subs r0, #1
strb r0, [r2, #0xe]
_0805DDE8:
pop {pc}
.align 2, 0
thumb_func_start sub_0805DDEC
sub_0805DDEC: @ 0x0805DDEC
push {r4, r5, lr}
adds r5, r1, #0
bl GetEmptyManager
adds r4, r0, #0
cmp r4, #0
beq _0805DE16
movs r0, #9
strb r0, [r4, #8]
movs r0, #0x36
strb r0, [r4, #9]
ldr r0, [r5, #4]
strb r0, [r4, #0xa]
adds r0, r4, #0
movs r1, #6
bl AppendEntityToList
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
_0805DE16:
pop {r4, r5, pc}
thumb_func_start sub_0805DE18
sub_0805DE18: @ 0x0805DE18
push {lr}
sub sp, #4
ldr r3, [r1, #4]
movs r0, #0
str r0, [sp]
movs r0, #9
movs r1, #0x36
movs r2, #6
bl FindEntity
cmp r0, #0
beq _0805DE34
bl DeleteEntityAny
_0805DE34:
add sp, #4
pop {pc}

View File

@ -130,7 +130,7 @@ _08066B40:
movs r0, #4
str r0, [r1, #4]
adds r0, r4, #0
bl sub_0805DDEC
bl CreateManager36
b _08066B66
_08066B52:
adds r0, r4, #0
@ -138,7 +138,7 @@ _08066B52:
ldr r1, [r0]
str r2, [r1, #4]
adds r0, r4, #0
bl sub_0805DE18
bl DeleteManager36
ldr r0, _08066B70 @ =0x0000021D
bl EnqueueSFX
_08066B66:

View File

@ -17,5 +17,5 @@ SCRIPT_START script_0800AB08
_0807EA94
TextboxNoOverlapFollowPos 0x165e, 0x000e
_0807EA94
CallWithArg sub_0805DDEC, 0x00000001
CallWithArg CreateManager36, 0x00000001
_0807F0C8 0xffff, 0x0000

View File

@ -8,7 +8,7 @@ SCRIPT_START script_0800AB6E
SetEntityPosition 0x0000, 0xffe0
Call sub_0807F5C0
Wait 0x003c
CallWithArg sub_0805DE18, 0x00000001
CallWithArg DeleteManager36, 0x00000001
_0807F0C8 0x0000, 0x0000
Wait 0x003c
_0807E5F8 0x00000002

View File

@ -42,5 +42,5 @@ script_0800DBCA:
_0807E5F8 0x00000001
StopBgm
Call sub_08094F98
CallWithArg sub_0805DDEC, 0x00000001
CallWithArg CreateManager36, 0x00000001
_0807F0C8 0xffff, 0x0000

View File

@ -11,7 +11,7 @@ SCRIPT_START script_0800DC4C
_0807E778 0x0004
_0807E80C 0x00000000
WaitFor_2
CallWithArg sub_0805DE18, 0x00000001
CallWithArg DeleteManager36, 0x00000001
_0807F0C8 0x0000, 0x0000
SetLocalFlag 0x0079
CallWithArg sub_0806DA1C, 0x00000002

View File

@ -135,5 +135,5 @@ SCRIPT_START script_08010BEC
_0807E5F8 0x08000000
_0807E5F8 0x00800000
WaitForSomething2 0x01000000
CallWithArg sub_0805DDEC, 0x00000002
CallWithArg CreateManager36, 0x00000002
_0807F0C8 0xffff, 0x0000

View File

@ -24,7 +24,7 @@ SCRIPT_START script_08010E5A
_0807E778 0x0002
DoFade6
WaitFor_2
CallWithArg sub_0805DE18, 0x00000002
CallWithArg DeleteManager36, 0x00000002
_0807F0C8 0x0000, 0x0000
Call sub_0806DC3C
Call sub_080791BC
@ -51,5 +51,5 @@ SCRIPT_START script_08010E5A
_0807EA94
TextboxNoOverlapFollowPos 0x1046, 0x0000
_0807EA94
CallWithArg sub_0805DDEC, 0x00000002
CallWithArg CreateManager36, 0x00000002
_0807F0C8 0xffff, 0x0000

View File

@ -22,7 +22,7 @@ SCRIPT_START script_08010F84
Wait 0x000f
PlaySound SFX_125
CallWithArg sub_0807FB28, 0x00000003
CallWithArg sub_0805DE18, 0x00000002
CallWithArg DeleteManager36, 0x00000002
_0807F0C8 0x0000, 0x0000
_0807E5F8 0x00000010
WaitForSomething2 0x00000020

View File

@ -34,7 +34,7 @@ script_080134F8:
CallWithArg sub_08095D8C, script_08014118
EndBlock
Wait 0x003c
CallWithArg sub_0805DDEC, 0x00000000
CallWithArg CreateManager36, 0x00000000
_0807E5F8 0x00000200
WaitForSomething2 0x00002000
PlaySound SFX_1D2
@ -44,7 +44,7 @@ script_080134F8:
WaitForSomething2 0x00004000
Wait 0x0078
_0807E5F8 0x00000060
CallWithArg sub_0805DE18, 0x00000000
CallWithArg DeleteManager36, 0x00000000
Wait 0x0078
_0807E5F8 0x00000080
WaitForSomething2 0x00000100
@ -69,5 +69,5 @@ script_080134F8:
TextboxNoOverlapFollowPos 0x0503, 0x000c
_0807EA94
_0807E5F8 0x00040000
CallWithArg sub_0805DDEC, 0x00000001
CallWithArg CreateManager36, 0x00000001
_0807F0C8 0xffff, 0x0000

View File

@ -7,7 +7,7 @@ SCRIPT_START script_08013650
Wait 0x003c
_0807E5F8 0x00000004
Wait 0x0078
CallWithArg sub_0805DE18, 0x00000001
CallWithArg DeleteManager36, 0x00000001
_0807F0C8 0x0000, 0x0000
StartPlayerScript script_080136B4
WaitForSomething2 0x00000002

View File

@ -35,7 +35,7 @@ script_0801373C:
CallWithArg sub_08095D8C, script_08014154
EndBlock
Wait 0x003c
CallWithArg sub_0805DDEC, 0x00000000
CallWithArg CreateManager36, 0x00000000
_0807E5F8 0x00000200
WaitForSomething2 0x00002000
PlaySound SFX_1D2
@ -47,7 +47,7 @@ script_0801373C:
WaitForSomething2 0x00008000
Wait 0x0078
_0807E5F8 0x00000060
CallWithArg sub_0805DE18, 0x00000000
CallWithArg DeleteManager36, 0x00000000
Wait 0x0078
_0807E5F8 0x00000080
WaitForSomething2 0x00000100

View File

@ -37,7 +37,7 @@ script_080138D0:
CallWithArg sub_08095D8C, script_08014198
EndBlock
Wait 0x003c
CallWithArg sub_0805DDEC, 0x00000000
CallWithArg CreateManager36, 0x00000000
_0807E5F8 0x00000200
WaitForSomething2 0x00002000
PlaySound SFX_1D2
@ -51,7 +51,7 @@ script_080138D0:
WaitForSomething2 0x00010000
Wait 0x0078
_0807E5F8 0x00000060
CallWithArg sub_0805DE18, 0x00000000
CallWithArg DeleteManager36, 0x00000000
Wait 0x0078
_0807E5F8 0x00000080
WaitForSomething2 0x00000100
@ -93,5 +93,5 @@ script_08013A8E:
CheckRoomFlag 0x0004
JumpIfNot script_08013A8E
.endif
CallWithArg sub_0805DDEC, 0x00000001
CallWithArg CreateManager36, 0x00000001
_0807F0C8 0xffff, 0x0000

View File

@ -9,7 +9,7 @@ SCRIPT_START script_08013AA6
.endif
_0807E5F8 0x00000008
Wait 0x0078
CallWithArg sub_0805DE18, 0x00000001
CallWithArg DeleteManager36, 0x00000001
_0807F0C8 0x0000, 0x0000
Wait 0x003c
_0807F0B4 0x0004

View File

@ -32,5 +32,5 @@ SCRIPT_START script_080153EC
_0807EA94
TextboxNoOverlapFollowPos 0x1310, 0x000c
_0807EA94
CallWithArg sub_0805DDEC, 0x00000001
CallWithArg CreateManager36, 0x00000001
_0807F0C8 0xffff, 0x0000

View File

@ -11,7 +11,7 @@ SCRIPT_START script_0801548E
WaitForSomething2 0x00010000
_0807E5F8 0x00048000
WaitForSomething2 0x00010000
CallWithArg sub_0805DE18, 0x00000001
CallWithArg DeleteManager36, 0x00000001
_0807F0C8 0x0000, 0x0000
TextboxNoOverlapFollowPos 0x1312, 0x000c
_0807EA94

View File

@ -5,13 +5,13 @@ SCRIPT_START script_08015618
Call sub_08094B80
EndBlock
WaitForSomething2 0x00000080
CallWithArg sub_0805DDEC, 0x00000003
CallWithArg CreateManager36, 0x00000003
Call sub_08094B0C
_0807EDD4 0x0078, 0x0068
_0807E5F8 0x00000100
WaitForSomething2 0x00000080
_0807EF3C 0xff80, 0x0000
CallWithArg sub_0805DE18, 0x00000003
CallWithArg DeleteManager36, 0x00000003
Wait 0x003c
_0807E5F8 0x00000100
WaitForSomething2 0x00000080

View File

@ -265,4 +265,6 @@ Entity* FindNextDuplicateID(Entity* ent, int listIndex);
*/
Entity* FindEntity(u32 kind, u32 id, u32 listIndex, u32 type, u32 type2);
void DeleteEntityAny(Entity* ent);
#endif

View File

@ -193,7 +193,7 @@ extern void Manager32_Main(Entity*);
extern void Manager33_Main(Entity*);
extern void Manager34_Main(Entity*);
extern void Manager35_Main(Entity*);
extern void Manager36_Main(Entity*);
extern void Manager36_Main(Manager*);
extern void Manager37_Main(Entity*);
extern void Manager38_Main(Entity*);
extern void Manager39_Main();

View File

@ -555,7 +555,7 @@ SECTIONS {
asm/manager33.o(.text);
asm/manager34.o(.text);
asm/manager35.o(.text);
asm/manager36.o(.text);
src/manager/manager36.o(.text);
asm/manager37.o(.text);
src/manager/manager38.o(.text);
src/manager/manager39.o(.text);

View File

@ -49,7 +49,6 @@ typedef struct {
extern struct_03003DD0 gUnk_03003DD0;
extern u32 _call_via_r0(u32*);
extern u32 _EntUpdate;
void DeleteEntityAny(Entity*);
void DeleteThisEntity(void) {
DeleteEntityAny(gUnk_03003DD0.field_0x8);

44
src/manager/manager36.c Normal file
View File

@ -0,0 +1,44 @@
#include "manager.h"
#include "audio.h"
#include "script.h"
#include "functions.h"
typedef struct {
u16 waitTime;
u16 sound;
} Manager36_unk;
extern Manager36_unk gUnk_08108DA8[];
// Repeatedly plays the same sound with a fixed wait time
void Manager36_Main(Manager* manager) {
Manager36_unk* unk = &gUnk_08108DA8[manager->unk_0a];
if (manager->action == 0) {
manager->action += 1;
manager->unk_0e = 0;
}
if (manager->unk_0e == 0) {
manager->unk_0e = unk->waitTime;
SoundReq(unk->sound);
} else {
manager->unk_0e -= 1;
}
}
void CreateManager36(Entity* entity, ScriptExecutionContext* context) {
Manager* manager = GetEmptyManager();
if (manager != NULL) {
manager->type = 9;
manager->subtype = 0x36;
manager->unk_0a = context->intVariable;
AppendEntityToList((Entity*)manager, 6);
sub_0805E3A0(manager, 6);
}
}
void DeleteManager36(Entity* entity, ScriptExecutionContext* context) {
Entity* manager = FindEntity(9, 0x36, 6, context->intVariable, 0);
if (manager != NULL) {
DeleteEntityAny(manager);
}
}