mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
commit
935b54a85f
1444
asm/code_800DAC0.s
1444
asm/code_800DAC0.s
File diff suppressed because it is too large
Load Diff
23
data/data_80B9BB0.s
Normal file
23
data/data_80B9BB0.s
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.section .rodata
|
||||
|
||||
.align 2,0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "MultiSio010918\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,33 +0,0 @@
|
|||
#ifndef GUARD_CODE_800DAC0_H
|
||||
#define GUARD_CODE_800DAC0_H
|
||||
|
||||
#include "structs/sprite_oam.h"
|
||||
#include "structs/str_position.h"
|
||||
#include "code_800E9A8.h"
|
||||
|
||||
typedef struct unkStruct_80416E0
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 dir;
|
||||
u16 x;
|
||||
u16 y;
|
||||
u16 unk10;
|
||||
u16 unk12;
|
||||
s32 unk14;
|
||||
u32 unk18;
|
||||
unkStruct_2039DB0 unk1C;
|
||||
} unkStruct_80416E0;
|
||||
|
||||
u32 sub_800E890(unkStruct_80416E0 *);
|
||||
|
||||
void sub_800DC14(s32);
|
||||
bool8 sub_800E9A8(s32);
|
||||
void sub_800DAC0(u32);
|
||||
void sub_800DB7C(void);
|
||||
void sub_800DBBC(void);
|
||||
bool8 sub_800E90C(DungeonPos *);
|
||||
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4);
|
||||
|
||||
|
||||
#endif // GUARD_CODE_800DAC0_H
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
#ifndef GUARD_CODE_800E9A8_H
|
||||
#define GUARD_CODE_800E9A8_H
|
||||
|
||||
#include "structs/axdata.h"
|
||||
#include "structs/sprite_oam.h"
|
||||
#include "structs/str_position.h"
|
||||
#include "structs/str_file_system.h"
|
||||
|
||||
struct unkStruct_203B0CC_sub
|
||||
{
|
||||
// size: 0xD0
|
||||
u32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
DungeonPos unk18;
|
||||
DungeonPos unk1c;
|
||||
s32 unk20;
|
||||
s32 unk24;
|
||||
unkStruct_2039DB0 spriteMasks;
|
||||
u32 unk34;
|
||||
u32 effectID;
|
||||
s32 paletteNum;
|
||||
u8 fill40[0x4C - 0x40];
|
||||
u32 unk4C;
|
||||
s32 unk50;
|
||||
u8 unk54;
|
||||
u8 fill55[0x58 - 0x55];
|
||||
axObject unk58;
|
||||
u8 fillA4[0xB8 - 0xA4];
|
||||
OpenedFile *unkB8;
|
||||
u8 fillBC[0xCC - 0xBC];
|
||||
s16 unkCC[2]; // NOTE: might be DungeonPos
|
||||
};
|
||||
|
||||
struct unkStruct_203B0CC
|
||||
{
|
||||
// size: 0x1A18
|
||||
struct unkStruct_203B0CC_sub unk0[0x20];
|
||||
u32 unk1A00;
|
||||
/* 0x1A04 */ u32 fileSelection;
|
||||
u32 unk1A08;
|
||||
u32 unk1A0C;
|
||||
u32 unk1A10;
|
||||
u8 fill1A14[0x1A18 - 0x1A14];
|
||||
};
|
||||
|
||||
bool8 sub_800E9A8(s32 a0);
|
||||
bool8 sub_800E9E4(u32);
|
||||
bool8 sub_800E9FC(u8 a0);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
#ifndef GUARD_CODE_800E9E4_H
|
||||
#define GUARD_CODE_800E9E4_H
|
||||
|
||||
typedef struct unkStruct_80B9CC4
|
||||
{
|
||||
// size: 0x24
|
||||
u32 animType;
|
||||
s32 effectId;
|
||||
s32 unk8;
|
||||
s32 animId;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
s8 unk18;
|
||||
// padding: 3 bytes
|
||||
s32 unk1c;
|
||||
s8 unk20;
|
||||
s8 loop;
|
||||
// padding: 2 bytes
|
||||
} unkStruct_80B9CC4;
|
||||
|
||||
typedef struct unkStruct_80BDBC4
|
||||
{
|
||||
// size: 0x24
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 fillA[0x0c - 0x0a];
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
u8 fill14[0x1c - 0x14];
|
||||
s32 unk1C;
|
||||
s32 unk20;
|
||||
} unkStruct_80BDBC4;
|
||||
|
||||
u8 sub_800EC74(void);
|
||||
unkStruct_80B9CC4 *sub_800ECA4(s32);
|
||||
unkStruct_80BDBC4 *sub_800ECB8(u16);
|
||||
s16 sub_800ECE4(u8);
|
||||
s16 sub_800ECF8(u8);
|
||||
s16 sub_800ED0C(u8);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#ifndef GUARD_CODE_800ED38_H
|
||||
#define GUARD_CODE_800ED38_H
|
||||
|
||||
void sub_800EE5C(s32 r0);
|
||||
void sub_800EF64(void);
|
||||
|
||||
#endif // GUARD_CODE_800ED38_H
|
||||
9
include/effect_anim_file.h
Normal file
9
include/effect_anim_file.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef GUARD_EFFECT_ANIM_FILE_H
|
||||
#define GUARD_EFFECT_ANIM_FILE_H
|
||||
|
||||
#include "structs/str_file_system.h"
|
||||
|
||||
OpenedFile *OpenEffectFile(u32 animType, s32 effectID);
|
||||
void CloseEffectFile(OpenedFile *file);
|
||||
|
||||
#endif // GUARD_EFFECT_ANIM_FILE_H
|
||||
55
include/effect_data.h
Normal file
55
include/effect_data.h
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
#ifndef GUARD_EFFECT_DATA_H
|
||||
#define GUARD_EFFECT_DATA_H
|
||||
|
||||
typedef struct unkStruct_80B9CC4
|
||||
{
|
||||
// size: 0x24
|
||||
u32 animType;
|
||||
s32 effectId;
|
||||
s32 unk8;
|
||||
s32 animId;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
u8 unk18;
|
||||
// padding: 3 bytes
|
||||
s32 unk1c;
|
||||
s8 unk20;
|
||||
s8 loop;
|
||||
// padding: 2 bytes
|
||||
} unkStruct_80B9CC4;
|
||||
|
||||
typedef struct unkStruct_80BDBC4
|
||||
{
|
||||
// size: 0x24
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
s32 unk18;
|
||||
s32 unk1C; // Amount of gUnknown_80C183C entries to scan
|
||||
s32 unk20; // Index into gUnknown_80C183C
|
||||
} unkStruct_80BDBC4;
|
||||
|
||||
typedef struct unkStruct_80C183C
|
||||
{
|
||||
// size: 0xc
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
} unkStruct_80C183C;
|
||||
|
||||
const unkStruct_80B9CC4 *sub_800ECA4(s32 param_1);
|
||||
const unkStruct_80BDBC4 *sub_800ECB8(u16 param_1);
|
||||
const unkStruct_80C183C *sub_800ECD0(s32 param_1);
|
||||
s16 sub_800ECE4(u8 param_1);
|
||||
s16 sub_800ECF8(u8 param_1);
|
||||
s16 sub_800ED0C(u8 param_1);
|
||||
s32 sub_800ED20(u16 param_1);
|
||||
|
||||
#endif
|
||||
68
include/effect_main.h
Normal file
68
include/effect_main.h
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#ifndef GUARD_EFFECT_MAIN_H
|
||||
#define GUARD_EFFECT_MAIN_H
|
||||
|
||||
#include "structs/sprite_oam.h"
|
||||
#include "structs/str_position.h"
|
||||
#include "effect_data.h"
|
||||
|
||||
typedef struct unkStruct_80416E0
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 dir;
|
||||
DungeonPos pos1;
|
||||
DungeonPos pos2;
|
||||
s32 unk14;
|
||||
u32 unk18;
|
||||
unkStruct_2039DB0 spriteMasks;
|
||||
} unkStruct_80416E0;
|
||||
|
||||
typedef struct unkStruct_800EA44
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
} unkStruct_800EA44;
|
||||
|
||||
struct UnkStruct_8040094
|
||||
{
|
||||
u16 unk0;
|
||||
s16 unk2;
|
||||
DungeonPos unk4;
|
||||
DungeonPos unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
};
|
||||
|
||||
void sub_800DAC0(u32 fileSelection);
|
||||
void sub_800DB7C(void);
|
||||
void sub_800DBBC(void);
|
||||
void sub_800DC14(s32 param_1);
|
||||
s32 sub_800DC9C(s32 a0);
|
||||
s32 sub_800E308(struct UnkStruct_8040094 *a0, DungeonPos *a1);
|
||||
void sub_800E3AC(s32 a0, DungeonPos *pos, s32 a2);
|
||||
s32 sub_800E448(u8 a0, DungeonPos *pos);
|
||||
s32 sub_800E49C(u8 a0, DungeonPos *pos, DungeonPos posArray[4], bool8 a3, s32 a4);
|
||||
s32 sub_800E52C(struct UnkStruct_8040094 *a0);
|
||||
s32 sub_800E6D8(s32 a0);
|
||||
s32 sub_800E700(s32 a0);
|
||||
s32 sub_800E710(s32 a0_, s32 a1);
|
||||
s32 sub_800E790(s32 a0_, s32 a1);
|
||||
bool8 sub_800E7D0(u16 *param_1);
|
||||
bool8 sub_800E838(u16 *param_1, s32 param_2);
|
||||
s32 sub_800E890(unkStruct_80416E0 *param_1);
|
||||
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4);
|
||||
bool8 sub_800E90C(DungeonPos *param_1);
|
||||
void sub_800E970(void);
|
||||
bool8 sub_800E9A8(s32 a0);
|
||||
bool8 sub_800E9E4(u32 param_1);
|
||||
bool8 sub_800E9FC(u8 a0);
|
||||
u8 sub_800EA44(unkStruct_800EA44 param_1, s32 param_2);
|
||||
s32 sub_800EA84(struct UnkStruct_8040094 *a0);
|
||||
void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3, s32 r5, s32 r4);
|
||||
s32 sub_800EBC8(struct UnkStruct_8040094 *a0);
|
||||
u8 sub_800EC74(void);
|
||||
u8 sub_800EC84(s32 param_1);
|
||||
u8 sub_800EC94(s32 param_1);
|
||||
|
||||
|
||||
#endif // GUARD_EFFECT_MAIN_H
|
||||
16
include/effect_sub_1.h
Normal file
16
include/effect_sub_1.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef GUARD_EFFECT_SUB_1_H
|
||||
#define GUARD_EFFECT_SUB_1_H
|
||||
|
||||
void sub_800ED38(s32 r0);
|
||||
void sub_800ED64(void);
|
||||
void sub_800ED80(void);
|
||||
void sub_800EE5C(s32 r0);
|
||||
void sub_800EEC8(u16 r0);
|
||||
void sub_800EEE0(u16 r0);
|
||||
void sub_800EEF8(u16 r0);
|
||||
void sub_800EF10(u16 r0);
|
||||
void sub_800EF28(u8 r0);
|
||||
void sub_800EF40(u8 r0, bool8 r1);
|
||||
void sub_800EF64(void);
|
||||
|
||||
#endif // GUARD_EFFECT_SUB_1_H
|
||||
16
include/effect_sub_2.h
Normal file
16
include/effect_sub_2.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef GUARD_EFFECT_SUB_2_H
|
||||
#define GUARD_EFFECT_SUB_2_H
|
||||
|
||||
#include "structs/str_file_system.h"
|
||||
#include "effect_data.h"
|
||||
|
||||
void sub_800F034(void);
|
||||
void sub_800F078(void);
|
||||
void sub_800F094(void);
|
||||
s32 sub_800F0F4(s32 animType, s32 effectID);
|
||||
void sub_800F13C(s32 index, OpenedFile *file, const unkStruct_80B9CC4 *r2);
|
||||
void sub_800F15C(s32 effectID);
|
||||
struct unkStruct_800F18C *sub_800F18C(s32 index);
|
||||
s32 sub_800F19C(s32 index);
|
||||
|
||||
#endif // GUARD_EFFECT_SUB_2_H
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
#define GUARD_GRAPHICS_MEMORY_H
|
||||
|
||||
#include "structs/axdata.h"
|
||||
#include "structs/str_8009A7C.h"
|
||||
|
||||
extern RGB gFontPalette[128];
|
||||
|
||||
|
|
@ -20,5 +21,6 @@ void ScheduleBgTilemapCopy(u32);
|
|||
void DoScheduledMemCopies(void);
|
||||
void CopyBgTilemaps0And1(void);
|
||||
void SetFontsBaseColor(RGB);
|
||||
bool8 sub_8009A7C(struct Struct_8009A7C *a0, s32 a1, s32 a2, s32 a3, bool8 a4, s32 *a5, s16 *a6);
|
||||
|
||||
#endif // GUARD_GRAPHICS_MEMORY_H
|
||||
|
|
|
|||
|
|
@ -57,4 +57,17 @@ void sub_800569C(DungeonPos *, axdata *, u8);
|
|||
void sub_8005700(DungeonPos *dstPos, axdata *axData);
|
||||
void sub_8005770(s32, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
|
||||
static inline bool8 AxFlag8000(axdata *ax)
|
||||
{
|
||||
return (ax->flags & 0x8000) != 0;
|
||||
}
|
||||
|
||||
static inline bool8 AxFlag8000_Not2000(axdata *ax)
|
||||
{
|
||||
if (ax->flags & 0x2000)
|
||||
return FALSE;
|
||||
else
|
||||
return (ax->flags & 0x8000) != 0;
|
||||
}
|
||||
|
||||
#endif // GUARD_SPRITE_H
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
#ifndef GUARD_STRUCTS_CODE_800E9E4_H
|
||||
#define GUARD_STRUCTS_CODE_800E9E4_H
|
||||
|
||||
typedef struct unkStruct_80B9C60
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk1;
|
||||
s32 unk2;
|
||||
} unkStruct_80B9C60;
|
||||
|
||||
typedef struct unkStruct_80CE37C
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
} unkStruct_80CE37C;
|
||||
|
||||
typedef struct unkStruct_80C183C
|
||||
{
|
||||
// size: 0xc
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
u8 fill4[0xc - 0x4];
|
||||
} unkStruct_80C183C;
|
||||
|
||||
typedef struct unkStruct_800EA44
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
} unkStruct_800EA44;
|
||||
|
||||
typedef struct unkStruct_800E208
|
||||
{
|
||||
s32 unk00[7];
|
||||
unkStruct_80B9C60 unk1c;
|
||||
} unkStruct_800E208;
|
||||
|
||||
#endif
|
||||
|
|
@ -13,6 +13,8 @@ typedef struct unkStruct_2039DB0
|
|||
u16 unkA; // SpriteOAM attrib3 value
|
||||
} unkStruct_2039DB0;
|
||||
|
||||
#define DEFAULT_UNK_2039DB0_MASKS (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0}
|
||||
|
||||
// size: 0x8. Similar to struct OamData but unk6 is not copied to OAM
|
||||
typedef struct SpriteOAM
|
||||
{
|
||||
|
|
|
|||
11
include/structs/str_8009A7C.h
Normal file
11
include/structs/str_8009A7C.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef GUARD_STR_8009A7C_H
|
||||
#define GUARD_STR_8009A7C_H
|
||||
|
||||
struct Struct_8009A7C
|
||||
{
|
||||
s32 unk0;
|
||||
u16 **unk4;
|
||||
u8 fill8[0x14-0x8];
|
||||
};
|
||||
|
||||
#endif // GUARD_STR_8009A7C_H
|
||||
19
ld_script.ld
19
ld_script.ld
|
|
@ -82,12 +82,11 @@ SECTIONS {
|
|||
src/flash.o(.text);
|
||||
src/code_800D090.o(.text);
|
||||
src/code_800D090_1.o(.text);
|
||||
src/code_800DAC0.o(.text);
|
||||
asm/code_800DAC0.o(.text);
|
||||
src/code_800E9A8.o(.text);
|
||||
src/code_800E9E4.o(.text);
|
||||
src/code_800ED38.o(.text);
|
||||
src/code_800F034.o(.text);
|
||||
src/effect_main.o(.text);
|
||||
src/effect_data.o(.text);
|
||||
src/effect_sub_1.o(.text);
|
||||
src/effect_sub_2.o(.text);
|
||||
src/effect_anim_file.o(.text);
|
||||
src/dungeon_pokemon_sprites.o(.text);
|
||||
src/friend_areas_map.o(.text);
|
||||
src/world_map.o(.text);
|
||||
|
|
@ -454,8 +453,12 @@ SECTIONS {
|
|||
data/pksdir_8.o(.rodata);
|
||||
src/main.o(.rodata);
|
||||
src/reg_control.o(.rodata);
|
||||
data/data_80B9BB8_2.o(.rodata);
|
||||
src/code_800F034.o(.rodata);
|
||||
data/data_80B9BB0.o(.rodata);
|
||||
src/effect_main.o(.rodata)
|
||||
src/effect_data.o(.rodata)
|
||||
src/effect_sub_1.o(.rodata)
|
||||
src/effect_sub_2.o(.rodata);
|
||||
src/effect_anim_file.o(.rodata);
|
||||
src/dungeon_pokemon_sprites.o(.rodata);
|
||||
src/friend_areas_map.o(.rodata);
|
||||
src/world_map.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -1,190 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "structs/axdata.h"
|
||||
#include "bg_control.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "music_util.h"
|
||||
#include "code_803E724.h"
|
||||
#include "def_filearchives.h"
|
||||
#include "dungeon_map.h"
|
||||
#include "file_system.h"
|
||||
#include "main_loops.h"
|
||||
#include "memory.h"
|
||||
#include "sprite.h"
|
||||
|
||||
EWRAM_INIT struct unkStruct_203B0CC *gUnknown_203B0CC = NULL;
|
||||
|
||||
struct unkStruct_800F18C
|
||||
{
|
||||
s32 effectID;
|
||||
u32 counter;
|
||||
};
|
||||
|
||||
extern s32 sub_800E2C0(u32);
|
||||
extern u32 sub_800E900(void);
|
||||
extern void sub_8009BE4(void);
|
||||
extern void sub_800F204(OpenedFile *file);
|
||||
extern struct unkStruct_800F18C *sub_800F18C(s32);
|
||||
extern void sub_800DCA8(struct unkStruct_203B0CC_sub *);
|
||||
|
||||
extern u8 gefob000_string[];
|
||||
extern u8 gefob001_string[];
|
||||
|
||||
extern void sub_800F034(void);
|
||||
extern void sub_800ED38(u32);
|
||||
extern void sub_800F078();
|
||||
extern void sub_800ED64();
|
||||
extern void sub_800ED80();
|
||||
extern void sub_800F094();
|
||||
|
||||
void sub_800DAC0(u32 fileSelection)
|
||||
{
|
||||
s32 index;
|
||||
OpenedFile *filePtr;
|
||||
struct unkStruct_203B0CC_sub *preload;
|
||||
|
||||
if (gUnknown_203B0CC != NULL) {
|
||||
sub_800DB7C();
|
||||
}
|
||||
gUnknown_203B0CC = MemoryAlloc(sizeof(struct unkStruct_203B0CC), 0xb);
|
||||
MemoryClear8(gUnknown_203B0CC, sizeof(struct unkStruct_203B0CC));
|
||||
gUnknown_203B0CC->fileSelection = fileSelection;
|
||||
for(index = 0, preload = &gUnknown_203B0CC->unk0[index]; index < 0x20; index++, preload++)
|
||||
{
|
||||
preload->unk4 = -1;
|
||||
}
|
||||
sub_800ED38(fileSelection);
|
||||
sub_800F034();
|
||||
|
||||
switch(gUnknown_203B0CC->fileSelection)
|
||||
{
|
||||
case 1:
|
||||
filePtr = Call_OpenFileAndGetFileDataPtr(gefob001_string, &gEffectFileArchive);
|
||||
if (filePtr != NULL) {
|
||||
sub_8005610(filePtr,0x248,0x1f,0);
|
||||
CloseFile(filePtr);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
filePtr = Call_OpenFileAndGetFileDataPtr(gefob000_string, &gEffectFileArchive);
|
||||
if (filePtr != NULL) {
|
||||
sub_8005610(filePtr,0x248,0x1f,0);
|
||||
CloseFile(filePtr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800DB7C(void)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_203B0CC_sub *preload;
|
||||
|
||||
for(index = 0, preload = &gUnknown_203B0CC->unk0[index]; index < 0x20; index++, preload++)
|
||||
{
|
||||
if(preload->unk4 != -1)
|
||||
sub_800DC14(preload->unk4);
|
||||
}
|
||||
|
||||
|
||||
sub_800F078();
|
||||
sub_800ED64();
|
||||
if(gUnknown_203B0CC != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B0CC);
|
||||
gUnknown_203B0CC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800DBBC(void)
|
||||
{
|
||||
s32 index1;
|
||||
s32 index2;
|
||||
struct unkStruct_203B0CC_sub *preload;
|
||||
struct unkStruct_203B0CC_sub *preload2;
|
||||
|
||||
for(index1 = 0, preload = &gUnknown_203B0CC->unk0[index1]; index1 < 0x20; index1++, preload++)
|
||||
{
|
||||
if(preload->unk4 != -1)
|
||||
sub_800DC14(preload->unk4);
|
||||
}
|
||||
|
||||
|
||||
for(index2 = 0, preload2 = &gUnknown_203B0CC->unk0[index2]; index2 < 0x20; index2++, preload2++)
|
||||
{
|
||||
preload2->unk4 = -1;
|
||||
}
|
||||
sub_800ED80();
|
||||
sub_800F094();
|
||||
}
|
||||
|
||||
bool8 sub_800DCC0(void)
|
||||
{
|
||||
return gUnknown_203B0CC != NULL;
|
||||
}
|
||||
|
||||
void sub_800DC14(s32 param_1)
|
||||
{
|
||||
s32 index1;
|
||||
s32 index2;
|
||||
struct unkStruct_800F18C *piVar3;
|
||||
struct unkStruct_800F18C *puVar4;
|
||||
struct unkStruct_203B0CC_sub *preload;
|
||||
|
||||
index1 = sub_800E2C0(param_1);
|
||||
if (index1 != -1) {
|
||||
preload = &gUnknown_203B0CC->unk0[index1];
|
||||
if (preload->unk34 == 4) {
|
||||
sub_8009BE4();
|
||||
if (sub_8000728() == 1) {
|
||||
LoadDungeonMapPalette();
|
||||
sub_803EAF0(0, NULL);
|
||||
sub_800CD64(0x8000,0);
|
||||
}
|
||||
}
|
||||
if (preload->unk34 == 3) {
|
||||
for (index2 = 0; index2 < 2; index2 = index2 + 1) {
|
||||
piVar3 = sub_800F18C(index2);
|
||||
if (piVar3->effectID == preload->effectID) {
|
||||
piVar3->counter--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
puVar4 = sub_800F18C(1);
|
||||
puVar4->counter = 0;
|
||||
puVar4->effectID = -1;
|
||||
}
|
||||
sub_800DCA8(preload);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_800DC9C(void) {
|
||||
return sub_800E900();
|
||||
}
|
||||
|
||||
void sub_800DCA8(struct unkStruct_203B0CC_sub *param_1)
|
||||
{
|
||||
param_1->unk4 = -1;
|
||||
param_1->unk54 = 0;
|
||||
if(param_1->unkB8 != NULL)
|
||||
{
|
||||
sub_800F204(param_1->unkB8);
|
||||
param_1->unkB8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800DCD0(struct unkStruct_203B0CC_sub *param_1)
|
||||
{
|
||||
if ((param_1->unk4C != -1) && (param_1->unk50 == 0)) {
|
||||
if (sub_8000728() != 2) {
|
||||
PlaySound(param_1->unk4C);
|
||||
}
|
||||
param_1->unk4C = -1;
|
||||
param_1->unk50 = -1;
|
||||
}
|
||||
if (param_1->unk50 > 0) {
|
||||
param_1->unk50--;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,179 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "structs/code_800E9E4.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
s32 sub_800E2C0(u32);
|
||||
|
||||
extern struct unkStruct_203B0CC *gUnknown_203B0CC;
|
||||
|
||||
void sub_800DE38(struct unkStruct_203B0CC_sub *);
|
||||
void sub_800DE8C(struct unkStruct_203B0CC_sub *, DungeonPos *);
|
||||
void sub_800DD0C(struct unkStruct_203B0CC_sub *, DungeonPos *);
|
||||
void sub_800DCD0(struct unkStruct_203B0CC_sub *);
|
||||
|
||||
s32 sub_800E900(s32 r0);
|
||||
s32 sub_800E208(s32, unkStruct_800E208*);
|
||||
|
||||
bool8 sub_800E7D0(u16 *param_1)
|
||||
{
|
||||
int local_1c [4];
|
||||
bool8 flag;
|
||||
s32 index;
|
||||
|
||||
flag = FALSE;
|
||||
local_1c[0] = sub_800ECB8(*param_1)->unk0;
|
||||
local_1c[1] = sub_800ECB8(*param_1)->unk2;
|
||||
local_1c[2] = sub_800ECB8(*param_1)->unk4;
|
||||
local_1c[3] = sub_800ECB8(*param_1)->unk6;
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
flag = (sub_800ECA4(local_1c[index])->animType == 4);
|
||||
if(flag) break;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
bool8 sub_800E838(u16 *param_1, s32 param_2)
|
||||
{
|
||||
s32 local_1c [4];
|
||||
|
||||
local_1c[0] = sub_800ECB8(*param_1)->unk0;
|
||||
local_1c[1] = sub_800ECB8(*param_1)->unk2;
|
||||
local_1c[2] = sub_800ECB8(*param_1)->unk4;
|
||||
local_1c[3] = sub_800ECB8(*param_1)->unk6;
|
||||
return sub_800ECA4(local_1c[param_2])->animType == 4;
|
||||
}
|
||||
|
||||
// TODO: look at this later
|
||||
// https://decomp.me/scratch/luz2f
|
||||
u32 sub_800E890(unkStruct_80416E0 *param_1)
|
||||
{
|
||||
param_1->unk14 = sub_800E900(param_1->unk0);
|
||||
return sub_800E208(7, (void*)¶m_1->unk0);
|
||||
}
|
||||
|
||||
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_203B0CC_sub *ptr;
|
||||
|
||||
index = sub_800E2C0(a0);
|
||||
if(index != -1)
|
||||
{
|
||||
ptr = &gUnknown_203B0CC->unk0[index];
|
||||
|
||||
if(a1 != NULL) ptr->unk18 = *a1;
|
||||
if(a2 != NULL) ptr->unk1c = *a2;
|
||||
if(a3 != 0xFFFF) ptr->unk24 = a3;
|
||||
if(a4 != NULL) ptr->spriteMasks = *a4;
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_800E900(s32 r0)
|
||||
{
|
||||
return sub_800ECA4(r0)->unk1c;
|
||||
}
|
||||
|
||||
bool8 sub_800E90C(DungeonPos *param_1)
|
||||
{
|
||||
bool8 flag;
|
||||
s32 iVar1;
|
||||
struct unkStruct_203B0CC_sub *ptr;
|
||||
|
||||
flag = FALSE;
|
||||
|
||||
for(iVar1 = 0, ptr = &gUnknown_203B0CC->unk0[iVar1]; iVar1 < 0x20; iVar1++, ptr++)
|
||||
{
|
||||
if(ptr->unk4 != -1)
|
||||
{
|
||||
if(ptr->unk10 <= 0)
|
||||
{
|
||||
if(ptr->unk34 == 4)
|
||||
{
|
||||
sub_800DE8C(ptr, param_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_800DD0C(ptr, param_1);
|
||||
}
|
||||
|
||||
}
|
||||
if(ptr->unk10 > 0)
|
||||
ptr->unk10--;
|
||||
sub_800DCD0(ptr);
|
||||
if(ptr->unk54 == 0)
|
||||
flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
void sub_800E970(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
struct unkStruct_203B0CC_sub *ptr;
|
||||
|
||||
for(iVar1 = 0, ptr = &gUnknown_203B0CC->unk0[iVar1]; iVar1 < 0x20; iVar1++, ptr++)
|
||||
{
|
||||
if(ptr->unk4 != -1)
|
||||
if(ptr->unk10 <= 0)
|
||||
if(ptr->unk34 != 4)
|
||||
sub_800DE38(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_800E9A8(s32 a0)
|
||||
{
|
||||
s32 i;
|
||||
struct unkStruct_203B0CC_sub *ptr;
|
||||
|
||||
if (a0 == -1)
|
||||
return FALSE;
|
||||
|
||||
ptr = gUnknown_203B0CC->unk0;
|
||||
for (i = 0; i < 32; i++, ptr++) {
|
||||
if (ptr->unk4 == a0) {
|
||||
if (ptr->unk54 != 0)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_800E9E4(u32 param_1)
|
||||
{
|
||||
if(sub_800E2C0(param_1) != -1)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_800E9FC(u8 a0)
|
||||
{
|
||||
s32 i;
|
||||
struct unkStruct_203B0CC_sub *ptr;
|
||||
|
||||
|
||||
ptr = gUnknown_203B0CC->unk0;
|
||||
for (i = 0; i < 32; i++, ptr++) {
|
||||
if (ptr->unk4 != -1) {
|
||||
if(a0 != 0)
|
||||
return TRUE;
|
||||
if (ptr->unk54 == 0)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if(sub_800EC74())
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "structs/code_800E9E4.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800E9A8.h"
|
||||
|
||||
extern s32 sub_800E2C0(u32);
|
||||
u32 sub_800F19C(s32);
|
||||
s32 sub_800EBBC(s32);
|
||||
s32 sub_800EC68(s32);
|
||||
|
||||
extern struct unkStruct_203B0CC *gUnknown_203B0CC;
|
||||
|
||||
extern unkStruct_80B9C60 gUnknown_80B9C60;
|
||||
|
||||
extern s32 gUnknown_80B9C9C[8];
|
||||
extern s16 gUnknown_80CE73C[20];
|
||||
|
||||
extern unkStruct_80CE37C gUnknown_80CE37C[1];
|
||||
|
||||
extern unkStruct_80BDBC4 gUnknown_80BDBC4[430];
|
||||
extern unkStruct_80B9CC4 gUnknown_80B9CC4[448];
|
||||
|
||||
|
||||
extern unkStruct_80C183C gUnknown_80C183C[4336];
|
||||
unkStruct_80C183C *sub_800ECD0(s32 param_1);
|
||||
|
||||
|
||||
u8 sub_800EA44(unkStruct_800EA44 param_1, s32 param_2)
|
||||
{
|
||||
s32 a;
|
||||
unkStruct_80BDBC4 *ret;
|
||||
unkStruct_80C183C *unkStruct2;
|
||||
s32 i;
|
||||
|
||||
a = (s32) param_1.unk0;
|
||||
ret = sub_800ECB8(param_2);
|
||||
unkStruct2 = sub_800ECD0(ret->unk20);
|
||||
|
||||
for (i = 0; i < ret->unk1C; i++, unkStruct2++)
|
||||
{
|
||||
if (unkStruct2->unk0 == a)
|
||||
{
|
||||
return unkStruct2->unk2;
|
||||
}
|
||||
}
|
||||
|
||||
return ret->unk10;
|
||||
}
|
||||
|
||||
|
||||
s32 sub_800E208(s32, unkStruct_800E208*);
|
||||
|
||||
s32 sub_800EA84(s32 *param_1)
|
||||
{
|
||||
unkStruct_800E208 stack[2];
|
||||
unkStruct_80BDBC4 *ret1;
|
||||
u32 size;
|
||||
ret1 = sub_800ECB8(param_1[0]);
|
||||
|
||||
stack[1].unk00[0] = ret1->unk0;
|
||||
stack[1].unk00[1] = param_1[4];
|
||||
stack[1].unk00[2] = param_1[3];
|
||||
stack[1].unk00[3] = param_1[1];
|
||||
stack[1].unk00[4] = param_1[2];
|
||||
|
||||
ret1 = sub_800ECB8(param_1[0]);
|
||||
stack[1].unk00[5] = sub_800EBBC(ret1->unk0);
|
||||
stack[1].unk00[6] = 0x0000ffff;
|
||||
stack[1].unk1c = gUnknown_80B9C60;
|
||||
|
||||
size = sizeof(unkStruct_800E208);
|
||||
memcpy(&stack[0],&stack[1],size);
|
||||
return sub_800E208(5, &stack[0]);
|
||||
}
|
||||
|
||||
void sub_800EAE4(s32 param_1, DungeonPos *param_2, DungeonPos *param_3)
|
||||
{
|
||||
s32 idx = sub_800E2C0(param_1);
|
||||
if (idx != -1)
|
||||
{
|
||||
struct unkStruct_203B0CC_sub *a;
|
||||
a = &gUnknown_203B0CC->unk0[idx];
|
||||
a->unk18 = *param_2;
|
||||
if (a->unk20 != -1)
|
||||
{
|
||||
a->unk1c = *param_3;
|
||||
}
|
||||
else
|
||||
{
|
||||
a->unk1c.x = 0;
|
||||
a->unk1c.y = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3, s32 r5, s32 r4)
|
||||
{
|
||||
s32 idx = sub_800E2C0(param_1);
|
||||
if (idx != -1) {
|
||||
struct unkStruct_203B0CC_sub *curStruct;
|
||||
curStruct = &gUnknown_203B0CC->unk0[idx];
|
||||
if (curStruct->unkCC[0] == 0 && curStruct->unkCC[1] == 0) {
|
||||
curStruct->unk18 = *param_2;
|
||||
}
|
||||
|
||||
if (curStruct->unk0 == 6) {
|
||||
curStruct->unk24 = r5 + 1;
|
||||
}
|
||||
else if ((curStruct->unk8 & 0x7) == 0) {
|
||||
s32 newStruct[8];
|
||||
memcpy(newStruct, gUnknown_80B9C9C, sizeof(s32) * 8);
|
||||
curStruct->unk24 = r5 + newStruct[r4 & 7];
|
||||
}
|
||||
else {
|
||||
curStruct->unk24 = r5 + 1;
|
||||
}
|
||||
|
||||
if (curStruct->unk20 != -1) {
|
||||
curStruct->unk1c = *param_3;
|
||||
}
|
||||
else {
|
||||
curStruct->unk1c.x = 0;
|
||||
curStruct->unk1c.y = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_800EBBC(s32 param_1)
|
||||
{
|
||||
unkStruct_80B9CC4 *ret = sub_800ECA4(param_1);
|
||||
return ret->unk1c;
|
||||
}
|
||||
|
||||
s32 sub_800EBC8(s32 *param_1)
|
||||
{
|
||||
unkStruct_800E208 stack[2];
|
||||
unkStruct_80BDBC4 *ret1;
|
||||
u32 size;
|
||||
ret1 = sub_800ECB8(param_1[0]);
|
||||
|
||||
stack[1].unk00[0] = ret1->unk4;
|
||||
stack[1].unk00[1] = param_1[4];
|
||||
stack[1].unk00[2] = param_1[3];
|
||||
stack[1].unk00[3] = param_1[1];
|
||||
stack[1].unk00[4] = param_1[2];
|
||||
|
||||
ret1 = sub_800ECB8(param_1[0]);
|
||||
stack[1].unk00[5] = sub_800EC68(ret1->unk4);
|
||||
stack[1].unk00[6] = 0x0000ffff;
|
||||
stack[1].unk1c = gUnknown_80B9C60;
|
||||
|
||||
size = sizeof(unkStruct_800E208);
|
||||
memcpy(&stack[0],&stack[1],size);
|
||||
return sub_800E208(6, &stack[0]);
|
||||
}
|
||||
|
||||
void sub_800EC28(u32 param_1, DungeonPos *param_2, DungeonPos *param_3)
|
||||
{
|
||||
s32 idx;
|
||||
idx = sub_800E2C0(param_1);
|
||||
if (idx != -1)
|
||||
{
|
||||
struct unkStruct_203B0CC_sub *struct203B0CC;
|
||||
struct203B0CC = &gUnknown_203B0CC->unk0[idx];
|
||||
struct203B0CC->unk18 = *param_2;
|
||||
if (struct203B0CC->unk20 != -1)
|
||||
{
|
||||
struct203B0CC->unk1c = *param_3;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct203B0CC->unk1c.x = 0;
|
||||
struct203B0CC->unk1c.y = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_800EC68(s32 param_1)
|
||||
{
|
||||
unkStruct_80B9CC4 *ret = sub_800ECA4(param_1);
|
||||
return ret->unk1c;
|
||||
}
|
||||
|
||||
u8 sub_800EC74(void)
|
||||
{
|
||||
return sub_800F19C(1);
|
||||
}
|
||||
|
||||
u8 sub_800EC84(s32 param_1)
|
||||
{
|
||||
unkStruct_80BDBC4 *ret;
|
||||
ret = sub_800ECB8(param_1);
|
||||
return ret->unk8;
|
||||
}
|
||||
|
||||
u8 sub_800EC94(s32 param_1)
|
||||
{
|
||||
unkStruct_80BDBC4 *ret;
|
||||
ret = sub_800ECB8(param_1);
|
||||
return ret->unk9;
|
||||
}
|
||||
|
||||
unkStruct_80B9CC4 *sub_800ECA4(s32 param_1)
|
||||
{
|
||||
return &gUnknown_80B9CC4[param_1];
|
||||
}
|
||||
|
||||
unkStruct_80BDBC4 *sub_800ECB8(u16 param_1)
|
||||
{
|
||||
return &gUnknown_80BDBC4[param_1];
|
||||
}
|
||||
|
||||
unkStruct_80C183C *sub_800ECD0(s32 param_1)
|
||||
{
|
||||
return &gUnknown_80C183C[param_1];
|
||||
}
|
||||
|
||||
s16 sub_800ECE4(u8 param_1)
|
||||
{
|
||||
return gUnknown_80CE73C[param_1];
|
||||
}
|
||||
|
||||
s16 sub_800ECF8(u8 param_1)
|
||||
{
|
||||
return gUnknown_80CE37C[param_1].unk0;
|
||||
}
|
||||
|
||||
s16 sub_800ED0C(u8 param_1)
|
||||
{
|
||||
return gUnknown_80CE37C[param_1].unk2;
|
||||
}
|
||||
|
||||
s32 sub_800ED20(u16 param_1)
|
||||
{
|
||||
return gUnknown_80BDBC4[param_1].unkC;
|
||||
}
|
||||
|
|
@ -7,8 +7,8 @@
|
|||
#include "structs/str_dungeon.h"
|
||||
#include "code_800558C.h"
|
||||
#include "graphics_memory.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_data.h"
|
||||
#include "effect_sub_1.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_804267C.h"
|
||||
#include "dungeon_info.h"
|
||||
|
|
|
|||
|
|
@ -7,9 +7,8 @@
|
|||
#include "structs/sprite_oam.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "code_800558C.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_main.h"
|
||||
#include "effect_sub_1.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_803E724.h"
|
||||
#include "code_8041AD0.h"
|
||||
|
|
@ -30,7 +29,7 @@
|
|||
#include "memory.h"
|
||||
#include "random.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "effect_data.h"
|
||||
|
||||
// Unknown dungeon file. File split is correct.
|
||||
|
||||
|
|
@ -38,7 +37,6 @@ extern const u8 *gPtrFeralFoundItemMessage[];
|
|||
|
||||
extern void sub_803ED30(u8, Entity *pokemon, u8, u8);
|
||||
extern u32 sub_806F62C(u32);
|
||||
extern u32 sub_800DC9C(s32 a0);
|
||||
extern void PlaySoundEffect(u32);
|
||||
|
||||
void EntityUpdateStatusSprites(Entity *entity);
|
||||
|
|
@ -49,13 +47,11 @@ extern void sub_800DBBC(void);
|
|||
extern void sub_803EA10(void);
|
||||
extern void sub_8042E98(void);
|
||||
extern void sub_800EF28(u8);
|
||||
extern u32 sub_800E448(u8, DungeonPos *);
|
||||
extern void sub_80429A0(Entity *);
|
||||
void sub_8042B34(s32 a0, s32 a1, s32 a2);
|
||||
extern bool8 sub_8042CC0(void);
|
||||
extern void sub_8042D7C(void);
|
||||
extern bool8 sub_8045888(Entity *);
|
||||
extern u32 sub_800E49C();
|
||||
extern void sub_800F15C(s32);
|
||||
extern void sub_800EF40(u8 r0, u8 r1);
|
||||
extern s32 sub_800E6D8(s32);
|
||||
|
|
@ -246,14 +242,14 @@ s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5)
|
|||
sp.unk0 = a1;
|
||||
sp.unk4 = 0;
|
||||
sp.dir = -1;
|
||||
sp.x = pixelPos.x / 256;
|
||||
sp.y = pixelPos.y / 256;
|
||||
sp.pos1.x = pixelPos.x / 256;
|
||||
sp.pos1.y = pixelPos.y / 256;
|
||||
sp.unk14 = -1;
|
||||
sp.unk10 = 0;
|
||||
sp.unk12 = 0;
|
||||
sp.pos2.x = 0;
|
||||
sp.pos2.y = 0;
|
||||
sp.unk18 = var;
|
||||
|
||||
sub_8004E8C(&sp.unk1C);
|
||||
sub_8004E8C(&sp.spriteMasks);
|
||||
r4 = sub_8041764(&sp, FALSE);
|
||||
if (a2) {
|
||||
for (i = 0; i < 100; i++) {
|
||||
|
|
@ -286,14 +282,14 @@ s32 sub_80416E0(PixelPos *pos, u32 param_2, bool8 param_3)
|
|||
auStack_10.unk4 = 0;
|
||||
auStack_10.dir = -1;
|
||||
|
||||
auStack_10.x = pos->x / 256;
|
||||
auStack_10.y = pos->y / 256;
|
||||
auStack_10.pos1.x = pos->x / 256;
|
||||
auStack_10.pos1.y = pos->y / 256;
|
||||
|
||||
auStack_10.unk14 = -1;
|
||||
auStack_10.unk10 = 0;
|
||||
auStack_10.unk12 = 0;
|
||||
auStack_10.pos2.x = 0;
|
||||
auStack_10.pos2.y = 0;
|
||||
auStack_10.unk18 = 0xffff;
|
||||
sub_8004E8C(&auStack_10.unk1C);
|
||||
sub_8004E8C(&auStack_10.spriteMasks);
|
||||
ret = sub_8041764(&auStack_10, FALSE);
|
||||
if (param_3) {
|
||||
counter = 0;
|
||||
|
|
@ -1232,13 +1228,13 @@ s32 sub_8042520(Entity *a0)
|
|||
local_58.unk0 = 357;
|
||||
local_58.unk4 = 0;
|
||||
local_58.dir = dir;
|
||||
local_58.x = pos.x;
|
||||
local_58.y = pos.y;
|
||||
local_58.unk10 = 0;
|
||||
local_58.unk12 = 0;
|
||||
local_58.pos1.x = pos.x;
|
||||
local_58.pos1.y = pos.y;
|
||||
local_58.pos2.x = 0;
|
||||
local_58.pos2.y = 0;
|
||||
local_58.unk14 = -1;
|
||||
local_58.unk18 = iVar8;
|
||||
sub_8004E8C(&local_58.unk1C);
|
||||
sub_8004E8C(&local_58.spriteMasks);
|
||||
uVar4 = sub_8041764(&local_58, 0);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
|
|
@ -1556,7 +1552,7 @@ void sub_8042B20(Entity *entity)
|
|||
sub_8042A84(0x1BC, entity, 0xE);
|
||||
}
|
||||
|
||||
static const unkStruct_2039DB0 gUnknown_80F683C = {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0};
|
||||
static const unkStruct_2039DB0 gUnknown_80F683C = DEFAULT_UNK_2039DB0_MASKS;
|
||||
|
||||
void sub_8042B34(s32 a0, s32 a1, s32 a2)
|
||||
{
|
||||
|
|
@ -1578,19 +1574,19 @@ void sub_8042B34(s32 a0, s32 a1, s32 a2)
|
|||
spStruct.unk0 = gUnknown_80F6624[gUnknown_203B414->unk0][r8].unk0;
|
||||
spStruct.unk4 = i;
|
||||
spStruct.dir = 0;
|
||||
spStruct.x = leader->pixelPos.x / 256;
|
||||
spStruct.y = leader->pixelPos.y / 256;
|
||||
spStruct.pos1.x = leader->pixelPos.x / 256;
|
||||
spStruct.pos1.y = leader->pixelPos.y / 256;
|
||||
|
||||
rnd = RandInt(2);
|
||||
gUnknown_203B414->unk4C[i] = (gUnknown_80F6624[gUnknown_203B414->unk0][r8].unk4 * 2) + rnd;
|
||||
gUnknown_203B414->unk8C[i].x = RandInt(240) + 152;
|
||||
gUnknown_203B414->unk8C[i].y = RandInt(8 + (i * 2)) - (((i - (i / 4 * 4)) * 40) - 24);
|
||||
|
||||
spStruct.unk10 = gUnknown_203B414->unk8C[i].x;
|
||||
spStruct.unk12 = gUnknown_203B414->unk8C[i].y;
|
||||
spStruct.pos2.x = gUnknown_203B414->unk8C[i].x;
|
||||
spStruct.pos2.y = gUnknown_203B414->unk8C[i].y;
|
||||
spStruct.unk14 = 4;
|
||||
spStruct.unk18 = 0xFFFF;
|
||||
spStruct.unk1C = gUnknown_80F683C;
|
||||
spStruct.spriteMasks = gUnknown_80F683C;
|
||||
gUnknown_203B414->unkC[i] = sub_800E890(&spStruct);
|
||||
|
||||
r8++;
|
||||
|
|
|
|||
|
|
@ -45,14 +45,6 @@ extern s32 gDungeonFramesCounter;
|
|||
|
||||
extern void sub_8042EC8(Entity *a0, s32 a1);
|
||||
|
||||
static inline u16 GetUnkFlag(Entity *entity)
|
||||
{
|
||||
if ((entity->axObj.axdata.flags & 0x2000))
|
||||
return 0;
|
||||
else
|
||||
return entity->axObj.axdata.flags >> 15;
|
||||
}
|
||||
|
||||
void sub_806C51C(Entity *entity)
|
||||
{
|
||||
s32 x, y, y2;
|
||||
|
|
@ -82,7 +74,7 @@ void sub_806C51C(Entity *entity)
|
|||
if (entity->axObj.unk43_animId2 == entity->axObj.unk42_animId1 && entity->axObj.unk45_orientation == entity->axObj.unk44_direction1 && entity->axObj.unk47 == 0) {
|
||||
bool8 r2 = FALSE;
|
||||
|
||||
if (!GetUnkFlag(entity))
|
||||
if (!AxFlag8000_Not2000(&entity->axObj.axdata))
|
||||
r2 = TRUE;
|
||||
|
||||
if (r2) {
|
||||
|
|
|
|||
|
|
@ -26,12 +26,11 @@
|
|||
#include "math.h"
|
||||
#include "code_8004AA0.h"
|
||||
#include "bg_palette_buffer.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "items.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_main.h"
|
||||
#include "effect_sub_1.h"
|
||||
#include "sprite.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "effect_data.h"
|
||||
#include "code_80869E4.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "dungeon_boss_dialogue.h"
|
||||
|
|
@ -1332,6 +1331,8 @@ void sub_8085EB0(void)
|
|||
gDungeon->unk181e8.unk18215 = 1;
|
||||
}
|
||||
|
||||
static const unkStruct_2039DB0 sDefaultSpriteMasks = DEFAULT_UNK_2039DB0_MASKS;
|
||||
|
||||
u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,DungeonPos *param_4, bool32 param_5)
|
||||
{
|
||||
u32 uVar1;
|
||||
|
|
@ -1349,12 +1350,12 @@ u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,DungeonPos *param_4, bool32
|
|||
local_40.unk0 = param_1;
|
||||
local_40.unk4 = param_2;
|
||||
local_40.dir = param_3;
|
||||
local_40.x = param_4->x;
|
||||
local_40.y = param_4->y;
|
||||
local_40.unk10 = 0;
|
||||
local_40.unk12 = 0;
|
||||
local_40.pos1.x = param_4->x;
|
||||
local_40.pos1.y = param_4->y;
|
||||
local_40.pos2.x = 0;
|
||||
local_40.pos2.y = 0;
|
||||
local_40.unk18 = 0xffff;
|
||||
local_40.unk1C = (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0};
|
||||
local_40.spriteMasks = sDefaultSpriteMasks;
|
||||
|
||||
uVar1 = sub_800E890(&local_40);
|
||||
if (param_5_bool8) {
|
||||
|
|
@ -1493,14 +1494,14 @@ s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3)
|
|||
stack.unk0 = param_1Copy;
|
||||
stack.unk4 = 0;
|
||||
stack.dir = info->action.direction;
|
||||
stack.x = (param_2->pixelPos).x / 256;
|
||||
stack.y = (param_2->pixelPos).y / 256;
|
||||
stack.pos1.x = (param_2->pixelPos).x / 256;
|
||||
stack.pos1.y = (param_2->pixelPos).y / 256;
|
||||
|
||||
stack.unk10 = pos.x;
|
||||
stack.unk12 = pos.y;
|
||||
stack.pos2.x = pos.x;
|
||||
stack.pos2.y = pos.y;
|
||||
stack.unk14 = uStack_38;
|
||||
stack.unk18 = 0xffff;
|
||||
stack.unk1C = (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0};
|
||||
stack.spriteMasks = DEFAULT_UNK_2039DB0_MASKS;
|
||||
|
||||
uVar2 = sub_800E890(&stack);
|
||||
if (param_3_bool32) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
#include "bg_palette_buffer.h"
|
||||
#include "cpu.h"
|
||||
#include "graphics_memory.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "effect_main.h"
|
||||
#include "def_filearchives.h"
|
||||
#include "dungeon_info.h"
|
||||
#include "dungeon_generation.h"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include "bg_palette_buffer.h"
|
||||
#include "graphics_memory.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "effect_main.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_803E724.h"
|
||||
#include "dungeon_info.h"
|
||||
|
|
|
|||
|
|
@ -8,9 +8,8 @@
|
|||
#include "constants/weather.h"
|
||||
#include "structs/str_damage.h"
|
||||
#include "dungeon_move_util.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_main.h"
|
||||
#include "effect_data.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_803E724.h"
|
||||
#include "code_8041AD0.h"
|
||||
|
|
@ -60,7 +59,6 @@ extern bool8 sub_8040BB0(Entity *entity, Move *move, bool8);
|
|||
extern void sub_8040DA0(Entity *entity, Move *move);
|
||||
extern u16 sub_80412E0(u16 moveId, u8 weather, u8 a2);
|
||||
extern void sub_800EF10(u16 r0);
|
||||
extern s32 sub_800E710(s16 a0, u16 a1);
|
||||
extern void sub_800E3AC(s32 a0, DungeonPos *pos, s32 a2);
|
||||
extern void sub_8041168(Entity *entity, Entity *entity2, Move *,DungeonPos *);
|
||||
extern Entity *sub_80696A8(Entity *a0);
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
#include "constants/weather.h"
|
||||
#include "structs/str_damage.h"
|
||||
#include "dungeon_move_util.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_main.h"
|
||||
#include "effect_data.h"
|
||||
#include "effect_sub_1.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_803E724.h"
|
||||
#include "code_8041AD0.h"
|
||||
|
|
@ -54,21 +54,10 @@ extern bool8 sub_8040BB0(Entity *entity, Move *move, bool8);
|
|||
extern void sub_8040DA0(Entity *entity, Move *move);
|
||||
extern u16 sub_80412E0(u16 moveId, u8 weather, u8 a2);
|
||||
extern void sub_800EF10(u16 r0);
|
||||
extern s32 sub_800E710(s16 a0, u16 a1);
|
||||
extern void sub_800E3AC(s32 a0, DungeonPos *pos, s32 a2);
|
||||
extern void sub_8041168(Entity *entity, Entity *entity2, Move *,DungeonPos *);
|
||||
extern Entity *GetMonsterAtPos(DungeonPos *pos);
|
||||
extern s32 sub_800ED20(u16 param_1);
|
||||
struct UnkStruct_sub_800E308_1
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
DungeonPos unk4;
|
||||
DungeonPos unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
};
|
||||
extern s32 sub_800E308(struct UnkStruct_sub_800E308_1 *, DungeonPos *);
|
||||
|
||||
static u8 ToItemID(u32 itemID);
|
||||
|
||||
|
|
@ -546,7 +535,7 @@ bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray,
|
|||
|
||||
s32 sub_8056564(Entity *entity, DungeonPos *pos, Move *move, s32 r4)
|
||||
{
|
||||
struct UnkStruct_sub_800E308_1 unkSp1;
|
||||
struct UnkStruct_8040094 unkSp1;
|
||||
DungeonPos unkSp2;
|
||||
EntityInfo *entInfo = GetEntInfo(entity);
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include "code_8004AA0.h"
|
||||
#include "code_800558C.h"
|
||||
#include "graphics_memory.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "effect_data.h"
|
||||
#include "code_801602C.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_803E724.h"
|
||||
|
|
@ -32,6 +32,7 @@
|
|||
#include "music_util.h"
|
||||
#include "dungeon_strings.h"
|
||||
#include "run_dungeon.h"
|
||||
#include "effect_main.h"
|
||||
|
||||
extern s32 gDungeonFramesCounter;
|
||||
|
||||
|
|
|
|||
27
src/effect_anim_file.c
Normal file
27
src/effect_anim_file.c
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "file_system.h"
|
||||
#include "def_filearchives.h"
|
||||
|
||||
OpenedFile *OpenEffectFile(u32 animType, s32 effectID)
|
||||
{
|
||||
u8 fileName[8];
|
||||
|
||||
switch (animType) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
sprintf(fileName,"efob%03d",effectID);
|
||||
break;
|
||||
case 4:
|
||||
sprintf(fileName,"efbg%03d",effectID);
|
||||
break;
|
||||
|
||||
}
|
||||
return Call_OpenFileAndGetFileDataPtr(fileName,&gEffectFileArchive);
|
||||
}
|
||||
|
||||
void CloseEffectFile(OpenedFile *file)
|
||||
{
|
||||
CloseFile(file);
|
||||
}
|
||||
5513
src/effect_data.c
Normal file
5513
src/effect_data.c
Normal file
File diff suppressed because it is too large
Load Diff
1204
src/effect_main.c
Normal file
1204
src/effect_main.c
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -1,10 +1,12 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "effect_sub_1.h"
|
||||
#include "effect_sub_2.h"
|
||||
#include "bg_control.h"
|
||||
#include "structs/axdata.h"
|
||||
#include "graphics_memory.h"
|
||||
#include "code_800C9CC.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_data.h"
|
||||
#include "code_803E724.h"
|
||||
#include "dungeon_message.h"
|
||||
#include "file_system.h"
|
||||
|
|
@ -12,6 +14,7 @@
|
|||
#include "memory.h"
|
||||
#include "sprite.h"
|
||||
#include "text_2.h"
|
||||
#include "effect_anim_file.h"
|
||||
|
||||
struct unkStruct_203B0D0_sub
|
||||
{
|
||||
|
|
@ -33,21 +36,13 @@ struct unkStruct_203B0D0 {
|
|||
struct unkStruct_203B0D0_sub unk4[2];
|
||||
};
|
||||
|
||||
EWRAM_INIT struct unkStruct_203B0D0 *gUnknown_203B0D0 = NULL;
|
||||
EWRAM_INIT void *gUnknown_203B0D4 = NULL; // TODO: figure out the actual struct
|
||||
|
||||
OpenedFile *sub_800F1C0(s32, s32);
|
||||
s32 sub_800F0F4(s32, s32);
|
||||
void sub_800F204(OpenedFile *file);
|
||||
void sub_800F13C(s32, OpenedFile *, unkStruct_80B9CC4 *);
|
||||
void sub_800F15C(s32);
|
||||
static EWRAM_INIT struct unkStruct_203B0D0 *gUnknown_203B0D0 = NULL;
|
||||
|
||||
extern void sub_809971C(u16 a0, const RGB *a1, int a2);
|
||||
|
||||
void sub_800ED38(s32 r0)
|
||||
{
|
||||
if(gUnknown_203B0D0 == 0)
|
||||
{
|
||||
if (gUnknown_203B0D0 == NULL) {
|
||||
gUnknown_203B0D0 = MemoryAlloc(sizeof(struct unkStruct_203B0D0), 0xB);
|
||||
MemoryClear8(gUnknown_203B0D0, sizeof(struct unkStruct_203B0D0));
|
||||
}
|
||||
|
|
@ -56,36 +51,29 @@ void sub_800ED38(s32 r0)
|
|||
|
||||
void sub_800ED64(void)
|
||||
{
|
||||
if(gUnknown_203B0D0)
|
||||
{
|
||||
MemoryFree(gUnknown_203B0D0);
|
||||
gUnknown_203B0D0 = NULL;
|
||||
}
|
||||
TRY_FREE_AND_SET_NULL(gUnknown_203B0D0);
|
||||
}
|
||||
|
||||
void sub_800ED80(void)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_203B0D0_sub *sub;
|
||||
|
||||
gUnknown_203B0D0->unk0 = 0;
|
||||
for(index = 0; index < 2; index++)
|
||||
{
|
||||
sub = &gUnknown_203B0D0->unk4[index];
|
||||
for (index = 0; index < 2; index++) {
|
||||
struct unkStruct_203B0D0_sub *sub = &gUnknown_203B0D0->unk4[index];
|
||||
|
||||
sub->unk0 = 0;
|
||||
sub->file = NULL;
|
||||
sub->fileData = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_800EDB0(struct unkStruct_203B0D0_sub *r0)
|
||||
static bool8 sub_800EDB0(struct unkStruct_203B0D0_sub *r0)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < 2; index++)
|
||||
{
|
||||
if(gUnknown_203B0D0->unk4[index].unk0 == 0)
|
||||
{
|
||||
for (index = 0; index < 2; index++) {
|
||||
if (gUnknown_203B0D0->unk4[index].unk0 == 0) {
|
||||
gUnknown_203B0D0->unk4[index] = *r0;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -93,12 +81,11 @@ bool8 sub_800EDB0(struct unkStruct_203B0D0_sub *r0)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_800EDF0(u32 r0, OpenedFile *file)
|
||||
static void sub_800EDF0(u32 r0, OpenedFile *file)
|
||||
{
|
||||
struct unkStruct_203B0D0_sub stack;
|
||||
|
||||
switch(r0)
|
||||
{
|
||||
switch (r0) {
|
||||
case 0:
|
||||
stack.unk0 = 3;
|
||||
stack.unkC = 0xE;
|
||||
|
|
@ -125,66 +112,53 @@ void sub_800EDF0(u32 r0, OpenedFile *file)
|
|||
|
||||
void sub_800EE5C(s32 r0)
|
||||
{
|
||||
unkStruct_80B9CC4 *ret;
|
||||
OpenedFile *file;
|
||||
s32 ret2;
|
||||
const unkStruct_80B9CC4 *ret = sub_800ECA4(r0);
|
||||
|
||||
ret = sub_800ECA4(r0);
|
||||
if(r0 != 0)
|
||||
{
|
||||
switch (ret->animType - 1) {
|
||||
case 1 - 1:
|
||||
case 2 - 1:
|
||||
if (r0 == 0)
|
||||
return;
|
||||
if (ret->animType == 1 || ret->animType == 2)
|
||||
return;
|
||||
|
||||
file = OpenEffectFile(ret->animType, ret->effectId);
|
||||
if (file != NULL) {
|
||||
s32 ret2 = sub_800F0F4(ret->animType, ret->effectId);
|
||||
if (ret2 == -1) {
|
||||
CloseEffectFile(file);
|
||||
return;
|
||||
default:
|
||||
file = sub_800F1C0(ret->animType, ret->effectId);
|
||||
if(file)
|
||||
{
|
||||
ret2 = sub_800F0F4(ret->animType, ret->effectId);
|
||||
if(ret2 == -1)
|
||||
{
|
||||
sub_800F204(file);
|
||||
return;
|
||||
}
|
||||
else if(ret2 != -2)
|
||||
{
|
||||
sub_800F13C(ret2, file, ret);
|
||||
sub_800EDF0(ret2, file);
|
||||
}
|
||||
else {
|
||||
sub_800F204(file);
|
||||
}
|
||||
sub_800F15C(ret->effectId);
|
||||
}
|
||||
}
|
||||
else if(ret2 != -2) {
|
||||
sub_800F13C(ret2, file, ret);
|
||||
sub_800EDF0(ret2, file);
|
||||
}
|
||||
else {
|
||||
CloseEffectFile(file);
|
||||
}
|
||||
sub_800F15C(ret->effectId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800EEC8(u16 r0)
|
||||
{
|
||||
unkStruct_80BDBC4 *ret;
|
||||
ret = sub_800ECB8(r0);
|
||||
const unkStruct_80BDBC4 *ret = sub_800ECB8(r0);
|
||||
sub_800EE5C(ret->unk0);
|
||||
}
|
||||
|
||||
void sub_800EEE0(u16 r0)
|
||||
{
|
||||
unkStruct_80BDBC4 *ret;
|
||||
ret = sub_800ECB8(r0);
|
||||
const unkStruct_80BDBC4 *ret = sub_800ECB8(r0);
|
||||
sub_800EE5C(ret->unk4);
|
||||
}
|
||||
|
||||
void sub_800EEF8(u16 r0)
|
||||
{
|
||||
unkStruct_80BDBC4 *ret;
|
||||
ret = sub_800ECB8(r0);
|
||||
const unkStruct_80BDBC4 *ret = sub_800ECB8(r0);
|
||||
sub_800EE5C(ret->unk2);
|
||||
}
|
||||
|
||||
void sub_800EF10(u16 r0)
|
||||
{
|
||||
unkStruct_80BDBC4 *ret;
|
||||
ret = sub_800ECB8(r0);
|
||||
const unkStruct_80BDBC4 *ret = sub_800ECB8(r0);
|
||||
sub_800EE5C(ret->unk6);
|
||||
}
|
||||
|
||||
|
|
@ -193,15 +167,13 @@ void sub_800EF28(u8 r0)
|
|||
sub_800EE5C(sub_800ECE4(r0));
|
||||
}
|
||||
|
||||
void sub_800EF40(u8 r0, u8 r1)
|
||||
void sub_800EF40(u8 r0, bool8 r1)
|
||||
{
|
||||
s32 ret;
|
||||
if(r1)
|
||||
{
|
||||
if (r1) {
|
||||
ret = sub_800ECF8(r0);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
ret = sub_800ED0C(r0);
|
||||
}
|
||||
sub_800EE5C(ret);
|
||||
|
|
@ -217,13 +189,13 @@ void sub_800EF64(void)
|
|||
continue;
|
||||
|
||||
sub = &gUnknown_203B0D0->unk4[i];
|
||||
switch(sub->unk0) {
|
||||
switch (sub->unk0) {
|
||||
case 1:
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
sub_8005674(sub->fileData, sub->unk18);
|
||||
switch(gUnknown_203B0D0->unk0) {
|
||||
switch (gUnknown_203B0D0->unk0) {
|
||||
case 1: {
|
||||
const RGB *pal = sub->fileData->pal;
|
||||
sub_809971C((sub->unkC + 16) * 16, pal, 0x10);
|
||||
|
|
@ -235,7 +207,7 @@ void sub_800EF64(void)
|
|||
}
|
||||
}
|
||||
if(sub->file != 0) {
|
||||
sub_800F204(sub->file);
|
||||
CloseEffectFile(sub->file);
|
||||
sub->file = NULL;
|
||||
}
|
||||
break;
|
||||
|
|
@ -249,7 +221,7 @@ void sub_800EF64(void)
|
|||
}
|
||||
sub_8009A1C(sub->fileData, sub->unkC, sub->unk10, sub->unk14);
|
||||
if(sub->file != NULL) {
|
||||
sub_800F204(sub->file);
|
||||
CloseEffectFile(sub->file);
|
||||
sub->file = NULL;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "def_filearchives.h"
|
||||
#include "file_system.h"
|
||||
#include "effect_sub_2.h"
|
||||
#include "effect_data.h"
|
||||
#include "memory.h"
|
||||
#include "file_system.h"
|
||||
|
||||
struct unkStruct_800F18C
|
||||
{
|
||||
|
|
@ -16,18 +16,17 @@ struct unkStruct_203B0D4
|
|||
struct unkStruct_800F18C unk0[2];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B0D4 *gUnknown_203B0D4;
|
||||
static EWRAM_INIT struct unkStruct_203B0D4 *gUnknown_203B0D4 = NULL;
|
||||
|
||||
void sub_800F034(void)
|
||||
{
|
||||
s32 index;
|
||||
if(gUnknown_203B0D4 == NULL)
|
||||
{
|
||||
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++)
|
||||
{
|
||||
|
||||
for (index = 0; index < 2; index++) {
|
||||
gUnknown_203B0D4->unk0[index].effectID = -1;
|
||||
gUnknown_203B0D4->unk0[index].counter = 0;
|
||||
}
|
||||
|
|
@ -35,24 +34,19 @@ void sub_800F034(void)
|
|||
|
||||
void sub_800F078(void)
|
||||
{
|
||||
if(gUnknown_203B0D4)
|
||||
{
|
||||
MemoryFree(gUnknown_203B0D4);
|
||||
gUnknown_203B0D4 = NULL;
|
||||
}
|
||||
TRY_FREE_AND_SET_NULL(gUnknown_203B0D4);
|
||||
}
|
||||
|
||||
void sub_800F094(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < 2; 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)
|
||||
UNUSED static s32 sub_800F0C0(s32 animType, s32 effectID)
|
||||
{
|
||||
if (animType == 3) {
|
||||
if (gUnknown_203B0D4->unk0[0].effectID == effectID) return 0;
|
||||
|
|
@ -63,7 +57,6 @@ s32 sub_800F0C0(s32 animType, s32 effectID)
|
|||
return -3;
|
||||
}
|
||||
|
||||
|
||||
s32 sub_800F0F4(s32 animType, s32 effectID)
|
||||
{
|
||||
if (animType == 3) {
|
||||
|
|
@ -77,9 +70,9 @@ s32 sub_800F0F4(s32 animType, s32 effectID)
|
|||
return -1;
|
||||
}
|
||||
|
||||
void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2)
|
||||
void sub_800F13C(s32 index, OpenedFile *file, const unkStruct_80B9CC4 *r2)
|
||||
{
|
||||
if(gUnknown_203B0D4->unk0[index].counter == 0)
|
||||
if (gUnknown_203B0D4->unk0[index].counter == 0)
|
||||
gUnknown_203B0D4->unk0[index].effectID = r2->effectId;
|
||||
}
|
||||
|
||||
|
|
@ -87,10 +80,8 @@ void sub_800F15C(s32 effectID)
|
|||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < 2; index++)
|
||||
{
|
||||
if(gUnknown_203B0D4->unk0[index].effectID == effectID)
|
||||
{
|
||||
for (index = 0; index < 2; index++) {
|
||||
if( gUnknown_203B0D4->unk0[index].effectID == effectID) {
|
||||
gUnknown_203B0D4->unk0[index].counter++;
|
||||
break;
|
||||
}
|
||||
|
|
@ -104,33 +95,9 @@ struct unkStruct_800F18C *sub_800F18C(s32 index)
|
|||
|
||||
s32 sub_800F19C(s32 index)
|
||||
{
|
||||
if(gUnknown_203B0D4->unk0[index].counter == 0)
|
||||
if (gUnknown_203B0D4->unk0[index].counter == 0)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
OpenedFile * sub_800F1C0(u32 animType, s32 effectID)
|
||||
{
|
||||
u8 fileName [8];
|
||||
|
||||
switch(animType)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
sprintf(fileName,"efob%03d",effectID);
|
||||
break;
|
||||
case 4:
|
||||
sprintf(fileName,"efbg%03d",effectID);
|
||||
break;
|
||||
|
||||
}
|
||||
return Call_OpenFileAndGetFileDataPtr(fileName,&gEffectFileArchive);
|
||||
}
|
||||
|
||||
void sub_800F204(OpenedFile *file)
|
||||
{
|
||||
CloseFile(file);
|
||||
}
|
||||
|
||||
|
|
@ -25,11 +25,6 @@
|
|||
#include "text_2.h"
|
||||
#include "text_3.h"
|
||||
|
||||
static inline bool8 CheckAxFlag8000(axdata *ptr)
|
||||
{
|
||||
return (ptr->flags & 0x8000) != 0;
|
||||
}
|
||||
|
||||
static inline bool8 ResetFlags(axdata *ptr)
|
||||
{
|
||||
return ptr->flags = 0;
|
||||
|
|
@ -124,7 +119,7 @@ static void AnimateSprites(void)
|
|||
}
|
||||
|
||||
for (dir = 0; dir < NUM_DIRECTIONS; dir++) {
|
||||
if (CheckAxFlag8000(&gFriendAreasMapPtr->arrowSprites[dir])) {
|
||||
if (AxFlag8000(&gFriendAreasMapPtr->arrowSprites[dir])) {
|
||||
RunAxAnimationFrame(&gFriendAreasMapPtr->arrowSprites[dir]);
|
||||
// Hide non-diagonal arrows when R button is pressed.
|
||||
if ((gRealInputs.held & R_BUTTON) && (dir % 2) == 0)
|
||||
|
|
|
|||
|
|
@ -250,14 +250,7 @@ void sub_8009A1C(const EfoFileData *r0, u32 palId, u32 vramDstOffset, u32 r3)
|
|||
}
|
||||
}
|
||||
|
||||
// Todo: Merge this struct with others once sub_800DE8C is decompiled(if possible)
|
||||
struct Struct_8009A7C
|
||||
{
|
||||
s32 unk0;
|
||||
u16 **unk4;
|
||||
};
|
||||
|
||||
bool8 sub_8009A7C(struct Struct_8009A7C *a0, s32 a1, s32 a2, s32 a3, bool8 a4, s32 *a5, u16 *a6)
|
||||
bool8 sub_8009A7C(struct Struct_8009A7C *a0, s32 a1, s32 a2, s32 a3, bool8 a4, s32 *a5, s16 *a6)
|
||||
{
|
||||
s32 countY;
|
||||
s32 yId;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "structs/axdata.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "effect_main.h"
|
||||
#include "debug.h"
|
||||
#include "def_filearchives.h"
|
||||
#include "file_system.h"
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
#include "ground_sprite_data.h"
|
||||
#include "memory.h"
|
||||
#include "sprite.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_sub_1.h"
|
||||
|
||||
static IWRAM_INIT unkStruct_3001B7C *gUnknown_3001B7C = {NULL};
|
||||
|
||||
|
|
@ -791,7 +791,7 @@ bool8 sub_80A7094(struct UnkGroundSpriteStruct *ptr, PixelPos *r10, PixelPos *po
|
|||
ptr->unk58 = 0;
|
||||
}
|
||||
else if (ptr->unk5C == -1) {
|
||||
unkStruct_2039DB0 unkSubStruct = {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0};
|
||||
unkStruct_2039DB0 unkSubStruct = DEFAULT_UNK_2039DB0_MASKS;
|
||||
unkStruct_80416E0 unkStruct;
|
||||
|
||||
sub_800EE5C(ptr->unk58);
|
||||
|
|
@ -799,13 +799,13 @@ bool8 sub_80A7094(struct UnkGroundSpriteStruct *ptr, PixelPos *r10, PixelPos *po
|
|||
unkStruct.unk0 = ptr->unk58;
|
||||
unkStruct.unk4 = 0;
|
||||
unkStruct.dir = (s8) ptr->unk5A;
|
||||
unkStruct.x = posArg->x / 256;
|
||||
unkStruct.y = posArg->y / 256;
|
||||
unkStruct.unk10 = 0;
|
||||
unkStruct.unk12 = 0;
|
||||
unkStruct.pos1.x = posArg->x / 256;
|
||||
unkStruct.pos1.y = posArg->y / 256;
|
||||
unkStruct.pos2.x = 0;
|
||||
unkStruct.pos2.y = 0;
|
||||
unkStruct.unk14 = -1;
|
||||
unkStruct.unk18 = 0;
|
||||
unkStruct.unk1C = unkSubStruct;
|
||||
unkStruct.spriteMasks = unkSubStruct;
|
||||
ptr->unk5C = sub_800E890(&unkStruct);
|
||||
}
|
||||
else if (!sub_800E9E4(ptr->unk5C)) {
|
||||
|
|
|
|||
|
|
@ -10,10 +10,8 @@
|
|||
#include "bg_palette_buffer.h"
|
||||
#include "code_800558C.h"
|
||||
#include "graphics_memory.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800E9A8.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "effect_main.h"
|
||||
#include "effect_data.h"
|
||||
#include "code_803D110.h"
|
||||
#include "dungeon_vram.h"
|
||||
#include "code_803E724.h"
|
||||
|
|
|
|||
10
src/sprite.c
10
src/sprite.c
|
|
@ -531,20 +531,12 @@ static void AxResInitUnoriented(axdata *a0, axmain *a1, u32 a2, u32 a3, u32 spri
|
|||
a0->positions = NULL;
|
||||
}
|
||||
|
||||
static inline s16 check_flag_for_80054BC(u16 flags)
|
||||
{
|
||||
if (flags & 0x2000)
|
||||
return 0;
|
||||
else
|
||||
return flags >> 15;
|
||||
}
|
||||
|
||||
// arm9.bin::02001AC4
|
||||
void RunAxAnimationFrame(axdata *a0)
|
||||
{
|
||||
const ax_anim *aData;
|
||||
|
||||
if (!check_flag_for_80054BC(a0->flags))
|
||||
if (!AxFlag8000_Not2000(a0))
|
||||
return;
|
||||
|
||||
if (a0->sub1.poseId >= 0) {
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@
|
|||
.include "src/flash.o"
|
||||
.include "src/code_800C9CC.o"
|
||||
.include "src/cpu.o"
|
||||
.include "src/code_800DAC0.o"
|
||||
.include "src/code_800ED38.o"
|
||||
.include "src/effect_main.o"
|
||||
.include "src/effect_sub_1.o"
|
||||
.include "src/effect_sub_2.o"
|
||||
.include "src/dungeon_pokemon_sprites.o"
|
||||
.include "src/friend_areas_map.o"
|
||||
.include "src/world_map.o"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user