mirror of
https://github.com/pret/pmd-red.git
synced 2026-10-02 05:48:45 -05:00
decomp more dungeon pokemon sprite funcs
This commit is contained in:
@@ -1417,78 +1417,4 @@ _0800F8C0:
|
||||
_0800F8CC: .4byte gDungeonPokemonSprites
|
||||
thumb_func_end sub_800F7D0
|
||||
|
||||
thumb_func_start AddPokemonDungeonSprite
|
||||
@ void AddPokemonDungeonSprite(int id, short species, Position *pos, ?)
|
||||
AddPokemonDungeonSprite:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, 0
|
||||
adds r7, r2, 0
|
||||
mov r8, r3
|
||||
lsls r1, 16
|
||||
asrs r6, r1, 16
|
||||
ldr r0, _0800F92C
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0800F920
|
||||
adds r0, r5, 0
|
||||
bl GetDungeonPokemonSprite
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
bne _0800F920
|
||||
bl NewDungeonPokemonSprite
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
beq _0800F920
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
str r5, [r1, 0x4]
|
||||
strh r6, [r1, 0x8]
|
||||
str r4, [r1, 0xC]
|
||||
ldr r0, [r7]
|
||||
str r0, [r1, 0x14]
|
||||
mov r0, r8
|
||||
strb r0, [r1, 0x11]
|
||||
ldr r0, _0800F930
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x1C]
|
||||
str r0, [r1, 0x18]
|
||||
str r4, [r1, 0x28]
|
||||
str r4, [r1, 0x2C]
|
||||
str r4, [r1, 0x30]
|
||||
str r4, [r1, 0x34]
|
||||
_0800F920:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800F92C: .4byte gDungeonPokemonSprites
|
||||
_0800F930: .4byte gUnknown_80D3564
|
||||
thumb_func_end AddPokemonDungeonSprite
|
||||
|
||||
thumb_func_start DeletePokemonDungeonSprite
|
||||
@ void DeletePokemonDungeonSprite(int id)
|
||||
DeletePokemonDungeonSprite:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0800F954
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0800F950
|
||||
adds r0, r1, 0
|
||||
bl GetDungeonPokemonSprite
|
||||
cmp r0, 0
|
||||
beq _0800F950
|
||||
movs r1, 0x40
|
||||
bl MemoryClear8
|
||||
_0800F950:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800F954: .4byte gDungeonPokemonSprites
|
||||
thumb_func_end DeletePokemonDungeonSprite
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -1,10 +1,61 @@
|
||||
#include "global.h"
|
||||
#include "code_800F958.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern DungeonPokemonSprites *gDungeonPokemonSprites;
|
||||
|
||||
extern DungeonPokemonSprite *NewDungeonPokemonSprite(void);
|
||||
extern DungeonPokemonSprite* GetDungeonPokemonSprite(s32 id);
|
||||
|
||||
extern Position gUnknown_80D3564;
|
||||
|
||||
void AddPokemonDungeonSprite(s32 id, s16 species, Position *pos, u32 r3) {
|
||||
DungeonPokemonSprite *dSprite;
|
||||
DungeonPokemonSprite *newSprite;
|
||||
Position newPos;
|
||||
s32 species_s32;
|
||||
|
||||
species_s32 = species;
|
||||
|
||||
if(gDungeonPokemonSprites == NULL)
|
||||
return;
|
||||
|
||||
dSprite = GetDungeonPokemonSprite(id);
|
||||
if(dSprite != NULL)
|
||||
return;
|
||||
|
||||
newSprite = NewDungeonPokemonSprite();
|
||||
if(newSprite == NULL)
|
||||
return;
|
||||
|
||||
newSprite->exists = 1;
|
||||
newSprite->id = id;
|
||||
newSprite->species = species_s32;
|
||||
newSprite->status = 0;
|
||||
newSprite->pos = *pos;
|
||||
newSprite->unk11 = r3;
|
||||
newPos = gUnknown_80D3564;
|
||||
newSprite->statusOffsets[1] = newPos;
|
||||
newSprite->statusOffsets[0] = newPos;
|
||||
newSprite->statusSprites[0].status = 0;
|
||||
newSprite->statusSprites[0].frame = 0;
|
||||
newSprite->statusSprites[1].status = 0;
|
||||
newSprite->statusSprites[1].frame = 0;
|
||||
}
|
||||
|
||||
void DeletePokemonDungeonSprite(s32 id)
|
||||
{
|
||||
DungeonPokemonSprite *dSprite;
|
||||
|
||||
if(gDungeonPokemonSprites == NULL)
|
||||
return;
|
||||
|
||||
dSprite = GetDungeonPokemonSprite(id);
|
||||
if(dSprite == NULL)
|
||||
return;
|
||||
|
||||
MemoryClear8((u8 *)dSprite, sizeof(DungeonPokemonSprite));
|
||||
}
|
||||
|
||||
void sub_800F958(s32 dungeonSpriteID, Position *pos, Position *statusOffsets, u32 a3)
|
||||
{
|
||||
DungeonPokemonSprite *dSprite;
|
||||
|
||||
Reference in New Issue
Block a user