Merge pull request #92 from Ibot02:manager7

manager7.c: ok
This commit is contained in:
notyourav 2020-10-15 22:40:02 -07:00 committed by GitHub
commit 1fec60ed5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 185 additions and 239 deletions

View File

@ -1,202 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08057D50
sub_08057D50: @ 0x08057D50
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08057D7C
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x20
movs r0, #0xff
strb r0, [r1]
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
ldr r1, _08057DC0 @ =sub_08057E30
adds r0, r4, #0
movs r2, #0
bl sub_08052D74
_08057D7C:
adds r0, r4, #0
bl sub_08057E40
cmp r0, #0
beq _08057D9A
ldr r0, _08057DC4 @ =gRoomVars
ldrb r5, [r0, #0x10]
adds r1, r4, #0
adds r1, #0x20
ldrb r0, [r1]
cmp r0, r5
beq _08057D9A
movs r0, #0
strb r5, [r1]
strb r0, [r4, #0xe]
_08057D9A:
ldr r0, _08057DC8 @ =gRoomControls
ldrh r3, [r0]
cmp r3, #0
bne _08057E2A
adds r0, r4, #0
adds r0, #0x20
ldrb r5, [r0]
lsls r1, r5, #6
ldr r0, _08057DCC @ =gUnk_081080A4
adds r2, r1, r0
ldrb r1, [r4, #0xe]
cmp r1, #7
bgt _08057DD0
cmp r1, #1
bge _08057E04
cmp r1, #0
beq _08057DD6
b _08057E2A
.align 2, 0
_08057DC0: .4byte sub_08057E30
_08057DC4: .4byte gRoomVars
_08057DC8: .4byte gRoomControls
_08057DCC: .4byte gUnk_081080A4
_08057DD0:
cmp r1, #8
beq _08057E20
b _08057E2A
_08057DD6:
ldr r1, _08057DF8 @ =gUnk_02034490
movs r0, #1
strb r0, [r1]
ldr r0, [r2]
ldr r1, _08057DFC @ =gGlobalGfxAndPalettes
adds r0, r0, r1
ldr r1, [r2, #4]
movs r2, #0x80
lsls r2, r2, #5
bl LoadAssetAsync
ldr r0, _08057E00 @ =gUnk_081081E4
adds r0, r5, r0
ldrb r0, [r0]
bl LoadPaletteGroup
b _08057E24
.align 2, 0
_08057DF8: .4byte gUnk_02034490
_08057DFC: .4byte gGlobalGfxAndPalettes
_08057E00: .4byte gUnk_081081E4
_08057E04:
lsls r1, r1, #3
adds r1, r1, r2
ldr r0, [r1]
ldr r2, _08057E1C @ =gGlobalGfxAndPalettes
adds r0, r0, r2
ldr r1, [r1, #4]
movs r2, #0x80
lsls r2, r2, #5
bl LoadAssetAsync
b _08057E24
.align 2, 0
_08057E1C: .4byte gGlobalGfxAndPalettes
_08057E20:
ldr r0, _08057E2C @ =gUnk_02034490
strb r3, [r0]
_08057E24:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
_08057E2A:
pop {r4, r5, pc}
.align 2, 0
_08057E2C: .4byte gUnk_02034490
thumb_func_start sub_08057E30
sub_08057E30: @ 0x08057E30
push {lr}
ldr r0, _08057E3C @ =gRoomVars
ldrb r0, [r0, #0x10]
bl sub_08057E7C
pop {pc}
.align 2, 0
_08057E3C: .4byte gRoomVars
thumb_func_start sub_08057E40
sub_08057E40: @ 0x08057E40
push {lr}
ldr r0, _08057E54 @ =gUnk_08108050
bl sub_08056300
adds r1, r0, #0
cmp r1, #0xff
bne _08057E58
movs r0, #0
b _08057E5E
.align 2, 0
_08057E54: .4byte gUnk_08108050
_08057E58:
ldr r0, _08057E60 @ =gRoomVars
strb r1, [r0, #0x10]
movs r0, #1
_08057E5E:
pop {pc}
.align 2, 0
_08057E60: .4byte gRoomVars
thumb_func_start sub_08057E64
sub_08057E64: @ 0x08057E64
push {lr}
ldr r0, _08057E78 @ =gUnk_08108050
bl sub_08056300
cmp r0, #0xff
beq _08057E74
bl sub_08057E7C
_08057E74:
pop {pc}
.align 2, 0
_08057E78: .4byte gUnk_08108050
thumb_func_start sub_08057E7C
sub_08057E7C: @ 0x08057E7C
push {r4, r5, r6, lr}
adds r4, r0, #0
cmp r4, #4
bhi _08057EB6
ldr r0, _08057EB8 @ =gUnk_081081E4
adds r0, r4, r0
ldrb r0, [r0]
bl LoadPaletteGroup
lsls r1, r4, #6
ldr r0, _08057EBC @ =gUnk_081080A4
adds r1, r1, r0
movs r3, #0
ldr r2, _08057EC0 @ =0x040000D4
ldr r6, _08057EC4 @ =gGlobalGfxAndPalettes
ldr r5, _08057EC8 @ =0x84000400
_08057E9C:
ldr r0, [r1]
adds r0, r0, r6
str r0, [r2]
ldr r0, [r1, #4]
str r0, [r2, #4]
str r5, [r2, #8]
ldr r0, [r2, #8]
adds r3, #1
adds r1, #8
cmp r3, #7
bls _08057E9C
ldr r0, _08057ECC @ =gRoomVars
strb r4, [r0, #0x10]
_08057EB6:
pop {r4, r5, r6, pc}
.align 2, 0
_08057EB8: .4byte gUnk_081081E4
_08057EBC: .4byte gUnk_081080A4
_08057EC0: .4byte 0x040000D4
_08057EC4: .4byte gGlobalGfxAndPalettes
_08057EC8: .4byte 0x84000400
_08057ECC: .4byte gRoomVars

View File

@ -1,32 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08108050:: @ 08108050
.incbin "baserom.gba", 0x108050, 0x000001E
gUnk_0810806E:: @ 0810806E
.incbin "baserom.gba", 0x10806E, 0x0000036
gUnk_081080A4:: @ 081080A4
.incbin "baserom.gba", 0x1080A4, 0x0000020
gUnk_081080C4:: @ 081080C4
.incbin "baserom.gba", 0x1080C4, 0x0000043
gUnk_08108107:: @ 08108107
.incbin "baserom.gba", 0x108107, 0x0000079
gUnk_08108180:: @ 08108180
.incbin "baserom.gba", 0x108180, 0x0000064
gUnk_081081E4:: @ 081081E4
.incbin "baserom.gba", 0x1081E4, 0x0000008
gUnk_081081EC:: @ 081081EC
.incbin "baserom.gba", 0x1081EC, 0x0000008
gUnk_081081F4:: @ 081081F4
.incbin "baserom.gba", 0x1081F4, 0x0000014

11
data/data_081081EC.s Normal file
View File

@ -0,0 +1,11 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081081EC:: @ 081081EC
.incbin "baserom.gba", 0x1081EC, 0x0000008
gUnk_081081F4:: @ 081081F4
.incbin "baserom.gba", 0x1081F4, 0x0000014

View File

@ -139,7 +139,7 @@ extern void sub_0804C2F0(void);
extern void sub_0801AFE4(void);
extern u32 sub_08060354(void);
extern void sub_08057E64(void);
extern void LoadAssetAsync(void*, u32, u32);
extern void LoadAssetAsync(const void*, u32, u32);
extern void LoadPaletteGroup(u32);
extern void sub_0809F814(u32);
extern void sub_080300E8(void);

View File

@ -45,7 +45,9 @@ typedef struct {
u8 field_0x8;
u8 field_0x9;
u8 unk2;
u16 filler2[3];
u8 filler2[5];
u8 unk_10;
u8 filler6[3];
u32 roomFlags;
u32 unk3;
u8 filler4[48];
@ -79,4 +81,4 @@ extern RoomVars gRoomVars;
extern void SetTileType(u32, u32, u32);
#endif
#endif

View File

@ -475,7 +475,7 @@ SECTIONS {
src/manager/manager4.o(.text);
src/manager/manager5.o(.text);
src/manager/manager6.o(.text);
asm/manager7.o(.text);
src/manager/manager7.o(.text);
asm/manager8.o(.text);
asm/manager9.o(.text);
src/manager/managerA.o(.text);
@ -984,7 +984,8 @@ SECTIONS {
data/map_headers.o(.rodata);
data/data_08107BC8.o(.rodata);
src/manager/manager5.o(.rodata);
data/data_08108050.o(.rodata);
src/manager/manager7.o(.rodata);
data/data_081081EC.o(.rodata);
src/manager/managerB.o(.rodata);
data/data_0810821C.o(.rodata);
src/item.o(.rodata);

166
src/manager/manager7.c Normal file
View File

@ -0,0 +1,166 @@
#include "global.h"
#include "manager.h"
#include "functions.h"
#include "gba/gba.h"
typedef struct {
Manager manager;
u8 unk_20;
u8 unk_21[0x1F];
} Manager7;
void sub_08057E30();
u32 sub_08057E40();
void sub_08057E64();
void sub_08057E7C(u32);
extern void sub_08052D74();
extern u32 sub_08056300(const u16*);
extern void sub_0805E3A0();
extern u8 gUnk_02034490;
extern const u8 gGlobalGfxAndPalettes[];
const u16 gUnk_08108050[0x2A] = {
0, 0, 0x20, 0xE0,
0xE0, 1, 0, 0x1D0,
0x80, 0x60, 2, 0x170,
0x278, 0xF8, 0xA0, 3,
0x310, 0x178, 0xC0, 0x150,
3, 0x340, 0x2C8, 0x60,
0x90, 4, 0x1D0, 0,
0x200, 0xE0, 1, 0x108,
0x188, 0xD0, 0x80, 2,
0x1E8, 0x338, 0x50, 0xC0,
0xFF, 0
};
const u32 gUnk_081080A4[0x50] = {
0x001095E0, 0x06000000,
0x0010A5E0, 0x06001000,
0x0010B5E0, 0x06002000,
0x0010C5E0, 0x06003000,
0x0010D5E0, 0x06008000,
0x0010E5E0, 0x06009000,
0x0010F5E0, 0x0600A000,
0x001105E0, 0x0600B000,
0x001115E0, 0x06000000,
0x001125E0, 0x06001000,
0x001135E0, 0x06002000,
0x001145E0, 0x06003000,
0x001155E0, 0x06008000,
0x001165E0, 0x06009000,
0x001175E0, 0x0600A000,
0x001185E0, 0x0600B000,
0x001195E0, 0x06000000,
0x0011A5E0, 0x06001000,
0x0011B5E0, 0x06002000,
0x0011C5E0, 0x06003000,
0x0011D5E0, 0x06008000,
0x0011E5E0, 0x06009000,
0x0011F5E0, 0x0600A000,
0x001205E0, 0x0600B000,
0x001215E0, 0x06000000,
0x001225E0, 0x06001000,
0x001235E0, 0x06002000,
0x001245E0, 0x06003000,
0x001255E0, 0x06008000,
0x001265E0, 0x06009000,
0x001275E0, 0x0600A000,
0x001285E0, 0x0600B000,
0x001295E0, 0x06000000,
0x0012A5E0, 0x06001000,
0x0012B5E0, 0x06002000,
0x0012C5E0, 0x06003000,
0x0012D5E0, 0x06008000,
0x0012E5E0, 0x06009000,
0x0012F5E0, 0x0600A000,
0x001305E0, 0x0600B000
};
const u8 gUnk_081081E4[] = {
0x16,
0x17,
0x17,
0x18,
0x18
};
void Manager7_Main(Manager7* this) {
u32 tmp;
const u32 * tmp2;
if (!this->manager.action) {
this->manager.action = 1;
this->manager.unk_0e = 8;
this->unk_20 = 0xFF;
sub_0805E3A0(this, 6);
sub_08052D74(this, sub_08057E30, 0);
}
if (sub_08057E40(this)) {
tmp = gRoomVars.unk_10;
if (this->unk_20 != tmp) {
this->unk_20 = tmp;
this->manager.unk_0e = 0;
}
}
if (gRoomControls.unk2) return;
tmp = this->unk_20;
tmp2 = &gUnk_081080A4[tmp<<4];
switch (this->manager.unk_0e) {
case 0:
gUnk_02034490 = 1;
LoadAssetAsync(&gGlobalGfxAndPalettes[tmp2[0]], tmp2[1], 0x1000);
LoadPaletteGroup(gUnk_081081E4[tmp]);
this->manager.unk_0e++;
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
LoadAssetAsync(&gGlobalGfxAndPalettes[tmp2[(this->manager.unk_0e << 1)]], tmp2[(this->manager.unk_0e << 1)+1], 0x1000);
this->manager.unk_0e++;
break;
case 8:
gUnk_02034490 = 0;
this->manager.unk_0e++;
break;
}
}
void sub_08057E30(Manager7* this) {
sub_08057E7C(gRoomVars.unk_10);
}
u32 sub_08057E40(Manager7* this) {
u32 tmp = sub_08056300(gUnk_08108050);
if (tmp != 0xFF) {
gRoomVars.unk_10 = tmp;
return 1;
} else {
return 0;
}
}
void sub_08057E64() {
u32 tmp;
tmp = sub_08056300(gUnk_08108050);
if (tmp != 0xFF) {
sub_08057E7C(tmp);
}
}
void sub_08057E7C(u32 unk1) {
u32 tmp;
const u32* tmp2;
if (unk1 > 4) return;
LoadPaletteGroup(gUnk_081081E4[unk1]);
tmp2 = &gUnk_081080A4[unk1<<4];
for (tmp = 0; tmp < 8; tmp++, tmp2 += 2) {
DmaSet(3,&gGlobalGfxAndPalettes[tmp2[0]],tmp2[1],0x84000400);
}
gRoomVars.unk_10 = unk1;
}