mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-26 21:34:47 -04:00
match sub_800F7D0 thanks to @DizzyEggg
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user