Match ResetSprites

This commit is contained in:
Kermalis 2023-08-11 06:24:48 -04:00
parent 20ad405a46
commit 7f4732f714
3 changed files with 122 additions and 127 deletions

View File

@ -5,132 +5,6 @@
.text
thumb_func_start ResetSprites
ResetSprites:
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _08004E68
movs r0, 0
str r0, [r1]
ldr r1, _08004E6C
ldr r0, _08004E70
str r0, [r1]
ldr r1, _08004E74
ldr r0, _08004E78
str r0, [r1]
ldr r0, _08004E7C
adds r1, r0, 0
adds r1, 0x8
adds r5, r0, 0
movs r2, 0
movs r3, 0xF0
_08004DB0:
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
str r1, [r0]
str r2, [r0, 0x4]
adds r0, 0x8
adds r1, 0x8
subs r3, 0x10
cmp r3, 0
bge _08004DB0
cmp r4, 0
beq _08004E50
movs r2, 0
ldr r1, _08004E80
ldr r0, _08004E84
movs r3, 0x7F
_08004E42:
str r2, [r0]
str r1, [r0, 0x4]
adds r1, 0x8
adds r0, 0x8
subs r3, 0x1
cmp r3, 0
bge _08004E42
_08004E50:
movs r1, 0x80
lsls r1, 4
adds r0, r5, r1
movs r1, 0
str r1, [r0]
ldr r2, _08004E88
adds r0, r5, r2
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08004E68: .4byte gSpriteCount
_08004E6C: .4byte gCharMemCursor
_08004E70: .4byte 0x06010000
_08004E74: .4byte gUnknown_203B074
_08004E78: .4byte gUnknown_20266B0
_08004E7C: .4byte gUnknown_20256A0
_08004E80: .4byte gUnknown_20262A8
_08004E84: .4byte gUnknown_2025EA8
_08004E88: .4byte 0x00000804
thumb_func_end ResetSprites
thumb_func_start sub_8004E8C
sub_8004E8C:
ldr r1, _08004EA4

View File

@ -1,11 +1,25 @@
#ifndef GUARD_SPRITE_H
#define GUARD_SPRITE_H
// size: 0x8
struct UnkSpriteLink
{
struct UnkSpriteLink *unk0;
struct UnkSpriteLink *unk4;
};
// size: 0x808
struct SpriteList
{
struct UnkSpriteLink sprites[16][16];
u32 unk800;
u32 unk804;
};
void InitSprites(void);
void ResetSprites(bool8);
// sprite.s
extern void BlinkSavingIcon(void);
extern void ResetSprites(bool32);
extern void SetSavingIconCoords(u32);
#endif // GUARD_SPRITE_H

View File

@ -1,8 +1,115 @@
#include "global.h"
#include "sprite.h"
extern struct SpriteList gUnknown_20256A0;
extern struct UnkSpriteLink gUnknown_2025EA8[128];
extern struct UnkSpriteLink gUnknown_20262A8[128];
extern u32 gSpriteCount; /* 20266A8 */
extern u32 gUnknown_20266B0;
extern u32 *gCharMemCursor; /* 2026E30 */
extern u32 *gUnknown_203B074;
void InitSprites(void)
{
ResetSprites(TRUE);
SetSavingIconCoords(0);
}
void ResetSprites(bool8 a0)
{
s32 i;
struct UnkSpriteLink *a;
struct UnkSpriteLink *b;
struct UnkSpriteLink *c;
gSpriteCount = 0;
gCharMemCursor = (u32*)0x6010000;
gUnknown_203B074 = &gUnknown_20266B0;
a = &gUnknown_20256A0.sprites[0][0];
b = a + 1;
// 16 loops, very smart
for (i = 0; i < 0x100; i += 0x10) {
c = NULL;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
a->unk0 = b;
a->unk4 = c;
a++;
b++;
}
if (a0) {
c = NULL;
b = &gUnknown_20262A8[0];
a = &gUnknown_2025EA8[0];
for (i = 0; i < 128; i++) {
a->unk0 = c;
a->unk4 = b;
b++;
a++;
}
}
gUnknown_20256A0.unk800 = 0;
gUnknown_20256A0.unk804 = 0;
}