mirror of https://github.com/zeldaret/tmc.git
Decompile manager2
This commit is contained in:
parent
ebe6d231bc
commit
6d08b91b15
|
@ -1,66 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldr r3, _080575BC @ =gRoomControls
|
|
||||||
movs r0, #0xc
|
|
||||||
ldrsh r1, [r3, r0]
|
|
||||||
ldrh r0, [r3, #8]
|
|
||||||
subs r1, r1, r0
|
|
||||||
asrs r0, r1, #3
|
|
||||||
adds r1, r1, r0
|
|
||||||
ldr r4, _080575C0 @ =gScreen
|
|
||||||
movs r6, #0x3f
|
|
||||||
adds r0, r1, #0
|
|
||||||
ands r0, r6
|
|
||||||
strh r0, [r4, #0x30]
|
|
||||||
adds r0, r1, #0
|
|
||||||
cmp r1, #0
|
|
||||||
bge _08057570
|
|
||||||
adds r0, #0x3f
|
|
||||||
_08057570:
|
|
||||||
asrs r0, r0, #6
|
|
||||||
lsls r0, r0, #9
|
|
||||||
ldr r5, _080575C4 @ =gMapDataTopSpecial
|
|
||||||
adds r1, r0, r5
|
|
||||||
str r1, [r4, #0x34]
|
|
||||||
ldr r0, [r2, #0x38]
|
|
||||||
cmp r0, r1
|
|
||||||
beq _08057586
|
|
||||||
str r1, [r2, #0x38]
|
|
||||||
movs r0, #1
|
|
||||||
strh r0, [r4, #0x32]
|
|
||||||
_08057586:
|
|
||||||
movs r0, #0xc
|
|
||||||
ldrsh r1, [r3, r0]
|
|
||||||
ldrh r0, [r3, #8]
|
|
||||||
subs r1, r1, r0
|
|
||||||
asrs r0, r1, #2
|
|
||||||
adds r1, r1, r0
|
|
||||||
adds r0, r1, #0
|
|
||||||
ands r0, r6
|
|
||||||
strh r0, [r4, #0x18]
|
|
||||||
adds r0, r1, #0
|
|
||||||
cmp r0, #0
|
|
||||||
bge _080575A0
|
|
||||||
adds r0, #0x3f
|
|
||||||
_080575A0:
|
|
||||||
asrs r0, r0, #6
|
|
||||||
lsls r0, r0, #9
|
|
||||||
movs r3, #0x80
|
|
||||||
lsls r3, r3, #6
|
|
||||||
adds r1, r5, r3
|
|
||||||
adds r1, r0, r1
|
|
||||||
str r1, [r4, #0x1c]
|
|
||||||
ldr r0, [r2, #0x3c]
|
|
||||||
cmp r0, r1
|
|
||||||
beq _080575BA
|
|
||||||
str r1, [r2, #0x3c]
|
|
||||||
movs r0, #1
|
|
||||||
strh r0, [r4, #0x1a]
|
|
||||||
_080575BA:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080575BC: .4byte gRoomControls
|
|
||||||
_080575C0: .4byte gScreen
|
|
||||||
_080575C4: .4byte gMapDataTopSpecial
|
|
||||||
.syntax divided
|
|
|
@ -1,12 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
ldr r0, _08057694 @ =gScreen
|
|
||||||
ldr r1, _08057698 @ =0x00001D48
|
|
||||||
strh r1, [r0, #0x2c]
|
|
||||||
ldr r1, _0805769C @ =0x00001E48
|
|
||||||
strh r1, [r0, #0x14]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_08057694: .4byte gScreen
|
|
||||||
_08057698: .4byte 0x00001D48
|
|
||||||
_0805769C: .4byte 0x00001E48
|
|
||||||
.syntax divided
|
|
|
@ -1,15 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r0, _080576BC @ =gRoomVars
|
|
||||||
ldrb r0, [r0, #0x10]
|
|
||||||
bl LoadGfxGroup
|
|
||||||
movs r0, #0
|
|
||||||
str r0, [r4, #0x38]
|
|
||||||
str r0, [r4, #0x3c]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0805754C
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080576BC: .4byte gRoomVars
|
|
||||||
.syntax divided
|
|
|
@ -2,13 +2,25 @@
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
|
#include "room.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Manager manager;
|
||||||
|
u32 field_0x20[0x6];
|
||||||
|
void* field_0x38;
|
||||||
|
void* field_0x3c;
|
||||||
|
} Manager2;
|
||||||
|
|
||||||
extern void sub_080576A0();
|
extern void sub_080576A0();
|
||||||
extern void sub_0805754C(Entity*);
|
extern void sub_0805754C(Manager2*);
|
||||||
|
|
||||||
void Manager2_Main(Entity* this) {
|
extern u8 gMapDataTopSpecial[];
|
||||||
if (this->action == 0) {
|
|
||||||
this->action = 1;
|
extern u32 gUnk_0200B650;
|
||||||
|
|
||||||
|
void Manager2_Main(Manager2* this) {
|
||||||
|
if (this->manager.action == 0) {
|
||||||
|
this->manager.action = 1;
|
||||||
gScreen.affine.bg3Updated = 0;
|
gScreen.affine.bg3Updated = 0;
|
||||||
gScreen.bg.bg1Updated = 0;
|
gScreen.bg.bg1Updated = 0;
|
||||||
sub_08052D74(this, sub_080576A0, 0);
|
sub_08052D74(this, sub_080576A0, 0);
|
||||||
|
@ -16,10 +28,63 @@ void Manager2_Main(Entity* this) {
|
||||||
sub_0805754C(this);
|
sub_0805754C(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/manager2/sub_0805754C.inc", void sub_0805754C(Entity* this))
|
void sub_0805754C(Manager2* this) {
|
||||||
|
s32 bgOffset;
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/manager2/sub_080575C8.inc", void sub_080575C8(u32 param))
|
bgOffset = (gRoomControls.roomScrollY - gRoomControls.roomOriginY);
|
||||||
|
bgOffset += bgOffset >> 3;
|
||||||
|
gScreen.affine.bg3yOffset = bgOffset & 0x3f;
|
||||||
|
gScreen.affine.bg3Tilemap = gMapDataTopSpecial + (bgOffset/0x40) * 0x200;
|
||||||
|
if (this->field_0x38 != gScreen.affine.bg3Tilemap) {
|
||||||
|
this->field_0x38 = gScreen.affine.bg3Tilemap;
|
||||||
|
gScreen.affine.bg3Updated = 1;
|
||||||
|
}
|
||||||
|
bgOffset = (gRoomControls.roomScrollY - gRoomControls.roomOriginY);
|
||||||
|
bgOffset += bgOffset >> 2;
|
||||||
|
gScreen.bg.bg1yOffset = bgOffset & 0x3f;
|
||||||
|
gScreen.bg.bg1Tilemap = gMapDataTopSpecial + 0x2000+ (bgOffset/0x40) * 0x200;
|
||||||
|
if (this->field_0x3c != gScreen.bg.bg1Tilemap) {
|
||||||
|
this->field_0x3c = gScreen.bg.bg1Tilemap;
|
||||||
|
gScreen.bg.bg1Updated = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/manager2/sub_08057688.inc", void sub_08057688())
|
void sub_080575C8(u32 param) {
|
||||||
|
s32 bgOffset;
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/manager2/sub_080576A0.inc", void sub_080576A0())
|
gUnk_0200B650 = 0;
|
||||||
|
*(u16*)0x4000000 = 0;
|
||||||
|
LoadGfxGroup(param);
|
||||||
|
gRoomVars.unk_10 = param;
|
||||||
|
|
||||||
|
bgOffset = (gRoomControls.roomScrollY - gRoomControls.roomOriginY);
|
||||||
|
bgOffset += bgOffset >> 3;
|
||||||
|
gScreen.affine.bg3yOffset = bgOffset & 0x3f;
|
||||||
|
gScreen.affine.bg3xOffset = 0;
|
||||||
|
gScreen.affine.bg3Tilemap = &gMapDataTopSpecial[(bgOffset / 0x40) * 0x200];
|
||||||
|
gScreen.affine.bg3Control = 0x1d49;
|
||||||
|
gScreen.affine.bg3Updated = 1;
|
||||||
|
|
||||||
|
bgOffset = (gRoomControls.roomScrollY - gRoomControls.roomOriginY);
|
||||||
|
bgOffset += bgOffset >> 2;
|
||||||
|
gScreen.bg.bg1yOffset = bgOffset & 0x3f;
|
||||||
|
gScreen.bg.bg1xOffset = 0;
|
||||||
|
gScreen.bg.bg1Tilemap = &gMapDataTopSpecial[0x2000 + (bgOffset / 0x40) * 0x200];
|
||||||
|
gScreen.bg.bg1Control = 0x1e49;
|
||||||
|
gScreen.bg.bg1Updated = 1;
|
||||||
|
gScreen.controls.layerFXControl = 0x3c48;
|
||||||
|
gScreen.controls.alphaBlend = 0x609;
|
||||||
|
gScreen.lcd.displayControl |= 0xa00;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08057688(void) {
|
||||||
|
gScreen.affine.bg3Control = 0x1d48;
|
||||||
|
gScreen.bg.bg1Control = 0x1e48;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080576A0(Manager2* this) {
|
||||||
|
LoadGfxGroup(gRoomVars.unk_10);
|
||||||
|
this->field_0x38 = NULL;
|
||||||
|
this->field_0x3c = NULL;
|
||||||
|
sub_0805754C(this);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue