diff options
| author | notyouraveragehooman <65437533+notyouraveragehooman@users.noreply.github.com> | 2020-08-21 20:17:26 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-21 20:17:26 -0700 |
| commit | 8ab5503804436ee7e3ef202f596cd0fe5626a2a9 (patch) | |
| tree | 751d40dac94181517a29a7c4ce9a03269d1e7c47 /src | |
| parent | dfcd7f38768691d2d6a17c98a0f290dff9480a08 (diff) | |
| parent | 52d44007f01a079a7b88ee0b6f09aff421aa6b22 (diff) | |
Merge pull request #69 from Ibot02:sub_0804E3C4
sub_0804E3C4 matching
Diffstat (limited to 'src')
| -rw-r--r-- | src/room.c | 37 |
1 files changed, 33 insertions, 4 deletions
@@ -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 +} |
