Skip to content

Commit

Permalink
Another high_scores function
Browse files Browse the repository at this point in the history
  • Loading branch information
huderlem committed Feb 14, 2024
1 parent 73ad521 commit ec50f5c
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 91 deletions.
90 changes: 0 additions & 90 deletions asm/high_scores.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,96 +4,6 @@

.text

thumb_func_start sub_E3A8
sub_E3A8: @ 0x0800E3A8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r4, _0800E448 @ =gUnknown_02002858
movs r0, #0x12
ldrsh r1, [r4, r0]
movs r0, #0xb8
muls r0, r1, r0
ldr r2, _0800E44C @ =gUnknown_0200B3B8
adds r5, r0, r2
movs r0, #1
strh r0, [r5]
ldr r0, _0800E450 @ =gUnknown_086A7DA8
movs r1, #2
bl LoadSpriteSets
ldr r2, _0800E454 @ =gUnknown_080797F0
ldr r0, [r4, #0xc]
lsls r0, r0, #3
ldrb r1, [r4, #0xb]
lsls r1, r1, #6
adds r0, r0, r1
adds r0, r0, r2
ldr r1, [r0]
movs r3, #0x10
ldrsh r0, [r4, r3]
lsls r0, r0, #3
adds r1, r1, r0
strh r1, [r5, #2]
ldr r1, [r4, #0xc]
lsls r1, r1, #3
ldrb r0, [r4, #0xb]
lsls r0, r0, #6
adds r1, r1, r0
adds r2, #4
adds r1, r1, r2
ldr r0, [r1]
strh r0, [r5, #4]
ldr r7, _0800E458 @ =gOamBuffer
ldr r0, _0800E45C @ =0xFFFFFE00
mov r8, r0
adds r4, r5, #0
adds r4, #8
ldr r2, _0800E460 @ =0x000001FF
mov ip, r2
movs r6, #1
_0800E404:
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r7
movs r0, #2
ldrsh r1, [r4, r0]
movs r2, #2
ldrsh r0, [r5, r2]
adds r1, r1, r0
mov r0, ip
ands r1, r0
ldrh r2, [r3, #2]
mov r0, r8
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r7
ldrb r0, [r5, #4]
ldrb r2, [r4, #4]
adds r0, r0, r2
strb r0, [r1]
adds r4, #8
subs r6, #1
cmp r6, #0
bge _0800E404
movs r0, #0
strh r0, [r5]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0800E448: .4byte gUnknown_02002858
_0800E44C: .4byte gUnknown_0200B3B8
_0800E450: .4byte gUnknown_086A7DA8
_0800E454: .4byte gUnknown_080797F0
_0800E458: .4byte gOamBuffer
_0800E45C: .4byte 0xFFFFFE00
_0800E460: .4byte 0x000001FF

thumb_func_start sub_E464
sub_E464: @ 0x0800E464
push {r4, r5, r6, r7, lr}
Expand Down
6 changes: 6 additions & 0 deletions include/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ struct Coord16
u16 y;
};

struct Coord32
{
u32 x;
u32 y;
};

struct PokemonSpecies {
u16 mainSeriesIndexNumber; // Refers to the generation three internal index number; e.g. Treecko is 0x115 (decimal 227).
u8 unk2[0x5];
Expand Down
3 changes: 2 additions & 1 deletion include/variables.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ extern u8 gUnknown_02002808[];
//extern ? gUnknown_02002958;
//extern ? gIntrTable;
//extern ? gMain;
//extern ? gUnknown_0200B3B8;
//extern ? gVBlankIntrFuncPtr;
//extern ? gMainCallback;
//extern ? gUnknown_0200FBA0;
Expand Down Expand Up @@ -135,6 +134,7 @@ extern const s16 gEReaderAccessButtonSequence[];
//extern ? gMonHatchSpriteGroup5_Gfx;
extern struct Coord16 gUnknown_086A6B28[];
extern const struct SpriteSet *const gUnknown_086A6AD4[];
extern const struct SpriteSet *const gUnknown_086A7DA8[];
extern void (*gFieldSelectStateFuncs[])(void);
extern u8 gUnknown_080A2400[];
extern u8 gFieldSelectWindow_Gfx[];
Expand Down Expand Up @@ -193,6 +193,7 @@ extern struct Coord16 gUnknown_086A9684[];
extern struct Coord16 gUnknown_086A9694[];
extern struct Coord16 gUnknown_086A96AC[];
extern struct Coord16 gUnknown_086A96C0[];
extern const struct Coord32 gUnknown_080797F0[2][8];

extern u16 gUnknown_02019C40[];
extern s16 gUnknown_0201A514;
Expand Down
20 changes: 20 additions & 0 deletions src/high_scores.c
Original file line number Diff line number Diff line change
Expand Up @@ -1088,3 +1088,23 @@ void sub_E390(void)
sub_0D10();
SetMainGameState(8);
}

void sub_E3A8(void)
{
int i;
struct SpriteGroup *spriteGroup;

spriteGroup = &gUnknown_0200B3B8[gUnknown_02002858.unk12];
spriteGroup->available = 1;
LoadSpriteSets(gUnknown_086A7DA8, 2, gUnknown_0200B3B8);

spriteGroup->baseX = gUnknown_080797F0[gUnknown_02002858.unkB][gUnknown_02002858.unkC].x + gUnknown_02002858.unk10 * 8;
spriteGroup->baseY = gUnknown_080797F0[gUnknown_02002858.unkB][gUnknown_02002858.unkC].y;
for (i = 0; i < 2; i++)
{
gOamBuffer[spriteGroup->oam[i].oamId].x = spriteGroup->oam[i].xOffset + spriteGroup->baseX;
gOamBuffer[spriteGroup->oam[i].oamId].y = spriteGroup->oam[i].yOffset + spriteGroup->baseY;
}

spriteGroup->available = 0;
}

0 comments on commit ec50f5c

Please sign in to comment.