mirror of https://github.com/zeldaret/tmc.git
Decompile manager2A
This commit is contained in:
parent
1484ab66dc
commit
568a033f42
|
|
@ -1,56 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start Manager2A_Main
|
||||
Manager2A_Main: @ 0x0805CFC0
|
||||
push {r4, lr}
|
||||
adds r1, r0, #0
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0805CFCE
|
||||
adds r0, #1
|
||||
strb r0, [r1, #0xc]
|
||||
_0805CFCE:
|
||||
movs r0, #3
|
||||
bl GetCurrentRoomProperty
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _0805CFEE
|
||||
b _0805CFE8
|
||||
_0805CFDC:
|
||||
cmp r0, #0xa
|
||||
bne _0805CFE6
|
||||
adds r0, r4, #0
|
||||
bl sub_0805CFF0
|
||||
_0805CFE6:
|
||||
adds r4, #8
|
||||
_0805CFE8:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0
|
||||
bne _0805CFDC
|
||||
_0805CFEE:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0805CFF0
|
||||
sub_0805CFF0: @ 0x0805CFF0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrh r0, [r4, #2]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _0805D012
|
||||
ldrh r0, [r4, #4]
|
||||
ldrb r1, [r4, #1]
|
||||
bl GetTileType
|
||||
ldrh r1, [r4, #6]
|
||||
cmp r1, r0
|
||||
bne _0805D012
|
||||
ldrh r0, [r4, #2]
|
||||
bl SetLocalFlag
|
||||
_0805D012:
|
||||
pop {r4, pc}
|
||||
|
|
@ -181,7 +181,7 @@ extern void Manager26_Main();
|
|||
extern void Manager27_Main();
|
||||
extern void Manager28_Main();
|
||||
extern void Manager29_Main(Entity*);
|
||||
extern void Manager2A_Main(Entity*);
|
||||
extern void Manager2A_Main(Manager*);
|
||||
extern void Manager2B_Main(Entity*);
|
||||
extern void Manager2C_Main(Entity*);
|
||||
extern void Manager2D_Main(Entity*);
|
||||
|
|
|
|||
|
|
@ -542,7 +542,7 @@ SECTIONS {
|
|||
src/manager/manager27.o(.text);
|
||||
src/manager/manager28.o(.text);
|
||||
asm/manager29.o(.text);
|
||||
asm/manager2A.o(.text);
|
||||
src/manager/manager2A.o(.text);
|
||||
asm/manager2B.o(.text);
|
||||
asm/manager2C.o(.text);
|
||||
src/manager/manager2D.o(.text);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
#include "manager.h"
|
||||
#include "room.h"
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
u8 field_0x0;
|
||||
u8 tileLayer;
|
||||
u16 flag;
|
||||
u16 tilePos;
|
||||
u16 tileType; // If the tile type at tilePos, tileLayer is tileType, set the local flag.
|
||||
} Manager2A_unk; // TODO result of GetCurrentRoomProperty(3)?
|
||||
|
||||
void sub_0805CFF0(Manager2A_unk*);
|
||||
|
||||
void Manager2A_Main(Manager* manager) {
|
||||
Manager2A_unk* data;
|
||||
|
||||
if (manager->action == 0) {
|
||||
manager->action += 1;
|
||||
}
|
||||
data = (Manager2A_unk*)GetCurrentRoomProperty(3);
|
||||
if (data != NULL) {
|
||||
for (; data->field_0x0 != 0; data = data + 1) {
|
||||
if (data->field_0x0 == 10) {
|
||||
sub_0805CFF0(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0805CFF0(Manager2A_unk* param_1) {
|
||||
if (CheckLocalFlag(param_1->flag) == 0) {
|
||||
u32 tileType = GetTileType(param_1->tilePos, param_1->tileLayer);
|
||||
if (param_1->tileType == tileType) {
|
||||
SetLocalFlag(param_1->flag);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue