mirror of https://github.com/zeldaret/tmc.git
sub_0804E3C4 matching
This is the function to load the fight for Simon's simulation.
This commit is contained in:
parent
6e53face64
commit
52d44007f0
|
@ -1,68 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
movs r0, #5
|
||||
bl CheckGlobalFlag
|
||||
rsbs r1, r0, #0
|
||||
orrs r1, r0
|
||||
lsrs r6, r1, #0x1f
|
||||
movs r0, #6
|
||||
bl CheckGlobalFlag
|
||||
cmp r0, #0
|
||||
beq _0804E3DE
|
||||
movs r6, #2
|
||||
_0804E3DE:
|
||||
movs r0, #0x55
|
||||
bl CheckGlobalFlag
|
||||
cmp r0, #0
|
||||
beq _0804E3EA
|
||||
movs r6, #3
|
||||
_0804E3EA:
|
||||
bl Random
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0804E448 @ =gUnk_080F0D58
|
||||
lsls r0, r6, #2
|
||||
adds r0, r0, r1
|
||||
movs r5, #0x1f
|
||||
adds r1, r4, #0
|
||||
ands r1, r5
|
||||
ldr r0, [r0]
|
||||
adds r0, r0, r1
|
||||
ldrb r6, [r0]
|
||||
ldr r1, _0804E44C @ =gUnk_080F0CB8
|
||||
movs r0, #0xf
|
||||
ands r0, r6
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl LoadRoomEntityList
|
||||
lsrs r6, r6, #4
|
||||
lsrs r4, r4, #8
|
||||
ldr r1, _0804E450 @ =gUnk_080F0E08
|
||||
lsls r0, r6, #2
|
||||
adds r0, r0, r1
|
||||
ands r4, r5
|
||||
ldr r0, [r0]
|
||||
adds r0, r0, r4
|
||||
ldrb r6, [r0]
|
||||
movs r0, #0xc6
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _0804E436
|
||||
movs r0, #0xc6
|
||||
bl SetLocalFlag
|
||||
movs r6, #0xe
|
||||
_0804E436:
|
||||
lsls r0, r6, #3
|
||||
ldr r1, _0804E454 @ =gUnk_080F0E1C
|
||||
adds r0, r0, r1
|
||||
bl sub_0804B3C4
|
||||
ldr r0, _0804E458 @ =0x80100000
|
||||
bl PlaySFX
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0804E448: .4byte gUnk_080F0D58
|
||||
_0804E44C: .4byte gUnk_080F0CB8
|
||||
_0804E450: .4byte gUnk_080F0E08
|
||||
_0804E454: .4byte gUnk_080F0E1C
|
||||
_0804E458: .4byte 0x80100000
|
||||
.syntax divided
|
|
@ -118,7 +118,7 @@ extern void sub_080AD918(void);
|
|||
extern void sub_0801E104(void);
|
||||
extern void MenuFadeIn(u32, u32);
|
||||
extern void sub_080A57F4(void);
|
||||
extern void sub_0804B29C(u32);
|
||||
extern void sub_0804B29C(void*);
|
||||
extern void sub_08030118(u32);
|
||||
extern void sub_080575C8(u32);
|
||||
extern void sub_08057688(void);
|
||||
|
|
37
src/room.c
37
src/room.c
|
@ -10,7 +10,7 @@
|
|||
#include "main.h"
|
||||
#include "structures.h"
|
||||
|
||||
void sub_0804B3C4(u32 arg0) {
|
||||
void sub_0804B3C4(void* arg0) {
|
||||
sub_0804B29C(arg0);
|
||||
}
|
||||
|
||||
|
@ -4467,9 +4467,38 @@ u32 sub_0804E3B8() {
|
|||
return 1;
|
||||
}
|
||||
|
||||
NAKED
|
||||
extern u8* gUnk_080F0D58[4];
|
||||
extern Entity* gUnk_080F0CB8[15];
|
||||
extern u8* gUnk_080F0E08[];
|
||||
extern struct {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
} gUnk_080F0E1C[];
|
||||
|
||||
void sub_0804E3C4() {
|
||||
asm(".include \"asm/non_matching/sub_0804E3C4.inc\"");
|
||||
u32 r;
|
||||
u32 index;
|
||||
u32 tmp;
|
||||
tmp = CheckGlobalFlag(LV4_CLEAR);
|
||||
index = (-tmp | tmp) >> 0x1F;
|
||||
if (CheckGlobalFlag(LV5_CLEAR)) {
|
||||
index = 2;
|
||||
}
|
||||
if (CheckGlobalFlag(GAMECLEAR)) {
|
||||
index = 3;
|
||||
}
|
||||
r = Random();
|
||||
index = gUnk_080F0D58[index][r&0x1f];
|
||||
LoadRoomEntityList(gUnk_080F0CB8[index & 0xF]);
|
||||
index >>= 4;
|
||||
r >>= 8;
|
||||
index = gUnk_080F0E08[index][r&0x1F];
|
||||
if (!CheckLocalFlag(0xC6)) {
|
||||
SetLocalFlag(0xC6);
|
||||
index = 0xE;
|
||||
}
|
||||
sub_0804B3C4(&gUnk_080F0E1C[index]);
|
||||
PlaySFX(0x80100000);
|
||||
}
|
||||
|
||||
u32 sub_0804E45C() {
|
||||
|
@ -6552,4 +6581,4 @@ void sub_0804FF84(u32 arg0)
|
|||
{
|
||||
((struct_02000000 * )0x02000000)->brightnessPref = arg0;
|
||||
gUsedPalettes = (u32)-1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue