Start decompiling modeseldll

This commit is contained in:
gamemasterplc 2024-04-07 20:03:26 -05:00
parent 70c811ea73
commit e58c88841e
5 changed files with 581 additions and 40 deletions

View file

@ -41,38 +41,38 @@ fn_1_C168 = .text:0x0000C168; // type:function size:0x154
fn_1_C2BC = .text:0x0000C2BC; // type:function size:0x78
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float
lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double
@ -176,14 +176,14 @@ lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:byte
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x38
lbl_1_data_38 = .data:0x00000038; // type:object size:0x22 data:string
lbl_1_data_5A = .data:0x0000005A; // type:object size:0x14 data:string
lbl_1_data_38 = .data:0x00000038; // type:object size:0x22 scope:local data:string
lbl_1_data_5A = .data:0x0000005A; // type:object size:0x14 scope:local data:string
lbl_1_data_6E = .data:0x0000006E; // type:object size:0x4
lbl_1_data_72 = .data:0x00000072; // type:object size:0xA data:string
lbl_1_data_7C = .data:0x0000007C; // type:object size:0x4 data:string
lbl_1_data_72 = .data:0x00000072; // type:object size:0xA scope:local data:string
lbl_1_data_7C = .data:0x0000007C; // type:object size:0x4 scope:local data:string
lbl_1_data_80 = .data:0x00000080; // type:object size:0xC
lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18
lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x18

View file

@ -1131,10 +1131,10 @@ config.libs = [
Rel('modeseldll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/modeseldll/main.c"),
Object(Matching, "REL/modeseldll/main.c"),
Object(NonMatching, "REL/modeseldll/modesel.c"),
Object(NonMatching, "REL/modeseldll/filesel.c"),
Object(NonMatching, "REL/modeseldll/datalist.c"),
Object(Matching, "REL/modeseldll/datalist.c"),
}
),
Rel('mpexDll',

45
include/REL/modeseldll.h Normal file
View file

@ -0,0 +1,45 @@
#ifndef MODESELDLL_H
#define MODESELDLL_H
#include "game/data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/sprite.h"
typedef struct datalist_model {
s32 datanum;
u32 attr;
s16 type;
s16 link;
s16 mot_link;
Vec pos;
Vec rot;
Vec scale;
} DataListModel;
typedef struct datalist_sprite {
u32 datanum;
s16 attr;
s16 prio;
float x;
float y;
GXColor color;
} DataListSprite;
s32 fn_1_2490(void);
s32 fn_1_37DC(void);
void fn_1_BED8(DataListModel *model_list);
void fn_1_C168(DataListSprite *sprite_list);
void fn_1_C2BC(void);
extern s16 lbl_1_bss_19A[24];
extern s16 lbl_1_bss_16A[24];
extern s16 lbl_1_bss_152[12];
extern s16 lbl_1_bss_150;
extern s16 lbl_1_data_100;
extern DataListModel lbl_1_data_428[];
extern DataListSprite lbl_1_data_93C[];
#endif

View file

@ -0,0 +1,130 @@
#include "REL/modeseldll.h"
s16 lbl_1_bss_19A[24];
s16 lbl_1_bss_16A[24];
s16 lbl_1_bss_152[12];
s16 lbl_1_bss_150;
DataListModel lbl_1_data_428[] = {
{ 0x630000, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630000, 0x1, 2, 0, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630001, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630001, 0x1, 2, 2, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630002, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630002, 0x1, 2, 4, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630003, 0x1, 1, -1, 4, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630004, 0x1, 1, -1, 4, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630026, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630027, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630028, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630029, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x63002A, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x63002B, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x63002C, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x63002D, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x63002E, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ 0x630007, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
{ -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
};
DataListSprite lbl_1_data_93C[] = {
{ 0x630009, 4, 2000, 288, 240, { 255, 255, 255, 255 } },
{ 0x630008, 4, 2000, 288, 100, { 255, 255, 255, 255 } },
{ 0x63000A, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x63000B, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x63000C, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x63001F, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x630020, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x630021, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x630022, 4, 2000, 288, 300, { 255, 255, 255, 255 } },
{ 0x63002F, 4, 2000, 288, 240, { 255, 255, 255, 255 } },
{ 0x63003C, 4, 2000, 288, 240, { 255, 255, 255, 255 } },
{ 0, 0, 0, 0, 0, { 0, 0, 0, 0 } },
};
void fn_1_BED8(DataListModel *model_list)
{
DataListModel *list;
s16 i;
s16 model;
s16 clear_i;
ModelData *model_ptr;
void *data;
list = model_list;
for(clear_i=0; clear_i<24; clear_i++) {
lbl_1_bss_19A[clear_i] = lbl_1_bss_16A[clear_i] = -1;
}
for(i=0; list->datanum != 0xFFFFFFFF; list++, i++) {
if(list->type == 0) {
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
model = Hu3DModelCreate(data);
lbl_1_bss_19A[i] = model;
Hu3DModelAttrSet(model, list->attr);
Hu3DModelPosSetV(model, &list->pos);
Hu3DModelRotSetV(model, &list->rot);
Hu3DModelScaleSetV(model, &list->scale);
model_ptr = &Hu3DData[model];
if(model_ptr->unk_08 != -1) {
lbl_1_bss_16A[i] = model_ptr->unk_08;
}
} else if(list->type == 1) {
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
lbl_1_bss_16A[i] = Hu3DJointMotion(lbl_1_bss_19A[list->mot_link], data);
}
(void)i;
}
list = model_list;
for(i=0; list->datanum != 0xFFFFFFFF; list++, i++) {
if(list->type == 2) {
model = Hu3DModelLink(lbl_1_bss_19A[list->link]);
lbl_1_bss_19A[i] = model;
Hu3DModelAttrSet(model, list->attr);
Hu3DModelPosSetV(model, &list->pos);
Hu3DModelRotSetV(model, &list->rot);
Hu3DModelScaleSetV(model, &list->scale);
}
if(list->type == 0 && list->mot_link != -1) {
Hu3DMotionSet(lbl_1_bss_19A[i], lbl_1_bss_16A[list->mot_link]);
}
(void)i;
}
}
void fn_1_C168(DataListSprite *sprite_list)
{
DataListSprite *list;
s16 sprite;
s16 clear_i;
s16 i;
list = sprite_list;
for(clear_i=0; clear_i<11; clear_i++) {
lbl_1_bss_152[clear_i] = -1;
}
for(i=0; list->datanum; i++, list++) {
sprite = espEntry(list->datanum, 100, 0);
lbl_1_bss_152[i] = sprite;
espPosSet(sprite, list->x, list->y);
espColorSet(sprite, list->color.r, list->color.g, list->color.b);
espTPLvlSet(sprite, list->color.a/255.0f);
espPriSet(sprite, list->prio);
espAttrSet(sprite, list->attr);
}
HuSprGrpScissorSet(espGrpIDGet(), 0, 16, 640, 448);
}
void fn_1_C2BC(void)
{
s16 i;
for(i=0; i<11; i++) {
if(lbl_1_bss_152[i] != -1) {
espKill(lbl_1_bss_152[i]);
}
}
}

366
src/REL/modeseldll/main.c Normal file
View file

@ -0,0 +1,366 @@
#include "game/object.h"
#include "game/hsfman.h"
#include "game/process.h"
#include "game/window.h"
#include "game/objsub.h"
#include "game/audio.h"
#include "game/wipe.h"
#include "game/pad.h"
#include "math.h"
#include "game/gamework_data.h"
#include "REL/modeseldll.h"
#include "rel_sqrt_consts.h"
typedef struct camera_view_params {
Vec rot;
Vec pos;
float zoom;
} CameraViewParams;
CameraViewParams lbl_1_data_0[] = {
{ { 0, 0, 0 }, { 0, 0, 0 }, 1500 },
{ { 0, 0, 0 }, { 0, 0, 0 }, 524 }
};
omObjData *lbl_1_bss_7C;
Process *lbl_1_bss_78;
s32 lbl_1_bss_70[2];
Vec lbl_1_bss_64;
Vec lbl_1_bss_58;
float lbl_1_bss_54;
Vec lbl_1_bss_24[4];
Vec lbl_1_bss_C[2];
float lbl_1_bss_4[2];
s32 lbl_1_bss_0;
void fn_1_414(void);
void fn_1_9F4(void);
void fn_1_AF0(void);
void fn_1_B8C(omObjData *object);
void fn_1_F40(omObjData *object);
void fn_1_1B6C(void);
void ModuleProlog(void)
{
s32 light;
OSReport("******* MS ObjectSetup *********\n");
lbl_1_bss_78 = omInitObjMan(50, 8192);
omGameSysInit(lbl_1_bss_78);
lbl_1_bss_24[0].x = -70;
lbl_1_bss_24[0].y = 0;
lbl_1_bss_24[0].z = 0;
lbl_1_bss_C[0].x = 0;
lbl_1_bss_C[0].y = 130;
lbl_1_bss_C[0].z = -186;
lbl_1_bss_4[0] = 1360;
lbl_1_bss_64 = lbl_1_bss_24[0];
lbl_1_bss_58 = lbl_1_bss_C[0];
lbl_1_bss_54 = lbl_1_bss_4[0];
lbl_1_bss_70[0] = 0;
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, 30, 20, 8000, 1.2f);
Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1);
Hu3DCameraScissorSet(1, 0, 16, 640, 448);
light = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255);
Hu3DGLightInfinitytSet(light);
HuPrcChildCreate(fn_1_414, 100, 16384, 0, lbl_1_bss_78);
HuPrcChildCreate(fn_1_AF0, 200, 4096, 0, lbl_1_bss_78);
lbl_1_bss_7C = omAddObjEx(lbl_1_bss_78, 32730, 0, 0, -1, fn_1_B8C);
omAddObjEx(lbl_1_bss_78, 0, 32, 32, -1, fn_1_F40);
Hu3DBGColorSet(0, 0, 0);
mgBoardHostEnableF = 0;
HuWinInit(1);
mgPracticeEnableF = 0;
mgQuitExtraF = 0;
}
void fn_1_414(void)
{
fn_1_9F4();
if(omovlevtno) {
HuAudSeqPlay(43);
} else {
if(!fn_1_37DC()) {
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
HuAudSeqAllFadeOut(1000);
while(WipeStatGet()) {
HuPrcVSleep();
}
omOvlReturnEx(1, 1);
while(1) {
HuPrcVSleep();
}
} else {
s16 group = HuSprGrpCreate(1);
s16 sprite = HuTHPSprCreateVol("movie/opmov_s00.thp", 0, 3000, 70.0);
HuSprGrpMemberSet(group, 0, sprite);
HuSprPosSet(group, 0, 288, 240);
HuSprDrawNoSet(group, 0, 127);
HuPrcSleep(2);
espAttrSet(lbl_1_bss_152[0], 4);
HuAudFXStop(lbl_1_data_100);
while(!HuTHPEndCheck()) {
HuPrcVSleep();
}
HuTHPClose();
HuSprGrpKill(group);
}
}
espAttrReset(lbl_1_bss_152[9], 4);
espDrawNoSet(lbl_1_bss_152[9], 127);
{
s16 result = fn_1_2490();
if(result == -1) {
HuAudSeqAllFadeOut(1000);
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while(WipeStatGet()) {
HuPrcVSleep();
}
omOvlGotoEx(OVL_MODESEL, 1, 0, 0);
while(1) {
HuPrcVSleep();
}
} else {
s16 i;
omOvlHisData *his;
for(i=0; i<4; i++) {
GWPlayerCfg[i].pad_idx = i;
if(!HuPadStatGet(i)) {
GWPlayerCfg[i].iscom = 0;
} else {
GWPlayerCfg[i].iscom = 1;
}
}
his = omOvlHisGet(0);
omOvlHisChg(0, his->overlay, 1, his->stat);
_ClearFlag(0x10000);
_ClearFlag(0x10008);
_ClearFlag(0x1000C);
_ClearFlag(0x1000B);
GWGameStat.sound_mode = msmSysGetOutputMode();
switch(result) {
case 0:
GWMGExplainSet(GWGameStat.party_pause.explain_mg);
GWMGShowComSet(GWGameStat.party_pause.show_com_mg);
GWMGListSet(GWGameStat.party_pause.mg_list);
GWMessSpeedSet(GWGameStat.party_pause.mess_speed);
GWSaveModeSet(GWGameStat.party_pause.save_mode);
omOvlCallEx(OVL_MENT, 1, 0, 0);
break;
case 1:
GWMGExplainSet(GWGameStat.story_pause.explain_mg);
GWMGShowComSet(GWGameStat.story_pause.show_com_mg);
GWMGListSet(GWGameStat.story_pause.mg_list);
GWMessSpeedSet(GWGameStat.story_pause.mess_speed);
GWSaveModeSet(GWGameStat.story_pause.save_mode);
omOvlCallEx(OVL_MENT, 1, 1, 0);
break;
case 2:
omOvlCallEx(OVL_MGMODE, 1, 0, 0);
break;
case 3:
omOvlCallEx(OVL_MENT, 1, 3, 0);
break;
case 4:
omOvlCallEx(OVL_MENT, 1, 4, 0);
break;
case 5:
omOvlCallEx(OVL_MPEX, 1, 0, 0);
break;
}
while(1) {
HuPrcVSleep();
}
}
}
}
void fn_1_9F4(void)
{
Vec pos;
Vec target;
Vec up;
Hu3DShadowCreate(20, 100, 5000);
Hu3DShadowTPLvlSet(0.3f);
Hu3DShadowSizeSet(192);
target.x = target.y = target.z = 0;
pos.x = 500;
pos.z = 1000;
pos.y = 2000;
up.x = 0;
up.y = 1;
up.z = 0;
Hu3DShadowPosSet(&pos, &up, &target);
fn_1_BED8(lbl_1_data_428);
fn_1_C168(lbl_1_data_93C);
}
void fn_1_AF0(void)
{
s16 i;
while(1) {
if(lbl_1_bss_70[0] || omSysExitReq) {
break;
}
HuPrcVSleep();
}
for(i=0; i<4; i++) {
GWPlayerCfg[i].character = -1;
}
BoardStatusKill();
omOvlReturnEx(1, 1);
HuPrcEnd();
}
u16 lbl_1_data_6E[] = { 1, 2 };
void fn_1_B8C(omObjData *object)
{
s16 i;
for(i=0; i<1; i++) {
Vec pos, target, up;
float x, y, z;
x = lbl_1_bss_24[i].x;
y = lbl_1_bss_24[i].y;
z = lbl_1_bss_24[i].z;
pos.x = (((sin((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_4[i])+lbl_1_bss_C[i].x);
pos.y = (-sin((M_PI*x)/180.0)*lbl_1_bss_4[i])+lbl_1_bss_C[i].y;
pos.z = ((cos((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_4[i])+lbl_1_bss_C[i].z;
target.x = lbl_1_bss_C[i].x;
target.y = lbl_1_bss_C[i].y;
target.z = lbl_1_bss_C[i].z;
up.x = sin((M_PI*y)/180.0)*sin((M_PI*x)/180.0);
up.y = cos((M_PI*x)/180.0);
up.z = cos((M_PI*y)/180.0)*sin((M_PI*x)/180.0);
Hu3DCameraPosSet(lbl_1_data_6E[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
}
}
void fn_1_F40(omObjData *object)
{
Vec pos;
Vec offset;
Vec dir;
Vec y_offset;
f32 z_rot;
s8 stick_pos;
if (!lbl_1_bss_0) {
fn_1_1B6C();
return;
}
lbl_1_bss_24[0].y += 0.1f * HuPadStkX[0];
lbl_1_bss_24[0].x += 0.1f * HuPadStkY[0];
lbl_1_bss_4[0] += HuPadTrigL[0] / 2;
lbl_1_bss_4[0] -= HuPadTrigR[0] / 2;
if(HuPadBtnDown[0] & PAD_BUTTON_B) {
OSReport("%f,%f,%f\n", lbl_1_bss_24[0].x, lbl_1_bss_24[0].y, lbl_1_bss_24[0].z);
OSReport("%f,%f,%f\n", lbl_1_bss_C[0].x, lbl_1_bss_C[0].y, lbl_1_bss_C[0].z);
OSReport("%f\n", lbl_1_bss_4[0]);
}
if (lbl_1_bss_4[0] < 100.0f) {
lbl_1_bss_4[0] = 100.0f;
}
pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0)));
pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sin((M_PI * lbl_1_bss_24[0].x) / 180.0)));
pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0))));
offset.x = lbl_1_bss_C[0].x - pos.x;
offset.y = lbl_1_bss_C[0].y - pos.y;
offset.z = lbl_1_bss_C[0].z - pos.z;
dir.x = (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0));
dir.y = cos((M_PI * lbl_1_bss_24[0].x) / 180.0);
dir.z = (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0));
z_rot = lbl_1_bss_24[0].z;
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0))
+ dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0))
+ dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0))
+ (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0))
+ dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0)));
PSVECCrossProduct(&dir, &offset, &offset);
PSVECNormalize(&offset, &offset);
stick_pos = (HuPadSubStkX[0] & 0xF8);
if (stick_pos != 0) {
lbl_1_bss_C[0].x += 0.05f * (offset.x * stick_pos);
lbl_1_bss_C[0].y += 0.05f * (offset.y * stick_pos);
lbl_1_bss_C[0].z += 0.05f * (offset.z * stick_pos);
}
PSVECNormalize(&y_offset, &offset);
stick_pos = -(HuPadSubStkY[0] & 0xF8);
if (stick_pos != 0) {
lbl_1_bss_C[0].x += 0.05f * (offset.x * stick_pos);
lbl_1_bss_C[0].y += 0.05f * (offset.y * stick_pos);
lbl_1_bss_C[0].z += 0.05f * (offset.z * stick_pos);
}
}
void fn_1_1B6C(void)
{
Vec delta_vec;
float delta_zoom;
if(lbl_1_bss_70[0]) {
return;
}
VECSubtract(&lbl_1_bss_64, &lbl_1_bss_24[0], &delta_vec);
if(VECMag(&delta_vec) > 0.2) {
VECScale(&delta_vec, &delta_vec, 0.05f);
VECAdd(&lbl_1_bss_24[0], &delta_vec, &lbl_1_bss_24[0]);
} else {
lbl_1_bss_24[0] = lbl_1_bss_64;
}
VECSubtract(&lbl_1_bss_58, &lbl_1_bss_C[0], &delta_vec);
if(VECMag(&delta_vec) > 0.2) {
VECScale(&delta_vec, &delta_vec, 0.05f);
VECAdd(&lbl_1_bss_C[0], &delta_vec, &lbl_1_bss_C[0]);
} else {
lbl_1_bss_C[0] = lbl_1_bss_58;
}
delta_zoom = lbl_1_bss_54-lbl_1_bss_4[0];
if(sqrtf(delta_zoom*delta_zoom) > 0.2) {
delta_zoom *= 0.05f;
lbl_1_bss_4[0] += delta_zoom;
} else {
lbl_1_bss_4[0] = lbl_1_bss_54;
}
}
void fn_1_1E30(s16 view)
{
lbl_1_bss_64 = lbl_1_data_0[view].rot;
lbl_1_bss_58 = lbl_1_data_0[view].pos;
lbl_1_bss_54 = lbl_1_data_0[view].zoom;
}
void fn_1_1EC0(s16 view)
{
s16 i;
lbl_1_bss_24[0] = lbl_1_data_0[view].rot;
lbl_1_bss_64 = lbl_1_bss_24[0];
lbl_1_bss_C[0] = lbl_1_data_0[view].pos;
lbl_1_bss_58 = lbl_1_bss_C[0];
lbl_1_bss_54 = lbl_1_bss_4[0] = lbl_1_data_0[view].zoom;
fn_1_B8C(NULL);
}
float fn_1_2368(void)
{
float delta_zoom = lbl_1_bss_54-lbl_1_bss_4[0];
return sqrtf(delta_zoom*delta_zoom);
}