mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-31 15:58:46 -05:00
more decomp of effect funcs
This commit is contained in:
parent
4eb269b480
commit
34e5bfadf6
|
|
@ -109,246 +109,4 @@ _0800F01A:
|
|||
bx r0
|
||||
thumb_func_end sub_800EF64
|
||||
|
||||
thumb_func_start sub_800F034
|
||||
sub_800F034:
|
||||
push {r4-r6,lr}
|
||||
ldr r4, _0800F074
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0800F04E
|
||||
movs r0, 0x10
|
||||
movs r1, 0xB
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
movs r1, 0x10
|
||||
bl MemoryClear8
|
||||
_0800F04E:
|
||||
movs r3, 0
|
||||
adds r6, r4, 0
|
||||
movs r5, 0x1
|
||||
negs r5, r5
|
||||
movs r4, 0
|
||||
_0800F058:
|
||||
ldr r0, [r6]
|
||||
lsls r2, r3, 3
|
||||
adds r1, r0, r2
|
||||
str r5, [r1]
|
||||
adds r0, 0x4
|
||||
adds r0, r2
|
||||
str r4, [r0]
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x1
|
||||
ble _0800F058
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800F074: .4byte gUnknown_203B0D4
|
||||
thumb_func_end sub_800F034
|
||||
|
||||
thumb_func_start sub_800F078
|
||||
sub_800F078:
|
||||
push {r4,lr}
|
||||
ldr r4, _0800F090
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _0800F08A
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0800F08A:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800F090: .4byte gUnknown_203B0D4
|
||||
thumb_func_end sub_800F078
|
||||
|
||||
thumb_func_start sub_800F094
|
||||
sub_800F094:
|
||||
push {r4-r6,lr}
|
||||
movs r3, 0
|
||||
ldr r6, _0800F0BC
|
||||
movs r5, 0x1
|
||||
negs r5, r5
|
||||
movs r4, 0
|
||||
_0800F0A0:
|
||||
ldr r0, [r6]
|
||||
lsls r2, r3, 3
|
||||
adds r1, r0, r2
|
||||
str r5, [r1]
|
||||
adds r0, 0x4
|
||||
adds r0, r2
|
||||
str r4, [r0]
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x1
|
||||
ble _0800F0A0
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800F0BC: .4byte gUnknown_203B0D4
|
||||
thumb_func_end sub_800F094
|
||||
|
||||
thumb_func_start sub_800F0C0
|
||||
sub_800F0C0:
|
||||
push {lr}
|
||||
cmp r0, 0x3
|
||||
bne _0800F0D8
|
||||
ldr r0, _0800F0D4
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0]
|
||||
cmp r0, r1
|
||||
bne _0800F0EC
|
||||
movs r0, 0
|
||||
b _0800F0F0
|
||||
.align 2, 0
|
||||
_0800F0D4: .4byte gUnknown_203B0D4
|
||||
_0800F0D8:
|
||||
ldr r0, _0800F0E8
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x8]
|
||||
cmp r0, r1
|
||||
bne _0800F0EC
|
||||
movs r0, 0x1
|
||||
b _0800F0F0
|
||||
.align 2, 0
|
||||
_0800F0E8: .4byte gUnknown_203B0D4
|
||||
_0800F0EC:
|
||||
movs r0, 0x3
|
||||
negs r0, r0
|
||||
_0800F0F0:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_800F0C0
|
||||
|
||||
thumb_func_start sub_800F0F4
|
||||
sub_800F0F4:
|
||||
push {lr}
|
||||
cmp r0, 0x3
|
||||
bne _0800F114
|
||||
ldr r0, _0800F110
|
||||
ldr r2, [r0]
|
||||
ldr r0, [r2]
|
||||
cmp r0, r1
|
||||
beq _0800F11E
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
bne _0800F132
|
||||
movs r0, 0
|
||||
b _0800F136
|
||||
.align 2, 0
|
||||
_0800F110: .4byte gUnknown_203B0D4
|
||||
_0800F114:
|
||||
ldr r0, _0800F124
|
||||
ldr r2, [r0]
|
||||
ldr r0, [r2, 0x8]
|
||||
cmp r0, r1
|
||||
bne _0800F128
|
||||
_0800F11E:
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
b _0800F136
|
||||
.align 2, 0
|
||||
_0800F124: .4byte gUnknown_203B0D4
|
||||
_0800F128:
|
||||
ldr r0, [r2, 0xC]
|
||||
cmp r0, 0
|
||||
bne _0800F132
|
||||
movs r0, 0x1
|
||||
b _0800F136
|
||||
_0800F132:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0800F136:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_800F0F4
|
||||
|
||||
thumb_func_start sub_800F13C
|
||||
sub_800F13C:
|
||||
push {lr}
|
||||
ldr r1, _0800F158
|
||||
ldr r3, [r1]
|
||||
lsls r1, r0, 3
|
||||
adds r0, r3, 0x4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0800F154
|
||||
adds r1, r3, r1
|
||||
ldr r0, [r2, 0x4]
|
||||
str r0, [r1]
|
||||
_0800F154:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800F158: .4byte gUnknown_203B0D4
|
||||
thumb_func_end sub_800F13C
|
||||
|
||||
thumb_func_start sub_800F15C
|
||||
sub_800F15C:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
movs r3, 0
|
||||
ldr r5, _0800F17C
|
||||
_0800F164:
|
||||
ldr r1, [r5]
|
||||
lsls r2, r3, 3
|
||||
adds r0, r1, r2
|
||||
ldr r0, [r0]
|
||||
cmp r0, r4
|
||||
bne _0800F180
|
||||
adds r1, 0x4
|
||||
adds r1, r2
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x1
|
||||
str r0, [r1]
|
||||
b _0800F186
|
||||
.align 2, 0
|
||||
_0800F17C: .4byte gUnknown_203B0D4
|
||||
_0800F180:
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x1
|
||||
ble _0800F164
|
||||
_0800F186:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_800F15C
|
||||
|
||||
thumb_func_start sub_800F18C
|
||||
sub_800F18C:
|
||||
ldr r1, _0800F198
|
||||
lsls r0, 3
|
||||
ldr r1, [r1]
|
||||
adds r1, r0
|
||||
adds r0, r1, 0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0800F198: .4byte gUnknown_203B0D4
|
||||
thumb_func_end sub_800F18C
|
||||
|
||||
thumb_func_start sub_800F19C
|
||||
sub_800F19C:
|
||||
push {lr}
|
||||
ldr r1, _0800F1B4
|
||||
ldr r1, [r1]
|
||||
lsls r0, 3
|
||||
adds r1, 0x4
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _0800F1B8
|
||||
movs r0, 0x1
|
||||
b _0800F1BA
|
||||
.align 2, 0
|
||||
_0800F1B4: .4byte gUnknown_203B0D4
|
||||
_0800F1B8:
|
||||
movs r0, 0
|
||||
_0800F1BA:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_800F19C
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ struct unkStruct_203B0CC_sub
|
|||
s32 unk24;
|
||||
u8 fill28[0x32 - 0x28];
|
||||
u32 unk34;
|
||||
u32 unk38;
|
||||
u32 effectID;
|
||||
u8 fill3C[0x4C - 0x3C];
|
||||
u32 unk4C;
|
||||
s32 unk50;
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ EWRAM_INIT struct unkStruct_203B0CC *gUnknown_203B0CC = NULL;
|
|||
|
||||
struct unkStruct_800F18C
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
s32 effectID;
|
||||
u32 counter;
|
||||
};
|
||||
|
||||
extern s32 sub_800E2C0(u32);
|
||||
|
|
@ -144,16 +144,16 @@ void sub_800DC14(s32 param_1)
|
|||
if (preload->unk34 == 3) {
|
||||
for (index2 = 0; index2 < 2; index2 = index2 + 1) {
|
||||
piVar3 = sub_800F18C(index2);
|
||||
if (piVar3->unk0 == preload->unk38) {
|
||||
piVar3->unk4--;
|
||||
if (piVar3->effectID == preload->effectID) {
|
||||
piVar3->counter--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
puVar4 = sub_800F18C(1);
|
||||
puVar4->unk4 = 0;
|
||||
puVar4->unk0 = 0xffffffff;
|
||||
puVar4->counter = 0;
|
||||
puVar4->effectID = -1;
|
||||
}
|
||||
sub_800DCA8(preload);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
#include "global.h"
|
||||
#include "code_800F958.h"
|
||||
#include "code_8004AA0.h"
|
||||
#include "code_8009804.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_801EE10.h"
|
||||
#include "cpu.h"
|
||||
#include "dungeon_pokemon_sprites.h"
|
||||
#include "memory.h"
|
||||
|
|
@ -26,9 +29,22 @@ struct StatusSprite
|
|||
};
|
||||
extern struct StatusSprite gStatusSprites[8];
|
||||
|
||||
struct unkStruct_800F18C
|
||||
{
|
||||
s32 effectID;
|
||||
u32 counter;
|
||||
};
|
||||
|
||||
struct unkStruct_203B0D4
|
||||
{
|
||||
struct unkStruct_800F18C unk0[2];
|
||||
};
|
||||
|
||||
struct unkStruct_203B0D4 *gUnknown_203B0D4;
|
||||
extern SpriteOAM gUnknown_203B0DC;
|
||||
|
||||
extern u8 *gStatusGraphics4bpp[]; // TODO use INCBIN_U8
|
||||
extern DungeonPos gUnknown_80D3564;
|
||||
extern SpriteOAM gUnknown_203B0DC;
|
||||
|
||||
void DrawStatusSprite(s16 param_1,s32 status,DungeonPos *pos,DungeonPos *posOffset,
|
||||
DungeonPos *posScreen,u32 priority, u32 unused);
|
||||
|
|
@ -38,6 +54,97 @@ extern u8 gUnknown_80CE788[];
|
|||
|
||||
extern struct FileArchive gEffectFileArchive;
|
||||
|
||||
void sub_800F034(void) {
|
||||
s32 index;
|
||||
if(gUnknown_203B0D4 == NULL)
|
||||
{
|
||||
gUnknown_203B0D4 = MemoryAlloc(sizeof(struct unkStruct_203B0D4), 0xB);
|
||||
MemoryClear8(gUnknown_203B0D4, sizeof(struct unkStruct_203B0D4));
|
||||
}
|
||||
for(index = 0; index < 2; index++)
|
||||
{
|
||||
gUnknown_203B0D4->unk0[index].effectID = -1;
|
||||
gUnknown_203B0D4->unk0[index].counter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800F078(void)
|
||||
{
|
||||
if(gUnknown_203B0D4)
|
||||
{
|
||||
MemoryFree(gUnknown_203B0D4);
|
||||
gUnknown_203B0D4 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800F094(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < 2; index++)
|
||||
{
|
||||
gUnknown_203B0D4->unk0[index].effectID = -1;
|
||||
gUnknown_203B0D4->unk0[index].counter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_800F0C0(s32 animType, s32 effectID)
|
||||
{
|
||||
if (animType == 3) {
|
||||
if (gUnknown_203B0D4->unk0[0].effectID == effectID) return 0;
|
||||
}
|
||||
else {
|
||||
if (gUnknown_203B0D4->unk0[1].effectID == effectID) return 1;
|
||||
}
|
||||
return -3;
|
||||
}
|
||||
|
||||
|
||||
s32 sub_800F0F4(s32 animType, s32 effectID)
|
||||
{
|
||||
if (animType == 3) {
|
||||
if (gUnknown_203B0D4->unk0[0].effectID == effectID) return -2;
|
||||
if (gUnknown_203B0D4->unk0[0].counter == 0) return 0;
|
||||
}
|
||||
else {
|
||||
if (gUnknown_203B0D4->unk0[1].effectID == effectID) return -2;
|
||||
if (gUnknown_203B0D4->unk0[1].counter == 0) return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2)
|
||||
{
|
||||
if(gUnknown_203B0D4->unk0[index].counter == 0)
|
||||
gUnknown_203B0D4->unk0[index].effectID = r2->effectId;
|
||||
}
|
||||
|
||||
void sub_800F15C(s32 effectID)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < 2; index++)
|
||||
{
|
||||
if(gUnknown_203B0D4->unk0[index].effectID == effectID)
|
||||
{
|
||||
gUnknown_203B0D4->unk0[index].counter++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct unkStruct_800F18C *sub_800F18C(s32 index)
|
||||
{
|
||||
return &gUnknown_203B0D4->unk0[index];
|
||||
}
|
||||
|
||||
s32 sub_800F19C(s32 index)
|
||||
{
|
||||
if(gUnknown_203B0D4->unk0[index].counter == 0)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
OpenedFile * sub_800F1C0(u32 animType, s32 effectID)
|
||||
{
|
||||
u8 fileName [8];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user