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 sub_0801E104(void);
|
||||||
extern void MenuFadeIn(u32, u32);
|
extern void MenuFadeIn(u32, u32);
|
||||||
extern void sub_080A57F4(void);
|
extern void sub_080A57F4(void);
|
||||||
extern void sub_0804B29C(u32);
|
extern void sub_0804B29C(void*);
|
||||||
extern void sub_08030118(u32);
|
extern void sub_08030118(u32);
|
||||||
extern void sub_080575C8(u32);
|
extern void sub_080575C8(u32);
|
||||||
extern void sub_08057688(void);
|
extern void sub_08057688(void);
|
||||||
|
|
37
src/room.c
37
src/room.c
|
@ -10,7 +10,7 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "structures.h"
|
#include "structures.h"
|
||||||
|
|
||||||
void sub_0804B3C4(u32 arg0) {
|
void sub_0804B3C4(void* arg0) {
|
||||||
sub_0804B29C(arg0);
|
sub_0804B29C(arg0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4467,9 +4467,38 @@ u32 sub_0804E3B8() {
|
||||||
return 1;
|
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() {
|
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() {
|
u32 sub_0804E45C() {
|
||||||
|
@ -6552,4 +6581,4 @@ void sub_0804FF84(u32 arg0)
|
||||||
{
|
{
|
||||||
((struct_02000000 * )0x02000000)->brightnessPref = arg0;
|
((struct_02000000 * )0x02000000)->brightnessPref = arg0;
|
||||||
gUsedPalettes = (u32)-1;
|
gUsedPalettes = (u32)-1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue