commit
ae46538ad6
7 changed files with 1857 additions and 15 deletions
|
|
@ -43,7 +43,7 @@ REL/mgmodedll/main.c:
|
|||
.text start:0x00018DF8 end:0x000267E8
|
||||
.rodata start:0x000005B0 end:0x00000718
|
||||
.data start:0x000001E0 end:0x00000490
|
||||
.bss start:0x000003C0 end:0x00002C9A
|
||||
.bss start:0x000003C0 end:0x000020A8
|
||||
|
||||
REL/mgmodedll/datalist.c:
|
||||
.text start:0x000267E8 end:0x00026C28
|
||||
|
|
@ -54,3 +54,4 @@ REL/mgmodedll/minigame.c:
|
|||
.text start:0x00026C28 end:0x00027CF0
|
||||
.rodata start:0x00000728 end:0x00000790
|
||||
.data start:0x000009C0 end:0x00000A02
|
||||
.bss start:0x000020A8 end:0x00002C9A
|
||||
|
|
|
|||
|
|
@ -184,9 +184,9 @@ lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double
|
|||
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0xC data:4byte
|
||||
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0xC data:4byte
|
||||
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0xC data:4byte
|
||||
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0xC data:float
|
||||
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0xC data:float
|
||||
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0xC data:float
|
||||
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float
|
||||
|
|
@ -447,8 +447,8 @@ lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0x4 data:float
|
|||
lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 data:float
|
||||
lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float
|
||||
|
|
@ -466,8 +466,8 @@ lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x8 data:double
|
|||
lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_78C = .rodata:0x0000078C; // type:object size:0x4 data:float
|
||||
lbl_1_data_0 = .data:0x00000000; // type:object size:0x1C
|
||||
lbl_1_data_1C = .data:0x0000001C; // type:object size:0x24
|
||||
lbl_1_data_40 = .data:0x00000040; // type:object size:0x30 data:4byte
|
||||
lbl_1_data_1C = .data:0x0000001C; // type:object size:0x22 data:string
|
||||
lbl_1_data_40 = .data:0x00000040; // type:object size:0x30 data:float
|
||||
lbl_1_data_70 = .data:0x00000070; // type:object size:0x16 data:string
|
||||
lbl_1_data_86 = .data:0x00000086; // type:object size:0x6
|
||||
lbl_1_data_8C = .data:0x0000008C; // type:object size:0x4
|
||||
|
|
@ -509,7 +509,7 @@ lbl_1_data_36C = .data:0x0000036C; // type:object size:0x60
|
|||
lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x18 data:4byte
|
||||
lbl_1_data_3E4 = .data:0x000003E4; // type:object size:0x64
|
||||
lbl_1_data_448 = .data:0x00000448; // type:object size:0x40
|
||||
lbl_1_data_488 = .data:0x00000488; // type:object size:0x8 data:4byte
|
||||
lbl_1_data_488 = .data:0x00000488; // type:object size:0x4 data:4byte
|
||||
lbl_1_data_490 = .data:0x00000490; // type:object size:0x2D8
|
||||
lbl_1_data_768 = .data:0x00000768; // type:object size:0x258
|
||||
lbl_1_data_9C0 = .data:0x000009C0; // type:object size:0x20
|
||||
|
|
@ -522,13 +522,15 @@ lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x8 data:float
|
|||
lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x18 data:4byte
|
||||
lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x18 data:4byte
|
||||
lbl_1_bss_2A4 = .bss:0x000002A4; // type:object size:0x2 data:2byte
|
||||
lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0xA data:2byte
|
||||
lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0x2 data:2byte
|
||||
lbl_1_bss_2A8 = .bss:0x000002A8; // type:object size:0x8 data:2byte
|
||||
lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 data:float
|
||||
lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xC data:4byte
|
||||
lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0xC data:4byte
|
||||
lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x2 data:2byte
|
||||
lbl_1_bss_2CE = .bss:0x000002CE; // type:object size:0x2 data:2byte
|
||||
lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x8 data:4byte
|
||||
lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x4 data:4byte
|
||||
lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x4 data:4byte
|
||||
lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x4 data:4byte
|
||||
lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x4 data:4byte
|
||||
lbl_1_bss_2E2 = .bss:0x000002E2; // type:object size:0x2 data:2byte
|
||||
|
|
@ -568,7 +570,8 @@ lbl_1_bss_3C8 = .bss:0x000003C8; // type:object size:0x4 data:4byte
|
|||
lbl_1_bss_3CC = .bss:0x000003CC; // type:object size:0x1A40
|
||||
lbl_1_bss_1E0C = .bss:0x00001E0C; // type:object size:0x4 data:4byte
|
||||
lbl_1_bss_1E10 = .bss:0x00001E10; // type:object size:0x240 data:4byte
|
||||
lbl_1_bss_2050 = .bss:0x00002050; // type:object size:0x5A
|
||||
lbl_1_bss_2050 = .bss:0x00002050; // type:object size:0x58 data:4byte
|
||||
lbl_1_bss_20A8 = .bss:0x000020A8; // type:object size:0x2 data:2byte
|
||||
lbl_1_bss_20AA = .bss:0x000020AA; // type:object size:0x2 data:2byte
|
||||
lbl_1_bss_20AC = .bss:0x000020AC; // type:object size:0x14 data:2byte
|
||||
lbl_1_bss_20C0 = .bss:0x000020C0; // type:object size:0x578
|
||||
|
|
|
|||
|
|
@ -1331,14 +1331,14 @@ config.libs = [
|
|||
"mgmodedll",
|
||||
objects={
|
||||
Object(Matching, "REL/executor.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/mgmode.c"),
|
||||
Object(Matching, "REL/mgmodedll/mgmode.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/free_play.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/record.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/battle.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/tictactoe.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/main.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/datalist.c"),
|
||||
Object(NonMatching, "REL/mgmodedll/minigame.c"),
|
||||
Object(Matching, "REL/mgmodedll/datalist.c"),
|
||||
Object(Matching, "REL/mgmodedll/minigame.c"),
|
||||
},
|
||||
),
|
||||
Rel(
|
||||
|
|
|
|||
91
include/REL/mgmodedll.h
Normal file
91
include/REL/mgmodedll.h
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
#ifndef MGMODEDLL_H
|
||||
#define MGMODEDLL_H
|
||||
|
||||
#include "game/data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
#include "game/pad.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;
|
||||
|
||||
typedef struct struct_bss8_24 {
|
||||
u8 unk0[0x5C];
|
||||
s32 unk5C;
|
||||
s32 unk60;
|
||||
s32 unk64;
|
||||
s32 unk68;
|
||||
s32 unk6C;
|
||||
u8 unk70[0x20];
|
||||
} StructBss8_24;
|
||||
|
||||
typedef struct struct_bss8 {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
s32 unk18;
|
||||
s32 unk1C;
|
||||
s32 unk20;
|
||||
StructBss8_24 unk24[4];
|
||||
} StructBss8;
|
||||
|
||||
extern s16 lbl_1_bss_2C80[13];
|
||||
extern s16 lbl_1_bss_2C66[13];
|
||||
extern s16 lbl_1_bss_2C2C[29];
|
||||
extern s16 lbl_1_bss_20C0[10][70];
|
||||
extern s16 lbl_1_bss_20AC[10];
|
||||
extern StructBss8 lbl_1_bss_8;
|
||||
|
||||
extern s16 lbl_1_data_A2[];
|
||||
extern DataListModel lbl_1_data_490[];
|
||||
extern DataListSprite lbl_1_data_768[];
|
||||
|
||||
s32 fn_1_6D28(void);
|
||||
void fn_1_D8D0(void);
|
||||
s32 fn_1_E72C(void);
|
||||
s32 fn_1_13418(void);
|
||||
|
||||
void fn_1_18DF8(Process *arg0, StructBss8 *arg1);
|
||||
|
||||
void fn_1_19018(void);
|
||||
s32 fn_1_194C8(s32 arg0);
|
||||
|
||||
void fn_1_25584(s16 arg0);
|
||||
s32 fn_1_2530C(s32 arg0, s32 arg1, s32 arg2);
|
||||
void fn_1_25838(s16 arg0, u32 arg1, s32 arg2, s32 arg3);
|
||||
s32 fn_1_2592C(u32 arg0, s32 arg1, s32 arg2);
|
||||
s32 fn_1_25CA8(u32 arg0);
|
||||
void fn_1_25E74(s16 arg0);
|
||||
|
||||
void fn_1_267E8(DataListModel *model_list);
|
||||
void fn_1_26A78(DataListSprite *sprite_list);
|
||||
void fn_1_26C28(void);
|
||||
|
||||
void fn_1_279FC(s32 coinSkipF);
|
||||
|
||||
#endif
|
||||
131
src/REL/mgmodedll/datalist.c
Normal file
131
src/REL/mgmodedll/datalist.c
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
#include "REL/mgmodedll.h"
|
||||
|
||||
DataListModel lbl_1_data_490[] = {
|
||||
{ 0x620000, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620001, 0x40000001, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620002, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620003, 0, 1, -1, 2, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620004, 0, 1, -1, 2, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x62005E, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x62005F, 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620060, 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620061, 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620007, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } },
|
||||
{ 0x620008, 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_768[] = {
|
||||
{ 0x62000C, 0, 10, 288, -200, { 255, 255, 255, 255 } },
|
||||
{ 0x620009, 0, 10, 288, -200, { 255, 255, 255, 255 } },
|
||||
{ 0x62000A, 0, 10, 288, -200, { 255, 255, 255, 255 } },
|
||||
{ 0x62000D, 4, 100, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620018, 4, 200, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62001A, 4, 20, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62001B, 4, 30, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62001C, 4, 40, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62001D, 4, 50, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62001E, 4, 50, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62001F, 4, 50, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620020, 4, 50, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620021, 4, 50, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620025, 4, 200, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62000E, 4, 210, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62000F, 4, 210, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620019, 4, 200, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620028, 4, 10, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620028, 4, 10, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62002A, 4, 10, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62002E, 4, 200, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x62002F, 4, 200, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620032, 4, 5, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620031, 4, 4, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620030, 4, 4, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620029, 4, 4, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620029, 4, 4, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620033, 4, 50, 288, 240, { 255, 255, 255, 255 } },
|
||||
{ 0x620034, 4, 50, 288, 256, { 255, 255, 255, 255 } },
|
||||
{ 0, 0, 0, 0, 0, { 0, 0, 0, 0 } },
|
||||
};
|
||||
|
||||
void fn_1_267E8(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<13; clear_i++) {
|
||||
lbl_1_bss_2C80[clear_i] = lbl_1_bss_2C66[clear_i] = -1;
|
||||
}
|
||||
for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) {
|
||||
if(list->type == 0) {
|
||||
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||
model = Hu3DModelCreate(data);
|
||||
lbl_1_bss_2C80[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_2C66[i] = model_ptr->unk_08;
|
||||
}
|
||||
} else if(list->type == 1) {
|
||||
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||
lbl_1_bss_2C66[i] = Hu3DJointMotion(lbl_1_bss_2C80[list->mot_link], data);
|
||||
|
||||
}
|
||||
(void)i;
|
||||
}
|
||||
list = model_list;
|
||||
for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) {
|
||||
if(list->type == 2) {
|
||||
model = Hu3DModelLink(lbl_1_bss_2C80[list->link]);
|
||||
lbl_1_bss_2C80[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_2C80[i], lbl_1_bss_2C66[list->mot_link]);
|
||||
}
|
||||
(void)i;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_26A78(DataListSprite *sprite_list)
|
||||
{
|
||||
DataListSprite *list;
|
||||
s16 sprite;
|
||||
s16 clear_i;
|
||||
s16 i;
|
||||
list = sprite_list;
|
||||
for(clear_i=0; clear_i<29; clear_i++) {
|
||||
lbl_1_bss_2C2C[clear_i] = -1;
|
||||
}
|
||||
for(i=0; list->datanum; i++, list++) {
|
||||
sprite = espEntry(list->datanum, 100, 0);
|
||||
lbl_1_bss_2C2C[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);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_26BB0(void)
|
||||
{
|
||||
s16 i;
|
||||
for(i=0; i<29; i++) {
|
||||
if(lbl_1_bss_2C2C[i] != -1) {
|
||||
espKill(lbl_1_bss_2C2C[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
1340
src/REL/mgmodedll/mgmode.c
Normal file
1340
src/REL/mgmodedll/mgmode.c
Normal file
File diff suppressed because it is too large
Load diff
276
src/REL/mgmodedll/minigame.c
Normal file
276
src/REL/mgmodedll/minigame.c
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
#include "REL/mgmodedll.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/gamework.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/audio.h"
|
||||
|
||||
#include "game/chrman.h"
|
||||
|
||||
#include "math.h"
|
||||
|
||||
|
||||
s16 lbl_1_bss_2C80[13];
|
||||
s16 lbl_1_bss_2C66[13];
|
||||
s16 lbl_1_bss_2C2C[29];
|
||||
s16 lbl_1_bss_2C24[4];
|
||||
s16 lbl_1_bss_2C1C[4];
|
||||
s16 lbl_1_bss_2C14[4];
|
||||
s16 lbl_1_bss_2BC4[4][10];
|
||||
s16 lbl_1_bss_264C[10][70];
|
||||
s16 lbl_1_bss_2638[10];
|
||||
s16 lbl_1_bss_20C0[10][70];
|
||||
s16 lbl_1_bss_20AC[10];
|
||||
s16 lbl_1_bss_20AA;
|
||||
s16 lbl_1_bss_20A8;
|
||||
|
||||
s32 lbl_1_data_9C0[8] = {
|
||||
0x005F0000,
|
||||
0x001A0000,
|
||||
0x006D0000,
|
||||
0x008A0000,
|
||||
0x00850000,
|
||||
0x00110000,
|
||||
0x000D0000,
|
||||
0x00810000
|
||||
};
|
||||
|
||||
s32 lbl_1_data_9E0[8] = {
|
||||
0x005E0000,
|
||||
0x00190000,
|
||||
0x006C0000,
|
||||
0x00890000,
|
||||
0x00840000,
|
||||
0x00100000,
|
||||
0x000C0000,
|
||||
0x00800000
|
||||
};
|
||||
|
||||
s16 lbl_1_data_A00 = -1;
|
||||
|
||||
void fn_1_26C54(s16 layer);
|
||||
|
||||
void fn_1_26C28(void)
|
||||
{
|
||||
Hu3DLayerHookSet(2, fn_1_26C54);
|
||||
}
|
||||
|
||||
void fn_1_26C54(s16 layer)
|
||||
{
|
||||
Mtx44 proj;
|
||||
Mtx modelview;
|
||||
Vec pos, target, up;
|
||||
GXColor color;
|
||||
CameraData *camera = &Hu3DCamera[0];
|
||||
MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far);
|
||||
GXSetProjection(proj, GX_PERSPECTIVE);
|
||||
GXSetViewport(0, 0, 640, 480, 0, 1);
|
||||
GXSetScissor(0, 0, 640, 480);
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
||||
color.a = 255;
|
||||
GXSetTevColor(GX_TEVREG0, color);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
|
||||
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
|
||||
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetNumTexGens(0);
|
||||
GXSetNumTevStages(01);
|
||||
GXSetCullMode(GX_CULL_NONE);
|
||||
GXSetAlphaCompare(GX_GEQUAL, 0, GX_AOP_AND, GX_GEQUAL, 0);
|
||||
GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE);
|
||||
pos.x = pos.y = pos.z = 0;
|
||||
target.x = target.y = 0;
|
||||
target.z = -100;
|
||||
up.x = up.z = 0;
|
||||
up.y = 1;
|
||||
MTXLookAt(modelview, &pos, &up, &target);
|
||||
GXLoadPosMtxImm(modelview, GX_PNMTX0);
|
||||
pos.x = (10000.0f*(-sin(camera->fov/2.0f)))*1.2f;
|
||||
pos.y = (10000.0f*(-sin(camera->fov/2.0f)))*(5.0f/6.0f);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3f32(-pos.x, -pos.y, -10000.0f);
|
||||
GXPosition3f32(pos.x, -pos.y, -10000.0f);
|
||||
GXPosition3f32(pos.x, pos.y, -10000.0f);
|
||||
GXPosition3f32(-pos.x, pos.y, -10000.0f);
|
||||
GXEnd();
|
||||
}
|
||||
|
||||
void fn_1_27080(void)
|
||||
{
|
||||
s16 i;
|
||||
s32 status;
|
||||
CharModelDataClose(-1);
|
||||
CharKill(-1);
|
||||
for(i=0; i<4; i++) {
|
||||
status = HuDataDirReadAsync(lbl_1_data_9C0[GWPlayerCfg[i].character]);
|
||||
if(status != -1) {
|
||||
while(!HuDataGetAsyncStat(status)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
CharARAMOpen(GWPlayerCfg[i].character);
|
||||
}
|
||||
for(i=0; i<2; i++) {
|
||||
status = HuDataDirReadAsync(lbl_1_data_9E0[GWPlayerCfg[i].character]);
|
||||
if(status != -1) {
|
||||
while(!HuDataGetAsyncStat(status)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
}
|
||||
lbl_1_bss_20AA = 0;
|
||||
HuPrcEnd();
|
||||
while(1) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
s16 fn_1_271B4(s16 mgNo, s16 x, s16 y)
|
||||
{
|
||||
s16 time;
|
||||
AnimData *anim;
|
||||
s16 sprite;
|
||||
s32 mgpic;
|
||||
if(mgNo == -1) {
|
||||
if(lbl_1_data_A00 == -1) {
|
||||
return;
|
||||
}
|
||||
for(time=0; time<=10; time++) {
|
||||
HuSprGrpTPLvlSet(lbl_1_data_A00, 1.0-(time/10.0));
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuSprGrpKill(lbl_1_data_A00);
|
||||
lbl_1_data_A00 = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
if(lbl_1_data_A00 != -1) {
|
||||
HuSprGrpKill(lbl_1_data_A00);
|
||||
}
|
||||
lbl_1_data_A00 = HuSprGrpCreate(1);
|
||||
mgpic = mgInfoTbl[mgNo].mg_pic[0];
|
||||
if(GWMGAvailGet(mgNo+401)) {
|
||||
anim = HuSprAnimReadFile(mgpic);
|
||||
} else {
|
||||
anim = HuSprAnimReadFile(0x62002C);
|
||||
}
|
||||
sprite = HuSprCreate(anim, 100, 0);
|
||||
HuSprGrpMemberSet(lbl_1_data_A00, 0, sprite);
|
||||
HuSprGrpPosSet(lbl_1_data_A00, x, y);
|
||||
HuSprGrpScaleSet(lbl_1_data_A00, 0.55f, 0.55f);
|
||||
HuSprGrpDrawNoSet(lbl_1_data_A00, 64);
|
||||
return lbl_1_data_A00;
|
||||
}
|
||||
|
||||
void fn_1_27418(void)
|
||||
{
|
||||
s16 i;
|
||||
s16 j;
|
||||
for(i=0; i<4; i++) {
|
||||
lbl_1_bss_2C1C[i] = i;
|
||||
}
|
||||
for(i=0; i<4; i++) {
|
||||
for(j=0; j<3-i; j++) {
|
||||
if(GWPlayerCfg[lbl_1_bss_2C1C[j]].group > GWPlayerCfg[lbl_1_bss_2C1C[j+1]].group) {
|
||||
s16 temp = lbl_1_bss_2C1C[j];
|
||||
lbl_1_bss_2C1C[j] = lbl_1_bss_2C1C[j+1];
|
||||
lbl_1_bss_2C1C[j+1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(i=0; i<4; i++) {
|
||||
s16 charNo;
|
||||
lbl_1_bss_2C24[i] = charNo = GWPlayerCfg[lbl_1_bss_2C1C[i]].character;
|
||||
lbl_1_bss_2C14[i] = CharModelCreate(charNo, 2);
|
||||
lbl_1_bss_2BC4[i][0] = CharModelMotionCreate(charNo, 0x5F0000);
|
||||
lbl_1_bss_2BC4[i][1] = CharModelMotionCreate(charNo, 0x5F0002);
|
||||
lbl_1_bss_2BC4[i][2] = CharModelMotionCreate(charNo, 0x5F0003);
|
||||
lbl_1_bss_2BC4[i][3] = CharModelMotionCreate(charNo, 0x5F0048);
|
||||
lbl_1_bss_2BC4[i][4] = CharModelMotionCreate(charNo, 0x5F0049);
|
||||
lbl_1_bss_2BC4[i][5] = CharModelMotionCreate(charNo, 0x5F0017);
|
||||
lbl_1_bss_2BC4[i][6] = CharModelMotionCreate(charNo, 0x5F0018);
|
||||
CharModelVoiceEnableSet(GWPlayerCfg[lbl_1_bss_2C1C[i]].character, lbl_1_bss_2BC4[i][1], 0);
|
||||
CharModelVoiceEnableSet(GWPlayerCfg[lbl_1_bss_2C1C[i]].character, lbl_1_bss_2BC4[i][2], 0);
|
||||
Hu3DModelPosSet(lbl_1_bss_2C14[i], 600, 0, 800);
|
||||
Hu3DModelLayerSet(lbl_1_bss_2C14[i], 3);
|
||||
CharModelDataClose(charNo);
|
||||
Hu3DModelShadowSet(lbl_1_bss_2C14[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2783C(s16 evtno)
|
||||
{
|
||||
s16 i;
|
||||
omOvlHisData *his;
|
||||
for(i=0; i<4; i++) {
|
||||
GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68;
|
||||
GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60;
|
||||
GWPlayerCfg[i].pad_idx = lbl_1_bss_8.unk24[i].unk6C;
|
||||
GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64;
|
||||
}
|
||||
WipeColorSet(255, 255, 255);
|
||||
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
||||
HuAudSeqAllFadeOut(1000);
|
||||
while(WipeStatGet()) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
CharKill(-1);
|
||||
for(i=0; i<4; i++) {
|
||||
CharARAMOpen(GWPlayerCfg[i].character);
|
||||
}
|
||||
HuAudVoiceInit(-1);
|
||||
his = omOvlHisGet(0);
|
||||
omOvlHisChg(0, OVL_MGMODE, evtno, his->stat);
|
||||
omOvlCallEx(OVL_INST, 1, 0, 0);
|
||||
while(1) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_279FC(s32 coinSkipF)
|
||||
{
|
||||
s16 i;
|
||||
s16 mgNum;
|
||||
for(mgNum=0; mgInfoTbl[mgNum].ovl != 65535; mgNum++);
|
||||
for(i=0; i<9; i++) {
|
||||
lbl_1_bss_2638[i] = lbl_1_bss_20AC[i] = 0;
|
||||
}
|
||||
for(i=0; i<mgNum; i++) {
|
||||
s16 type = mgInfoTbl[i].type;
|
||||
if(type >= 0 && type < 9) {
|
||||
if(coinSkipF) {
|
||||
s16 ovl = mgInfoTbl[i].ovl;
|
||||
if(ovl == OVL_M408 || ovl == OVL_M422 || ovl == OVL_M430) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
lbl_1_bss_264C[type][lbl_1_bss_2638[type]] = i;
|
||||
lbl_1_bss_2638[type]++;
|
||||
if(GWMGAvailGet(i+401)) {
|
||||
lbl_1_bss_20C0[type][lbl_1_bss_20AC[type]] = i;
|
||||
lbl_1_bss_20AC[type]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_27C0C(s16 type)
|
||||
{
|
||||
s16 i;
|
||||
s16 j;
|
||||
for(i=0; i<256;) {
|
||||
for(j=0; j<lbl_1_bss_20AC[type]; j++, i++) {
|
||||
if(i > 256) {
|
||||
break;
|
||||
}
|
||||
mgIndexList[i] = lbl_1_bss_20C0[type][j];
|
||||
}
|
||||
}
|
||||
for(i=0; i<256; i++) {
|
||||
mgIndexList[i];
|
||||
}
|
||||
lbl_801D3E94 = 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue