summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornotyouraveragehooman <65437533+notyouraveragehooman@users.noreply.github.com>2020-08-21 20:17:26 -0700
committerGitHub <noreply@github.com>2020-08-21 20:17:26 -0700
commit8ab5503804436ee7e3ef202f596cd0fe5626a2a9 (patch)
tree751d40dac94181517a29a7c4ce9a03269d1e7c47 /src
parentdfcd7f38768691d2d6a17c98a0f290dff9480a08 (diff)
parent52d44007f01a079a7b88ee0b6f09aff421aa6b22 (diff)
Merge pull request #69 from Ibot02:sub_0804E3C4
sub_0804E3C4 matching
Diffstat (limited to 'src')
-rw-r--r--src/room.c37
1 files changed, 33 insertions, 4 deletions
diff --git a/src/room.c b/src/room.c
index cd8959f5..69d8ef95 100644
--- a/src/room.c
+++ b/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;
-} \ No newline at end of file
+}