Match SetSavingIconCoords and BlinkSavingIcon

This commit is contained in:
Kermalis 2023-08-11 13:53:04 -04:00
parent c61c7df7e4
commit 02b6c6bd46
4 changed files with 62 additions and 95 deletions

View File

@ -5,95 +5,6 @@
.text
thumb_func_start SetSavingIconCoords
SetSavingIconCoords:
push {lr}
adds r3, r0, 0
cmp r3, 0
bne _0800522C
ldr r1, _08005228
strh r3, [r1]
movs r0, 0xA0
strh r0, [r1, 0x2]
b _0800523C
.align 2, 0
_08005228: .4byte gUnknown_2025694
_0800522C:
ldr r1, _08005240
ldrh r0, [r3]
movs r2, 0
strh r0, [r1]
ldrh r0, [r3, 0x2]
strh r0, [r1, 0x2]
ldr r0, _08005244
str r2, [r0]
_0800523C:
pop {r0}
bx r0
.align 2, 0
_08005240: .4byte gUnknown_2025694
_08005244: .4byte gUnknown_2025698
thumb_func_end SetSavingIconCoords
thumb_func_start BlinkSavingIcon
BlinkSavingIcon:
push {r4,lr}
movs r2, 0xE0
lsls r2, 19
ldr r0, _08005280
ldr r1, [r0]
adds r3, r1, 0
adds r1, 0x1
str r1, [r0]
movs r0, 0x10
ands r3, r0
cmp r3, 0
beq _08005288
movs r0, 0xA0
strh r0, [r2]
adds r2, 0x2
movs r1, 0x80
lsls r1, 7
adds r0, r1, 0
strh r0, [r2]
adds r2, 0x2
ldr r4, _08005284
adds r0, r4, 0
strh r0, [r2]
adds r2, 0x2
movs r0, 0
strh r0, [r2]
b _080052A8
.align 2, 0
_08005280: .4byte gUnknown_2025698
_08005284: .4byte 0x0000f3fc
_08005288:
ldr r1, _080052B0
ldrh r0, [r1, 0x2]
strh r0, [r2]
ldr r2, _080052B4
movs r4, 0x80
lsls r4, 7
adds r0, r4, 0
ldrh r1, [r1]
adds r0, r1
strh r0, [r2]
adds r2, 0x2
ldr r1, _080052B8
adds r0, r1, 0
strh r0, [r2]
adds r2, 0x2
strh r3, [r2]
_080052A8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080052B0: .4byte gUnknown_2025694
_080052B4: .4byte 0x07000002
_080052B8: .4byte 0x0000f3fc
thumb_func_end BlinkSavingIcon
thumb_func_start sub_80052BC
sub_80052BC:
push {r4-r6,lr}

View File

@ -1,6 +1,8 @@
#ifndef GUARD_SPRITE_H
#define GUARD_SPRITE_H
#include "position.h"
// size: 0x8
struct unkSprite
{
@ -39,15 +41,15 @@ struct unkStruct_2039DB0
u16 unkA;
};
void BlinkSavingIcon(void);
void CopySpritesToOam(void);
void InitSprites(void);
void ResetSprites(bool8);
void SetSavingIconCoords(struct Position *);
void sub_8004E8C(struct unkStruct_2039DB0 *);
void sub_8005180(void);
// sprite.s
extern void AddSprite(struct unkSprite *, s32, u32 *, struct unkStruct_2039DB0 *);
extern void BlinkSavingIcon(void);
extern void SetSavingIconCoords(u32);
#endif // GUARD_SPRITE_H

View File

@ -96,7 +96,7 @@ void GameLoop(void)
InitializeGameOptions(TRUE);
SetWindowTitle(gPMDBuildVersion);
sub_800DAAC();
SetSavingIconCoords(0);
SetSavingIconCoords(NULL);
tmp = 0;
if (ReadSaveFromPak(&tmp))
sub_800135C();

View File

@ -2,6 +2,8 @@
#include "sprite.h"
extern u16 gUnknown_2025670;
extern struct Position gUnknown_2025694;
extern u32 gUnknown_2025698;
extern struct SpriteList gUnknown_20256A0;
extern struct UnkSpriteLink gUnknown_2025EA8[128];
extern struct unkSprite gUnknown_20262A8[128];
@ -13,7 +15,7 @@ extern u32 *gUnknown_203B074;
void InitSprites(void)
{
ResetSprites(TRUE);
SetSavingIconCoords(0);
SetSavingIconCoords(NULL);
}
void ResetSprites(bool8 a0)
@ -26,7 +28,7 @@ void ResetSprites(bool8 a0)
struct UnkSpriteLink *e;
gSpriteCount = 0;
gCharMemCursor = (u32*)0x6010000;
gCharMemCursor = (u32*)OBJ_VRAM0;
gUnknown_203B074 = &gUnknown_20266B0;
a = &gUnknown_20256A0.sprites[0];
@ -577,7 +579,7 @@ void CopySpritesToOam(void)
{
struct UnkSpriteLink *sLink;
struct unkSprite *spr;
u16 *oam;
volatile u16 *oam;
s32 count;
sLink = &gUnknown_20256A0.sprites[0];
@ -621,4 +623,56 @@ void CopySpritesToOam(void)
}
gUnknown_2025670 = count;
}
void SetSavingIconCoords(struct Position *pos)
{
if (pos == NULL) {
gUnknown_2025694.x = 0;
gUnknown_2025694.y = DISPLAY_HEIGHT;
}
else {
gUnknown_2025694.x = pos->x;
gUnknown_2025694.y = pos->y;
gUnknown_2025698 = 0;
}
}
void BlinkSavingIcon(void)
{
volatile u16 *oam;
u32 uVar1;
oam = (u16 *)OAM;
uVar1 = gUnknown_2025698++;
if (uVar1 & 16) {
// Set y to 160
// Set affineMode/objMode/mosaic/bpp/shape to 0
*oam++ = DISPLAY_HEIGHT;
// Set x/matrixNum to 0
// Set size to 1
*oam++ = 0x4000;
// Set tileNum to 0x3FC
// Set priority to 0
// Set paletteNum to 15
*oam++ = 0xF3FC;
// Set affineParam to 0
*oam = 0;
}
else {
// Set y to gUnknown_2025694.y
// Set affineMode/objMode/mosaic/bpp/shape to 0
*oam++ = gUnknown_2025694.y;
// Set x to gUnknown_2025694.x
// Set matrixNum to 0
// Set size to 1
*oam++ = gUnknown_2025694.x + 0x4000;
// Set tileNum to 0x3FC
// Set priority to 0
// Set paletteNum to 15
*oam++ = 0xF3FC;
// Set affineParam to 0
*oam = 0;
}
}