mirror of
https://github.com/zeldaret/tmc
synced 2026-05-24 07:11:07 -04:00
Merge pull request #363 from hatal175/manager22
This commit is contained in:
@@ -1,185 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r4, _0805B964 @ =gArea
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0805B90A
|
||||
bl sub_0801E104
|
||||
ldr r2, _0805B968 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0805B96C @ =0x0000D7FF
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
bl DeleteThisEntity
|
||||
_0805B90A:
|
||||
ldrb r2, [r5, #0xc]
|
||||
cmp r2, #0
|
||||
bne _0805B934
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r1, [r5, #0x10]
|
||||
movs r0, #0x20
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x10]
|
||||
movs r0, #0x11
|
||||
strb r0, [r5, #0xe]
|
||||
str r2, [r5, #0x20]
|
||||
adds r0, r5, #0
|
||||
movs r1, #6
|
||||
bl SetDefaultPriority
|
||||
bl sub_0801E120
|
||||
ldrb r0, [r5, #0xe]
|
||||
bl sub_0801E154
|
||||
_0805B934:
|
||||
ldr r0, _0805B970 @ =gMain
|
||||
ldrb r0, [r0, #4]
|
||||
cmp r0, #2
|
||||
bne _0805B952
|
||||
ldr r2, _0805B968 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #4
|
||||
adds r0, r3, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
bl sub_0805BA78
|
||||
bl sub_0805BAD4
|
||||
_0805B952:
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #2
|
||||
bne _0805B978
|
||||
ldr r2, _0805B968 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0805B974 @ =0x0000DFFF
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
b _0805BA6C
|
||||
.align 2, 0
|
||||
_0805B964: .4byte gArea
|
||||
_0805B968: .4byte gScreen
|
||||
_0805B96C: .4byte 0x0000D7FF
|
||||
_0805B970: .4byte gMain
|
||||
_0805B974: .4byte 0x0000DFFF
|
||||
_0805B978:
|
||||
ldr r3, _0805B9A8 @ =gPlayerEntity
|
||||
movs r4, #0x2e
|
||||
ldrsh r0, [r3, r4]
|
||||
ldr r2, _0805B9AC @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
movs r6, #0x32
|
||||
ldrsh r1, [r3, r6]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r1, r1, r2
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl CheckRectOnScreen
|
||||
cmp r0, #0
|
||||
beq _0805B9B4
|
||||
ldr r2, _0805B9B0 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #6
|
||||
adds r0, r3, #0
|
||||
orrs r0, r1
|
||||
b _0805B9BC
|
||||
.align 2, 0
|
||||
_0805B9A8: .4byte gPlayerEntity
|
||||
_0805B9AC: .4byte gRoomControls
|
||||
_0805B9B0: .4byte gScreen
|
||||
_0805B9B4:
|
||||
ldr r2, _0805B9E8 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0805B9EC @ =0x0000DFFF
|
||||
ands r0, r1
|
||||
_0805B9BC:
|
||||
strh r0, [r2]
|
||||
ldrb r4, [r5, #0xe]
|
||||
ldr r0, _0805B9F0 @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805BA2C
|
||||
ldr r0, _0805B9F4 @ =gArea
|
||||
ldrb r0, [r0, #0xc]
|
||||
cmp r0, #0
|
||||
beq _0805BA2C
|
||||
cmp r4, #0x47
|
||||
bhi _0805B9F8
|
||||
adds r4, #4
|
||||
adds r0, r4, #0
|
||||
bl sub_0801E154
|
||||
movs r0, #0
|
||||
str r0, [r5, #0x20]
|
||||
b _0805BA42
|
||||
.align 2, 0
|
||||
_0805B9E8: .4byte gScreen
|
||||
_0805B9EC: .4byte 0x0000DFFF
|
||||
_0805B9F0: .4byte gPlayerState
|
||||
_0805B9F4: .4byte gArea
|
||||
_0805B9F8:
|
||||
ldr r0, _0805BA24 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0805BA42
|
||||
ldrb r0, [r5, #0xf]
|
||||
adds r0, #0x10
|
||||
strb r0, [r5, #0xf]
|
||||
ldr r1, _0805BA28 @ =gSineTable
|
||||
ldrb r0, [r5, #0xf]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r6, #0
|
||||
ldrsh r0, [r0, r6]
|
||||
asrs r0, r0, #7
|
||||
str r0, [r5, #0x20]
|
||||
adds r0, r4, r0
|
||||
bl sub_0801E154
|
||||
b _0805BA42
|
||||
.align 2, 0
|
||||
_0805BA24: .4byte gRoomTransition
|
||||
_0805BA28: .4byte gSineTable
|
||||
_0805BA2C:
|
||||
movs r0, #0
|
||||
str r0, [r5, #0x20]
|
||||
cmp r4, #0x11
|
||||
bls _0805BA42
|
||||
subs r4, #4
|
||||
cmp r4, #0x10
|
||||
bhi _0805BA3C
|
||||
movs r4, #0x11
|
||||
_0805BA3C:
|
||||
adds r0, r4, #0
|
||||
bl sub_0801E154
|
||||
_0805BA42:
|
||||
strb r4, [r5, #0xe]
|
||||
ldr r3, _0805BA70 @ =gPlayerEntity
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r3, r1]
|
||||
ldr r2, _0805BA74 @ =gRoomControls
|
||||
movs r6, #0xa
|
||||
ldrsh r1, [r2, r6]
|
||||
subs r0, r0, r1
|
||||
movs r6, #0x32
|
||||
ldrsh r1, [r3, r6]
|
||||
movs r6, #0xc
|
||||
ldrsh r2, [r2, r6]
|
||||
subs r1, r1, r2
|
||||
movs r6, #0x36
|
||||
ldrsh r2, [r3, r6]
|
||||
subs r2, #9
|
||||
adds r1, r1, r2
|
||||
ldr r2, [r5, #0x20]
|
||||
adds r2, r4, r2
|
||||
bl sub_0801E160
|
||||
_0805BA6C:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0805BA70: .4byte gPlayerEntity
|
||||
_0805BA74: .4byte gRoomControls
|
||||
.syntax divided
|
||||
@@ -1,34 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
movs r4, #0
|
||||
ldr r2, _0805BBF8 @ =gArea
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, #0
|
||||
beq _0805BBF2
|
||||
ldr r0, _0805BBFC @ =gRoomVars
|
||||
movs r3, #0xc
|
||||
ldrsh r1, [r0, r3]
|
||||
movs r3, #0xa
|
||||
ldrsh r0, [r2, r3]
|
||||
cmp r1, r0
|
||||
bge _0805BBF2
|
||||
ldr r2, _0805BC00 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #4
|
||||
adds r0, r3, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
bl sub_0805BA78
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _0805BBF2
|
||||
bl sub_0805BAD4
|
||||
_0805BBF2:
|
||||
adds r0, r4, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0805BBF8: .4byte gArea
|
||||
_0805BBFC: .4byte gRoomVars
|
||||
_0805BC00: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,55 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r1, _0805BAA8 @ =gArea
|
||||
movs r0, #0xa
|
||||
ldrsh r3, [r1, r0]
|
||||
ldr r0, _0805BAAC @ =gRoomVars
|
||||
movs r4, #0xc
|
||||
ldrsh r2, [r0, r4]
|
||||
cmp r2, #0
|
||||
bge _0805BA8C
|
||||
movs r2, #0
|
||||
_0805BA8C:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
cmp r2, r0
|
||||
ble _0805BA96
|
||||
adds r2, r0, #0
|
||||
_0805BA96:
|
||||
cmp r3, r2
|
||||
beq _0805BACE
|
||||
subs r0, r2, r3
|
||||
cmp r0, #0
|
||||
blt _0805BAB0
|
||||
cmp r0, #4
|
||||
bls _0805BAB6
|
||||
b _0805BABA
|
||||
.align 2, 0
|
||||
_0805BAA8: .4byte gArea
|
||||
_0805BAAC: .4byte gRoomVars
|
||||
_0805BAB0:
|
||||
subs r0, r3, r2
|
||||
cmp r0, #4
|
||||
bhi _0805BABA
|
||||
_0805BAB6:
|
||||
adds r3, r2, #0
|
||||
b _0805BAC8
|
||||
_0805BABA:
|
||||
cmp r2, r3
|
||||
bge _0805BAC2
|
||||
subs r3, #4
|
||||
b _0805BAC8
|
||||
_0805BAC2:
|
||||
cmp r2, r3
|
||||
ble _0805BAC8
|
||||
adds r3, #4
|
||||
_0805BAC8:
|
||||
strh r3, [r1, #0xa]
|
||||
movs r0, #1
|
||||
b _0805BAD0
|
||||
_0805BACE:
|
||||
movs r0, #0
|
||||
_0805BAD0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,23 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldr r3, _0805BAF4 @ =gArea
|
||||
ldrb r0, [r3, #0xc]
|
||||
cmp r0, #0
|
||||
beq _0805BAF2
|
||||
ldr r1, _0805BAF8 @ =gScreen
|
||||
ldr r2, _0805BAFC @ =gUnk_08108CA8
|
||||
ldrh r0, [r3, #0xa]
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x14
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
ldrh r0, [r0]
|
||||
adds r1, #0x68
|
||||
strh r0, [r1]
|
||||
_0805BAF2:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805BAF4: .4byte gArea
|
||||
_0805BAF8: .4byte gScreen
|
||||
_0805BAFC: .4byte gUnk_08108CA8
|
||||
.syntax divided
|
||||
@@ -1,54 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
ldr r0, _0805BB50 @ =gArea
|
||||
ldrb r0, [r0, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0805BB28
|
||||
bl GetEmptyManager
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0805BB28
|
||||
movs r0, #9
|
||||
strb r0, [r1, #8]
|
||||
movs r0, #0x22
|
||||
strb r0, [r1, #9]
|
||||
adds r0, r1, #0
|
||||
movs r1, #0
|
||||
bl AppendEntityToList
|
||||
_0805BB28:
|
||||
ldr r1, _0805BB54 @ =0x0600F000
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #4
|
||||
movs r0, #0xf
|
||||
bl MemFill16
|
||||
ldr r0, _0805BB58 @ =gScreen
|
||||
ldr r1, _0805BB5C @ =0x00001E0C
|
||||
strh r1, [r0, #0x2c]
|
||||
adds r0, #0x66
|
||||
ldr r1, _0805BB60 @ =0x00003E48
|
||||
strh r1, [r0]
|
||||
ldr r0, _0805BB64 @ =gRoomVars
|
||||
strh r4, [r0, #0xc]
|
||||
cmp r5, #0
|
||||
beq _0805BB68
|
||||
ldr r1, _0805BB50 @ =gArea
|
||||
movs r0, #1
|
||||
b _0805BB6C
|
||||
.align 2, 0
|
||||
_0805BB50: .4byte gArea
|
||||
_0805BB54: .4byte 0x0600F000
|
||||
_0805BB58: .4byte gScreen
|
||||
_0805BB5C: .4byte 0x00001E0C
|
||||
_0805BB60: .4byte 0x00003E48
|
||||
_0805BB64: .4byte gRoomVars
|
||||
_0805BB68:
|
||||
ldr r1, _0805BB70 @ =gArea
|
||||
movs r0, #2
|
||||
_0805BB6C:
|
||||
strb r0, [r1, #0xc]
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0805BB70: .4byte gArea
|
||||
.syntax divided
|
||||
@@ -1,34 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
ldr r2, _0805BBB0 @ =gRoomVars
|
||||
cmp r1, #0
|
||||
bge _0805BB82
|
||||
movs r0, #0xc
|
||||
ldrsh r1, [r2, r0]
|
||||
_0805BB82:
|
||||
ldr r0, _0805BBB4 @ =gArea
|
||||
strh r1, [r0, #0xa]
|
||||
strh r1, [r2, #0xc]
|
||||
movs r0, #9
|
||||
movs r1, #0x22
|
||||
bl DeepFindEntityByID
|
||||
cmp r0, #0
|
||||
beq _0805BBAE
|
||||
bl Manager22_Main
|
||||
ldr r0, _0805BBB8 @ =gScreen
|
||||
ldrh r1, [r0]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #4
|
||||
adds r2, r3, #0
|
||||
orrs r1, r2
|
||||
strh r1, [r0]
|
||||
bl sub_0805BA78
|
||||
bl sub_0805BAD4
|
||||
_0805BBAE:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805BBB0: .4byte gRoomVars
|
||||
_0805BBB4: .4byte gArea
|
||||
_0805BBB8: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,34 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
movs r4, #0
|
||||
ldr r2, _0805BC40 @ =gArea
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, #0
|
||||
beq _0805BC3A
|
||||
ldr r0, _0805BC44 @ =gRoomVars
|
||||
movs r3, #0xc
|
||||
ldrsh r1, [r0, r3]
|
||||
movs r3, #0xa
|
||||
ldrsh r0, [r2, r3]
|
||||
cmp r1, r0
|
||||
ble _0805BC3A
|
||||
ldr r2, _0805BC48 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #4
|
||||
adds r0, r3, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
bl sub_0805BA78
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _0805BC3A
|
||||
bl sub_0805BAD4
|
||||
_0805BC3A:
|
||||
adds r0, r4, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0805BC40: .4byte gArea
|
||||
_0805BC44: .4byte gRoomVars
|
||||
_0805BC48: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,20 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldr r1, _0805BC68 @ =gArea
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r0, #0
|
||||
beq _0805BC64
|
||||
movs r0, #0
|
||||
strb r0, [r1, #0xc]
|
||||
ldr r2, _0805BC6C @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0805BC70 @ =0x0000D7FF
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
_0805BC64:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805BC68: .4byte gArea
|
||||
_0805BC6C: .4byte gScreen
|
||||
_0805BC70: .4byte 0x0000D7FF
|
||||
.syntax divided
|
||||
@@ -33232,11 +33232,6 @@
|
||||
"start": 1084572,
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "manager22/gUnk_08108CA8.bin",
|
||||
"start": 1084584,
|
||||
"size": 36
|
||||
},
|
||||
{
|
||||
"path": "manager24/gUnk_08108CFC.bin",
|
||||
"start": 1084668,
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08108CA8:: @ 08108CA8
|
||||
.incbin "manager22/gUnk_08108CA8.bin"
|
||||
+4
-2
@@ -26,8 +26,10 @@ typedef struct {
|
||||
u8 dungeon_idx; /* same index as global flags for dungeons */
|
||||
u16 localFlagOffset;
|
||||
u8 filler[4];
|
||||
u16 unk_0a;
|
||||
u8 filler3[4];
|
||||
u16 lightLevel;
|
||||
u8 unk_0b;
|
||||
u8 unk_0c;
|
||||
u8 filler3[2];
|
||||
u16 field_0x10;
|
||||
u16 curPortalX;
|
||||
u16 curPortalY;
|
||||
|
||||
@@ -1163,7 +1163,7 @@ SECTIONS {
|
||||
data/const/manager/manager1D.o(.rodata);
|
||||
src/manager/manager1E.o(.rodata);
|
||||
data/const/manager/manager1F.o(.rodata);
|
||||
data/const/manager/manager22.o(.rodata);
|
||||
src/manager/manager22.o(.rodata);
|
||||
data/const/manager/manager23.o(.rodata);
|
||||
data/const/manager/manager24.o(.rodata);
|
||||
src/manager/manager26.o(.rodata);
|
||||
|
||||
+2
-2
@@ -355,7 +355,7 @@ bool32 sub_08041170(Enemy50Entity* this) {
|
||||
} else {
|
||||
if ((sub_08049FDC(super, 1)) &&
|
||||
((sub_0806FD54(super) ||
|
||||
((0xf < (s16)gArea.unk_0a && (EntityInRectRadius(super, gUnk_020000B0, 0x70, 0x48))))))) {
|
||||
((0xf < (s16)gArea.lightLevel && (EntityInRectRadius(super, gUnk_020000B0, 0x70, 0x48))))))) {
|
||||
sub_08041134(this);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -378,7 +378,7 @@ bool32 sub_080411E8(Enemy50Entity* this) {
|
||||
}
|
||||
return TRUE;
|
||||
case 2:
|
||||
if ((s16)gArea.unk_0a < 0x10) {
|
||||
if ((s16)gArea.lightLevel < 0x10) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
+2
-2
@@ -320,7 +320,7 @@ bool32 sub_0803F5A8(GhiniEntity* this) {
|
||||
u32 result;
|
||||
if (sub_08049FDC(super, 1) == 0) {
|
||||
result = 0;
|
||||
} else if ((s16)gArea.unk_0a < 0x10) {
|
||||
} else if ((s16)gArea.lightLevel < 0x10) {
|
||||
result = sub_0806FD54(super);
|
||||
} else {
|
||||
result = 1;
|
||||
@@ -334,7 +334,7 @@ bool32 sub_0803F5D4(GhiniEntity* this) {
|
||||
} else {
|
||||
if ((sub_08049FDC(super, 1)) &&
|
||||
((sub_0806FD54(super) ||
|
||||
((0xf < (s16)gArea.unk_0a && (EntityInRectRadius(super, gUnk_020000B0, 0x70, 0x48))))))) {
|
||||
((0xf < (s16)gArea.lightLevel && (EntityInRectRadius(super, gUnk_020000B0, 0x70, 0x48))))))) {
|
||||
sub_0803F630(this);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+2
-2
@@ -1331,7 +1331,7 @@ void InitRoom(void) {
|
||||
gArea.localFlagOffset = gLocalFlagBanks[a_hdr->flag_bank];
|
||||
gArea.filler[0] = a_hdr->flag_bank;
|
||||
gArea.unk1A = 180;
|
||||
gArea.unk_0a = 256;
|
||||
gArea.lightLevel = 256;
|
||||
InitRoomTransition();
|
||||
InitAllRoomResInfo();
|
||||
}
|
||||
@@ -1412,7 +1412,7 @@ static void UpdateFakeScroll(void) {
|
||||
LinkedList* ll;
|
||||
Entity* e;
|
||||
|
||||
if ((gArea.filler3[1] & 1) == 0 || !gRoomVars.field_0x0)
|
||||
if ((gArea.unk_0c & 1) == 0 || !gRoomVars.field_0x0)
|
||||
return;
|
||||
|
||||
y = 0;
|
||||
|
||||
+194
-8
@@ -1,18 +1,204 @@
|
||||
|
||||
#include "manager.h"
|
||||
#include "area.h"
|
||||
#include "main.h"
|
||||
#include "screen.h"
|
||||
#include "player.h"
|
||||
#include "room.h"
|
||||
#include "coord.h"
|
||||
#include "functions.h"
|
||||
#include "common.h"
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/Manager22_Main.inc", void Manager22_Main())
|
||||
typedef struct {
|
||||
Manager manager;
|
||||
s32 unk20;
|
||||
} Manager22;
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/sub_0805BA78.inc", void sub_0805BA78())
|
||||
extern void sub_0801E120(void);
|
||||
extern void sub_0801E154(u32);
|
||||
extern u32 CheckRectOnScreen(s32, s32, u32, u32);
|
||||
extern void sub_0801E160(u32, u32, u32);
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/sub_0805BAD4.inc", void sub_0805BAD4())
|
||||
u32 sub_0805BA78();
|
||||
void sub_0805BAD4();
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/sub_0805BB00.inc", void sub_0805BB00())
|
||||
void Manager22_Main(Manager22* this) {
|
||||
s32 sVar1;
|
||||
u32 uVar3;
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/sub_0805BB74.inc", void sub_0805BB74())
|
||||
if (gArea.unk_0b == 0) {
|
||||
sub_0801E104();
|
||||
gScreen.lcd.displayControl &= ~(DISPCNT_BG3_ON | DISPCNT_WIN0_ON);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (this->manager.action == 0) {
|
||||
this->manager.action = 1;
|
||||
this->manager.unk_10 |= 0x20;
|
||||
this->manager.unk_0e = 17;
|
||||
this->unk20 = 0;
|
||||
SetDefaultPriority((Entity*)this, 6);
|
||||
sub_0801E120();
|
||||
sub_0801E154(this->manager.unk_0e);
|
||||
}
|
||||
if (gMain.substate == 2) {
|
||||
gScreen.lcd.displayControl |= DISPCNT_BG3_ON;
|
||||
sub_0805BA78();
|
||||
sub_0805BAD4();
|
||||
}
|
||||
if (gArea.unk_0b == 2) {
|
||||
gScreen.lcd.displayControl &= ~DISPCNT_WIN0_ON;
|
||||
} else {
|
||||
if (CheckRectOnScreen(gPlayerEntity.x.HALF.HI - gRoomControls.origin_x,
|
||||
gPlayerEntity.y.HALF.HI - gRoomControls.origin_y, 0, 0)) {
|
||||
gScreen.lcd.displayControl |= DISPCNT_WIN0_ON;
|
||||
} else {
|
||||
gScreen.lcd.displayControl &= ~DISPCNT_WIN0_ON;
|
||||
}
|
||||
uVar3 = this->manager.unk_0e;
|
||||
if (((gPlayerState.flags & PL_USE_LANTERN)) && (gArea.unk_0b)) {
|
||||
if (uVar3 < 0x48) {
|
||||
uVar3 += 4;
|
||||
sub_0801E154(uVar3);
|
||||
this->unk20 = 0;
|
||||
} else if ((gRoomTransition.frameCount & 3) == 0) {
|
||||
this->manager.unk_0f += 0x10;
|
||||
sVar1 = gSineTable[this->manager.unk_0f];
|
||||
this->unk20 = sVar1 >> 7;
|
||||
sub_0801E154(uVar3 + this->unk20);
|
||||
}
|
||||
} else {
|
||||
this->unk20 = 0;
|
||||
if (0x11 < uVar3) {
|
||||
uVar3 -= 4;
|
||||
if (uVar3 < 0x11) {
|
||||
uVar3 = 0x11;
|
||||
}
|
||||
sub_0801E154(uVar3);
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/UpdateLightLevel.inc", void UpdateLightLevel())
|
||||
this->manager.unk_0e = uVar3;
|
||||
sub_0801E160(gPlayerEntity.x.HALF.HI - gRoomControls.scroll_x,
|
||||
gPlayerEntity.y.HALF.HI - gRoomControls.scroll_y - 9 + gPlayerEntity.z.HALF.HI,
|
||||
uVar3 + this->unk20);
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/sub_0805BC04.inc", void sub_0805BC04())
|
||||
#define ABS(x) ((unsigned)(x < 0 ? -(x) : x))
|
||||
|
||||
ASM_FUNC("asm/non_matching/manager22/sub_0805BC4C.inc", void sub_0805BC4C())
|
||||
u32 sub_0805BA78() {
|
||||
u32 uVar1;
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
iVar2 = (short)gArea.lightLevel;
|
||||
iVar1 = gRoomVars.lightLevel;
|
||||
|
||||
if (iVar1 < 0) {
|
||||
iVar1 = 0;
|
||||
}
|
||||
|
||||
if (0x100 < iVar1) {
|
||||
iVar1 = 0x100;
|
||||
}
|
||||
|
||||
if (iVar2 != iVar1) {
|
||||
if (ABS(iVar1 - iVar2) <= 4) {
|
||||
iVar2 = iVar1;
|
||||
} else {
|
||||
if (iVar1 < iVar2) {
|
||||
iVar2 = iVar2 - 4;
|
||||
} else {
|
||||
if (iVar1 > iVar2) {
|
||||
iVar2 = iVar2 + 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
gArea.lightLevel = iVar2;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern u16 gUnk_08108CA8[];
|
||||
|
||||
void sub_0805BAD4() {
|
||||
static const u16 gUnk_08108CA8[] = { 0x10, 0x10f, 0x20e, 0x30d, 0x40c, 0x50b, 0x60a, 0x709, 0x808,
|
||||
0x907, 0xa06, 0xb05, 0xc04, 0xd03, 0xe02, 0xf01, 0x1000, 0x00 };
|
||||
if (gArea.unk_0b) {
|
||||
gScreen.controls.alphaBlend = gUnk_08108CA8[(gArea.lightLevel << 0x10) >> 0x14];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0805BB00(s32 lightLevel, s32 param_2) {
|
||||
if (gArea.unk_0b == 0) {
|
||||
Manager* pManager = GetEmptyManager();
|
||||
if (pManager != 0) {
|
||||
pManager->type = 9;
|
||||
pManager->subtype = 34;
|
||||
AppendEntityToList((Entity*)pManager, 0);
|
||||
}
|
||||
}
|
||||
MemFill16(0xf, BG_SCREEN_ADDR(0x1E), BG_SCREEN_SIZE);
|
||||
gScreen.bg3.control = 0x1e0c;
|
||||
gScreen.controls.layerFXControl = 0x3e48;
|
||||
gRoomVars.lightLevel = lightLevel;
|
||||
if (param_2) {
|
||||
gArea.unk_0b = 1;
|
||||
} else {
|
||||
gArea.unk_0b = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0805BB74(s32 lightLevel) {
|
||||
Manager22* manager;
|
||||
|
||||
if (lightLevel < 0) {
|
||||
lightLevel = gRoomVars.lightLevel;
|
||||
}
|
||||
gArea.lightLevel = lightLevel;
|
||||
gRoomVars.lightLevel = gArea.lightLevel;
|
||||
manager = (Manager22*)DeepFindEntityByID(9, 0x22);
|
||||
if (manager) {
|
||||
Manager22_Main(manager);
|
||||
gScreen.lcd.displayControl |= DISPCNT_BG3_ON;
|
||||
sub_0805BA78();
|
||||
sub_0805BAD4();
|
||||
}
|
||||
}
|
||||
|
||||
s32 UpdateLightLevel() {
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = 0;
|
||||
if (gArea.unk_0b && gRoomVars.lightLevel < (s16)gArea.lightLevel) {
|
||||
gScreen.lcd.displayControl |= DISPCNT_BG3_ON;
|
||||
iVar1 = sub_0805BA78();
|
||||
if (iVar1) {
|
||||
sub_0805BAD4();
|
||||
}
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
s32 sub_0805BC04(void) {
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = 0;
|
||||
if (gArea.unk_0b && gRoomVars.lightLevel > (short)gArea.lightLevel) {
|
||||
gScreen.lcd.displayControl |= DISPCNT_BG3_ON;
|
||||
iVar1 = sub_0805BA78();
|
||||
if (iVar1) {
|
||||
sub_0805BAD4();
|
||||
}
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_0805BC4C() {
|
||||
if (gArea.unk_0b != 0) {
|
||||
gArea.unk_0b = 0;
|
||||
gScreen.lcd.displayControl &= ~(DISPCNT_BG3_ON | DISPCNT_WIN0_ON);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ void sub_08059220(ManagerF* this) {
|
||||
}
|
||||
if (!this->manager.action) {
|
||||
this->manager.action = 1;
|
||||
gArea.unk_0a = gRoomVars.lightLevel;
|
||||
gArea.lightLevel = gRoomVars.lightLevel;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user