match sub_800F7D0 thanks to @DizzyEggg

This commit is contained in:
Seth Barberee
2024-12-28 13:34:06 -08:00
parent bc2b0031c5
commit d0a0285f75
3 changed files with 49 additions and 127 deletions
-125
View File
@@ -1153,129 +1153,4 @@ _0800F7C6:
_0800F7CC: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F794
thumb_func_start sub_800F7D0
sub_800F7D0:
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r0
ldr r0, _0800F800
ldr r0, [r0]
cmp r0, 0
beq _0800F8C0
ldr r1, [r0]
adds r0, r1, 0
cmp r1, 0
bge _0800F7EA
adds r0, r1, 0x3
_0800F7EA:
asrs r0, 2
lsls r0, 2
subs r0, r1, r0
cmp r0, 0x1
beq _0800F82A
cmp r0, 0x1
bgt _0800F804
cmp r0, 0
beq _0800F80E
b _0800F888
.align 2, 0
_0800F800: .4byte gDungeonPokemonSprites
_0800F804:
cmp r0, 0x2
beq _0800F846
cmp r0, 0x3
beq _0800F868
b _0800F888
_0800F80E:
movs r0, 0x1
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x2
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x3
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x4
b _0800F860
_0800F82A:
movs r0, 0x5
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x6
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x7
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x8
b _0800F860
_0800F846:
movs r0, 0x9
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xA
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xB
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xC
_0800F860:
movs r1, 0x1
bl LoadStatusGraphics
b _0800F888
_0800F868:
movs r0, 0xD
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xE
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xF
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x10
movs r1, 0x1
bl LoadStatusGraphics
_0800F888:
movs r5, 0
movs r6, 0x4
_0800F88C:
ldr r7, _0800F8CC
ldr r4, [r7]
lsls r0, r5, 6
adds r0, r4, r0
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _0800F8B0
adds r4, r6
adds r0, r4, 0
movs r1, 0
mov r2, r8
bl sub_800F2EC
adds r0, r4, 0
movs r1, 0x1
mov r2, r8
bl sub_800F2EC
_0800F8B0:
adds r6, 0x40
adds r5, 0x1
cmp r5, 0x15
ble _0800F88C
ldr r1, [r7]
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0800F8C0:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F8CC: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F7D0
.align 2,0
+2 -2
View File
@@ -33,10 +33,10 @@ typedef struct DungeonPokemonSprite
// size: 0x584
typedef struct DungeonPokemonSprites
{
/* 0x0 */ u32 frame;
/* 0x0 */ s32 frame;
/* 0x4 */ DungeonPokemonSprite sprites[22];
} DungeonPokemonSprites;
extern DungeonPokemonSprites *gDungeonPokemonSprites;
#endif // GUARD_DUNGEON_POKEMON_SPRITES_H
#endif // GUARD_DUNGEON_POKEMON_SPRITES_H
+47
View File
@@ -8,6 +8,53 @@ extern DungeonPokemonSprite* GetDungeonPokemonSprite(s32 id);
extern DungeonPos gUnknown_80D3564;
void LoadStatusGraphics(s32, s32);
void sub_800F2EC(DungeonPokemonSprite *, s32, s16 *);
void sub_800F7D0(s16 *r0)
{
s32 index;
if (gDungeonPokemonSprites == NULL)
return;
switch(gDungeonPokemonSprites->frame % 4) {
case 0:
LoadStatusGraphics(1, 1);
LoadStatusGraphics(2, 1);
LoadStatusGraphics(3, 1);
LoadStatusGraphics(4, 1);
break;
case 1:
LoadStatusGraphics(5, 1);
LoadStatusGraphics(6, 1);
LoadStatusGraphics(7, 1);
LoadStatusGraphics(8, 1);
break;
case 2:
LoadStatusGraphics(9, 1);
LoadStatusGraphics(0xA, 1);
LoadStatusGraphics(0xB, 1);
LoadStatusGraphics(0xC, 1);
break;
case 3:
LoadStatusGraphics(0xD, 1);
LoadStatusGraphics(0xE, 1);
LoadStatusGraphics(0xF, 1);
LoadStatusGraphics(0x10, 1);
break;
}
for (index = 0; index < 22; index++) {
if (gDungeonPokemonSprites->sprites[index].exists) {
DungeonPokemonSprite *spritePtr = &gDungeonPokemonSprites->sprites[index];
sub_800F2EC(spritePtr, 0, r0);
sub_800F2EC(spritePtr, 1, r0);
}
}
gDungeonPokemonSprites->frame++;
}
void AddPokemonDungeonSprite(s32 id, s16 species, DungeonPos *pos, u32 r3) {
DungeonPokemonSprite *dSprite;
DungeonPokemonSprite *newSprite;