more decomp of effect funcs

This commit is contained in:
Seth Barberee 2025-01-04 08:51:23 -08:00
parent 4eb269b480
commit 34e5bfadf6
4 changed files with 115 additions and 250 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);
}

View File

@ -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];