extract manager table

This commit is contained in:
theo3 2021-02-16 16:34:02 -08:00
parent f97a229352
commit f53140b2e9
7 changed files with 126 additions and 14 deletions

1
.gitignore vendored
View File

@ -65,3 +65,4 @@ _Deparsed_XSubs.pm
*.py *.py
*.sna *.sna
__pycache__ __pycache__
.vscode/settings.json

View File

@ -920,7 +920,7 @@ sub_08017508: @ 0x08017508
bl sub_0805E3B0 bl sub_0805E3B0
cmp r0, #0 cmp r0, #0
bne _08017524 bne _08017524
ldr r0, _0801752C @ =gUnk_080B3054 ldr r0, _0801752C @ =gManagerFunctions
ldrb r1, [r4, #9] ldrb r1, [r4, #9]
lsls r1, r1, #2 lsls r1, r1, #2
adds r1, r1, r0 adds r1, r1, r0
@ -932,7 +932,7 @@ _08017524:
pop {r0} pop {r0}
bx r0 bx r0
.align 2, 0 .align 2, 0
_0801752C: .4byte gUnk_080B3054 _0801752C: .4byte gManagerFunctions
thumb_func_start sub_08017530 thumb_func_start sub_08017530
sub_08017530: @ 0x08017530 sub_08017530: @ 0x08017530

View File

@ -1,8 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_080B3054:: @ 080B3054
.incbin "baserom.gba", 0x0B3054, 0x00000E8

View File

@ -133,4 +133,62 @@ typedef struct {
u16 unk_06; u16 unk_06;
} UnkManager26HelperStruct; } UnkManager26HelperStruct;
extern void Manager1();
extern void Manager2();
extern void sub_080576C0();
extern void sub_08057854();
extern void sub_08057AD0();
extern void sub_08057CB4();
extern void Manager7_Main();
extern void sub_08057ED0();
extern void sub_080581D8();
extern void sub_08058380();
extern void sub_080585F0();
extern void sub_0805884C();
extern void sub_08058DD0(Entity*);
extern void sub_08058E60();
extern void sub_08058ECC(Entity*);
extern void sub_08059570(Entity*);
extern void sub_080599B8(Entity*);
extern void sub_080599EC(Entity*);
extern void sub_08059DAC(Entity*);
extern void sub_08059E58(Entity*);
extern void sub_0805A280();
extern void sub_0805AB4C(Entity*);
extern void sub_0805AD48(Entity*);
extern void sub_0805ADD8();
extern void sub_0805AF60(Entity*);
extern void sub_0805B030();
extern void sub_0805B3B4(Entity*);
extern void sub_0805B53C(Entity*);
extern void sub_0805B5C8(Entity*);
extern void Manager1E_Handler();
extern void sub_0805B6F4(Entity*);
extern void sub_0805B7A0();
extern void sub_0805B820(Entity*);
extern void sub_0805B8EC(Entity*);
extern void sub_0805BC74(Entity*);
extern void sub_0805BF18(Entity*);
extern void sub_0805C61C(Entity*);
extern void sub_0805C6B8();
extern void Manager27();
extern void Manager28_Entry();
extern void sub_0805CB90(Entity*);
extern void sub_0805CFC0(Entity*);
extern void sub_0805D014(Entity*);
extern void sub_0805D174(Entity*);
extern void sub_0805D1FC(Entity*);
extern void sub_0805D250();
extern void sub_0805D3C8();
extern void Manager30_Main();
extern void sub_0805D630(Entity*);
extern void sub_0805D7A4(Entity*);
extern void sub_0805DAE8(Entity*);
extern void sub_0805DB94(Entity*);
extern void sub_0805DC84(Entity*);
extern void sub_0805DDB4(Entity*);
extern void sub_0805DE38(Entity*);
extern void sub_0805E0A8(Entity*);
extern void sub_0805E0FC();
#endif #endif

View File

@ -908,7 +908,7 @@ SECTIONS {
data/data_080B2A70.o(.rodata); data/data_080B2A70.o(.rodata);
data/playerItemFunctions.o(.rodata); data/playerItemFunctions.o(.rodata);
src/object.o(.rodata); src/object.o(.rodata);
data/data_080B3054.o(.rodata); src/manager.o(.rodata);
src/npc.o(.rodata); src/npc.o(.rodata);
data/data_080B3740.o(.rodata); data/data_080B3740.o(.rodata);
src/trig.o(.rodata); src/trig.o(.rodata);

63
src/manager.c Normal file
View File

@ -0,0 +1,63 @@
#include "manager.h"
// TODO: change all manager arguments to be Entity* and cast to specific type later.
void (*const gManagerFunctions[])() = {
NULL,
Manager1,
Manager2,
sub_080576C0,
sub_08057854,
sub_08057AD0,
sub_08057CB4,
Manager7_Main,
sub_08057ED0,
sub_080581D8,
sub_08058380,
sub_080585F0,
sub_0805884C,
sub_08058DD0,
sub_08058E60,
sub_08058ECC,
sub_08059570,
sub_080599B8,
sub_080599EC,
sub_08059DAC,
sub_08059E58,
sub_0805A280,
sub_0805AB4C,
sub_0805AD48,
sub_0805ADD8,
sub_0805AF60,
sub_0805B030,
sub_0805B3B4,
sub_0805B53C,
sub_0805B5C8,
Manager1E_Handler,
sub_0805B6F4,
sub_0805B7A0,
sub_0805B820,
sub_0805B8EC,
sub_0805BC74,
sub_0805BF18,
sub_0805C61C,
sub_0805C6B8,
Manager27,
Manager28_Entry,
sub_0805CB90,
sub_0805CFC0,
sub_0805D014,
sub_0805D174,
sub_0805D1FC,
sub_0805D250,
sub_0805D3C8,
Manager30_Main,
sub_0805D630,
sub_0805D7A4,
sub_0805DAE8,
sub_0805DB94,
sub_0805DC84,
sub_0805DDB4,
sub_0805DE38,
sub_0805E0A8,
sub_0805E0FC
};

View File

@ -1,7 +1,6 @@
#include "global.h" #include "global.h"
#include "entity.h" #include "entity.h"
#include "object.h" #include "object.h"
//clang-format off
void (*const gObjectFunctions[])(Entity*) = { void (*const gObjectFunctions[])(Entity*) = {
/*0x00*/ ItemOnGround, /*0x00*/ ItemOnGround,
@ -197,6 +196,5 @@ void (*const gObjectFunctions[])(Entity*) = {
/*0xbe*/ Pinwheel, /*0xbe*/ Pinwheel,
/*0xbf*/ ObjectBF, /*0xbf*/ ObjectBF,
/*0xc0*/ EnemyItem, /*0xc0*/ EnemyItem,
/*0xc1*/ ObjectC1, /*0xc1*/ ObjectC1
}; };
//clang-format on