misc work

This commit is contained in:
dark-samus 2021-01-12 14:45:50 -05:00
parent 6f304364c6
commit dcbb258e45
13 changed files with 769 additions and 123 deletions

View File

@ -0,0 +1,123 @@
.include "macro.inc"
.section .rodata
glabel D_802EB000
.word 0x3FFDCCCC, 0xCCCCCCCD
glabel D_802EB008
.word 0x3FFDCCCC, 0xCCCCCCCD
glabel D_802EB010
.word 0x802E17EC, 0x802E1894, 0x802E1938, 0x802E19E0, 0x802E1A84, 0x802E1B18
glabel D_802EB028
.word 0x3FD33333, 0x33333333
glabel D_802EB030
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB038
.word 0xBFC99999, 0x9999999A
glabel D_802EB040
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB048
.word 0x3FC33333, 0x33333333
glabel D_802EB050
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB058
.word 0xBFB99999, 0x9999999A
glabel D_802EB060
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB068
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB070
.word 0x802E1B48, 0x802E1BF0, 0x802E1C94, 0x802E1D38, 0x802E1DDC, 0x802E1E6C
glabel D_802EB088
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB090
.word 0x3FB99999, 0x9999999A
glabel D_802EB098
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB0A0
.ascii "333333"
glabel D_802EB0A8
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB0B0
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB0B8
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB0C0
.word 0x802E1F20, 0x802E1FBC, 0x802E1FD0, 0x802E206C, 0x802E211C, 0x00000000
glabel D_802EB0D8
.word 0x3FD33333, 0x33333333
glabel D_802EB0E0
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB0E8
.word 0xBFC99999, 0x9999999A
glabel D_802EB0F0
.word 0x3FC33333, 0x33333333
glabel D_802EB0F8
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB100
.word 0xBFB99999, 0x9999999A
glabel D_802EB108
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB110
.word 0x3FB99999, 0x9999999A
glabel D_802EB118
.word 0x3F847AE1, 0x47AE147B
glabel D_802EB120
.ascii "333333"
glabel D_802EB128
.word 0xBF847AE1, 0x47AE147B
glabel D_802EB130
.word 0x40059999, 0x9999999A
glabel D_802EB138
.word 0x40768000, 0x00000000
glabel D_802EB140
.word 0x3FD33333, 0x33333333
glabel D_802EB148
.word 0x3FF33333, 0x33333333
glabel D_802EB150
.word 0xC0286666, 0x66666666
glabel D_802EB158
.word 0x401921FA, 0x00000000
glabel D_802EB160
.word 0x802E2F78, 0x802E2FA4, 0x802E2FA4, 0x802E2FA4, 0x802E2FA4, 0x802E2FA4, 0x802E2FA4, 0x802E2FA4, 0x802E2F30, 0x802E2F48, 0x802E2F60, 0x802E2F30, 0x802E2F48, 0x802E2F60
glabel D_802EB198
.word 0x802E305C, 0x802E3064, 0x802E3064, 0x802E3064, 0x802E3064, 0x802E3064, 0x802E3064, 0x802E3064, 0x802E3014, 0x802E302C, 0x802E3044, 0x802E3020, 0x802E3038, 0x802E3050

View File

@ -0,0 +1,30 @@
.include "macro.inc"
.section .rodata
glabel D_802EB1D0
.word 0x3FB70A3D, 0x70A3D70A
glabel D_802EB1D8
.word 0x3FA70A3D, 0x70A3D70A
glabel D_802EB1E0
.word 0x3FC70A3D, 0x70A3D70A
glabel D_802EB1E8
.word 0x3FB70A3D, 0x70A3D70A
glabel D_802EB1F0
.word 0x3FF33333, 0x33333333
glabel D_802EB1F8
.word 0x3FD33333, 0x33333333
glabel D_802EB200
.word 0x3FF33333, 0x33333333
glabel D_802EB208
.word 0x3FD33333, 0x33333333
glabel D_802EB210
.word 0x802E3DCC, 0x802E3DDC, 0x802E3C34, 0x802E3C34, 0x802E3C34, 0x802E3C34, 0x802E3C34, 0x802E3C34, 0x802E3DE4, 0x802E3C34, 0x802E3CD8, 0x802E3D2C, 0x802E3D84, 0x802E3CD8, 0x802E3D2C, 0x802E3D84, 0x802E3DCC, 0x802E3DCC, 0x802E3DCC, 0x802E3DCC, 0x802E3DCC, 0x00000000, 0x00000000, 0x00000000

View File

@ -776,17 +776,41 @@ typedef struct StaticItem {
/* 0x1D */ char unk_1D[3]; /* 0x1D */ char unk_1D[3];
} StaticItem; // size = 0x20 } StaticItem; // size = 0x20
typedef struct EffectInstance {
/* 0x00 */ s32 flags;
/* 0x04 */ s32 effectIndex;
/* 0x08 */ char unk_08[4];
/* 0x0C */ void* unk_0C;
/* 0x10 */ struct Effect* effect;
} EffectInstance;
typedef struct EffectBlueprint {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 effectIndex;
/* 0x08 */ void (*init)(EffectInstance* effectInst);
/* 0x0C */ void (*update)(EffectInstance* effectInst);
/* 0x10 */ void (*renderWorld)(EffectInstance* effectInst);
/* 0x14 */ void (*unk_14)(EffectInstance* effectInst);
} EffectBlueprint; // size = 0x18
typedef struct Effect { typedef struct Effect {
/* 0x00 */ char unk_00[32]; /* 0x00 */ s32 flags;
/* 0x04 */ s32 effectIndex;
/* 0x08 */ s32 instanceCounter;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ void (*update)(EffectInstance* effectInst);
/* 0x14 */ void (*renderWorld)(EffectInstance* effectInst);
/* 0x18 */ void (*unk_18)(EffectInstance* effectInst);
/* 0x1C */ void* unk_1C;
} Effect; // size = 0x20 } Effect; // size = 0x20
typedef struct EffectTableEntry { typedef struct EffectTableEntry {
/* 0x00 */ s32 dmaStart; /* 0x00 */ UNK_FUN_PTR(entryPoint);
/* 0x04 */ s32 dmaEnd; /* 0x04 */ void* dmaStart;
/* 0x08 */ s32 dmaDest; /* 0x08 */ void* dmaEnd;
/* 0x0C */ s32 unkStartRom; /* 0x0C */ void* dmaDest;
/* 0x10 */ s32 unkEndRom; /* 0x10 */ void* unkStartRom;
/* 0x14 */ UNK_FUN_PTR(delegate); /* 0x14 */ void* unkEndRom;
} EffectTableEntry; // size = 0x18 } EffectTableEntry; // size = 0x18
@ -1606,6 +1630,21 @@ typedef struct {
// BEGIN ENTITY-SPECIFIC STRUCTS // BEGIN ENTITY-SPECIFIC STRUCTS
// from code_102c80, size unknown.
typedef struct struct802E1400 {
/* 0x000 */ Vec3f unk_00;
/* 0x00C */ char unk_0C[4];
/* 0x010 */ s8 unk_10;
/* 0x011 */ s8 unk_11;
/* 0x014 */ Vec3f unk_14;
/* 0x020 */ u16 unk_20;
/* 0x022 */ s16 unk_22;
/* 0x024 */ char unk_24[4];
/* 0x028 */ Entity* attachedEntity;
/* 0x02C */ char unk_2C[12];
/* 0x038 */ f32 unk_38;
} struct802E1400;
// from code_104940_len_dc0, size unknown // from code_104940_len_dc0, size unknown
// appears to belong to the hammer blocks(?) // appears to belong to the hammer blocks(?)
typedef struct struct802E3650 { typedef struct struct802E3650 {

View File

@ -31,7 +31,7 @@ typedef struct MapConfig {
} tattle; } tattle;
} MapConfig; // size = 0x40 } MapConfig; // size = 0x40
typedef s32 MapInit(void); typedef s32 (*MapInit)(void);
#define MAP_ID_MAX_LEN 7 ///< "xxx_yyy" excluding null terminator. #define MAP_ID_MAX_LEN 7 ///< "xxx_yyy" excluding null terminator.
typedef struct Map { typedef struct Map {
@ -41,7 +41,7 @@ typedef struct Map {
/* 0x0C */ void* dmaEnd; /* 0x0C */ void* dmaEnd;
/* 0x10 */ void* dmaDest; /* 0x10 */ void* dmaDest;
/* 0x14 */ char* bgName; /* 0x14 */ char* bgName;
/* 0x18 */ MapInit* init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. /* 0x18 */ MapInit init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading.
/* 0x1C */ s16 unk_1C; // Unused? /* 0x1C */ s16 unk_1C; // Unused?
/* 0x1E */ s8 songVariation; ///< 0 or 1. @see get_song_variation_override_for_cur_map /* 0x1E */ s8 songVariation; ///< 0 or 1. @see get_song_variation_override_for_cur_map
/* 0x1F */ s8 flags; /* 0x1F */ s8 flags;

View File

@ -108,9 +108,9 @@ void func_802E1350(Entity* entity) {
} }
void func_802E13B8(Entity* entity) { void func_802E13B8(Entity* entity) {
Trigger* trigger = (Trigger*)entity->dataBuf; // TODO: Fix this struct802E3650* temp = entity->dataBuf;
entity_init_Hammer23Block_normal(entity); entity_init_Hammer23Block_normal(entity);
entity->unk_3C = func_802E0DE0; entity->unk_3C = func_802E0DE0;
trigger->params1.s = 8; temp->unk_04 = 8;
} }

View File

@ -1,24 +1,10 @@
#include "common.h" #include "common.h"
typedef struct struct802E1400 {
/* 0x000 */ Vec3f unk_00;
/* 0x00C */ char unk_0C[4];
/* 0x010 */ s8 unk_10;
/* 0x011 */ s8 unk_11;
/* 0x014 */ Vec3f unk_14;
/* 0x020 */ u16 unk_20;
/* 0x022 */ s16 unk_22;
/* 0x024 */ char unk_24[4];
/* 0x028 */ Entity* attachedEntity;
/* 0x02C */ char unk_2C[12];
/* 0x038 */ f32 unk_38;
} struct802E1400;
void func_802E246C(Entity* entity, void* arg1, void* arg2); void func_802E246C(Entity* entity, void* arg1, void* arg2);
void func_802E1400(Entity* entity) { void func_802E1400(Entity* entity) {
PlayerStatus* playerStatus = &gPlayerStatus; PlayerStatus* playerStatus = &gPlayerStatus;
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
if (entity->unk_06 & 1) { if (entity->unk_06 & 1) {
if ((playerStatus->actionState == ActionState_GROUND_POUND) || (playerStatus->actionState == ActionState_ULTRA_POUND)) { if ((playerStatus->actionState == ActionState_GROUND_POUND) || (playerStatus->actionState == ActionState_ULTRA_POUND)) {
@ -29,11 +15,11 @@ void func_802E1400(Entity* entity) {
} }
void func_802E1460(Entity* entity) { void func_802E1460(Entity* entity) {
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
u16 temp2 = temp->unk_22--; u16 temp2 = temp->unk_22--;
if (temp2) { if (temp2) {
entity->position.y -= D_802EB000; entity->position.y -= D_802EB000; // 1.8625;
return; return;
} }
func_80110678(entity); func_80110678(entity);
@ -42,11 +28,11 @@ void func_802E1460(Entity* entity) {
} }
void func_802E14D8(Entity* entity) { void func_802E14D8(Entity* entity) {
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
u16 temp2 = temp->unk_22--; u16 temp2 = temp->unk_22--;
if (temp2) { if (temp2) {
entity->position.y += D_802EB008; entity->position.y += D_802EB008; // 1.8625;
return; return;
} }
func_8010FD68(entity); func_8010FD68(entity);
@ -67,7 +53,7 @@ void func_802E1614(Entity* entity) {
} }
void func_802E1660(Entity* entity) { void func_802E1660(Entity* entity) {
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
PlayerStatus* playerStatus = &gPlayerStatus; PlayerStatus* playerStatus = &gPlayerStatus;
s8* temp2 = D_8010EBB0; s8* temp2 = D_8010EBB0;
@ -121,7 +107,7 @@ void func_802E1740(Entity* entity) {
} }
void func_802E176C(Entity* entity) { void func_802E176C(Entity* entity) {
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
temp->unk_00.x = 1.0f; temp->unk_00.x = 1.0f;
temp->unk_00.y = 0.1f; temp->unk_00.y = 0.1f;
@ -133,7 +119,7 @@ void func_802E176C(Entity* entity) {
INCLUDE_ASM(s32, "code_102c80", func_802E17A8); INCLUDE_ASM(s32, "code_102c80", func_802E17A8);
void func_802E1EA8(Entity* entity) { void func_802E1EA8(Entity* entity) {
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
set_area_flag(temp->unk_20); set_area_flag(temp->unk_20);
func_80110678(entity); func_80110678(entity);
} }
@ -142,7 +128,7 @@ INCLUDE_ASM(s32, "code_102c80", func_802E1EDC);
void func_802E234C(Entity* entity) { void func_802E234C(Entity* entity) {
PlayerStatus* playerStatus = &gPlayerStatus; PlayerStatus* playerStatus = &gPlayerStatus;
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
playerStatus->animFlags |= 0x1000000; playerStatus->animFlags |= 0x1000000;
temp->unk_14.x = 1.0f; temp->unk_14.x = 1.0f;
@ -152,7 +138,7 @@ void func_802E234C(Entity* entity) {
void entity_init_BlueSwitch(Entity* entity) { void entity_init_BlueSwitch(Entity* entity) {
Entity* temp_v0_2; Entity* temp_v0_2;
struct802E1400* temp = (struct802E1400*)entity->dataBuf; struct802E1400* temp = entity->dataBuf;
func_802E234C(entity); func_802E234C(entity);
if (D_8015C7D0 == 2) { if (D_8015C7D0 == 2) {
@ -175,7 +161,7 @@ void entity_init_HugeBlueSwitch(Entity* entity) {
struct802E1400* temp; struct802E1400* temp;
func_802E234C(entity); func_802E234C(entity);
temp = (struct802E1400*)entity->dataBuf; temp = entity->dataBuf;
entity->scale.x = 3.0f; entity->scale.x = 3.0f;
entity->scale.y = 3.0f; entity->scale.y = 3.0f;
entity->scale.z = 3.0f; entity->scale.z = 3.0f;

View File

@ -10,6 +10,7 @@ extern f64 D_802EB1F8; // 0.3
extern f64 D_802EB200; // 1.2 extern f64 D_802EB200; // 1.2
extern f64 D_802EB208; // 0.3 extern f64 D_802EB208; // 0.3
//display list func
INCLUDE_ASM(s32, "code_104940_len_dc0", func_802E30C0); INCLUDE_ASM(s32, "code_104940_len_dc0", func_802E30C0);
void func_802E31B0(Entity* entity) { void func_802E31B0(Entity* entity) {
@ -33,7 +34,7 @@ f32 func_802E31EC(Entity* entity) {
void func_802E328C(Entity* entity) { void func_802E328C(Entity* entity) {
if ((get_entity_type(entity->listIndex) - 24) < 3U) { if ((get_entity_type(entity->listIndex) - 24) < 3) {
entity->scale.x -= D_802EB1D0; entity->scale.x -= D_802EB1D0;
entity->scale.z -= D_802EB1D0; entity->scale.z -= D_802EB1D0;
entity->scale.y += D_802EB1D8; entity->scale.y += D_802EB1D8;
@ -185,7 +186,7 @@ void func_802E3A48(Entity* entity) {
void func_802E3B08(Entity* entity) { void func_802E3B08(Entity* entity) {
s32 temp_v0; s32 temp_v0;
u16 temp_v1; u16 temp_v1;
struct802E3650* temp = (struct802E3650*)entity->dataBuf; struct802E3650* temp = entity->dataBuf;
if (temp->unk_0A != 0xFFFF) { if (temp->unk_0A != 0xFFFF) {
if (get_global_flag(temp->unk_0A) != 0) { if (get_global_flag(temp->unk_0A) != 0) {
@ -195,7 +196,126 @@ void func_802E3B08(Entity* entity) {
} }
} }
INCLUDE_ASM(s32, "code_104940_len_dc0", func_802E3BA4); extern s32 D_802E9E80;
#ifdef NON_MATCHING
s32 func_802E3BA4(Entity* entity) {
u8 bVar1;
s32 bVar2;
s32 iVar3;
s32 uVar4;
PlayerStatus* playerStatus = &gPlayerStatus;
if ((entity->alpha == 0) && ((entity->unk_06 & 1) != 0)) {
return 0;
}
bVar1 = entity->unk_06;
if ((bVar1 & 4) != 0) {
s32 type = get_entity_type(entity->listIndex);
if((type == 0xC)) {
return 0;
}
if((type >= 0xC)) {
if((type < 0x1b)) {
if((type > 0x14)) {
return 0;
}
}
}
if ((playerStatus->flags & 2) == 0) {
return 1;
}
func_8010FD68(entity);
return 1;
}
if ((bVar1 & 0x80) != 0) {
func_8010FD68(entity);
return 1;
}
bVar2 = FALSE;
if ((bVar1 & 1)) {
if ((playerStatus->actionState == 0xd) || (playerStatus->actionState == 0x0f)) {
return 0;
}
if ((playerStatus->actionState == 0x0e) || (playerStatus->actionState == 0x10)) {
bVar2 = TRUE;
} else {
return 1;
}
} else {
if ((bVar1 & 0x40) == 0) {
return 1;
}
if ((playerStatus->flags & 0x1000000) == 0) {
return 1;
}
}
switch(get_entity_type(entity->listIndex)) {
default:
break;
case 0x15:
case 0x18:
if (bVar2) {
if (gPlayerData.bootsLevel < 1) {
bVar2 = FALSE;
}
} else {
if (gPlayerData.hammerLevel > -1) {
bVar2 = TRUE;
}
}
if (!bVar2) {
return 1;
}
func_8010FBC0(entity,&D_802E9E80);
play_sound_at_position(0x14f, 0, entity->position.x, entity->position.y ,entity->position.z);
break;
case 0x16:
case 0x19:
if (bVar2) {
if (gPlayerData.bootsLevel < 2) {
bVar2 = FALSE;
}
} else if (gPlayerData.hammerLevel > 0) {
bVar2 = TRUE;
}
if (!bVar2) {
return 1;
}
func_8010FBC0(entity,&D_802E9E80);
play_sound_at_position(0x150, 0, entity->position.x, entity->position.y ,entity->position.z);
break;
case 0x17:
case 0x1a:
if (gPlayerData.hammerLevel < '\x02') {
return 1;
}
func_8010FBC0(entity,&D_802E9E80);
play_sound_at_position(0x151, 0, entity->position.x, entity->position.y ,entity->position.z);
break;
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
func_80110678(entity);
func_8010FD68(entity);
return 1;
case 0xb:
func_80110678(entity);
break;
}
return 1;
}
#else
INCLUDE_ASM(s32, "code_104940_len_dc0", func_802E3BA4, Entity* entity);
#endif
void entity_init_Hammer1Block_normal(Entity* entity) { void entity_init_Hammer1Block_normal(Entity* entity) {
entity_init_Hammer23Block_normal(entity); entity_init_Hammer23Block_normal(entity);
@ -204,7 +324,7 @@ void entity_init_Hammer1Block_normal(Entity* entity) {
s32 entity_init_HammerBlock_small(Entity* entity) { s32 entity_init_HammerBlock_small(Entity* entity) {
s32 temp_v0; s32 temp_v0;
struct802E3650* temp = (struct802E3650*)entity->dataBuf; struct802E3650* temp = entity->dataBuf;
temp->unk_10 = -1; temp->unk_10 = -1;
temp->unk_14 = entity->position.y; temp->unk_14 = entity->position.y;

View File

@ -2,7 +2,7 @@
extern Gfx D_00074210[]; extern Gfx D_00074210[];
extern Gfx D_00074230[]; extern Gfx D_00074230[];
extern Gfx* D_8009A66C[1]; extern Gfx* D_8009A66C[2];
extern int D_000759B0[]; extern int D_000759B0[];
extern int D_000759B0_end[]; // A55D0 extern int D_000759B0_end[]; // A55D0
@ -115,16 +115,18 @@ s32 func_80027190(void) {
return D_8009A5D8; return D_8009A5D8;
} }
INCLUDE_ASM(s32, "code_1b40_len_20b0", func_800271A0); //INCLUDE_ASM(s32, "code_1b40_len_20b0", func_800271A0);
/*void func_800271A0(void) { void func_800271A0(void) {
Gfx *temp = D_8009A66C[0] + 1; Gfx *temp = D_8009A66C[0];
do{
Gfx *_g = (Gfx *)((D_8009A66C[0]++));
_g->words.w0 = (((unsigned int) (((unsigned int)((0xdb)) & ((0x01 << (8)) - 1)) << (24))) | ((unsigned int) (((unsigned int)((0x06)) & ((0x01 << (8)) - 1)) << (16))) | ((unsigned int) (((unsigned int)(((0x00)*4)) & ((0x01 << (16)) - 1)) << (0)))); _g->words.w1 = (unsigned int)(0x00000000);
}while(0);
do{ Gfx *_g = (Gfx *)(D_8009A66C[0]++); _g->words.w0 = (((unsigned int) (((unsigned int)((0xde)) & ((0x01 << (8)) - 1)) << (24))) | ((unsigned int) (((unsigned int)((0x00)) & ((0x01 << (8)) - 1)) << (16))) | ((unsigned int) (((unsigned int)((0)) & ((0x01 << (16)) - 1)) << (0)))); _g->words.w1 = (unsigned int)(&D_00074230);
Gfx *_g = (Gfx *)(D_8009A66C[0]++); _g->words.w0 = (((unsigned int) (((unsigned int)((0xde)) & ((0x01 << (8)) - 1)) << (24))) | ((unsigned int) (((unsigned int)((0x00)) & ((0x01 << (8)) - 1)) << (16))) | ((unsigned int) (((unsigned int)((0)) & ((0x01 << (16)) - 1)) << (0)))); _g->words.w1 = (unsigned int)(&D_00074210); }while(0);
}
gSPSegment(D_8009A66C[0], 0x00, 0x00000000);
D_8009A66C[0] = temp;
gSPDisplayList(temp, &D_00074230);
D_8009A66C[0]++;
gSPDisplayList(D_8009A66C[0]++, &D_00074210);
}*/
INCLUDE_ASM(s32, "code_1b40_len_20b0", func_800271FC); INCLUDE_ASM(s32, "code_1b40_len_20b0", func_800271FC);

View File

@ -1,6 +1,157 @@
#include "common.h" #include "common.h"
typedef struct structE001E000 {
/* 0x000 */ s32 unk_00;
/* 0x004 */ Vec3f unk_04;
/* 0x010 */ Vec3f unk_10;
/* 0x01C */ s32 unk_1C;
/* 0x020 */ char unk_20[4];
/* 0x024 */ f32 unk_24;
/* 0x028 */ s32 unk_28;
/* 0x02C */ f32 unk_2C;
/* 0x030 */ f32 unk_30;
/* 0x034 */ f32 unk_34;
/* 0x038 */ char unk_38[4];
/* 0x03C */ s32 unk_3C;
/* 0x040 */ char unk_40[0x200];
/* 0x240 */ f32 unk_240;
/* 0x244 */ s32 unk_244;
/* 0x248 */ s32 unk_248;
/* 0x24C */ s32 unk_24C;
} structE001E000; // size = 0x250
extern Camera D_800B1DEC[2];
INCLUDE_ASM(s32, "code_331940", func_E001E000); INCLUDE_ASM(s32, "code_331940", func_E001E000);
/*
void *func_E001E000(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) {
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f12;
f32 temp_f20;
f32 temp_f20_2;
f32 temp_f20_3;
f32 temp_f20_4;
f32 temp_f22;
f32 temp_f22_2;
f32 temp_f24;
f32 temp_f26;
f32 temp_f2;
f32 temp_f4;
s32 temp_a0;
s32 temp_a1;
s32 temp_s0;
s32 temp_v0_2;
s32 temp_v0_3;
void *temp_s0_2;
void *temp_s1;
void *temp_s2;
void *temp_v0;
void *temp_v0_4;
f32 phi_f4;
f32 phi_f0;
f32 phi_f12;
f32 phi_f26;
void *phi_v0;
void *phi_v1;
s32 phi_a1;
f32 phi_f12_2;
void *phi_a0;
temp_s2 = func_E0200490(&subroutine_arg4, 0, 0xF, &D_E001E370, &D_E001E378, &D_E001E6E8, 0);
temp_s2->unk8 = 1;
temp_v0 = func_E02004B0(0x250); // some kind of allocation function.
temp_s1 = temp_v0;
temp_s2->unkC = temp_v0;
ASSERT(temp_s1 != NULL);
temp_s1->unk_00 = 1;
temp_s1->unk_04.x = arg1;
temp_s1->unk_04.y = arg2;
temp_s1->unk_04.z = arg3;
temp_s1->unk_1C = 0;
temp_s1->unk_24 = 0.0f;
temp_s1->unk_28 = 0;
temp_s1->unk_38 = arg0;
if (arg0 == 3) {
temp_s1->unk_240 = 0.2f;
temp_v0_2 = func_E02004E0(0xFF);
temp_a0 = 0xFF - temp_v0_2;
temp_s1->unk_244 = temp_v0_2;
temp_v0_3 = func_E02004E0(temp_a0);
temp_s0 = 0xFF - temp_v0_3;
temp_s1->unk_248 = temp_v0_3;
temp_s1->unk_24C = (s32) (temp_s0 - temp_s1->unk_244);
} else {
temp_s1->unk_244 = 0xD2;
temp_s1->unk_248 = 0xBA;
temp_s1->unk_24C = 0x5A;
temp_s1->unk_240 = 0.5f;
}
temp_f24 = arg4 - arg1;
temp_f22 = arg5 - arg2;
temp_f20 = arg6 - arg3;
temp_f26 = (temp_f24 * temp_f24) + (temp_f22 * temp_f22) + (temp_f20 * temp_f20);
phi_f4 = temp_f26;
phi_f26 = temp_f26;
if (temp_f26 != 0.0f) {
temp_f0 = func_E0200550(temp_f26);
phi_f4 = arg7 / temp_f0;
phi_f26 = temp_f0;
}
temp_s1->unk10.x = (f32) (temp_f24 * phi_f4);
temp_s1->unk10.y = (f32) (temp_f22 * phi_f4);
temp_s1->unk10.z = (f32) (temp_f20 * phi_f4);
temp_f20_2 = *(&D_800B1DEC + (gCurrentCameraID * 0x558));
temp_f22_2 = -func_E0200510(temp_f20_2);
temp_f4 = temp_f22_2 * temp_s1->unk10;
temp_f20_3 = -func_E0200500(temp_f20_2);
temp_f2 = temp_f20_3 * temp_s1->unk18;
temp_f12 = (temp_f4 * temp_f4) + (temp_f2 * temp_f2);
phi_f12_2 = temp_f12;
if (temp_f12 != 0.0f) {
phi_f12_2 = func_E0200550(temp_f12);
}
if (((temp_f22_2 * temp_s1->unk10) + (temp_f20_3 * temp_s1->unk18)) < 0.0f) {
phi_f0 = -20.0f;
phi_f12 = -phi_f12_2;
} else {
phi_f0 = 20.0f;
phi_f12 = phi_f12_2;
}
temp_s1->unk2C = phi_f0;
temp_f20_4 = -phi_f12;
temp_f0_2 = func_E0200520(0, 0, -temp_s1->unk14, temp_f20_4);
temp_s1->unk_30 = (bitwise f32) (s32) (phi_f26 / arg7);
temp_s0_2 = temp_s1 + 0x40;
temp_s1->unk24 = temp_f0_2;
temp_s1->unk20 = temp_f0_2;
temp_s1->unk34 = temp_f20_4;
func_E0200430(temp_s0_2, (bitwise s32) temp_s1->unk4, (bitwise s32) temp_s1->unk8, (bitwise s32) temp_s1->unkC);
phi_a1 = 1;
phi_a0 = temp_s0_2;
loop_13:
phi_v0 = temp_s0_2;
phi_v1 = phi_a0 + 0x40;
loop_14:
phi_v1->unk0 = (s32) phi_v0->unk0;
phi_v1->unk4 = (s32) phi_v0->unk4;
phi_v1->unk8 = (s32) phi_v0->unk8;
phi_v1->unkC = (s32) phi_v0->unkC;
temp_v0_4 = phi_v0 + 0x10;
phi_v0 = temp_v0_4;
phi_v1 = phi_v1 + 0x10;
if (temp_v0_4 != (temp_s1 + 0x80)) {
goto loop_14;
}
temp_a1 = phi_a1 + 1;
phi_a1 = temp_a1;
phi_a0 = phi_a0 + 0x40;
if (temp_a1 < 8) {
goto loop_13;
}
temp_s1->unk3C = -1;
return temp_s2;
}*/
INCLUDE_ASM(s32, "code_331940", func_E001E370); INCLUDE_ASM(s32, "code_331940", func_E001E370);

View File

@ -1,5 +1,7 @@
#include "common.h" #include "common.h"
extern EffectTableEntry D_8007F210[135];
INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_8006F890); INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_8006F890);
INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_8006F8F0); INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_8006F8F0);
@ -273,6 +275,7 @@ INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072A70);
INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072AD0); INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072AD0);
// FILE SPLIT
INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072B30); INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072B30);
INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072BB0); INCLUDE_ASM(s32, "os/code_4ac90_len_3910", func_80072BB0);

View File

@ -20,7 +20,7 @@ INCLUDE_ASM(s32, "world/world", func_80059AB8);
INCLUDE_ASM(s32, "world/world", func_80059BD4); INCLUDE_ASM(s32, "world/world", func_80059BD4);
void func_80059C80(void) { void func_80059C80(EffectInstance* effectInst) {
} }
INCLUDE_ASM(s32, "world/world", func_80059C88); INCLUDE_ASM(s32, "world/world", func_80059C88);
@ -32,18 +32,207 @@ void func_80059D48(void) {
INCLUDE_ASM(s32, "world/world", func_80059D50); INCLUDE_ASM(s32, "world/world", func_80059D50);
INCLUDE_ASM(s32, "world/world", render_effects); #define EFFECT_LOADED 1
extern EffectInstance* D_800B4398[96]; //effectInstanceList
extern Effect D_800A4000[15];
extern void* D_80059C80;
s32 render_effects(void) {
EffectInstance** curEffectInst;
s32 i;
curEffectInst = &D_800B4398[0];
for(i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
if ((curEffectInst[i] != NULL) && ((curEffectInst[i]->flags & 1) != 0) && ((curEffectInst[i]->flags & 8) != 0)) {
if(GAME_STATUS->isBattle) {
if((curEffectInst[i]->flags & 4) != 0) {
curEffectInst[i]->effect->renderWorld(curEffectInst[i]);
}
} else if((curEffectInst[i]->flags & 4) == 0) {
curEffectInst[i]->effect->renderWorld(curEffectInst[i]);
}
}
}
}
INCLUDE_ASM(s32, "world/world", func_80059F94); INCLUDE_ASM(s32, "world/world", func_80059F94);
INCLUDE_ASM(s32, "world/world", func_8005A2BC);
INCLUDE_ASM(s32, "world/world", remove_effect); EffectInstance* func_8005A2BC(EffectBlueprint* effectBp) {
EffectInstance *newEffectInst;
Effect* curEffect;
s32 i;
EffectInstance** temp = &D_800B4398[0];
INCLUDE_ASM(s32, "world/world", remove_all_effects); // Search for an unused instance
for(i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
if (temp[i] == NULL) {
break;
}
}
ASSERT(i < ARRAY_COUNT(D_800B4398));
// Allocate space for the new instance
D_800B4398[i] = newEffectInst = general_heap_malloc(sizeof(EffectInstance));
ASSERT(newEffectInst != NULL);
curEffect = &D_800A4000[0];
newEffectInst->effectIndex = effectBp->effectIndex;
newEffectInst->flags = 1;
// Look for a loaded effect of the proper index
for(i = 0; i < ARRAY_COUNT(D_800A4000); i++) {
if ((curEffect->flags & EFFECT_LOADED) && (curEffect->effectIndex == effectBp->effectIndex)) {
break;
}
curEffect++;
}
ASSERT(i < ARRAY_COUNT(D_800A4000));
// If this is the first new instance of the effect, initialize the function pointers
if (curEffect->instanceCounter == 0) {
curEffect->update = effectBp->update;
if (curEffect->update == NULL) {
curEffect->renderWorld = func_80059C80;
}
curEffect->renderWorld = effectBp->renderWorld;
if (curEffect->unk_18 == NULL) {
curEffect->unk_18 = func_80059C80;
}
curEffect->unk_18 = effectBp->unk_14;
if (curEffect->unk_18 == NULL) {
curEffect->unk_18 = func_80059C80;
}
}
curEffect->instanceCounter++;
newEffectInst->effect = curEffect;
if (effectBp->init != NULL) {
effectBp->init(newEffectInst);
}
if (GAME_STATUS->isBattle) {
newEffectInst->flags |= 4;
}
return newEffectInst;
}
void remove_effect(EffectInstance* arg0) {
s32 i;
EffectInstance** temp = &D_800B4398[0];
for(i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
if (temp[i] == arg0) {
break;
}
}
ASSERT(i < ARRAY_COUNT(D_800B4398));
if (arg0->unk_0C == NULL) {
general_heap_free(arg0);
D_800B4398[i] = NULL;
return;
}
general_heap_free(arg0->unk_0C);
general_heap_free(arg0);
D_800B4398[i] = NULL;
}
void remove_all_effects(void) {
s32 i;
EffectInstance** temp = &D_800B4398[0];
for(i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
EffectInstance* temp2 = temp[i];
if (temp2 != NULL && temp2->flags & 4) {
if(temp2->unk_0C != NULL) {
general_heap_free(temp2->unk_0C);
}
general_heap_free(temp2);
temp[i] = NULL;
}
}
}
typedef s32 TlbEntry[0x1000 / 4];
typedef TlbEntry TlbMappablePage[15];
extern TlbMappablePage D_80197000;
extern EffectTableEntry D_8007F210[135];
#ifdef NON_MATCHING
// Matching, but needs a file split
s32 play_effect(s32 effectIndex) {
EffectTableEntry* effectTable = &D_8007F210[0];
EffectTableEntry* effectEntry;
Effect* curEffect;
TlbMappablePage* tlbMappablePages;
s32 i;
effectEntry = &effectTable[effectIndex];
// Look for a loaded effect matching the desired index
for(i = 0, curEffect = &D_800A4000[0]; i < ARRAY_COUNT(D_800A4000); i++) {
if ((curEffect->flags & EFFECT_LOADED) && (curEffect->effectIndex == effectIndex)) {
break;
}
curEffect++;
}
// If an effect was found within the table, initialize it and return
if (i < ARRAY_COUNT(D_800A4000)) {
curEffect->effectIndex = effectIndex;
curEffect->unk_08 = NULL;
curEffect->flags = EFFECT_LOADED;
return 1;
}
// If a loaded effect wasn't found, look for the first empty space
for(i = 0, curEffect = &D_800A4000[0]; i < ARRAY_COUNT(D_800A4000); i++) {
if (!(curEffect->flags & EFFECT_LOADED)) {
break;
}
curEffect++;
}
// If no empty space was found, panic
ASSERT(i < ARRAY_COUNT(D_800A4000));
// Map space for the effect
tlbMappablePages = &D_80197000;
osMapTLB(i, 0, effectEntry->dmaDest, (s32)((*tlbMappablePages)[i]) & 0xFFFFFF, -1, -1);
// Copy the effect into the newly mapped space
dma_copy(effectEntry->dmaStart, effectEntry->dmaEnd, effectEntry->dmaDest);
// If there's extra data the effect normally loads, allocate space and copy into the new space
if (effectEntry->unkStartRom != NULL) {
void* effectDataBuf = general_heap_malloc(effectEntry->unkEndRom - effectEntry->unkStartRom);
curEffect->unk_1C = effectDataBuf;
ASSERT(effectDataBuf != NULL);
dma_copy(effectEntry->unkStartRom, effectEntry->unkEndRom, curEffect->unk_1C);
}
// Initialize the newly loaded effect data
curEffect->effectIndex = effectIndex;
curEffect->unk_08 = NULL;
curEffect->flags = EFFECT_LOADED;
return 1;
}
#else
INCLUDE_ASM(s32, "world/world", play_effect); INCLUDE_ASM(s32, "world/world", play_effect);
#endif
// FILE SPLIT
void load_world_script_api(void) { void load_world_script_api(void) {
dma_copy(&world_script_api_ROM_START, &world_script_api_ROM_END, &world_script_api_VRAM); dma_copy(&world_script_api_ROM_START, &world_script_api_ROM_END, &world_script_api_VRAM);
} }
@ -100,7 +289,7 @@ static Map mac_maps[] = {
{ MAP_UNSPLIT(mac_01, 0x80246730), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_01, 0x80246730), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mac_02, 0x80243580), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_02, 0x80243580), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mac_03, 0x802428B0), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_03, 0x802428B0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mac_04, 0x80242080), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(mac_04, 0x80242080), .bgName = "nok_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(mac_05, 0x802441A0), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_05, 0x802441A0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mac_06, 0x802416A0), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_06, 0x802416A0), .bgName = "nok_bg" },
}; };
@ -127,7 +316,7 @@ static Map tik_maps[] = {
{ MAP_UNSPLIT(tik_21, 0x80240990), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_21, 0x80240990), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(tik_22, 0x802409D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_22, 0x802409D0), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(tik_23, 0x80241160), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_23, 0x80241160), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(tik_24, 0x80240ED0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(tik_24, 0x80240ED0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(tik_25, 0x802407D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_25, 0x802407D0), .songVariation = 1, .flags = 2 },
}; };
@ -152,10 +341,10 @@ static Map kmr_maps[] = {
{ MAP_UNSPLIT(kmr_11, 0x80241180), .bgName = "kmr_bg" }, { MAP_UNSPLIT(kmr_11, 0x80241180), .bgName = "kmr_bg" },
{ MAP(kmr_12), .bgName = "kmr_bg" }, { MAP(kmr_12), .bgName = "kmr_bg" },
{ MAP_UNSPLIT(kmr_20, 0x80242C00), .bgName = "kmr_bg" }, // Mario's House { MAP_UNSPLIT(kmr_20, 0x80242C00), .bgName = "kmr_bg" }, // Mario's House
{ MAP_UNSPLIT(kmr_21, 0x802402F0), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kmr_21, 0x802402F0), .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kmr_22, 0x80240DA0), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kmr_22, 0x80240DA0), .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kmr_23, 0x80241150), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kmr_23, 0x80241150), .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kmr_24, 0x80240120), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kmr_24, 0x80240120), .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kmr_30, 0x802404F0) }, { MAP_UNSPLIT(kmr_30, 0x802404F0) },
}; };
@ -281,14 +470,14 @@ static Map nok_maps[] = {
/// Star Region /// Star Region
static Map hos_maps[] = { static Map hos_maps[] = {
{ MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(hos_01, 0x80240E40), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_01, 0x80240E40), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_02, 0x80242B90), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_02, 0x80242B90), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_03, 0x802435F0), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_03, 0x802435F0), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_04, 0x80240EE0), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_04, 0x80240EE0), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_05, 0x80245910), .bgName = "hos_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(hos_05, 0x80245910), .bgName = "hos_bg", .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(hos_06, 0x80242570), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_06, 0x80242570), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(hos_20, 0x80240390), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_20, 0x80240390), .bgName = "hos_bg" },
}; };
@ -312,29 +501,29 @@ static Map kpa_maps[] = {
{ MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 },
{ MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kpa_111, 0x802413E0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_111, 0x802413E0), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kpa_112, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_112, 0x80240020), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_113, 0x80240AD0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_113, 0x80240AD0), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kpa_114, 0x80240070), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_114, 0x80240070), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_115, 0x802413F0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_115, 0x802413F0), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kpa_116, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_116, 0x80240020), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kpa_117, 0x80240010), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(kpa_117, 0x80240010), .songVariation = 1, .flags = 1 },
@ -349,24 +538,24 @@ static Map kpa_maps[] = {
/// Peach's Castle Grounds /// Peach's Castle Grounds
static Map osr_maps[] = { static Map osr_maps[] = {
{ MAP_UNSPLIT(osr_00, 0x802407E0), .bgName = "nok_bg" }, { MAP_UNSPLIT(osr_00, 0x802407E0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(osr_03, 0x802403F0), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(osr_03, 0x802403F0), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(osr_04, 0x802400D0), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(osr_04, 0x802400D0), .bgName = "nok_bg", .init = (MapInit)0x80240000 },
}; };
/// Peach's Castle /// Peach's Castle
/// @bug There are two entries for kkj_26; the latter is unreachable. /// @bug There are two entries for kkj_26; the latter is unreachable.
static Map kkj_maps[] = { static Map kkj_maps[] = {
{ MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .songVariation = 1, .flags = 3, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .songVariation = 1, .flags = 3, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_01, 0x80240F10), .bgName = "nok_bg", .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_01, 0x80240F10), .bgName = "nok_bg", .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kkj_02, 0x80240030), .bgName = "nok_bg", .flags = 2 }, { MAP_UNSPLIT(kkj_02, 0x80240030), .bgName = "nok_bg", .flags = 2 },
{ MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .flags = 3, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .flags = 3, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_10, 0x80241120), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_10, 0x80241120), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kkj_11, 0x80241160), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_11, 0x80241160), .songVariation = 1, .flags = 3 },
{ MAP_UNSPLIT(kkj_12, 0x802408D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kkj_12, 0x802408D0), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .songVariation = 1, .flags = 3, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .songVariation = 1, .flags = 3, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_15, 0x80240640) }, { MAP_UNSPLIT(kkj_15, 0x80240640) },
{ MAP_UNSPLIT(kkj_16, 0x80241090), .flags = 0x1 }, { MAP_UNSPLIT(kkj_16, 0x80241090), .flags = 0x1 },
{ MAP_UNSPLIT(kkj_17, 0x802405B0) }, { MAP_UNSPLIT(kkj_17, 0x802405B0) },
@ -375,9 +564,9 @@ static Map kkj_maps[] = {
{ MAP_UNSPLIT(kkj_20, 0x80240600) }, { MAP_UNSPLIT(kkj_20, 0x80240600) },
{ MAP_UNSPLIT(kkj_21, 0x80240010), .flags = 0x1 }, { MAP_UNSPLIT(kkj_21, 0x80240010), .flags = 0x1 },
{ MAP_UNSPLIT(kkj_22, 0x80240020), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kkj_22, 0x80240020), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_24, 0x80240040), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kkj_24, 0x80240040), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_26, 0x80240070), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kkj_26, 0x80240070), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kkj_26, 0x80240070), .flags = 0x2 }, { MAP_UNSPLIT(kkj_26, 0x80240070), .flags = 0x2 },
{ MAP_UNSPLIT(kkj_27, 0x802404C0), .flags = 0x1 }, { MAP_UNSPLIT(kkj_27, 0x802404C0), .flags = 0x1 },
@ -457,7 +646,7 @@ static Map arn_maps[] = {
/// Tubba Blubba's Castle /// Tubba Blubba's Castle
static Map dgb_maps[] = { static Map dgb_maps[] = {
{ MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(dgb_01, 0x80243460), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_01, 0x80243460), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(dgb_02, 0x80241470), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_02, 0x80241470), .songVariation = 1, .flags = 2 },
{ MAP_UNSPLIT(dgb_03, 0x80242830), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_03, 0x80242830), .songVariation = 1, .flags = 2 },
@ -541,38 +730,38 @@ static Map sam_maps[] = {
/// Crystal Palace /// Crystal Palace
static Map pra_maps[] = { static Map pra_maps[] = {
{ MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_02, 0x802416C0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_02, 0x802416C0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_03, 0x802401E0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_03, 0x802401E0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_04, 0x80240970), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_04, 0x80240970), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_05, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_05, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_06, 0x80240F60), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_06, 0x80240F60), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_10, 0x802416D0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_10, 0x802416D0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_11, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_11, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_12, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_12, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_14, 0x80241200), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_14, 0x80241200), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_16, 0x80240F60), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_16, 0x80240F60), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_19, 0x802419D0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_19, 0x802419D0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_20, 0x80240F70), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_20, 0x80240F70), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_21, 0x80240140), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_21, 0x80240140), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_22, 0x802402F0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_22, 0x802402F0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_27, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_27, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_28, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_28, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_33, 0x802410C0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_33, 0x802410C0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_36, 0x80240F70), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_36, 0x80240F70), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_37, 0x80241840), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_37, 0x80241840), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_38, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_38, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_39, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_39, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_40, 0x80240F40), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(pra_40, 0x80240F40), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 },
}; };
/// Shy Guy's Toy Box /// Shy Guy's Toy Box
@ -611,8 +800,8 @@ static Map tst_maps[] = {
/// Credits /// Credits
static Map end_maps[] = { static Map end_maps[] = {
{ MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInit)0x80240000 },
}; };
/// Toad Town Playroom /// Toad Town Playroom

View File

@ -309,12 +309,16 @@ segments:
- [0x1086a0, c, code_1086a0_len_fc0] - [0x1086a0, c, code_1086a0_len_fc0]
- [0x109660, c, code_109660_len_1270] - [0x109660, c, code_109660_len_1270]
- [0x10A8D0, c, code_10A8D0] - [0x10A8D0, c, code_10A8D0]
- [0x10A9F0, i4, shadow/square, 16, 16] - [0x10A9F0, bin]
- [0x10AA70, i4, shadow/circle, 16, 16] #- [0x10A9F0, i4, shadow/square, 16, 16]
- [0x10AAF0, bin] #- [0x10AA70, i4, shadow/circle, 16, 16]
- [0x10AB70, i4, shadow/10AB70, 32, 32] - [0x10AAF0, bin]
- [0x10AD70, i4, shadow/10AD70, 32, 32] #- [0x10AB70, i4, shadow/10AB70, 32, 32]
- [0x10AF70, bin] # TODO #- [0x10AD70, i4, shadow/10AD70, 32, 32]
- [0x10AF70, bin] # TODO
- [0x10C880, rodata, code_102c80]
- [0x10CA50, rodata, code_104940_len_dc0]
- [0x10CAF0, bin]
- [0x1164B8, ci8, peach_letter, 150, 105] - [0x1164B8, ci8, peach_letter, 150, 105]
- [0x11A23E, bin] - [0x11A23E, bin]
- [0x11A240, palette, peach_letter] - [0x11A240, palette, peach_letter]

View File

@ -405,7 +405,6 @@ D_0A002F78 = 0x0A002F78;
D_0A001218 = 0x0A001218; D_0A001218 = 0x0A001218;
D_0A003F70 = 0x0A003F70; D_0A003F70 = 0x0A003F70;
D_0A002318 = 0x0A002318; D_0A002318 = 0x0A002318;
=======
D_8014F738 = 0x8014F738; D_8014F738 = 0x8014F738;
D_802BDF64 = 0x802BDF64; D_802BDF64 = 0x802BDF64;