From ca2b9cd67b8ad18ef6c1cd16648c65197da19b45 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Thu, 4 Apr 2024 22:26:51 -0500 Subject: [PATCH] Start more work on resultdll Solve fn_1_B78 and fully decompile datalist.c --- config/GMPE01_00/rels/resultDll/symbols.txt | 7 +- configure.py | 2 +- include/REL/resultdll.h | 41 + src/REL/resultDll/datalist.c | 86 ++ src/REL/resultDll/main.c | 833 +++++++++----------- 5 files changed, 526 insertions(+), 443 deletions(-) create mode 100644 include/REL/resultdll.h create mode 100644 src/REL/resultDll/datalist.c diff --git a/config/GMPE01_00/rels/resultDll/symbols.txt b/config/GMPE01_00/rels/resultDll/symbols.txt index 85f1fdb6..acded739 100644 --- a/config/GMPE01_00/rels/resultDll/symbols.txt +++ b/config/GMPE01_00/rels/resultDll/symbols.txt @@ -132,8 +132,8 @@ lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x2A4 lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0xDC data:4byte lbl_1_data_380 = .data:0x00000380; // type:object size:0x2 data:2byte @@ -188,7 +188,8 @@ lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte -lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x8 data:4byte +lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte +lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680 lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x14 diff --git a/configure.py b/configure.py index dc33a548..3fb21974 100644 --- a/configure.py +++ b/configure.py @@ -1055,7 +1055,7 @@ config.libs = [ Object(Matching, "REL/executor.c"), Object(NonMatching, "REL/resultDll/main.c"), Object(NonMatching, "REL/resultDll/battle.c"), - Object(NonMatching, "REL/resultDll/datalist.c"), + Object(Matching, "REL/resultDll/datalist.c"), } ), Rel('safDll', diff --git a/include/REL/resultdll.h b/include/REL/resultdll.h new file mode 100644 index 00000000..7f8a60e4 --- /dev/null +++ b/include/REL/resultdll.h @@ -0,0 +1,41 @@ +#ifndef RESULTDLL_H +#define RESULTDLL_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; + +void fn_1_6490(void); + +void fn_1_8FF8(DataListModel *model_list); +void fn_1_927C(DataListSprite *sprite_list); +void fn_1_93B4(void); + +extern s16 lbl_1_bss_1A9C[32]; +extern s16 lbl_1_bss_1A5C[32]; +extern s16 lbl_1_bss_1A1A[33]; +extern s16 lbl_1_bss_1A18; + +#endif \ No newline at end of file diff --git a/src/REL/resultDll/datalist.c b/src/REL/resultDll/datalist.c new file mode 100644 index 00000000..af956902 --- /dev/null +++ b/src/REL/resultDll/datalist.c @@ -0,0 +1,86 @@ +#include "REL/resultdll.h" + +s16 lbl_1_bss_1A9C[32]; +s16 lbl_1_bss_1A5C[32]; +s16 lbl_1_bss_1A1A[33]; +s16 lbl_1_bss_1A18; + +void fn_1_8FF8(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<32; clear_i++) { + lbl_1_bss_1A9C[clear_i] = lbl_1_bss_1A5C[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_1A9C[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_1A5C[i] = model_ptr->unk_08; + } + } else if(list->type == 1) { + data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_1A5C[i] = Hu3DJointMotion(lbl_1_bss_1A9C[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_1A9C[list->link]); + lbl_1_bss_1A9C[i] = model; + Hu3DModelAttrSet(model, list->attr); + Hu3DModelPosSetV(model, &list->pos); + Hu3DModelRotSetV(model, &list->rot); + Hu3DModelScaleSetV(model, &list->scale); + } + if(list->mot_link != -1) { + Hu3DMotionSet(lbl_1_bss_1A9C[i], lbl_1_bss_1A5C[list->mot_link]); + } + (void)i; + } +} + +void fn_1_927C(DataListSprite *sprite_list) +{ + DataListSprite *list; + s16 sprite; + s16 clear_i; + s16 i; + list = sprite_list; + for(clear_i=0; clear_i<32; clear_i++) { + lbl_1_bss_1A1A[clear_i] = -1; + } + for(i=0; list->datanum; i++, list++) { + sprite = espEntry(list->datanum, 100, 0); + lbl_1_bss_1A1A[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_93B4(void) +{ + s16 i; + for(i=0; i<32; i++) { + if(lbl_1_bss_1A1A[i] != -1) { + espKill(lbl_1_bss_1A1A[i]); + } + } +} \ No newline at end of file diff --git a/src/REL/resultDll/main.c b/src/REL/resultDll/main.c index 9eac3516..3d81e3bf 100644 --- a/src/REL/resultDll/main.c +++ b/src/REL/resultDll/main.c @@ -1,311 +1,226 @@ // include "REL/resultDll/main.h" #include "dolphin.h" #include "rel_sqrt_consts.h" -#include "game/gamework_data.h" -#include "game/gamework.h" -#include "game/hsfex.h" -#include "game/memory.h" -#include "game/armem.h" -#include "game/animdata.h" -#include "game/hsfman.h" #include "game/object.h" -#include "game/audio.h" -#include "game/saveload.h" -#include "game/sprite.h" +#include "game/data.h" #include "game/window.h" -#include "game/flag.h" -#include "game/wipe.h" +#include "game/hsfman.h" +#include "game/process.h" #include "game/objsub.h" +#include "game/audio.h" +#include "game/wipe.h" #include "game/pad.h" -// #include "game/frand.h" +#include "game/saveload.h" +#include "game/gamework.h" #include "game/board/player.h" -// #include "REL/resultDll/battle.h" -extern s16 lbl_1_bss_1A1A[0x21]; -extern s16 lbl_1_bss_1A9C[0x20]; -// structs -typedef struct unkStructData0 { - u32 unk0; - u32 unk4; - s16 unk8; - s16 unkA; - s16 unkC; - s16 unkE; - Vec unk10; - Vec unk1C; - Vec unk28; -} unkStructData0; -typedef struct unkStructData2A4 { - u32 unk0; - u32 unk4; - f32 unk8; - f32 unkC; - s32 unk10; -} unkStructData2A4; -typedef struct unkStructBSS12 { - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6; - s16 unk8; -} unkStructBSS12; +#include "REL/resultdll.h" -// bss -omObjData* lbl_1_bss_184[2]; -Process* lbl_1_bss_180; +DataListModel lbl_1_data_0[] = { + { 0x6F0000, 1, 0, -1, -1, { 148, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0001, 1, 0, -1, -1, { 148, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0002, 1, 0, -1, -1, { 148, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0003, 1, 0, -1, -1, { 148, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 0, -1, -1, { 230, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 2, 4, -1, { 230, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 2, 4, -1, { 230, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 2, 4, -1, { 230, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0005, 0, 0, -1, -1, { 410, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 2, 8, -1, { 410, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 2, 8, -1, { 410, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { 0x6F0006, 0, 2, 8, -1, { 410, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } +}; + +DataListSprite lbl_1_data_2A4[] = { + { 0x6F0043, 0, 10, 288, 240, { 255, 255, 255, 255 } }, + { 0x6F001D, 0, 10, 288, 60, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 270, 132, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 450, 132, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 270, 217, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 450, 217, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 270, 302, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 450, 302, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 270, 387, { 255, 255, 255, 255 } }, + { 0x6F001A, 0, 10, 450, 387, { 255, 255, 255, 255 } }, + { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, +}; + +s16 lbl_1_data_380 = -1; + +omObjData *lbl_1_bss_188; +omObjData *lbl_1_bss_184; +Process *lbl_1_bss_180; s16 lbl_1_bss_17C; s32 lbl_1_bss_178; s32 lbl_1_bss_174; s16 lbl_1_bss_172; s16 lbl_1_bss_170; s16 lbl_1_bss_168[4]; -s16 lbl_1_bss_158[8]; -AnimData* lbl_1_bss_144[5]; -AnimData* lbl_1_bss_E4[8][3]; -AnimData* lbl_1_bss_E0; +AnimData *lbl_1_bss_144[5]; +AnimData *lbl_1_bss_E4[8][3]; +AnimData *lbl_1_bss_E0; s16 lbl_1_bss_CE[9]; -S16Vec lbl_1_bss_9E[8]; +s16 lbl_1_bss_9E[8][3]; s16 lbl_1_bss_9C; s16 lbl_1_bss_5C[8][4]; -// extern ? lbl_1_bss_54; s16 lbl_1_bss_52; s16 lbl_1_bss_4A[4]; s16 lbl_1_bss_42[4]; s16 lbl_1_bss_3A[4]; -unkStructBSS12 lbl_1_bss_12[4]; -// extern ? lbl_1_bss_A; -// extern s16 lbl_1_bss_8; +s16 lbl_1_bss_12[4][5]; s32 lbl_1_bss_4; s32 lbl_1_bss_0; -// data -unkStructData0 lbl_1_data_0[13] = { - { 0x6F0000, 1, 0, -1, -1, 0, - { 148.0f, 132.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0001, 1, 0, -1, -1, 0, - { 148.0f, 217.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0002, 1, 0, -1, -1, 0, - { 148.0f, 302.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0003, 1, 0, -1, -1, 0, - { 148.0f, 387.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 0, -1, -1, 0, - { 230.0f, 132.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 2, 4, -1, 0, - { 230.0f, 217.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 2, 4, -1, 0, - { 230.0f, 302.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 2, 4, -1, 0, - { 230.0f, 387.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0005, 0, 0, -1, -1, 0, - { 410.0f, 132.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 2, 8, -1, 0, - { 410.0f, 217.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 2, 8, -1, 0, - { 410.0f, 302.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { 0x6F0006, 0, 2, 8, -1, 0, - { 410.0f, 387.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, - { -1, 0, 0, -1, -1, 0, - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f } }, -}; -unkStructData2A4 lbl_1_data_2A4[11] = { - { 0x6F0043, 10, 288.0f, 240.0f, -1 }, - { 0x6F001D, 10, 288.0f, 60.0f, -1 }, - { 0x6F001A, 10, 270.0f, 132.0f, -1 }, - { 0x6F001A, 10, 450.0f, 132.0f, -1 }, - { 0x6F001A, 10, 270.0f, 217.0f, -1 }, - { 0x6F001A, 10, 450.0f, 217.0f, -1 }, - { 0x6F001A, 10, 270.0f, 302.0f, -1 }, - { 0x6F001A, 10, 450.0f, 302.0f, -1 }, - { 0x6F001A, 10, 270.0f, 387.0f, -1 }, - { 0x6F001A, 10, 450.0f, 387.0f, -1 }, - { 0, 0, 0.0f, 0.0f, 0 }, -}; -s16 lbl_1_data_380 = -1; - -// rodata -// extern s32 saveExecF; - -// functions -void fn_1_6490(void); -void fn_1_8FF8(unkStructData0*); -void fn_1_927C(unkStructData2A4*); -void fn_1_1F4C(void); -void fn_1_2ADC(void); -void fn_1_3B50(s16 arg0, s16 arg1); -void fn_1_3CAC(s16 arg0, s16 arg1); -void fn_1_3E08(void); -void fn_1_3FD8(void); -void fn_1_40DC(void); -void fn_1_423C(s16 (*arg0)[]); -void fn_1_461C(void); -void fn_1_47FC(void); void fn_1_4D8(void); void fn_1_888(void); + void fn_1_B78(void); +void fn_1_1F4C(void); +void fn_1_2ADC(void); +void fn_1_3FD8(void); +void fn_1_40DC(void); +void fn_1_461C(void); +void fn_1_47FC(void); -void ModuleProlog(void) { - s32 var_r31; - s32 var_r30; - OSReport("******* RESULT ObjectSetup *********\n"); - lbl_1_bss_180 = omInitObjMan(0x32, 0x2000); - lbl_1_bss_17C = GWSystem.mg_next; - if (mgInfoTbl[lbl_1_bss_17C].ovl == 0x26) { - for (var_r31 = 0; var_r31 < 4; var_r31++) { - GWPlayerCfg[var_r31].group = GWPlayerCfg[var_r31].group / 2; - } - } - HuDataDirClose(mgInfoTbl[lbl_1_bss_17C].data_dir); - if (mgInfoTbl[lbl_1_bss_17C].type == 3 || mgInfoTbl[lbl_1_bss_17C].type == 5 || mgInfoTbl[lbl_1_bss_17C].type == 6 || _CheckFlag(0x10000U) == 0) { - if (_CheckFlag(0x10000) != 0) { - HuAR_DVDtoARAM(0x70000); - while (HuARDMACheck() != 0) {} - } - omOvlReturnEx(1, 1); - return; - } - - CRot.x = 0.0f; - CRot.y = 0.0f; - CRot.z = 0.0f; - Center.x = 0.0f; - Center.y = 0.0f; - Center.z = 0.0f; - CZoom = 500.0f; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 15000.0f, 1.2f); - Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); - var_r30 = Hu3DGLightCreate(0.0f, 100.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFF, 0xFF, 0xFF); - Hu3DGLightInfinitytSet(var_r30); - lbl_1_bss_174 = 0; - if (mgInfoTbl[GWSystem.mg_next].type != 4) { - HuPrcChildCreate(fn_1_4D8, 0x64, 0x3000, 0, lbl_1_bss_180); - } else { - HuPrcChildCreate(fn_1_6490, 0x64, 0x3000, 0, lbl_1_bss_180); - } - lbl_1_bss_184[0] = omAddObjEx(lbl_1_bss_180, 0x7FDA, 0U, 0U, -1, omOutView); - HuWinInit(1); - lbl_1_bss_172 = frandmod(4); +void ModuleProlog(void) +{ + s32 i; + s32 light; + OSReport("******* RESULT ObjectSetup *********\n"); + lbl_1_bss_180 = omInitObjMan(50, 8192); + lbl_1_bss_17C = GWSystem.mg_next; + + if(mgInfoTbl[lbl_1_bss_17C].ovl == OVL_M430) { + for(i=0; i<4; i++) { + GWPlayerCfg[i].group = GWPlayerCfg[i].group/2; + } + } + HuDataDirClose(mgInfoTbl[lbl_1_bss_17C].data_dir); + if(mgInfoTbl[lbl_1_bss_17C].type == 3 || mgInfoTbl[lbl_1_bss_17C].type == 5 || mgInfoTbl[lbl_1_bss_17C].type == 6 || !_CheckFlag(0x10000)) { + if(_CheckFlag(0x10000)) { + HuAR_DVDtoARAM(DATADIR_BOARD); + while(HuARDMACheck()); + } + omOvlReturnEx(1, 1); + return; + } + CRot.x = 0.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = 0.0f; + CZoom = 500.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 15000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + light = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); + Hu3DGLightInfinitytSet(light); + lbl_1_bss_174 = 0; + if(mgInfoTbl[GWSystem.mg_next].type != 4) { + HuPrcChildCreate(fn_1_4D8, 100, 12288, 0, lbl_1_bss_180); + + } else { + HuPrcChildCreate(fn_1_6490, 100, 12288, 0, lbl_1_bss_180); + } + lbl_1_bss_184 = omAddObjEx(lbl_1_bss_180, 32730, 0, 0, -1, omOutView); + HuWinInit(1); + lbl_1_bss_172 = frandmod(4); } -void fn_1_4D8(void) { - Process* sp8; - s32 var_r27; - s16 var_r28; - s16 var_r29; - s16 var_r30; - s16 var_r31; - - sp8 = HuPrcCurrentGet(); - HuAudSeqPlay(0x39); - for (var_r30 = var_r31 = 0; var_r30 < 4; var_r30++) { - if (GWPlayerCfg[var_r30].iscom != 0) { - var_r31++; - } - } - if (var_r31 == 4) { - lbl_1_bss_4 = 1; - } else { - lbl_1_bss_4 = 0; - } - fn_1_B78(); - HuPrcChildCreate(fn_1_888, 0x64, 0x2000, 0, lbl_1_bss_180); - WipeCreate(1, 0, 0x14); - while (WipeStatGet() != 0) HuPrcVSleep(); - HuDataDirClose(0x6F0000); - lbl_1_bss_178 = 0; - HuPrcChildCreate(fn_1_3FD8, 0x64, 0x3000, 0, lbl_1_bss_180); - HuPrcSleep(0xA); - if (lbl_1_bss_174 == 0) { - HuPrcSleep(0x14); - } - fn_1_1F4C(); - fn_1_40DC(); - fn_1_2ADC(); - var_r29 = HuWinCreate(-10000.0f, 400.0f, 0x140, 0x28, 0); - HuWinMesSpeedSet(var_r29 , 0); - HuWinBGTPLvlSet(var_r29 , 0.0f); - HuWinPriSet(var_r29, 5); - HuWinAttrSet(var_r29, 0x800); - HuWinMesSet(var_r29, 0x240007); - HuPrcSleep(4); - - var_r30 = 0; -loopHack: - if (lbl_1_bss_4 == 0 || var_r30 <= 0x78) { - for (var_r31 = var_r28 = 0; var_r31 < 4; var_r31++) { - if (GWPlayerCfg[var_r31].iscom == 0) { - var_r28 = var_r28 | HuPadBtnDown[GWPlayerCfg[var_r31].pad_idx]; - } - } - - if ((var_r28 & 0x100) != 0) { - HuAudFXPlay(0x1C); - } else { - HuPrcVSleep(); - var_r30++; - goto loopHack; - } - } - - HuWinKill(var_r29); - if ((s32) GWSystem.team != 0) { - fn_1_47FC(); - } - while (lbl_1_bss_178 == 0) HuPrcVSleep(); - HuAudSeqAllFadeOut(0x3E8); - WipeColorSet(0xFF, 0xFF, 0xFF); - if (GWSystem.save_mode == 3) { - GWSystem.save_mode = 1; - } - var_r27 = GWSystem.save_mode; - - if (var_r27 != 1 && SLSaveFlagGet() != 0) { - WipeCreate(2, 0, 0x1E); - while (WipeStatGet() != 0) { - HuPrcVSleep(); - } - fn_1_461C(); - } else { - WipeCreate(2, 0, 0x3C); - while (WipeStatGet() != 0) { - HuPrcVSleep(); - } - } - omSysPauseEnable(1); - omOvlReturnEx(1, 1); - HuPrcEnd(); - while (1) HuPrcVSleep(); +void fn_1_4D8(void) +{ + s16 player; + s16 i; + s16 window; + s16 button; + Process *process_curr = HuPrcCurrentGet(); + HuAudSeqPlay(57); + for(i=player=0; i<4; i++) { + if(GWPlayerCfg[i].iscom) { + player++; + } + } + if(player == 4) { + lbl_1_bss_4 = 1; + } else { + lbl_1_bss_4 = 0; + } + fn_1_B78(); + HuPrcChildCreate(fn_1_888, 100, 8192, 0, lbl_1_bss_180); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_RESULT); + lbl_1_bss_178 = 0; + HuPrcChildCreate(fn_1_3FD8, 100, 12288, 0, lbl_1_bss_180); + HuPrcSleep(10); + if(!lbl_1_bss_174) { + HuPrcSleep(20); + } + fn_1_1F4C(); + fn_1_40DC(); + fn_1_2ADC(); + window = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); + HuWinMesSpeedSet(window, 0); + HuWinBGTPLvlSet(window, 0); + HuWinPriSet(window, 5); + HuWinAttrSet(window, 0x800); + HuWinMesSet(window, 0x240007); + HuPrcSleep(4); + i=0; + while(1) { + if(!lbl_1_bss_4 || i <= 120) { + for(player=button=0; player<4; player++) { + if(!GWPlayerCfg[player].iscom) { + button |= HuPadBtnDown[GWPlayerCfg[player].pad_idx]; + } + } + if(button & PAD_BUTTON_A) { + HuAudFXPlay(28); + break; + } + HuPrcVSleep(); + i++; + } else { + break; + } + } + HuWinKill(window); + if(GWTeamGet()) { + fn_1_47FC(); + } + while(!lbl_1_bss_178) { + HuPrcVSleep(); + } + HuAudSeqAllFadeOut(1000); + WipeColorSet(255, 255, 255); + if(GWSaveModeGet() != 1 && SLSaveFlagGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + fn_1_461C(); + } else { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + omSysPauseEnable(1); + omOvlReturnEx(1, 1); + HuPrcEnd(); + while(1) { + HuPrcVSleep(); + } } -void fn_1_888(void) { - f32 var_f29; +void fn_1_888(void) +{ + f32 var_f29; f32 var_f31; f32 var_f30; @@ -346,177 +261,217 @@ void fn_1_888(void) { } } -s32 lbl_1_data_3A8[6] = { 0x6F0010, 0x6F0011, 0x6F0012, 0x6F0013, 0x6F0014, 0x6F0015 }; -s32 lbl_1_data_3C0[6] = { 0x6F001F, 0x6F001E, 0x6F001D, 0x6F0021, 0x6F0020, 0x6F001F }; -s16 lbl_1_data_3D8[16] = { 0x140, 0x84, 0x1F4, 0x84, 0x0140, 0xD9, 0x1F4, 0xD9, 0x140, 0x12E, 0x1F4, 0x12E, 0x140, 0x183, 0x1F4, 0x183 }; -s16 lbl_1_data_3F8[8] = { 0x4A, 0x84, 0x4A, 0xD9, 0x4A, 0x12E, 0x4A, 0x183 }; -Vec lbl_1_data_408[4] = { { 148.0f, 132.0f, 500.0f }, { 148.0f, 217.0f, 500.0f }, { 148.0f, 302.0f, 500.0f }, { 148.0f, 387.0f, 500.0f } }; -s16 lbl_1_data_438[8] = { 0xA4, 0x94, 0xA4, 0xE9, 0xA4, 0x13E, 0xA4, 0x193 }; -// extern s8 lbl_1_data_448; -// extern ? lbl_1_data_450; -// extern ? lbl_1_data_488; -// extern s8 lbl_1_data_4B8; -// extern s8 lbl_1_data_4C9; -// extern s8 lbl_1_data_4DA; +s32 lbl_1_data_3A8[] = { + 0x006F0010, + 0x006F0011, + 0x006F0012, + 0x006F0013, + 0x006F0014, + 0x006F0015 +}; -void fn_1_B78(void) { - Vec sp14; - s16 sp8[5]; - AnimData* temp_r22; - AnimData* temp_r23; - AnimData* temp_r24; - s16 temp_r25; - s16 var_r26; - s16 temp_r27; - AnimData* temp_r28; - s16 temp_r29; - s16 temp_r3; - s16 var_r30; - s16 var_r31; +s32 lbl_1_data_3C0[] = { + 0x006F001F, + 0x006F001E, + 0x006F001D, + 0x006F0021, + 0x006F0020, + 0x006F001F +}; - fn_1_8FF8(&lbl_1_data_0[0]); - lbl_1_data_2A4[0].unk0 = lbl_1_data_3A8[mgInfoTbl[lbl_1_bss_17C].type]; - lbl_1_data_2A4[1].unk0 = lbl_1_data_3C0[mgInfoTbl[lbl_1_bss_17C].type]; - fn_1_927C(&lbl_1_data_2A4[0]); - espDrawNoSet(lbl_1_bss_1A1A[0], 0x7F); - temp_r28 = HuSprAnimReadFile(0x6F001B); - for (var_r31 = 0; var_r31 < 8; var_r31++) { - lbl_1_bss_CE[var_r31] = HuSprGrpCreate(3); - lbl_1_bss_9E[var_r31].x = HuSprCreate(temp_r28, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_CE[var_r31], 0, lbl_1_bss_9E[var_r31].x); - HuSprPosSet(lbl_1_bss_CE[var_r31], 0, -28.0f, 0.0f); - - lbl_1_bss_9E[var_r31].y = HuSprCreate(temp_r28, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_CE[var_r31], 1, lbl_1_bss_9E[var_r31].y); - HuSprPosSet(lbl_1_bss_CE[var_r31], 1, 0.0f, 0.0f); - - lbl_1_bss_9E[var_r31].z = HuSprCreate(temp_r28, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_CE[var_r31], 2, lbl_1_bss_9E[var_r31].z); - HuSprPosSet(lbl_1_bss_CE[var_r31], 2, 28.0f, 0.0f); - HuSprGrpPosSet(lbl_1_bss_CE[var_r31], lbl_1_data_3D8[var_r31 * 2], lbl_1_data_3D8[var_r31 * 2 + 1]); - - fn_1_3B50(lbl_1_bss_CE[var_r31], 0x3E7); - } - fn_1_3E08(); - fn_1_423C((s16 (*)[]) &sp8[0]); - temp_r28 = HuSprAnimReadFile(0x6F003A); - temp_r23 = HuSprAnimReadFile(0x6F003B); - temp_r24 = HuSprAnimReadFile(0x6F003C); - temp_r22 = HuSprAnimReadFile(0x6F003E); +s16 lbl_1_data_3D8[] = { + 320, 132, + 500, 132, + 320, 217, + 500, 217, + 320, 302, + 500, 302, + 320, 387, + 500, 387, +}; - for (var_r31 = 0; var_r31 < 4; var_r31++) { - lbl_1_bss_3A[var_r31] = HuSprGrpCreate(5); - if (sp8[lbl_1_bss_4A[var_r31]] < 0x64) { - lbl_1_bss_12[var_r31].unk0 = HuSprCreate(temp_r28, 10, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[var_r31], 0, lbl_1_bss_12[var_r31].unk0); - HuSprPosSet(lbl_1_bss_3A[var_r31], 0, 30.0f, -25.0f); - } else { - lbl_1_bss_12[var_r31].unk0 = HuSprCreate(temp_r22, 10, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[var_r31], 0, lbl_1_bss_12[var_r31].unk0); - HuSprPosSet(lbl_1_bss_3A[var_r31], 0, 30.0f, -25.0f); - } - lbl_1_bss_12[var_r31].unk2 = HuSprCreate(temp_r23, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[var_r31], 1, lbl_1_bss_12[var_r31].unk2); - HuSprPosSet(lbl_1_bss_3A[var_r31], 1, 12.0f, -25.0f); - - lbl_1_bss_12[var_r31].unk4 = HuSprCreate(temp_r24, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[var_r31], 2, lbl_1_bss_12[var_r31].unk4); - HuSprPosSet(lbl_1_bss_3A[var_r31], 2, 28.0f, -25.0f); - - lbl_1_bss_12[var_r31].unk6 = HuSprCreate(temp_r24, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[var_r31], 3, lbl_1_bss_12[var_r31].unk6); - HuSprPosSet(lbl_1_bss_3A[var_r31], 3, 44.0f, -25.0f); - - lbl_1_bss_12[var_r31].unk6 = HuSprCreate(temp_r24, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[var_r31], 3, lbl_1_bss_12[var_r31].unk6); - HuSprPosSet(lbl_1_bss_3A[var_r31], 3, 60.0f, -25.0f); +s16 lbl_1_data_3F8[] = { + 74, 132, + 74, 217, + 74, 302, + 74, 387 +}; - HuSprGrpPosSet(lbl_1_bss_3A[var_r31], lbl_1_data_438[var_r31 * 2], lbl_1_data_438[var_r31 * 2 + 1]); - fn_1_3CAC(lbl_1_bss_3A[var_r31], 9); - HuSprGrpScaleSet(lbl_1_bss_3A[var_r31], 0.0f, 0.0f); - } +Vec lbl_1_data_408[4] = { + { 148, 132, 500 }, + { 148, 217, 500 }, + { 148, 302, 500 }, + { 148, 387, 500 } +}; - for (var_r31 = 0; var_r31 < 4; var_r31++) { - temp_r29 = GWPlayerCfg[var_r31].character; - lbl_1_bss_E4[temp_r29][0] = HuSprAnimReadFile(temp_r29 * 3 + 0x6F0022); - lbl_1_bss_E4[temp_r29][1] = HuSprAnimReadFile(temp_r29 * 3 + 0x6F0023); - lbl_1_bss_E4[temp_r29][2] = HuSprAnimReadFile(temp_r29 * 3 + 0x6F0024); - for (var_r30 = 0; var_r30 < 4; var_r30++) { - lbl_1_bss_5C[temp_r29][var_r30] = Hu3DModelCreateFile(var_r30 + 0x6F0000); - Hu3DModelScaleSet(lbl_1_bss_5C[temp_r29][var_r30], 1.1f, 1.1f, 1.1f); - Hu3DAnimCreate(lbl_1_bss_E4[temp_r29], lbl_1_bss_5C[temp_r29][var_r30], "ys22"); - Hu3DModelAttrSet(lbl_1_bss_5C[temp_r29][var_r30], 1); - } - } +s16 lbl_1_data_438[] = { + 164, 148, + 164, 233, + 164, 318, + 164, 403 +}; - for (var_r31 = 0; var_r31 < 4; var_r31++) { - lbl_1_bss_144[var_r31] = HuSprAnimReadFile(var_r31 + 0x6F0016); - } +void fn_1_3B50(s16 group, s16 value); +void fn_1_3CAC(s16 group, s16 value); - lbl_1_bss_52 = HuSprGrpCreate(4); - for (var_r31 = 0; var_r31 < 4; var_r31++) { - HuSprGrpMemberSet(lbl_1_bss_52, var_r31, HuSprCreate(lbl_1_bss_144[lbl_1_bss_42[var_r31]], var_r31, 0)); - HuSprPosSet(lbl_1_bss_52, var_r31, lbl_1_data_3F8[var_r31 * 2], lbl_1_data_3F8[var_r31 * 2 + 1]); - fn_1_3B50(lbl_1_bss_CE[var_r31 * 2], GWStarsGet(lbl_1_bss_4A[var_r31])); - fn_1_3B50(lbl_1_bss_CE[var_r31 * 2 + 1], BoardPlayerCoinsGet(lbl_1_bss_4A[var_r31])); - temp_r29 = GWPlayerCfg[lbl_1_bss_4A[var_r31]].character; - Hu3D2Dto3D(&lbl_1_data_408[var_r31], 1, &sp14); - Hu3DModelPosSetV(lbl_1_bss_5C[temp_r29][lbl_1_bss_42[var_r31]], &sp14); - Hu3DModelAttrReset(lbl_1_bss_5C[temp_r29][lbl_1_bss_42[var_r31]], 1); - } +void fn_1_3E08(void); +void fn_1_423C(s16 *data); - for (var_r31 = 4; var_r31 <= 11; var_r31++) { - Hu3D2Dto3D(&lbl_1_data_0[var_r31].unk10, 1, &sp14); - Hu3DModelPosSetV(lbl_1_bss_1A9C[var_r31], &sp14); - Hu3D3Dto2D(&sp14, 1, &sp14); - } - - temp_r25 = Hu3DModelCreateFile(0x6F0004); - for (var_r31 = 0; var_r31 < 4; var_r31++) { - temp_r3 = Hu3DModelLink(temp_r25); - lbl_1_bss_168[var_r31] = temp_r3; - sp14 = lbl_1_data_408[var_r31]; - sp14.x += 5.0f; - sp14.y += 3.0f; - sp14.z += 200.0f; - Hu3D2Dto3D(&sp14, 1, &sp14); - Hu3DModelPosSetV(temp_r3, &sp14); - Hu3DModelScaleSet(temp_r3, 1.5f, 1.5f, 1.5f); - } - - Hu3DModelAttrSet(temp_r25, 1); - temp_r25 = Hu3DModelCreateFile(0x6F0007); - for (var_r31 = 0; var_r31 < 8; var_r31++) { - temp_r3 = Hu3DModelLink(temp_r25); - lbl_1_bss_158[var_r31] = temp_r3; - sp14 = lbl_1_data_0[var_r31 + 4].unk10; - sp14.x += 5.0f; - sp14.y += 3.0f; - sp14.z += 200.0f; - Hu3D2Dto3D(&sp14, 1, &sp14); - Hu3DModelPosSetV(temp_r3, &sp14); - Hu3DModelScaleSet(temp_r3, 1.5f, 1.5f, 1.5f); - } - - Hu3DModelAttrSet(temp_r25, 1); - lbl_1_bss_E0 = HuSprAnimReadFile(0x6F001C); - lbl_1_bss_9C = HuSprGrpCreate(4); - for (var_r31 = 0; var_r31 < 4; var_r31++) { - HuSprGrpMemberSet(lbl_1_bss_9C, var_r31, HuSprCreate(lbl_1_bss_E0, var_r31, 0)); - HuSprScaleSet(lbl_1_bss_9C, var_r31, 0.0f, 0.0f); - HuSprPosSet(lbl_1_bss_9C, var_r31, lbl_1_data_408[var_r31].x - 4.0f, lbl_1_data_408[var_r31].y - 35.0f); - HuSprAttrSet(lbl_1_bss_9C, var_r31, 4); - } - lbl_1_bss_170 = var_r26 = HuSprGrpCreate(4); - HuSprGrpMemberSet(var_r26, 0, HuSprCreate(HuSprAnimReadFile(0x6F003F), 0x64, 0)); - HuSprAttrSet(var_r26, 0, 4); - HuSprDrawNoSet(var_r26, 0, 0x7F); - HuSprGrpMemberSet(var_r26, 1, HuSprCreate(HuSprAnimReadFile(0x6F0040), 0x5A, 0)); - HuSprAttrSet(var_r26, 1, 4); - HuSprGrpMemberSet(var_r26, 2, HuSprCreate(HuSprAnimReadFile(0x6F0041), 0x50, 0)); - HuSprAttrSet(var_r26, 2, 4); - HuSprDrawNoSet(var_r26, 2, 0x7F); - HuSprGrpMemberSet(var_r26, 3, HuSprCreate(HuSprAnimReadFile(0x6F0042), 0x50, 0)); - HuSprAttrSet(var_r26, 3, 4); - HuSprDrawNoSet(var_r26, 3, 0x7F); -} +void fn_1_B78(void) +{ + Vec pos; + s16 sp8[5]; + s16 i; + s16 j; + s16 character; + AnimData *anim; + s16 sprite; + s16 group; + s16 model; + AnimData *anim2; + AnimData *anim3; + AnimData *anim4; + + fn_1_8FF8(lbl_1_data_0); + lbl_1_data_2A4[0].datanum = lbl_1_data_3A8[mgInfoTbl[lbl_1_bss_17C].type]; + lbl_1_data_2A4[1].datanum = lbl_1_data_3C0[mgInfoTbl[lbl_1_bss_17C].type]; + fn_1_927C(lbl_1_data_2A4); + espDrawNoSet(lbl_1_bss_1A1A[0], 127); + anim = HuSprAnimReadFile(0x6F001B); + for(i=0; i<8; i++) { + lbl_1_bss_CE[i] = HuSprGrpCreate(3); + lbl_1_bss_9E[i][0] = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_CE[i], 0, lbl_1_bss_9E[i][0]); + HuSprPosSet(lbl_1_bss_CE[i], 0, -28.0f, 0.0f); + lbl_1_bss_9E[i][1] = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_CE[i], 1, lbl_1_bss_9E[i][1]); + HuSprPosSet(lbl_1_bss_CE[i], 1, 0.0f, 0.0f); + lbl_1_bss_9E[i][2] = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_CE[i], 2, lbl_1_bss_9E[i][2]); + HuSprPosSet(lbl_1_bss_CE[i], 2, 28.0f, 0.0f); + HuSprGrpPosSet(lbl_1_bss_CE[i], lbl_1_data_3D8[(i*2)], lbl_1_data_3D8[(i*2)+1]); + fn_1_3B50(lbl_1_bss_CE[i], 999); + } + fn_1_3E08(); + fn_1_423C(sp8); + anim = HuSprAnimReadFile(0x6F003A); + anim3 = HuSprAnimReadFile(0x6F003B); + anim2 = HuSprAnimReadFile(0x6F003C); + anim4 = HuSprAnimReadFile(0x6F003E); + for(i=0; i<4; i++) { + lbl_1_bss_3A[i] = HuSprGrpCreate(5); + if(sp8[lbl_1_bss_4A[i]] < 100) { + lbl_1_bss_12[i][0] = HuSprCreate(anim, 10, 0); + HuSprGrpMemberSet(lbl_1_bss_3A[i], 0, lbl_1_bss_12[i][0]); + HuSprPosSet(lbl_1_bss_3A[i], 0, 30.0f, -25.0f); + } else { + lbl_1_bss_12[i][0] = HuSprCreate(anim4, 10, 0); + HuSprGrpMemberSet(lbl_1_bss_3A[i], 0, lbl_1_bss_12[i][0]); + HuSprPosSet(lbl_1_bss_3A[i], 0, 40.0f, -21.0f); + } + lbl_1_bss_12[i][1] = HuSprCreate(anim3, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_3A[i], 1, lbl_1_bss_12[i][1]); + HuSprPosSet(lbl_1_bss_3A[i], 1, 12.0f, -25.0f); + lbl_1_bss_12[i][2] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_3A[i], 2, lbl_1_bss_12[i][2]); + HuSprPosSet(lbl_1_bss_3A[i], 2, 28.0f, -25.0f); + lbl_1_bss_12[i][3] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_3A[i], 3, lbl_1_bss_12[i][3]); + HuSprPosSet(lbl_1_bss_3A[i], 3, 44.0f, -25.0f); + lbl_1_bss_12[i][4] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_3A[i], 4, lbl_1_bss_12[i][4]); + HuSprPosSet(lbl_1_bss_3A[i], 4, 60.0f, -25.0f); + HuSprGrpPosSet(lbl_1_bss_3A[i], lbl_1_data_3D8[(i*2)], lbl_1_data_3D8[(i*2)+1]); + fn_1_3CAC(lbl_1_bss_3A[i], 9); + HuSprGrpScaleSet(lbl_1_bss_3A[i], 0.0f, 0.0f); + } + for(i=0; i<4; i++) { + character = GWPlayerCfg[i].character; + lbl_1_bss_E4[character][0] = HuSprAnimReadFile(0x6F0022+(character*3)); + lbl_1_bss_E4[character][1] = HuSprAnimReadFile(0x6F0023+(character*3)); + lbl_1_bss_E4[character][2] = HuSprAnimReadFile(0x6F0024+(character*3)); + for(j=0; j<4; j++) { + lbl_1_bss_5C[character][j] = Hu3DModelCreateFile(0x6F0000+j); + Hu3DModelScaleSet(lbl_1_bss_5C[character][j], 1.1f, 1.1f, 1.1f); + Hu3DAnimCreate(lbl_1_bss_E4[character][0], lbl_1_bss_5C[character][j], "ys22"); + Hu3DModelAttrSet(lbl_1_bss_5C[character][j], 1); + } + } + for(i=0; i<4; i++) { + lbl_1_bss_144[i] = HuSprAnimReadFile(0x6F0016+i); + } + lbl_1_bss_52 = HuSprGrpCreate(4); + for(i=0; i<4; i++) { + sprite = HuSprCreate(lbl_1_bss_144[lbl_1_bss_42[i]], i, 0); + HuSprGrpMemberSet(lbl_1_bss_52, i, sprite); + HuSprPosSet(lbl_1_bss_52, i, lbl_1_data_3F8[(i*2)], lbl_1_data_3F8[(i*2)+1]); + fn_1_3B50(lbl_1_bss_CE[(i*2)], GWStarsGet(lbl_1_bss_4A[i])); + fn_1_3B50(lbl_1_bss_CE[(i*2)+1], BoardPlayerCoinsGet(lbl_1_bss_4A[i])); + character = GWPlayerCfg[lbl_1_bss_4A[i]].character; + Hu3D2Dto3D(&lbl_1_data_408[i], 1, &pos); + Hu3DModelPosSetV(lbl_1_bss_5C[character][lbl_1_bss_42[i]], &pos); + Hu3DModelAttrReset(lbl_1_bss_5C[character][lbl_1_bss_42[i]], 1); + } + for(i=4; i<=11; i++) { + Hu3D2Dto3D(&lbl_1_data_0[i].pos, 1, &pos); + Hu3DModelPosSetV(lbl_1_bss_1A9C[i], &pos); + Hu3D3Dto2D(&pos, 1, &pos); + } + model = Hu3DModelCreateFile(0x6F0004); + for(i=0; i<4; i++) { + j = Hu3DModelLink(model); + lbl_1_bss_168[i] = j; + pos = lbl_1_data_408[i]; + pos.x += 5.0f; + pos.y += 3.0f; + pos.z += 200.0f; + Hu3D2Dto3D(&pos, 1, &pos); + Hu3DModelPosSetV(j, &pos); + Hu3DModelScaleSet(j, 1.5f, 1.5f, 1.5f); + } + Hu3DModelAttrSet(model, 1); + model = Hu3DModelCreateFile(0x6F0007); + for(i=0; i<8; i++) { + j = Hu3DModelLink(model); + lbl_1_bss_168[i] = j; + pos = lbl_1_data_0[i+4].pos; + pos.x += 5.0f; + pos.y += 3.0f; + pos.z += 200.0f; + Hu3D2Dto3D(&pos, 1, &pos); + Hu3DModelPosSetV(j, &pos); + Hu3DModelScaleSet(j, 1.5f, 1.5f, 1.5f); + } + Hu3DModelAttrSet(model, 1); + lbl_1_bss_E0 = HuSprAnimReadFile(0x6F001C); + lbl_1_bss_9C = HuSprGrpCreate(4); + for(i=0; i<4; i++) { + sprite = HuSprCreate(lbl_1_bss_E0, i, 0); + HuSprGrpMemberSet(lbl_1_bss_9C, i, sprite); + HuSprScaleSet(lbl_1_bss_9C, i, 0.0f, 0.0f); + HuSprPosSet(lbl_1_bss_9C, i, lbl_1_data_408[i].x-4.0f, lbl_1_data_408[i].y-35.0f); + HuSprAttrSet(lbl_1_bss_9C, i, 4); + } + group = HuSprGrpCreate(4); + lbl_1_bss_170 = group; + anim = HuSprAnimReadFile(0x6F003F); + sprite = HuSprCreate(anim, 100, 0); + HuSprGrpMemberSet(group, 0, sprite); + HuSprAttrSet(group, 0, 4); + HuSprDrawNoSet(group, 0, 127); + anim = HuSprAnimReadFile(0x6F0040); + sprite = HuSprCreate(anim, 90, 0); + HuSprGrpMemberSet(group, 1, sprite); + HuSprAttrSet(group, 1, 4); + anim = HuSprAnimReadFile(0x6F0041); + sprite = HuSprCreate(anim, 80, 0); + HuSprGrpMemberSet(group, 2, sprite); + HuSprAttrSet(group, 2, 4); + HuSprDrawNoSet(group, 2, 127); + anim = HuSprAnimReadFile(0x6F0042); + sprite = HuSprCreate(anim, 80, 0); + HuSprGrpMemberSet(group, 3, sprite); + HuSprAttrSet(group, 3, 4); + HuSprDrawNoSet(group, 3, 127); + (void)sprite; +} \ No newline at end of file