sub_803EDF0

This commit is contained in:
DizzyEggg
2024-10-07 14:25:22 +02:00
parent 0d3e64bba6
commit 200c2e2d35
9 changed files with 284 additions and 606 deletions

View File

@@ -6,602 +6,6 @@
.text
thumb_func_start sub_803EAF0
sub_803EAF0:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
ldr r0, _0803EB20
ldr r0, [r0]
cmp r4, r0
bne _0803EB00
b _0803EC88
_0803EB00:
cmp r4, 0x5
bne _0803EB06
b _0803EC1C
_0803EB06:
cmp r4, 0x5
bhi _0803EB2E
cmp r4, 0x2
bne _0803EB10
b _0803EBFC
_0803EB10:
cmp r4, 0x2
bhi _0803EB24
cmp r4, 0
beq _0803EB70
cmp r4, 0x1
beq _0803EB50
b _0803EC84
.align 2, 0
_0803EB20: .4byte gUnknown_202EDD0
_0803EB24:
cmp r4, 0x3
beq _0803EB98
cmp r4, 0x4
beq _0803EBFC
b _0803EC84
_0803EB2E:
cmp r4, 0x8
bne _0803EB34
b _0803EC34
_0803EB34:
cmp r4, 0x8
bhi _0803EB42
cmp r4, 0x6
beq _0803EBBC
cmp r4, 0x7
beq _0803EBDC
b _0803EC84
_0803EB42:
cmp r4, 0xA
bne _0803EB48
b _0803EC80
_0803EB48:
cmp r4, 0xA
bcs _0803EB4E
b _0803EC54
_0803EB4E:
b _0803EC84
_0803EB50:
ldr r0, _0803EB6C
ldrb r0, [r0]
cmp r0, 0
beq _0803EB5E
movs r0, 0
bl sub_8052210
_0803EB5E:
bl ResetUnusedInputStruct
bl sub_803EC94
movs r0, 0
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EB6C: .4byte gUnknown_203B40C
_0803EB70:
bl sub_803EC94
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl xxx_call_save_unk_text_struct_800641C
ldr r0, _0803EB94
ldrb r0, [r0]
cmp r0, 0
bne _0803EB88
b _0803EC84
_0803EB88:
bl sub_8040A84
movs r0, 0
bl sub_8040ABC
b _0803EC84
.align 2, 0
_0803EB94: .4byte gUnknown_203B40C
_0803EB98:
ldr r0, _0803EBB4
movs r1, 0x1
movs r2, 0x1
bl xxx_call_save_unk_text_struct_800641C
ldr r0, _0803EBB8
ldrb r0, [r0]
cmp r0, 0
beq _0803EC84
movs r0, 0x1
bl sub_8040ABC
b _0803EC84
.align 2, 0
_0803EBB4: .4byte gUnknown_80F62B0
_0803EBB8: .4byte gUnknown_203B40C
_0803EBBC:
ldr r0, _0803EBD4
ldrb r0, [r0]
cmp r0, 0
beq _0803EBCA
movs r0, 0
bl sub_8052210
_0803EBCA:
bl ResetUnusedInputStruct
ldr r0, _0803EBD8
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EBD4: .4byte gUnknown_203B40C
_0803EBD8: .4byte gUnknown_80F6310
_0803EBDC:
ldr r0, _0803EBF4
ldrb r0, [r0]
cmp r0, 0
beq _0803EBEA
movs r0, 0
bl sub_8052210
_0803EBEA:
bl ResetUnusedInputStruct
ldr r0, _0803EBF8
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EBF4: .4byte gUnknown_203B40C
_0803EBF8: .4byte gUnknown_80F6370
_0803EBFC:
ldr r0, _0803EC18
ldrb r0, [r0]
cmp r0, 0
beq _0803EC0A
movs r0, 0
bl sub_8052210
_0803EC0A:
bl ResetUnusedInputStruct
bl sub_803EC94
movs r0, 0
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EC18: .4byte gUnknown_203B40C
_0803EC1C:
ldr r0, _0803EC30
ldrb r0, [r0]
cmp r0, 0
beq _0803EC2A
movs r0, 0
bl sub_8052210
_0803EC2A:
movs r0, 0
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EC30: .4byte gUnknown_203B40C
_0803EC34:
ldr r0, _0803EC50
ldrb r0, [r0]
cmp r0, 0
beq _0803EC46
bl sub_8083D44
movs r0, 0
bl sub_8052210
_0803EC46:
movs r0, 0x2
adds r1, r5, 0
bl CreateConfirmNameMenu
b _0803EC84
.align 2, 0
_0803EC50: .4byte gUnknown_203B40C
_0803EC54:
ldr r0, _0803EC78
ldrb r0, [r0]
cmp r0, 0
beq _0803EC66
movs r0, 0
bl sub_8052210
bl sub_8083D44
_0803EC66:
bl ResetUnusedInputStruct
ldr r0, _0803EC7C
movs r1, 0
_0803EC6E:
movs r2, 0x1
bl xxx_call_save_unk_text_struct_800641C
b _0803EC84
.align 2, 0
_0803EC78: .4byte gUnknown_203B40C
_0803EC7C: .4byte gUnknown_80F63D0
_0803EC80:
bl sub_8083D44
_0803EC84:
ldr r0, _0803EC90
str r4, [r0]
_0803EC88:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803EC90: .4byte gUnknown_202EDD0
thumb_func_end sub_803EAF0
thumb_func_start sub_803EC94
sub_803EC94:
push {lr}
ldr r0, _0803ECB0
movs r1, 0
strh r1, [r0, 0x1E]
strh r1, [r0, 0x20]
strh r1, [r0, 0xC]
strh r1, [r0, 0xE]
strh r1, [r0, 0x14]
adds r0, 0x28
bl sub_801317C
pop {r0}
bx r0
.align 2, 0
_0803ECB0: .4byte gUnknown_202EE10
thumb_func_end sub_803EC94
thumb_func_start sub_803ECB4
sub_803ECB4:
push {r4,r5,lr}
adds r5, r0, 0
lsls r4, r1, 24
lsrs r4, 24
ldr r1, _0803ECDC
movs r0, 0xA
str r0, [r1]
movs r0, 0
bl sub_8052210
bl ResetUnusedInputStruct
adds r0, r5, 0
movs r1, 0x1
adds r2, r4, 0
bl xxx_call_save_unk_text_struct_800641C
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803ECDC: .4byte gUnknown_202EDD0
thumb_func_end sub_803ECB4
thumb_func_start sub_803ECE0
sub_803ECE0:
push {lr}
ldr r1, _0803ED24
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
cmp r0, 0
bge _0803ECF2
movs r0, 0
str r0, [r1]
_0803ECF2:
ldr r0, [r1]
cmp r0, 0xB
ble _0803ECFC
movs r0, 0
str r0, [r1]
_0803ECFC:
ldr r0, _0803ED28
ldr r2, [r0]
ldr r0, [r1]
cmp r0, 0
bge _0803ED08
adds r0, 0x3
_0803ED08:
asrs r1, r0, 2
lsls r0, r1, 3
adds r0, r1
lsls r0, 6
ldr r1, [r2, 0x4]
adds r1, r0
movs r2, 0x90
lsls r2, 2
ldr r0, _0803ED2C
bl sub_80098BC
pop {r0}
bx r0
.align 2, 0
_0803ED24: .4byte gUnknown_202EDD8
_0803ED28: .4byte gUnknown_202EC94
_0803ED2C: .4byte 0x06014400
thumb_func_end sub_803ECE0
thumb_func_start sub_803ED30
sub_803ED30:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r5, r0, 0
adds r7, r1, 0
mov r9, r3
lsls r2, 24
lsrs r2, 24
mov r8, r2
cmp r5, 0
beq _0803EDDA
ldr r0, _0803EDAC
ldr r0, [r0]
ldr r1, _0803EDB0
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0803EDDA
movs r4, 0
ldr r1, _0803EDB4
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
beq _0803ED78
adds r6, r1, 0
_0803ED64:
movs r0, 0x29
bl sub_803E46C
adds r4, 0x1
cmp r4, 0x13
bgt _0803ED78
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0803ED64
_0803ED78:
adds r0, r5, 0
mov r1, r8
bl sub_803EF90
ldr r3, _0803EDB4
movs r2, 0
movs r1, 0x3C
strh r1, [r3]
str r7, [r3, 0x4]
ldrh r1, [r7, 0x26]
str r1, [r3, 0x8]
lsls r1, r0, 1
adds r1, r0
lsls r1, 8
negs r1, r1
str r1, [r3, 0xC]
str r2, [r3, 0x10]
mov r2, r9
cmp r2, 0
bge _0803EDC8
ldr r0, _0803EDB8
cmp r5, r0
bge _0803EDBC
movs r0, 0x6
b _0803EDCA
.align 2, 0
_0803EDAC: .4byte gDungeon
_0803EDB0: .4byte 0x0001820a
_0803EDB4: .4byte gUnknown_202EDE8
_0803EDB8: .4byte 0xfffffc19
_0803EDBC:
cmp r5, 0
blt _0803EDC4
movs r0, 0xA
b _0803EDCA
_0803EDC4:
movs r0, 0x3
b _0803EDCA
_0803EDC8:
mov r0, r9
_0803EDCA:
strh r0, [r3, 0x2]
ldr r0, _0803EDE8
ldr r1, _0803EDEC
ldr r1, [r1]
adds r1, 0x18
movs r2, 0x80
bl sub_80098BC
_0803EDDA:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803EDE8: .4byte 0x060142c0
_0803EDEC: .4byte gDungeon
thumb_func_end sub_803ED30
thumb_func_start sub_803EDF0
sub_803EDF0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r6, _0803EE18
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0803EE06
b _0803EF42
_0803EE06:
ldr r0, [r6, 0x4]
bl EntityExists
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0803EE1C
strh r0, [r6]
b _0803EF42
.align 2, 0
_0803EE18: .4byte gUnknown_202EDE8
_0803EE1C:
ldr r1, [r6, 0x4]
ldr r0, [r6, 0x8]
ldrh r2, [r1, 0x26]
cmp r0, r2
beq _0803EE2C
movs r0, 0
strh r0, [r6]
b _0803EF42
_0803EE2C:
ldrh r0, [r6]
subs r0, 0x1
strh r0, [r6]
ldr r4, [r6, 0x10]
adds r3, r4, 0
subs r3, 0x2E
str r3, [r6, 0x10]
ldr r2, [r1, 0x70]
movs r5, 0xB8
lsls r5, 1
adds r0, r2, r5
movs r1, 0
ldrsh r0, [r0, r1]
ldr r1, [r6, 0xC]
cmp r1, 0
bge _0803EE4E
adds r1, 0xFF
_0803EE4E:
asrs r1, 8
adds r1, r0, r1
ldr r0, _0803EF50
ldr r0, [r0]
mov r12, r0
ldr r0, _0803EF54
add r0, r12
movs r5, 0
ldrsh r0, [r0, r5]
subs r7, r1, r0
movs r1, 0xB9
lsls r1, 1
adds r0, r2, r1
movs r2, 0
ldrsh r0, [r0, r2]
adds r1, r3, 0
cmp r1, 0
bge _0803EE76
adds r1, r4, 0
adds r1, 0xD1
_0803EE76:
asrs r1, 8
adds r1, r0, r1
ldr r0, _0803EF58
add r0, r12
movs r3, 0
ldrsh r0, [r0, r3]
adds r0, 0x18
subs r2, r1, r0
movs r0, 0x20
negs r0, r0
cmp r7, r0
blt _0803EF42
adds r0, 0x18
cmp r2, r0
blt _0803EF42
cmp r7, 0xEF
bgt _0803EF42
cmp r2, 0x9F
bgt _0803EF42
ldr r1, _0803EF5C
ands r1, r2
lsls r1, 4
ldr r0, _0803EF60
ldrh r2, [r0, 0x6]
movs r4, 0xF
mov r8, r4
mov r3, r8
ands r3, r2
orrs r3, r1
strh r3, [r0, 0x6]
ldrh r2, [r0]
ldr r1, _0803EF64
ands r1, r2
ldr r2, _0803EF68
ands r1, r2
movs r5, 0x3
mov r9, r5
ldr r2, _0803EF6C
mov r10, r2
ands r1, r2
ldr r2, _0803EF70
ands r1, r2
ldr r2, _0803EF74
ands r1, r2
movs r5, 0x80
lsls r5, 7
ldr r4, _0803EF78
ands r1, r4
orrs r1, r5
strh r1, [r0]
ldr r1, _0803EF7C
ands r7, r1
ldrh r2, [r0, 0x2]
movs r1, 0xFE
lsls r1, 8
ands r1, r2
orrs r1, r7
ldr r2, _0803EF80
ands r1, r2
ands r1, r4
orrs r1, r5
strh r1, [r0, 0x2]
ldr r4, _0803EF84
ldrh r2, [r0, 0x4]
movs r1, 0xFC
lsls r1, 8
ands r1, r2
orrs r1, r4
movs r2, 0
orrs r1, r2
strh r1, [r0, 0x4]
ldr r2, _0803EF88
add r2, r12
ldrb r2, [r2]
mov r4, r9
ands r2, r4
lsls r2, 10
mov r5, r10
ands r1, r5
orrs r1, r2
movs r4, 0x2
ldrsh r2, [r6, r4]
mov r5, r8
ands r2, r5
lsls r2, 12
ldr r4, _0803EF5C
ands r1, r4
orrs r1, r2
strh r1, [r0, 0x4]
ldr r1, _0803EF8C
ands r3, r1
subs r1, 0x1
ands r3, r1
subs r1, 0x2
ands r3, r1
strh r3, [r0, 0x6]
movs r1, 0x80
lsls r1, 1
movs r2, 0
movs r3, 0
bl AddSprite
_0803EF42:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803EF50: .4byte gDungeon
_0803EF54: .4byte 0x000181f0
_0803EF58: .4byte 0x000181f2
_0803EF5C: .4byte 0x00000fff
_0803EF60: .4byte gUnknown_202EDDC
_0803EF64: .4byte 0x0000feff
_0803EF68: .4byte 0x0000fdff
_0803EF6C: .4byte 0x0000f3ff
_0803EF70: .4byte 0x0000efff
_0803EF74: .4byte 0x0000dfff
_0803EF78: .4byte 0x00003fff
_0803EF7C: .4byte 0x000001ff
_0803EF80: .4byte 0x0000c1ff
_0803EF84: .4byte 0x00000216
_0803EF88: .4byte 0x00018208
_0803EF8C: .4byte 0x0000fffe
thumb_func_end sub_803EDF0
thumb_func_start sub_803EF90
sub_803EF90:
push {r4-r7,lr}

View File

@@ -5,7 +5,7 @@
struct unkStruct_202D240
{
u32 *unk0;
u32 *unk4;
const u32 *unk4;
u32 size;
};
@@ -19,7 +19,7 @@ void vram_related_8009804(void);
void InitFontPalette(void);
void sub_80098A0(void);
void sub_80098BC(u32 *, u32 *, u32);
void sub_80098BC(u32 *, const u32 *, u32);
void sub_80098F8(u32);
void sub_8009908(void);
void sub_80099C0(void);

View File

@@ -2,7 +2,7 @@
#define GUARD_CPU_H
void CpuClear(void *, s32);
void CpuCopy(void *, void *, s32);
void CpuCopy(void *dest, const void *src, s32 size);
void nullsub_23(bool8);
void SetWindowTitle(u8 *);
void sub_800CDA8(u32);

View File

@@ -180,7 +180,7 @@ typedef struct Dungeon
u8 unk11;
s16 unk12;
s16 unk14;
u8 fill14[0xB8 - 0x16];
u32 unk18[(0xB8 - 0x18) / 4];
Entity *unkB8;
Entity *unkBC;
u8 fillC0[0x13C - 0xC0];

View File

@@ -13,6 +13,6 @@ void SelectCharmap(u32);
u32 UpdateFadeInTile(u32 a0);
u32 sub_80063B0(void);
void xxx_call_save_unk_text_struct_800641C(UnkTextStruct2 *a0, bool8 a1, bool8 a2);
void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct2 *a0, bool8 a1, bool8 a2);
#endif // GUARD_TEXT1_H
#endif // GUARD_TEXT1_H

View File

@@ -79,7 +79,7 @@ void sub_80098A0(void)
gUnknown_202D238[3] = 0;
}
void sub_80098BC(u32 *r0, u32 *r1, u32 r2)
void sub_80098BC(u32 *r0, const u32 *r1, u32 r2)
{
if (gUnknown_202D23C < 8) {
gUnknown_202D240[gUnknown_202D23C].unk0 = r0;

View File

@@ -2,8 +2,18 @@
#include "dungeon.h"
#include "bg_palette_buffer.h"
#include "code_8004AA0.h"
#include "input.h"
#include "text1.h"
#include "code_801602C.h"
#include "menu_input.h"
#include "code_8009804.h"
#include "code_803E46C.h"
#include "dungeon_util.h"
#include "sprite.h"
extern s32 gUnknown_202EDC8;
extern u32 gUnknown_202EDD0;
extern s32 gUnknown_202EDD8;
struct DungeonPalFile
{
@@ -13,11 +23,18 @@ struct DungeonPalFile
extern struct DungeonPalFile *gDungeonPaletteFile;
extern struct DungeonPalFile *gDungeonNameBannerPalette;
extern struct DungeonPalFile *gUnknown_202EC94;
extern u8 gUnknown_202ECA4[];
extern u8 gUnknown_202D058[];
extern const u8 gUnknown_80F62AC[];
extern void sub_8052210(u32);
extern void sub_8040A84();
extern void sub_8083D44(void);
void sub_803EC94(void);
void sub_803E874(bool8 r10, s32 r9)
{
s32 i, index, count;
@@ -117,3 +134,260 @@ void sub_803EA10(void)
SetBGPaletteBufferColorRGB(248, gUnknown_202D058, gUnknown_202EDC8, NULL);
}
extern u8 gUnknown_203B40C;
extern const struct UnkTextStruct2 gUnknown_80F62B0[];
extern const struct UnkTextStruct2 gUnknown_80F6310[];
extern const struct UnkTextStruct2 gUnknown_80F6370[];
extern const struct UnkTextStruct2 gUnknown_80F63D0[];
void sub_8040ABC(u8 a0);
void sub_803EAF0(u32 a0, u8 *a1)
{
if (a0 == gUnknown_202EDD0)
return;
switch (a0) {
case 1:
if (gUnknown_203B40C != 0) {
sub_8052210(0);
}
ResetUnusedInputStruct();
sub_803EC94();
xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE);
break;
case 0:
sub_803EC94();
xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE);
if (gUnknown_203B40C != 0) {
sub_8040A84();
sub_8040ABC(0);
}
break;
case 3:
xxx_call_save_unk_text_struct_800641C(gUnknown_80F62B0, TRUE, TRUE);
if (gUnknown_203B40C != 0) {
sub_8040ABC(1);
}
break;
case 6:
if (gUnknown_203B40C != 0) {
sub_8052210(0);
}
ResetUnusedInputStruct();
xxx_call_save_unk_text_struct_800641C(gUnknown_80F6310, TRUE, TRUE);
break;
case 7:
if (gUnknown_203B40C != 0) {
sub_8052210(0);
}
ResetUnusedInputStruct();
xxx_call_save_unk_text_struct_800641C(gUnknown_80F6370, TRUE, TRUE);
break;
case 2:
case 4:
if (gUnknown_203B40C != 0) {
sub_8052210(0);
}
ResetUnusedInputStruct();
sub_803EC94();
xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE);
break;
case 5:
if (gUnknown_203B40C != 0) {
sub_8052210(0);
}
xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE);
break;
case 8:
if (gUnknown_203B40C != 0) {
sub_8083D44();
sub_8052210(0);
}
CreateConfirmNameMenu(2, a1);
break;
case 9:
if (gUnknown_203B40C != 0) {
sub_8052210(0);
sub_8083D44();
}
ResetUnusedInputStruct();
xxx_call_save_unk_text_struct_800641C(gUnknown_80F63D0, FALSE, TRUE);
break;
case 10:
sub_8083D44();
break;
case 150: // Dummy case put here to match, any value >= 150 works
break;
}
gUnknown_202EDD0 = a0;
}
extern MenuInputStruct gUnknown_202EE10;
void sub_803EC94(void)
{
gUnknown_202EE10.unk1E = 0;
gUnknown_202EE10.unk20 = 0;
gUnknown_202EE10.unkC = 0;
gUnknown_202EE10.unkE = 0;
gUnknown_202EE10.unk14.x = 0;
sub_801317C(&gUnknown_202EE10.unk28);
}
extern void sub_8052210(u32);
void sub_803ECB4(UnkTextStruct2 *a0, bool8 a1)
{
gUnknown_202EDD0 = 10;
sub_8052210(0);
ResetUnusedInputStruct();
xxx_call_save_unk_text_struct_800641C(a0, TRUE, a1);
}
void sub_803ECE0(void)
{
gUnknown_202EDD8++;
if (gUnknown_202EDD8 < 0)
gUnknown_202EDD8 = 0;
if (gUnknown_202EDD8 > 11)
gUnknown_202EDD8 = 0;
sub_80098BC((void *)VRAM + 0x14400, gUnknown_202EC94->unk4 + ((gUnknown_202EDD8 / 4) * 0x240), 0x240);
}
s32 sub_803EF90(s32 a0, u8 a1);
struct UnkStruct_202EDE8
{
s16 unk0;
s16 unk2;
Entity *unk4;
s32 unk8;
s32 unkC;
s32 unk10;
};
extern struct UnkStruct_202EDE8 gUnknown_202EDE8;
void sub_803ED30(s32 a0, Entity *mon, u8 a2, s32 a3)
{
s32 i, var;
if (a0 == 0 || gDungeon->unk181e8.blinded)
return;
for (i = 0; i < 20; i++) {
if (gUnknown_202EDE8.unk0 == 0)
break;
sub_803E46C(0x29);
}
var = sub_803EF90(a0, a2);
gUnknown_202EDE8.unk0 = 60;
gUnknown_202EDE8.unk4 = mon;
gUnknown_202EDE8.unk8 = mon->spawnGenID;
gUnknown_202EDE8.unkC = -(var * 768);
gUnknown_202EDE8.unk10 = 0;
if (a3 < 0) {
if (a0 < -999) {
gUnknown_202EDE8.unk2 = 6;
}
else if (a0 >= 0) {
gUnknown_202EDE8.unk2 = 10;
}
else {
gUnknown_202EDE8.unk2 = 3;
}
}
else {
gUnknown_202EDE8.unk2 = a3;
}
sub_80098BC((void *) VRAM + 0x142C0, gDungeon->unk18, 0x80);
}
SpriteOAM gUnknown_202EDDC;
void sub_803EDF0(void)
{
EntityInfo *entInfo;
s32 x, y, y1, y2;
if (gUnknown_202EDE8.unk0 == 0)
return;
if (!EntityExists(gUnknown_202EDE8.unk4)) {
gUnknown_202EDE8.unk0 = 0;
return;
}
if (gUnknown_202EDE8.unk8 != gUnknown_202EDE8.unk4->spawnGenID) {
gUnknown_202EDE8.unk0 = 0;
return;
}
gUnknown_202EDE8.unk0--;
gUnknown_202EDE8.unk10 -= 46;
entInfo = GetEntInfo(gUnknown_202EDE8.unk4);
x = (entInfo->pixelPos.x + (gUnknown_202EDE8.unkC / 256)) - gDungeon->unk181e8.cameraPixelPos.x;
y1 = (entInfo->pixelPos.y + (gUnknown_202EDE8.unk10 / 256));
y2 = (gDungeon->unk181e8.cameraPixelPos.y + 24);
y = y1 - y2;
// sprite oam memes strike again
if (x >= -32 && y >= -8 && x < 240 && y < 160) {
u32 r9;
u32 unk6;
u32 shape, spriteX, palNum, prio, tileNum;
unk6 = y & SPRITEOAM_MAX_UNK6_4;
unk6 <<= SPRITEOAM_SHIFT_UNK6_4;
gUnknown_202EDDC.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
gUnknown_202EDDC.unk6 |= unk6;
gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1;
gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2;
r9 = 3;
gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_OBJMODE;
gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_MOSAIC;
gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_BPP;
shape = 1 << SPRITEOAM_SHIFT_SHAPE;
gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_SHAPE;
gUnknown_202EDDC.attrib1 |= shape;
spriteX = x & SPRITEOAM_MAX_X;
gUnknown_202EDDC.attrib2 &= ~SPRITEOAM_MASK_X;
gUnknown_202EDDC.attrib2 |= spriteX;
gUnknown_202EDDC.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM;
gUnknown_202EDDC.attrib2 &= ~SPRITEOAM_MASK_SIZE;
gUnknown_202EDDC.attrib2 |= 1 << SPRITEOAM_SHIFT_SIZE;
tileNum = 0x216 << SPRITEOAM_SHIFT_TILENUM;
gUnknown_202EDDC.attrib3 &= ~SPRITEOAM_MASK_TILENUM;
gUnknown_202EDDC.attrib3 |= tileNum;
prio = gDungeon->unk181e8.unk18208 & r9;
prio <<= SPRITEOAM_SHIFT_PRIORITY;
gUnknown_202EDDC.attrib3 &= ~SPRITEOAM_MASK_PRIORITY;
gUnknown_202EDDC.attrib3 |= prio;
palNum = gUnknown_202EDE8.unk2;
palNum &= 0xF;
palNum <<= SPRITEOAM_SHIFT_PALETTENUM;
gUnknown_202EDDC.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM;
gUnknown_202EDDC.attrib3 |= palNum;
gUnknown_202EDDC.unk6 &= 0xFFFE;
gUnknown_202EDDC.unk6 &= 0xFFFD;
gUnknown_202EDDC.unk6 &= 0xFFFB;
AddSprite(&gUnknown_202EDDC, 0x100, NULL, NULL);
}
}
//

View File

@@ -35,7 +35,7 @@ UNUSED static bool8 sub_800CDE0(void)
return TRUE;
}
void CpuCopy(void *dest, void *src, s32 size)
void CpuCopy(void *dest, const void *src, s32 size)
{
CpuCopy32(src, dest, size);
}

View File

@@ -144,7 +144,7 @@ void SetCharacterMask(int a0)
}
// TODO: Move xxx_call_save_unk_text_struct_800641C and SaveUnkTextStructAndXXX_8006438 to text2.c ? data.s shows text1 and text2 are merged somehow but not fully
void xxx_call_save_unk_text_struct_800641C(UnkTextStruct2 *a0, bool8 a1, bool8 a2)
void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct2 *a0, bool8 a1, bool8 a2)
{
UnkTextStruct2_sub r3 = {0, 0};
SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3);
@@ -186,4 +186,4 @@ static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1,
ptr1 = &gUnknown_20274A5;
*ptr2 = ptr0;
*ptr1 = 1;
}
}