This commit is contained in:
CreateSource 2024-04-24 08:18:34 -04:00
commit c66a4d8669
21 changed files with 2535 additions and 840 deletions

View file

@ -17,9 +17,9 @@ GetStickY = .text:0x00001C20; // type:function size:0x84 scope:local
GetBtn = .text:0x00001CA4; // type:function size:0x90 scope:local
GetBtnDown = .text:0x00001D34; // type:function size:0x24 scope:local
E3PadUpdate = .text:0x00001D58; // type:function size:0xFC
E3PadInit = .text:0x00001E54; // type:function size:0x1C0
MotionGetMaxTime = .text:0x00002014; // type:function size:0x78
MotionGetShiftTime = .text:0x0000208C; // type:function size:0x2C
E3PadRead = .text:0x00001E54; // type:function size:0x1C0
MotionMaxTimeGet = .text:0x00002014; // type:function size:0x78
MotionShiftTimeGet = .text:0x0000208C; // type:function size:0x2C
InitMenuControl = .text:0x000020B8; // type:function size:0xA4 scope:local
UpdateMenuControl = .text:0x0000215C; // type:function size:0x400 scope:local
UpdateOvlWatch = .text:0x0000255C; // type:function size:0x124 scope:local
@ -29,13 +29,13 @@ InitPlayerCnt = .text:0x00002A38; // type:function size:0x59C scope:local
UpdateCharSelCursor = .text:0x00002FD4; // type:function size:0x208 scope:local
UpdateCharSelPlayerCursor = .text:0x000031DC; // type:function size:0x37C scope:local
UpdateCharSelComCursor = .text:0x00003558; // type:function size:0x3B4 scope:local
IsCharSelDone = .text:0x0000390C; // type:function size:0xAC scope:local
CheckCharSel = .text:0x0000390C; // type:function size:0xAC scope:local
UpdateCharSel = .text:0x000039B8; // type:function size:0x2B8 scope:local
InitCharSel = .text:0x00003C70; // type:function size:0x534 scope:local
UpdateVibrateCfg = .text:0x000041A4; // type:function size:0x2DC scope:local
InitVibrateCfg = .text:0x00004480; // type:function size:0x520 scope:local
UpdateGameModeSel = .text:0x000049A0; // type:function size:0x59C scope:local
InitGameModeSel = .text:0x00004F3C; // type:function size:0x4E8 scope:local
UpdateRumbleCfg = .text:0x000041A4; // type:function size:0x2DC scope:local
InitRumbleCfg = .text:0x00004480; // type:function size:0x520 scope:local
UpdateModeSel = .text:0x000049A0; // type:function size:0x59C scope:local
InitModeSel = .text:0x00004F3C; // type:function size:0x4E8 scope:local
E3BGUpdate = .text:0x00005424; // type:function size:0x100 scope:local
E3BGCreate = .text:0x00005524; // type:function size:0x184
InitCamera = .text:0x000056A8; // type:function size:0x7C scope:local
@ -71,47 +71,47 @@ lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float
lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float
lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float
lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:float
lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float
lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float
lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float
lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float
lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float
lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float
lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float
lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float
lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float
lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double
lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float
lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float
lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float
lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float
lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float
lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float
lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float
lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float
lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float
lbl_2_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float
lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float
lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float
lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float
lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float
lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float
lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float
lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float
lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float
lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float
lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float
lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float
lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float
lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float
lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float
lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float
lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float
lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float
lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float
lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float
lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float
lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float
lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float
lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double
lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float
lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float
lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float
lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float
lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float
lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float
lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float
lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float
lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float
lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float
lbl_2_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float
lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float
lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float
lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float
lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float
lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float
lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float
lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float
lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float
lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float
lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float
lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float
lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float
lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float
lbl_2_data_0 = .data:0x00000000; // type:object size:0x24
lbl_2_data_24 = .data:0x00000024; // type:object size:0x11 data:string
lbl_2_data_36 = .data:0x00000036; // type:object size:0x8
@ -136,27 +136,27 @@ cursorYOfsTbl = .data:0x000001F4; // type:object size:0x14 scope:local
mgPicTbl = .data:0x00000208; // type:object size:0x34 scope:local
startText = .data:0x0000023C; // type:object size:0x14 scope:local
shadowPos = .data:0x00000250; // type:object size:0xC scope:local
shadowUp = .data:0x0000025C; // type:object size:0xC scope:local
shadowTarget = .data:0x00000268; // type:object size:0xC scope:local
lbl_2_data_274 = .data:0x00000274; // type:object size:0x60
shadowTarget = .data:0x0000025C; // type:object size:0xC scope:local
shadowUp = .data:0x00000268; // type:object size:0xC scope:local
lbl_2_data_274 = .data:0x00000274; // type:object size:0x60 data:float
playerCntTbl = .data:0x000002D4; // type:object size:0x8 scope:local
charTbl = .data:0x000002DC; // type:object size:0x10 scope:local
charSfxTbl = .data:0x000002EC; // type:object size:0x20 scope:local
lbl_2_data_30C = .data:0x0000030C; // type:object size:0x12
lbl_2_data_30C = .data:0x0000030C; // type:object size:0x12 scope:local
lbl_2_data_31E = .data:0x0000031E; // type:object size:0x8
playerCntMessTbl = .data:0x00000328; // type:object size:0x10 scope:local
charPosTbl = .data:0x00000338; // type:object size:0x40 scope:local
charComSfxTbl = .data:0x00000378; // type:object size:0x20
lbl_2_data_398 = .data:0x00000398; // type:object size:0xE data:string
charPosTbl = .data:0x00000338; // type:object size:0x40 scope:local data:float
charComSfxTbl = .data:0x00000378; // type:object size:0x20 scope:local
lbl_2_data_398 = .data:0x00000398; // type:object size:0xE scope:local data:string
charSpriteTbl = .data:0x000003A8; // type:object size:0x20 scope:local
cursorSpriteTbl = .data:0x000003C8; // type:object size:0x14 scope:local
highlightSpriteTbl = .data:0x000003DC; // type:object size:0x14 scope:local
vibrateSettingMess = .data:0x000003F0; // type:object size:0x8 scope:local
hiliteSprTbl = .data:0x000003DC; // type:object size:0x14 scope:local
rumbleMess = .data:0x000003F0; // type:object size:0x8 scope:local
modeSelCursorPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local
boardSelCursorPosTbl = .data:0x00000408; // type:object size:0x10 scope:local
camRotTbl = .data:0x00000418; // type:object size:0x60 scope:local
lbl_2_data_478 = .data:0x00000478; // type:object size:0x24
lbl_2_data_49C = .data:0x0000049C; // type:object size:0x24
camViewTbl = .data:0x00000418; // type:object size:0x60 scope:local data:float
lbl_2_data_478 = .data:0x00000478; // type:object size:0x24 data:float
lbl_2_data_49C = .data:0x0000049C; // type:object size:0x24 data:float
lbl_2_data_4C0 = .data:0x000004C0; // type:object size:0x10
lbl_2_bss_A = .bss:0x0000000A; // type:object size:0x2 data:2byte
lbl_2_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte
@ -166,8 +166,9 @@ mgPicObj = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
mgSelectObj = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte
mgInterface = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte
mgDefault = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte
lbl_2_bss_28 = .bss:0x00000028; // type:object size:0xC data:2byte
lbl_2_bss_34 = .bss:0x00000034; // type:object size:0x2 scope:local data:2byte
repBtn = .bss:0x00000028; // type:object size:0x2 scope:local data:2byte
lbl_2_bss_2A = .bss:0x0000002A; // type:object size:0xA data:2byte
lbl_2_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte
lbl_2_bss_36 = .bss:0x00000036; // type:object size:0x2 data:2byte
lbl_2_bss_38 = .bss:0x00000038; // type:object size:0x2 data:2byte
lbl_2_bss_3A = .bss:0x0000003A; // type:object size:0x2 data:2byte
@ -184,7 +185,7 @@ e3BGObj = .bss:0x00000070; // type:object size:0x4 data:4byte
configModeObj = .bss:0x00000074; // type:object size:0x10 scope:local data:4byte
lbl_2_bss_84 = .bss:0x00000084; // type:object size:0x8 data:4byte
cameraObj = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte
lbl_2_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte
e3OvlWatchObj = .bss:0x00000090; // type:object size:0x4 data:4byte
e3ViewObj = .bss:0x00000094; // type:object size:0x4 data:4byte
e3MenuMainObj = .bss:0x00000098; // type:object size:0x4 data:4byte
e3CameraFov = .bss:0x0000009C; // type:object size:0x4 data:float
@ -195,7 +196,7 @@ e3NextOvl = .bss:0x000000AC; // type:object size:0x4 data:4byte
lbl_2_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte
e3ExitEnableF = .bss:0x000000B4; // type:object size:0x4 data:4byte
e3EvtNo = .bss:0x000000B8; // type:object size:0x4 scope:local data:4byte
e3ConfigPlayerF = .bss:0x000000BC; // type:object size:0x2 data:2byte
e3ConfigPlayerCnt = .bss:0x000000BC; // type:object size:0x2 data:2byte
e3PadCtrl = .bss:0x000000BE; // type:object size:0x2 data:2byte
e3PadData = .bss:0x000000C0; // type:object size:0x20
configE3 = .bss:0x000000E0; // type:object size:0x18 scope:local data:2byte

View file

@ -436,15 +436,16 @@ lbl_2_data_48 = .data:0x00000048; // type:object size:0xC data:float
lbl_2_data_54 = .data:0x00000054; // type:object size:0x1B data:string
lbl_2_data_6F = .data:0x0000006F; // type:object size:0x11
lbl_2_data_80 = .data:0x00000080; // type:object size:0x20
lbl_2_data_A0 = .data:0x000000A0; // type:object size:0x14
lbl_2_data_B4 = .data:0x000000B4; // type:object size:0x18
lbl_2_data_A0 = .data:0x000000A0; // type:object size:0x14 data:float
lbl_2_data_B4 = .data:0x000000B4; // type:object size:0x18 data:float
lbl_2_data_CC = .data:0x000000CC; // type:object size:0x28
lbl_2_data_F4 = .data:0x000000F4; // type:object size:0x9 data:string
lbl_2_data_FD = .data:0x000000FD; // type:object size:0x9 data:string
lbl_2_data_106 = .data:0x00000106; // type:object size:0x9 data:string
lbl_2_data_10F = .data:0x0000010F; // type:object size:0x9 data:string
lbl_2_data_118 = .data:0x00000118; // type:object size:0xC
lbl_2_data_124 = .data:0x00000124; // type:object size:0x34 data:4byte
lbl_2_data_124 = .data:0x00000124; // type:object size:0x14 data:4byte
lbl_2_data_138 = .data:0x00000138; // type:object size:0x20 data:4byte
lbl_2_data_158 = .data:0x00000158; // type:object size:0x140
lbl_2_data_298 = .data:0x00000298; // type:object size:0x30
lbl_2_data_2C8 = .data:0x000002C8; // type:object size:0x30
@ -466,7 +467,8 @@ lbl_2_bss_10 = .bss:0x00000010; // type:object size:0x4 data:float
lbl_2_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte
lbl_2_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte
lbl_2_bss_1A = .bss:0x0000001A; // type:object size:0x2 data:2byte
lbl_2_bss_1C = .bss:0x0000001C; // type:object size:0x10 data:4byte
lbl_2_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte
lbl_2_bss_20 = .bss:0x00000020; // type:object size:0xC data:4byte
lbl_2_bss_2C = .bss:0x0000002C; // type:object size:0xC data:float
lbl_2_bss_38 = .bss:0x00000038; // type:object size:0xC data:float
lbl_2_bss_44 = .bss:0x00000044; // type:object size:0xC data:float

View file

@ -783,7 +783,7 @@ config.libs = [
objects = {
Object(NonMatching, "REL/E3setupDLL/mgselect.c"),
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/E3setupDLL/main.c"),
Object(Matching, "REL/E3setupDLL/main.c"),
}
),
Rel('instDll',

30
include/REL/E3SetupDLL.h Normal file
View file

@ -0,0 +1,30 @@
#ifndef E3SETUPDLL_H
#define E3SETUPDLL_H
#include "game/object.h"
#include "game/pad.h"
typedef struct e3pad {
u16 btn;
u16 btnDown;
u16 enable;
u16 unk6;
} E3Pad;
extern E3Pad e3PadData[4];
extern s16 e3PadCtrl;
extern s16 e3ConfigPlayerF;
extern s32 e3ExitEnableF;
extern OverlayID e3NextOvl;
extern s32 e3NextEvent;
extern u32 e3ExitMode;
void E3MainInit(void);
void E3MGSelectInit(void);
s16 E3PadRead(void);
u16 E3PadUpdate(s16 player, E3Pad *pad);
void E3OvlWatchInit(omObjData *object);
void E3BGCreate(omObjData *object);
void E3LightInit(void);
#endif

19
include/REL/m401Dll.h Normal file
View file

@ -0,0 +1,19 @@
#ifndef M401DLL_H
#define M401DLL_H
#include "game/object.h"
#include "dolphin.h"
extern float lbl_2_bss_12C;
extern float lbl_2_bss_128;
extern float lbl_2_bss_124;
extern s16 lbl_2_bss_120;
void fn_2_10240(Vec *arg0, Vec *arg1);
void fn_2_1041C(void);
void fn_2_10710(void);
void fn_2_1079C(void);
omObjData *fn_2_14640(Process *objman);
#endif

View file

@ -35,13 +35,10 @@ extern Point3d Center;
extern f32 CZoom;
void fn_1_29C();
void fn_1_28F8(Point3d * arg0, Point3d * arg1);
extern void omOutView();
void fn_1_37DC(omObjData*);
void fn_1_439C(omObjData*);
void fn_1_46F0();
s16 MGSeqCreate(s16, ...);
void MGSeqParamSet(s16, s16, s16);
typedef void (omObjFunc2)(struct om_obj_data *);
omObjFunc2 fn_1_F9C;

21
include/ext_math.h Normal file
View file

@ -0,0 +1,21 @@
#ifndef _EXT_MATH_H
#define _EXT_MATH_H
#include "math.h"
#include "dolphin/mtx.h"
typedef struct vec2f {
float x;
float y;
} Vec2f;
#define ABS(x) (((x) < 0) ? -(x) : (x))
#define VECDistanceXZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->z-(b)->z)*((a)->z-(b)->z)))
#define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z))
#define sind(x) sin(M_PI*(x)/180.0)
#define cosd(x) cos(M_PI*(x)/180.0)
#define atan2d(y, x) (180.0*(atan2((y), (x)) / M_PI))
#endif

View file

@ -310,4 +310,7 @@ static inline void GWPlayerCoinWinSet(s32 player, s16 value)
}
}
#define GWPlayerCoinWinAdd(player, value) GWPlayerCoinWinSet((player), GWPlayerCoinWinGet((player))+(value))
#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), GWPlayerCoinCollectGet((player))+(value))
#endif

View file

@ -4,6 +4,43 @@
#include "game/object.h"
#include "stdarg.h"
#define MG_SEQ_TYPE_TIMER 1
#define MG_SEQ_TYPE_AUTO 3
#define MG_SEQ_TYPE_1VS3 4
#define MG_SEQ_TYPE_WIN 5
#define MG_SEQ_TYPE_BATTLE 6
#define MG_SEQ_TYPE_STORY 7
#define MG_SEQ_TYPE_4P 8
#define MG_SEQ_TYPE_2VS2 9
#define MG_SEQ_TYPE_PINBALL 10
#define MG_SEQ_TYPE_BOWSER 11
#define MG_SEQ_TYPE_ALTWIN 12
#define MG_SEQ_TYPE_DRAW 13
#define MG_SEQ_TYPE_RECORD 14
#define MG_SEQ_WIN_TYPE_WIN 3
#define MG_SEQ_WIN_TYPE_LOSE 4
#define MG_SEQ_WIN_TYPE_CHAMPION 5
#define MG_SEQ_WORD_START 0
#define MG_SEQ_WORD_FINISH 1
#define MG_SEQ_WORD_DRAW 2
#define MGSeqTimerCreate(value) MGSeqCreate(MG_SEQ_TYPE_TIMER, (value), -1, -1)
#define MGSeqTimerCreateXY(value, x, y) MGSeqCreate(MG_SEQ_TYPE_TIMER, (value), (int)(x), (int)(y))
#define MGSeqStartCreate() MGSeqCreate(MG_SEQ_TYPE_AUTO, MG_SEQ_WORD_START)
#define MGSeqFinishCreate() MGSeqCreate(MG_SEQ_TYPE_AUTO, MG_SEQ_WORD_FINISH)
#define MGSeqDrawCreate() MGSeqCreate(MG_SEQ_TYPE_AUTO, MG_SEQ_WORD_DRAW)
#define MGSeqStartCreateType(type) MGSeqCreate((type), MG_SEQ_WORD_START)
#define MGSeqFinishCreateType(type) MGSeqCreate((type), MG_SEQ_WORD_FINISH)
#define MGSeqDrawCreateType(type) MGSeqCreate((type), MG_SEQ_WORD_DRAW)
#define MGSeqWinCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_WIN, MG_SEQ_WIN_TYPE_WIN, (player_1), (player_2), (player_3), (player_4))
#define MGSeqLoseCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_WIN, MG_SEQ_WIN_TYPE_LOSE, (player_1), (player_2), (player_3), (player_4))
#define MGSeqChampionCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_ALTWIN, MG_SEQ_WIN_TYPE_CHAMPION, (player_1), (player_2), (player_3), (player_4))
#define MGSeqRecordCreate(value) MGSeqCreate(MG_SEQ_TYPE_RECORD, (value))
typedef struct seq_work SeqWork;
typedef int (*SeqUpdateFunc)(SeqWork *work);

1702
src/REL/E3setupDLL/main.c Normal file

File diff suppressed because it is too large Load diff

View file

View file

@ -1,533 +0,0 @@
#include "m401Dll.h"
void M401ObjectSetup(void) {
s32 i;
unkStructBSS114 *temp_r30;
unkStruct18BFC0 *temp_r29;
s16* temp_r28;
OSReport("**** M401ObjectSetup ****\n");
HuMemHeapDump(HuMemHeapPtrGet(0), -1);
HuMemHeapDump(HuMemHeapPtrGet(2), -1);
HuMemHeapDump(HuMemHeapPtrGet(3), -1);
lbl_2_bss_1C = omInitObjMan(0x3C, 0x2000);
omGameSysInit(lbl_2_bss_1C);
lbl_2_bss_A8 = Hu3DGLightCreateV(&lbl_2_data_14, &lbl_2_data_20, &lbl_2_data_2C);
Hu3DGLightInfinitytSet(lbl_2_bss_A8);
temp_r28 = &lbl_8018C8FC[lbl_2_bss_A8].unk_00;
*temp_r28 |= 0x8000;
Hu3DCameraCreate(1);
temp_r29 = &lbl_8018BFC0;
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0, 480.0, 0.0f, 1.0f);
lbl_2_bss_114 = omAddObjEx(lbl_2_bss_1C, 0x3E8, 3, 0, -1, &fn_2_BD90);
*lbl_2_bss_114->model = 0;
lbl_2_bss_110 = omAddObjEx(lbl_2_bss_1C, 0xA, 0, 0, -1, &fn_2_70C);
omMakeGroupEx(lbl_2_bss_1C, 0, 4);
lbl_2_bss_118[0] = omGetGroupMemberListEx(lbl_2_bss_1C, 0);
omMakeGroupEx(lbl_2_bss_1C, 1, 0x1C);
for (i = 0; i < 4; i++) {
temp_r30 = omAddObjEx(lbl_2_bss_1C, 0x4B0, 4, 0xA, 0, &fn_2_3B24);
temp_r30->unk_4C = i;
}
lbl_2_bss_12C = 60.0f;
lbl_2_bss_128 = 50.0f;
lbl_2_bss_124 = 25000.0f;
Hu3DShadowCreate(30.0f, 30.0f, 20.0f);
Hu3DShadowTPLvlSet(0.35f);
lbl_2_data_30.y = (f32) (1500.0f + lbl_2_bss_60.y);
lbl_2_data_30.z = (f32) (500.0f + lbl_2_bss_60.z);
lbl_2_data_48.y = (f32) lbl_2_bss_60.y;
lbl_2_data_48.z = (f32) (500.0f + lbl_2_bss_60.z);
Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48);
lbl_2_bss_10C = omAddObjEx(lbl_2_bss_1C, 0x1F4, 0xC, 3, -1, &fn_2_2FA4);
lbl_2_bss_108 = omAddObjEx(lbl_2_bss_1C, 0x44C, 1, 1, -1, &fn_2_7CB4);
lbl_2_bss_100.unk_00 = omAddObjEx(lbl_2_bss_1C, 0x456, 1, 1, -1, &fn_2_8E74);
lbl_2_bss_100.unk_04 = omAddObjEx(lbl_2_bss_1C, 0x456, 1, 1, -1, &fn_2_8E74);
lbl_2_bss_FC = omAddObjEx(lbl_2_bss_1C, 0x460, 1, 2, -1, &fn_2_95E4);
lbl_2_bss_C8 = omAddObjEx(lbl_2_bss_1C, 0x64, 0, 0, -1, &fn_2_D088);
lbl_2_bss_E0 = omAddObjEx(lbl_2_bss_1C, 0x5DC, 0, 0, -1, &fn_2_C1C);
fn_2_DBCC(0x5A);
lbl_2_bss_F8 = omAddObjEx(lbl_2_bss_1C, 0x1F4, 9, 0, -1, &fn_2_C6DC);
fn_2_9D00(lbl_2_bss_1C);
fn_2_1041C();
fn_2_1079C();
lbl_2_bss_F4 = fn_2_14640(lbl_2_bss_1C);
lbl_2_bss_50 = 0.0f;
lbl_2_bss_54.unk_00 = temp_r29->unk_14;
Hu3DReflectNoSet(0);
lbl_2_bss_120 = 0;
lbl_2_bss_BE = 0;
lbl_2_bss_BA = 0;
Hu3DFogSet(3000.0f, 10000.0f, 0xAU, 0x3CU, 0xA0U);
Hu3DBGColorSet(0xAU, 0x3CU, 0xA0U);
lbl_2_bss_88 = 3000.0f;
lbl_2_bss_84 = 142000.0f;
lbl_2_bss_11C = HuAudFXPlay(0x50A);
}
void fn_2_70C(unkStructBSS114* arg0) {
s16 var_r29;
unkSubstructBSS114* temp_r30_2;
s32 i;
switch (lbl_2_bss_120) {
case 0:
break;
case 1:
if (lbl_2_bss_BE == 1) {
lbl_2_bss_120 = 2;
lbl_2_bss_C0 = MGSeqCreate(3, 1);
HuAudSeqFadeOut(lbl_2_bss_A4, 0x64);
}
break;
case 2:
if (lbl_2_bss_114 == NULL) {
lbl_2_bss_114 = omAddObjEx(HuPrcCurrentGet(), 0x3E8, 0, 0, -1, &fn_2_C130);
*lbl_2_bss_114->model = 0;
var_r29 = 0;
lbl_2_bss_BA = 0;
for (i = 0; i < 4; i++) {
temp_r30_2 = lbl_2_bss_118[i]->unk_5C;
lbl_2_bss_118[i]->unk_14 = &fn_2_48A0;
temp_r30_2->unk_00[0] = 5;
temp_r30_2->unk_68[0][0] = 0;
if (temp_r30_2->unk_68[1][2] > var_r29) {
var_r29 = temp_r30_2->unk_68[1][2];
}
lbl_2_bss_B2[i] = -1;
lbl_2_bss_AA[i] = -1;
}
if ((s16) var_r29 > 0) {
for (i = 0; i < 4; i++) {
temp_r30_2 = lbl_2_bss_118[i]->unk_5C;
if (temp_r30_2->unk_68[1][2] == var_r29) {
lbl_2_bss_AA[lbl_2_bss_BA] = lbl_8018FC10[i].unk_00;
lbl_2_bss_B2[lbl_2_bss_BA++] = i;
temp_r30_2->unk_68[0][0] = 1;
}
}
}
OSReport(lbl_2_data_6F, lbl_2_bss_BA);
}
break;
}
if (lbl_801D3CC2 != 0) {
WipeCreate(2, 0, 0x3C);
HuAudSeqFadeOut(lbl_2_bss_A4, 0x64);
HuAudFXStop(lbl_2_bss_11C);
arg0->unk_14 = &fn_2_A10;
}
}
void fn_2_A10(void) {
s32 i;
if (WipeStatGet() == 0) {
fn_2_10710();
for (i = 0; i < 4; i++) {
fn_8004D6F4(lbl_2_data_4[lbl_8018FC10[i].unk_00]);
}
HuAudFXListnerKill();
omOvlReturnEx(1, 1);
}
}
void M401SetFogAndBG(void) {
Hu3DFogSet(174.0f, 271.0f, 0xA, 0x3C, 0xA0);
Hu3DBGColorSet(0xAU, 0x3CU, 0xA0U);
}
void M401SetSpriteDisp(s16 arg0) {
s32 j;
s32 i;
unkSubstructBSS114* temp_r31;
temp_r31 = lbl_2_bss_E0->unk_5C;
if (arg0 != 0) {
for (i = 0; i < 4; i++) {
espDispOn(temp_r31->unk_00[i]);
espDispOn(temp_r31->unk_80[i]);
espDispOn(temp_r31->unk_88[i]);
for (j = 0; j < 2; j++) {
espDispOn(temp_r31->unk_08[i][j]);
}
}
return;
}
for (i = 0; i < 4; i++) {
espDispOff(temp_r31->unk_00[i]);
espDispOff(temp_r31->unk_80[i]);
espDispOff(temp_r31->unk_88[i]);
for (j = 0; j < 2; j++) {
espDispOff(temp_r31->unk_08[i][j]);
}
}
}
void fn_2_C1C(unkStructBSS114* arg0) {
s16 temp_r0;
s32 temp_r0_2;
s32 temp_r0_3;
s32 temp_r0_4;
s32 j;
s32 i;
unkSubstructBSS114* temp_r31;
arg0->unk_5C = HuMemDirectMallocNum(0, 0x148, 0x10000000U);
temp_r31 = arg0->unk_5C;
for (i = 0; i < 4; i++) {
temp_r31->unk_00[i] = espEntry(lbl_2_data_80[lbl_8018FC10[i].unk_00], 2, 0);
espDispOff(temp_r31->unk_00[i]);
espDrawNoSet(temp_r31->unk_00[i], 0);
espPosSet(temp_r31->unk_00[i], (f32) ((i & 1) * 0x1B6 + 0x25), ((i>1)*0x166)+0x3B);
temp_r31->unk_80[i] = espEntry(0x20002F, 3, 0);
espDispOff(temp_r31->unk_80[i]);
espDrawNoSet(temp_r31->unk_80[i], 0);
espPosSet(temp_r31->unk_80[i], (f32) (((i & 1) * 0x1B6) + 0x49), (((i>1) * 0x166) + 0x3D));
temp_r31->unk_88[i] = espEntry(0x200030, 4, 0);
espDispOff(temp_r31->unk_88[i]);
espDrawNoSet(temp_r31->unk_88[i], 0);
espPosSet(temp_r31->unk_88[i], (f32) (((i & 1) * 0x1B6) + 0x49), (((i>1) * 0x166) + 0x3D));
espColorSet(temp_r31->unk_88[i], 0, 0, 0);
espTPLvlSet(temp_r31->unk_88[i], 0.5f);
for (j = 0; j < 2; j++) {
temp_r31->unk_08[i][j] = espEntry(0x20002E, 1, 0);
espDispOff(temp_r31->unk_08[i][j]);
espDrawNoSet(temp_r31->unk_08[i][j], 0);
espPosSet(temp_r31->unk_08[i][j], 0x45 + ((i & 1) * 0x1B6) + (j * 0x14), ((i>1) * 0x166) + 0x3F);
espAttrSet(temp_r31->unk_08[i][j], 1);
}
for (j = 0; j < 3; j++) {
temp_r31->unk_50[i][j] = espEntry(0x20002D, 0, 0);
espDispOff(temp_r31->unk_50[i][j]);
espDrawNoSet(temp_r31->unk_50[i][j], 0);
espAttrSet(temp_r31->unk_50[i][j], 1);
temp_r31->unk_68[i][j] = espEntry(0x20002D, 0, 0);
espDispOff(temp_r31->unk_68[i][j]);
espDrawNoSet(temp_r31->unk_68[i][j], 0);
espAttrSet(temp_r31->unk_68[i][j], 1);
}
espBankSet(temp_r31->unk_50[i][0], 0xA);
espBankSet(temp_r31->unk_68[i][0], 0xB);
temp_r31->unk_90[i] = 1.0f;
temp_r31->unk_A0[i] = 1.0f;
temp_r31->unk_130[i] = 0;
temp_r31->unk_138[i] = 0;
}
arg0->unk_14 = &fn_2_11D0;
}
void fn_2_11D0(unkStructBSS114* arg0) {
unkStructBSS114* sp1C;
Vec sp18;
Vec spC;
unkSubstructBSS114* sp8;
unkSubstructBSS114* temp_r31;
s32 i;
s32 j;
unkStructBSS114* temp_r28;
s16 temp;
temp_r31 = arg0->unk_5C;
for (i = 0; i < 4; i++) {
sp8 = lbl_2_bss_118[i]->unk_5C;
if (temp_r31->unk_130[i] != 0) {
temp_r28 = lbl_2_bss_118[i];
sp18.x = temp_r28->unk_18.x;
sp18.y = temp_r28->unk_18.y;
sp18.z = temp_r28->unk_18.z;
fn_2_10240(&sp18, &spC);
for (j = 0; j < 3; j++) {
espPosSet(temp_r31->unk_50[i][j], -20.0f + spC.x + temp_r31->unk_F0[i] + (f32) (j * 0x10), 20.0f + spC.y + temp_r31->unk_100[i]);
espTPLvlSet(temp_r31->unk_50[i][j], temp_r31->unk_90[i]);
}
temp_r31->unk_C0[i] -= 0.5f;
temp_r31->unk_100[i] -= 1.0f;
if (temp_r31->unk_130[i] < 15) {
temp_r31->unk_90[i] -= 2.0f / 30.0f;
}
if (--temp_r31->unk_130[i] == 0) {
espDispOff(temp_r31->unk_50[i][0]);
espDispOff(temp_r31->unk_50[i][1]);
}
}
if (temp_r31->unk_138[i] != 0) {
temp_r28 = lbl_2_bss_118[i];
sp18.x = temp_r28->unk_18.x;
sp18.y = temp_r28->unk_18.y;
sp18.z = temp_r28->unk_18.z;
fn_2_10240(&sp18, &spC);
for (j = 0; j < 2; j++) {
espPosSet(temp_r31->unk_68[i][j], -20.0f + spC.x + temp_r31->unk_110[i] + (f32) (j * 0x10), -20.0f + spC.y + temp_r31->unk_120[i]);
espTPLvlSet(temp_r31->unk_68[i][j], temp_r31->unk_A0[i]);
}
temp_r31->unk_E0[i] += 0.5f;
temp_r31->unk_120[i] += 1.0f;
if (temp_r31->unk_138[i] < 0xF) {
temp_r31->unk_A0[i] -= 2.0f / 30.0f;
}
if (--temp_r31->unk_138[i] == 0) {
espDispOff(temp_r31->unk_68[i][0]);
espDispOff(temp_r31->unk_68[i][1]);
}
}
fn_2_15C4(i);
}
}
void fn_2_15C4(s16 arg0) {
s32 temp_r30;
unkSubstructBSS114* temp_r31;
unkSubstructBSS114* temp_r29;
temp_r31 = lbl_2_bss_E0->unk_5C;
temp_r29 = lbl_2_bss_118[arg0]->unk_5C;
temp_r30 = temp_r29->unk_68[1][2];
espBankSet(temp_r31->unk_08[arg0][0], temp_r30 / 10);
espBankSet(temp_r31->unk_08[arg0][1], temp_r30 % 10);
}
void fn_2_169C(s16 arg0) {
s32 i;
unkSubstructBSS114* temp_r28;
unkSubstructBSS114* temp_r31;
temp_r31 = lbl_2_bss_E0->unk_5C;
temp_r28 = lbl_2_bss_118[arg0]->unk_5C;
for (i = 0; i < 2; i++) {
espDispOn(temp_r31->unk_50[arg0][i]);
}
temp_r31->unk_90[arg0] = 1.0f;
temp_r31->unk_C0[arg0] = ((arg0 > 1) * 0x18E) + 0x34;
temp_r31->unk_B0[arg0] = ((arg0 & 1) * 0x1BA) + 0x29;
temp_r31->unk_100[arg0] = 0.0f;
temp_r31->unk_F0[arg0] = 0.0f;
espBankSet(temp_r31->unk_50[arg0][1], temp_r28->unk_68[2][0]);
temp_r31->unk_130[arg0] = 0x2D;
}
void fn_2_1858(s16 arg0, s16 arg1) {
s16 temp_r4;
s32 temp_r0;
s32 var_r28;
unkSubstructBSS114* temp_r29;
unkSubstructBSS114* temp_r31;
temp_r31 = lbl_2_bss_E0->unk_5C;
temp_r29 = lbl_2_bss_118[arg0]->unk_5C;
for (var_r28 = 0; var_r28 < 2; var_r28++) {
espDispOn(temp_r31->unk_68[arg0][var_r28]);
}
temp_r31->unk_A0[arg0] = 1.0f;
temp_r31->unk_E0[arg0] = ((arg0 > 1) * 0x18E) + 0x14;
temp_r31->unk_D0[arg0] = ((arg0 & 1) * 0x1BA) + 0x29;
temp_r31->unk_120[arg0] = 0.0f;
temp_r31->unk_110[arg0] = 0.0f;
espBankSet(temp_r31->unk_68[arg0][1], arg1);
temp_r31->unk_138[arg0] = 0x2D;
temp_r31->unk_140[arg0] = arg1;
temp_r29->unk_68[1][2] -= arg1;
if (temp_r29->unk_68[1][2] < 0) {
temp_r29->unk_68[1][2] = 0;
}
}
// void fn_2_1A38(unkStructBSS114* arg0) {
// Vec sp20;
// Vec sp14;
// Vec sp8;
// unkStructBSS114 *temp;
// unkStructBSS114 *temp2;
// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124);
// temp->unk_04 = 2;
// sp20.x = -2500.0f;
// sp20.y = 150.0f;
// sp20.z = -6800.0f;
// sp14.x = 50.0f;
// sp14.y = 50.0f;
// sp14.z = 50.0f;
// sp8.x = 1500.0f;
// sp8.y = 150.0f;
// sp8.z = -4800.0f;
// temp2 = fn_2_FC40(0x12, &sp20, &sp14, &sp8);
// fn_2_E6BC(temp2->unk_4C, 5.0f, 1.5f, 0.2f, 0.8f, 3.0f);
// }
// void fn_2_1B80(unkStructBSS114* arg0) {
// Vec sp14;
// Vec sp8;
// unkStructBSS114* temp;
// unkStructBSS114* temp2;
// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[1]);
// temp->unk_04 = 2;
// sp14.x = -1000.0f;
// sp14.y = 0.0f;
// sp14.z = -9100.0f;
// sp8.x = 150.0f;
// sp8.y = 100.0f;
// sp8.z = 100.0f;
// temp2 = fn_2_FC40(0xE, &sp14, &sp8, &sp14);
// omSetRot(temp2, 3.0f, 0.0f, 0.0f);
// fn_8002FB30(temp2, 0.0f, 0.0f, 50.0f);
// fn_2_E6BC(temp2->unk_4C, 4.5f, 2.5f, 0.08f, 0.9f, 1.0f);
// }
// void fn_2_1CF0(unkStructBSS114* arg0) {
// Vec sp20;
// Vec sp14;
// Vec sp8;
// unkStructBSS114 *temp;
// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[2]);
// temp->unk_04 = 2;
// sp20.x = 500.0f;
// sp20.y = 0.0f;
// sp20.z = -24300.0f;
// sp14.x = 200.0f;
// sp14.y = 100.0f;
// sp14.z = 100.0f;
// sp8.x = 1000.0f;
// sp8.y = 0.0f;
// sp8.z = -16300.0f;
// fn_2_FC40(0x28, &sp20, &sp14, &sp8);
// }
// void fn_2_1DE8(unkStructBSS114* arg0) {
// Vec sp2C;
// Vec sp20;
// Vec sp14;
// Vec sp8;
// unkStructBSS114 *temp2;
// unkStructBSS114 *temp;
// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[3]);
// temp->unk_04 = 2;
// sp2C.x = 0.0f;
// sp2C.y = -150.0f + 0.003921569f * (300.0f * frand());
// sp2C.z = -23000.0f;
// fn_2_91AC(lbl_2_bss_100.unk_00, &sp2C);
// sp2C.x = 0.0f;
// sp2C.y = -150.0f + 0.003921569f * (300.0f * frand());
// sp2C.z = -25000.0f;
// fn_2_91AC(lbl_2_bss_100.unk_04, &sp2C);
// sp2C.x = 5500.0f;
// sp2C.y = 0.0f;
// sp2C.z = -29800.0f;
// sp20.x = 100.0f;
// sp20.y = 100.0f;
// sp20.z = 100.0f;
// sp14.x = -1500.0f;
// sp14.y = 0.0f;
// sp14.z = -24900.0f;
// temp2 = fn_2_FC40(0x14, &sp2C, &sp20, &sp14);
// fn_2_E6BC(temp2->unk_4C, 6.0f, 1.5f, 0.2f, 0.8f, 3.5f);
// sp8.x = -650.0f;
// sp8.y = -360.0f;
// sp8.z = -26300.0f;
// lbl_2_bss_D0 = fn_2_10A88(&sp8, 3);
// lbl_2_bss_90[0] = HuAudFXEmiterPlay(0x50B, &sp8);
// }
// void fn_2_20B0(omObjData* arg0) {
// Vec sp8;
// omObjData* temp;
// temp = Hu3DModelObjPtrGet(arg0->model[0], lbl_2_data_124[4]);
// temp->unk_04 = 2;
// Hu3DModelAttrReset(arg0->unk_40->unk_08[1][0], 1);
// sp8.x = 0.0f;
// sp8.y = -370.0f;
// sp8.z = -43000.0f;
// lbl_2_bss_8 = fn_2_10A88(&sp8, 3);
// lbl_2_bss_90[1] = HuAudFXEmiterPlay(0x50B, &sp8);
// sp8.x = 380.0f;
// sp8.y = -440.0f;
// sp8.z = -32000.0f;
// lbl_2_bss_CC = fn_2_10A88(&sp8, 3);
// lbl_2_bss_90[2] = HuAudFXEmiterPlay(0x50B, &sp8);
// Hu3DModelAttrReset(arg0->unk_40->unk_00[2], 1);
// Hu3DModelAttrSet(arg0->unk_40->unk_00[2], -0x3FFFFFFF);
// }
// void fn_2_21F8(omObjData* arg0) {
// Vec sp2C;
// Vec sp20;
// Vec sp14;
// Vec sp8;
// s32 i;
// s32 var_r30_2;
// unkStructBSS114* temp;
// temp = Hu3DModelObjPtrGet(arg0->model[0], *lbl_2_data_124);
// temp->unk_04 = 2;
// Hu3DModelAttrReset(arg0->model[0], 1);
// Hu3DModelAttrReset(arg0->model[1], 1);
// Hu3DModelAttrSet(arg0->model[0], 0x40000001);
// Hu3DModelAttrSet(arg0->model[1], 0x40000001);
// Hu3DModelAttrReset(arg0->model[3], 1);
// lbl_2_bss_44.x = 0.0f;
// lbl_2_bss_44.y = 100.0f;
// lbl_2_bss_44.z = 0.0f;
// lbl_2_bss_38.x = 0.0f;
// lbl_2_bss_38.y = 1000.0f;
// lbl_2_bss_38.z = -1500.0f;
// lbl_2_bss_2C.x = 0.0f;
// lbl_2_bss_2C.y = 1.0f;
// lbl_2_bss_2C.z = 0.0f;
// Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38);
// Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f);
// lbl_2_bss_54.unk_00 = lbl_2_bss_44;
// fn_2_D088(NULL);
// sp20 = lbl_2_bss_44;
// PSVECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp2C);
// PSVECNormalize(&sp2C, &sp2C);
// fn_80032D3C(&sp20, &sp2C, lbl_2_bss_88, lbl_2_bss_84, 0x12C, 0x12C, 0x12C);
// sp14.x = 300.0f;
// sp14.y = -450.0f;
// sp14.z = -3100.0f;
// lbl_2_bss_D8 = fn_2_10A88(&sp14, 3);
// lbl_2_bss_90[0] = HuAudFXEmiterPlay(0x50B, &sp14);
// sp14.x = -300.0f;
// sp14.y = -340.0f;
// sp14.z = -4720.0f;
// lbl_2_bss_D4 = fn_2_10A88(&sp14, 3);
// lbl_2_bss_90[1] = HuAudFXEmiterPlay(0x50B, &sp14);
// Hu3DModelAttrReset(arg0->model[2], 1);
// Hu3DModelAttrSet(arg0->model[2], -0x3FFFFFFF);
// var_r30_2 = 4;
// for (i = 0; i < var_r30_2; i++) {
// sp8.x = -340.0f + (0.003921569f * (680.0f * frand()));
// sp8.y = -250.0f + (0.003921569f * (500.0f * frand()));
// sp8.z = ((-1550.0f - (f32) (i * 0x104)) - 40.0f) + (0.003921569f * (80.0f * frand()));
// fn_2_10A88(&sp8, 0);
// }
// }
void fn_2_33B4(omObjData* arg0) {
fn_800210CC(arg0->model[3], 110.0f, 5.0 * fn_800EB910(M_PI * (f64) lbl_2_bss_10 / 180.0), -1500.0);
lbl_2_bss_10 += 2.0f;
if (lbl_2_bss_10 >= 360.0f) {
lbl_2_bss_10 -= 360.0f;
}
}
void fn_2_14738(omObjData* arg0) {
omSetTra(arg0, lbl_2_bss_6C.x, lbl_2_bss_6C.y, lbl_2_bss_6C.z);
if (arg0->work[0] == 1U) {
Hu3DModelAttrSet(*arg0->model, 1);
omDelObjEx(HuPrcCurrentGet(), arg0);
}
}

View file

@ -1,198 +0,0 @@
#include "unsplit.h"
#include "REL/executor.h"
#include <dolphin/mtx.h>
#include "game/objsub.h"
#include "game/object.h"
// global data //
typedef struct unkStruct18FC10 {
s16 unk_00;
char unk_02[8];
} unkStruct18FC10;
typedef struct unkSubstructBSS114 {
s16 unk_00[4];
s16 unk_08[4][3];
char unk_20[0x30];
s16 unk_50[4][3];
s16 unk_68[4][3];
s16 unk_80[4];
s16 unk_88[4];
f32 unk_90[4];
f32 unk_A0[4];
char unk_B0[0x10];
f32 unk_C0[4];
f32 unk_D0[4];
f32 unk_E0[4];
f32 unk_F0[4];
f32 unk_100[4];
f32 unk_110[4];
f32 unk_120[4];
s16 unk_130[4];
s16 unk_138[4];
s16 unk_140[4];
} unkSubstructBSS114;
typedef struct unkStructBSS114 {
char unk_00[4];
s32 unk_04;
char unk_08[0xC];
void *unk_14;
Vec unk_18;
char unk_24[0x1C];
unkSubstructBSS114 *unk_40;
char unk_44[0x8];
s32 unk_4C;
u32 unk_50;
char unk_54[0x8];
unkSubstructBSS114 *unk_5C;
} unkStructBSS114;
typedef struct unkStruct18BFC0 {
char unk_00[0x14];
Vec unk_14;
} unkStruct18BFC0;
typedef struct unkStruct18C8FC {
s16 unk_00;
char unk_02[0x42];
} unkStruct18C8FC;
extern unkStruct18FC10 lbl_8018FC10[];
extern unkStruct18BFC0 lbl_8018BFC0;
extern unkStruct18C8FC lbl_8018C8FC[];
extern s16 lbl_801D3CC2;
extern void Hu3DModelAttrSet(s16, s32);
extern void Hu3DModelAttrReset(s16, s32);
extern omObjData* Hu3DModelObjPtrGet(s16, s32);
extern void Hu3DCameraPosSetV(s32, Vec*, Vec*, Vec*);
extern s16 Hu3DGLightCreateV(Vec*, Vec*, s32*);
extern void Hu3DGLightInfinitytSet(s16);
extern void Hu3DReflectNoSet(s16);
extern void Hu3DShadowCreate(f32, f32, f32);
extern void Hu3DShadowPosSet(Vec*, Vec*, Vec*);
extern void Hu3DShadowTPLvlSet(f32);
extern void Hu3DFogSet(f32, f32, u8, u8, u8);
extern void omOvlReturnEx(s16, s16);
extern omObjData* omAddObjEx(void*, s16, s16, s16, s16, void*);
extern void omDelObjEx(s32*, omObjData*);
extern void omMakeGroupEx(omObjData*, s16, s16);
extern omObjData* omGetGroupMemberListEx(omObjData*, s16);
extern void omSetTra(omObjData*, f32, f32, f32);
extern void omSetRot(omObjData*, f32, f32, f32);
extern void omSetSca(omObjData*, f32, f32, f32);
extern u8 frand(void);
extern s32 HuAudFXPlay(s32);
extern void HuAudFXStop(s32);
extern s32 HuAudFXEmiterPlay(s32, Vec*);
extern void HuAudFXListnerKill(void);
extern void HuAudSeqFadeOut(s32, s32);
extern s16 MGSeqCreate(s32, ...);
extern s16 espEntry(s32, s16, s16);
extern void espDispOn(s16);
extern void espDispOff(s16);
extern void espAttrSet(s16, s16);
extern void espPosSet(s16, f32, f32);
extern void espTPLvlSet(s16, f32);
extern void espColorSet(s16, s8, s8, s8);
extern void espBankSet(s16, s16);
extern void espDrawNoSet(s16, s16);
extern void WipeCreate(s16, s16, s16);
extern u8 WipeStatGet(void);
extern f32 PSVECNormalize(Vec*, Vec*);
// local data //
typedef struct unkStructBSS54 {
Vec unk_00;
} unkStructBSS54;
typedef struct unkStructBSS100 {
void *unk_00;
void *unk_04;
} unkStructBSS100;
extern f32 lbl_2_data_0 = -7.1875f;
extern s16 lbl_2_data_4[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
extern Vec lbl_2_data_14 = { 1500.0f, 2500.0f, 1500.0f };
extern Vec lbl_2_data_20 = { 0.0f, -1.0f, 0.0f };
extern s32 lbl_2_data_2C = -1;
extern Vec lbl_2_data_30 = { 0.0f, 2500.0f, 0.0f };
extern Vec lbl_2_data_3C = { 0.0f, 1.0f, -1.0f };
extern Vec lbl_2_data_48 = { 0.0f, 0.0f, 0.0f };
extern char lbl_2_data_6F[] = "winnercnt:%d";
extern s32 lbl_2_data_80[8] = { 0x610000, 0x610001, 0x610002, 0x610003, 0x610004, 0x610005, 0x610006, 0x610007 };
extern s32 lbl_2_data_124[5];
extern s32 lbl_2_bss_8;
extern f32 lbl_2_bss_10;
extern unkStruct18FC10* lbl_2_bss_1C;
extern Vec lbl_2_bss_2C;
extern Vec lbl_2_bss_38;
extern Vec lbl_2_bss_44;
extern f32 lbl_2_bss_50;
extern unkStructBSS54 lbl_2_bss_54;
extern Vec lbl_2_bss_60;
extern Vec lbl_2_bss_6C;
extern f32 lbl_2_bss_84;
extern f32 lbl_2_bss_88;
extern s32 lbl_2_bss_90[4];
extern s32 lbl_2_bss_A4;
extern s16 lbl_2_bss_A8;
extern s16 lbl_2_bss_AA[];
extern s16 lbl_2_bss_B2[];
extern s16 lbl_2_bss_BA;
extern s16 lbl_2_bss_BE;
extern s16 lbl_2_bss_C0;
extern void* lbl_2_bss_C8;
extern s32 lbl_2_bss_CC;
extern s32 lbl_2_bss_D0;
extern s32 lbl_2_bss_D4;
extern s32 lbl_2_bss_D8;
extern unkStructBSS114* lbl_2_bss_E0;
extern s32 lbl_2_bss_F4;
extern omObjData* lbl_2_bss_F8;
extern omObjData* lbl_2_bss_FC;
extern unkStructBSS100 lbl_2_bss_100;
extern omObjData* lbl_2_bss_108;
extern omObjData* lbl_2_bss_10C;
extern omObjData* lbl_2_bss_110;
extern omObjData* lbl_2_bss_114;
extern unkStructBSS114** lbl_2_bss_118;
extern s32 lbl_2_bss_11C;
extern s16 lbl_2_bss_120;
extern f32 lbl_2_bss_124;
extern f32 lbl_2_bss_128;
extern f32 lbl_2_bss_12C;
void M401ObjectSetup(void);
void fn_2_70C(unkStructBSS114*);
void fn_2_A10(void);
void M401SetFogAndBG(void);
void M401SetSpriteDisp(s16);
void fn_2_C1C(unkStructBSS114*);
void fn_2_11D0(unkStructBSS114*);
void fn_2_15C4(s16);
void fn_2_169C(s16);
void fn_2_1858(s16, s16);
void fn_2_1A38(unkStructBSS114*);
void fn_2_1B80(unkStructBSS114*);
void fn_2_1CF0(unkStructBSS114*);
void fn_2_1DE8(unkStructBSS114*);
void fn_2_20B0(unkStructBSS114*);
void fn_2_2FA4(void*);
void fn_2_3B24(void*);
void fn_2_48A0(void*);
void fn_2_7CB4(void*);
void fn_2_8E74(void*);
void fn_2_95E4(void*);
void fn_2_91AC(void*, Vec*);
void fn_2_9D00(void*);
void fn_2_BD90(void*);
void fn_2_C6DC(void*);
void fn_2_C130(void);
void fn_2_D088(void*);
void fn_2_DBCC(s16);
void fn_2_E6BC(s32, f32, f32, f32, f32, f32);
unkStructBSS114* fn_2_FC40(s32, Vec*, Vec*, Vec*);
void fn_2_10240(Vec*, Vec*);
void fn_2_1041C(void);
s32 fn_2_14640(void*);
void fn_2_10710(void);
s16 fn_2_1079C(void);
s32 fn_2_10A88(Vec*, s16);

613
src/REL/m401Dll/main.c Normal file
View file

@ -0,0 +1,613 @@
#include "game/object.h"
#include "game/memory.h"
#include "game/hsfman.h"
#include "game/objsub.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "game/wipe.h"
#include "game/esprite.h"
#include "game/sprite.h"
#include "REL/m401Dll.h"
#include "rel_sqrt_consts.h"
float lbl_2_data_0 = -7.1875f;
s16 lbl_2_data_4[] = {
0, 1, 2, 3,
4, 5, 6, 7
};
Vec lbl_2_data_14 = {
1500, 2500, 1500
};
Vec lbl_2_data_20 = {
0, -1, 0
};
GXColor lbl_2_data_2C = {
255, 255, 255, 255
};
Vec lbl_2_data_30 = {
0, 2500, 0
};
Vec lbl_2_data_3C = {
0, 1, -1
};
Vec lbl_2_data_48 = {
0, 0, 0
};
s32 lbl_2_bss_11C;
omObjData **lbl_2_bss_118;
omObjData *lbl_2_bss_114;
omObjData *lbl_2_bss_110;
omObjData *lbl_2_bss_10C;
omObjData *lbl_2_bss_108;
omObjData *lbl_2_bss_100[2];
omObjData *lbl_2_bss_FC;
omObjData *lbl_2_bss_F8;
omObjData *lbl_2_bss_F4;
omObjData *lbl_2_bss_E4[4];
omObjData *lbl_2_bss_E0;
omObjData *lbl_2_bss_DC;
omObjData *lbl_2_bss_D8;
omObjData *lbl_2_bss_D4;
omObjData *lbl_2_bss_D0;
omObjData *lbl_2_bss_CC;
omObjData *lbl_2_bss_C8;
omObjData *lbl_2_bss_C4;
s16 lbl_2_bss_C0;
s16 lbl_2_bss_BE;
s16 lbl_2_bss_BC;
s16 lbl_2_bss_BA;
s16 lbl_2_bss_B2[4];
s16 lbl_2_bss_AA[4];
s16 lbl_2_bss_A8;
s32 lbl_2_bss_A4;
s32 lbl_2_bss_90[5];
s32 lbl_2_bss_8C;
float lbl_2_bss_88;
float lbl_2_bss_84;
Vec lbl_2_bss_78;
Vec lbl_2_bss_6C;
Vec lbl_2_bss_60;
Vec lbl_2_bss_54;
float lbl_2_bss_50;
Vec lbl_2_bss_44;
Vec lbl_2_bss_38;
Vec lbl_2_bss_2C;
Vec lbl_2_bss_20;
Process *lbl_2_bss_1C;
s16 lbl_2_bss_1A;
s16 lbl_2_bss_18;
s32 lbl_2_bss_14;
float lbl_2_bss_10;
s16 lbl_2_bss_E;
s16 lbl_2_bss_C;
omObjData *lbl_2_bss_8;
omObjData *lbl_2_bss_4;
omObjData *lbl_2_bss_0;
void fn_2_70C(omObjData *object);
void fn_2_A10(omObjData *object);
void fn_2_C1C(omObjData *object);
void fn_2_11D0(omObjData *object);
void fn_2_2FA4(omObjData *object);
void fn_2_3B24(omObjData *object);
void fn_2_48A0(omObjData *object);
void fn_2_7CB4(omObjData *object);
void fn_2_8E74(omObjData *object);
void fn_2_95E4(omObjData *object);
void fn_2_9D00(Process *objman);
void fn_2_BD90(omObjData *object);
void fn_2_C130(omObjData *object);
void fn_2_C6DC(omObjData *object);
void fn_2_D088(omObjData *object);
void fn_2_DBCC(s32 arg0);
void ModuleProlog(void)
{
s32 i;
omObjData *object;
CameraData *camera;
LightData *light;
OSReport("**** M401ObjectSetup ****\n");
HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1);
HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1);
HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1);
lbl_2_bss_1C = omInitObjMan(60, 8192);
omGameSysInit(lbl_2_bss_1C);
lbl_2_bss_A8 = Hu3DGLightCreateV(&lbl_2_data_14, &lbl_2_data_20, &lbl_2_data_2C);
Hu3DGLightInfinitytSet(lbl_2_bss_A8);
light = &Hu3DGlobalLight[lbl_2_bss_A8];
light->unk_00 |= 0x8000;
Hu3DCameraCreate(1);
camera = &Hu3DCamera[0];
Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1);
lbl_2_bss_114 = omAddObjEx(lbl_2_bss_1C, 1000, 3, 0, -1, fn_2_BD90);
lbl_2_bss_114->work[0] = 0;
lbl_2_bss_110 = omAddObjEx(lbl_2_bss_1C, 10, 0, 0, -1, fn_2_70C);
omMakeGroupEx(lbl_2_bss_1C, 0, 4);
lbl_2_bss_118 = omGetGroupMemberListEx(lbl_2_bss_1C, 0);
omMakeGroupEx(lbl_2_bss_1C, 1, 28);
for(i=0; i<4; i++) {
object = omAddObjEx(lbl_2_bss_1C, 1200, 4, 10, 0, fn_2_3B24);
object->work[0] = i;
}
lbl_2_bss_12C = 60;
lbl_2_bss_128 = 50;
lbl_2_bss_124 = 25000;
Hu3DShadowCreate(30, 20, 5000);
Hu3DShadowTPLvlSet(0.35f);
lbl_2_data_30.y = lbl_2_bss_60.y + 1500.0f;
lbl_2_data_30.z = lbl_2_bss_60.z + 500.0f;
lbl_2_data_48.y = lbl_2_bss_60.y;
lbl_2_data_48.z = lbl_2_bss_60.z + 500.0f;
Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48);
lbl_2_bss_10C = omAddObjEx(lbl_2_bss_1C, 500, 12, 3, -1, fn_2_2FA4);
lbl_2_bss_108 = omAddObjEx(lbl_2_bss_1C, 1100, 1, 1, -1, fn_2_7CB4);
lbl_2_bss_100[0] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74);
lbl_2_bss_100[1] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74);
lbl_2_bss_FC = omAddObjEx(lbl_2_bss_1C, 1120, 1, 2, -1, fn_2_95E4);
lbl_2_bss_C8 = omAddObjEx(lbl_2_bss_1C, 100, 0, 0, -1, fn_2_D088);
lbl_2_bss_E0 = omAddObjEx(lbl_2_bss_1C, 1500, 0, 0, -1, fn_2_C1C);
fn_2_DBCC(90);
lbl_2_bss_F8 = omAddObjEx(lbl_2_bss_1C, 500, 9, 0, -1, fn_2_C6DC);
fn_2_9D00(lbl_2_bss_1C);
fn_2_1041C();
fn_2_1079C();
lbl_2_bss_F4 = fn_2_14640(lbl_2_bss_1C);
lbl_2_bss_50 = 0;
lbl_2_bss_54 = camera->pos;
Hu3DReflectNoSet(0);
lbl_2_bss_120 = 0;
lbl_2_bss_BE = 0;
lbl_2_bss_BA = 0;
Hu3DFogSet(3000, 10000, 10, 60, 160);
Hu3DBGColorSet(10, 60, 160);
lbl_2_bss_88 = 3000;
lbl_2_bss_84 = 142000;
lbl_2_bss_11C = HuAudFXPlay(1290);
}
typedef struct m401_work_player {
s16 unk0;
u8 unk2[0x66];
s16 unk68;
u8 unk6A[8];
s16 unk72;
s16 unk74;
} M401WorkPlayer;
void fn_2_70C(omObjData *object)
{
s32 temp_r31;
M401WorkPlayer *temp_r30;
s16 temp_r29;
switch(lbl_2_bss_120) {
case 0:
break;
case 1:
if(lbl_2_bss_BE == 1) {
lbl_2_bss_120 = 2;
lbl_2_bss_C0 = MGSeqFinishCreate();
HuAudSeqFadeOut(lbl_2_bss_A4, 100);
}
break;
case 2:
if(lbl_2_bss_114 == NULL) {
lbl_2_bss_114 = omAddObjEx(HuPrcCurrentGet(), 1000, 0, 0, -1, fn_2_C130);
lbl_2_bss_114->work[0] = 0;
temp_r29 = 0;
lbl_2_bss_BA = 0;
for(temp_r31=0; temp_r31<4; temp_r31++) {
temp_r30 = lbl_2_bss_118[temp_r31]->data;
lbl_2_bss_118[temp_r31]->func = fn_2_48A0;
temp_r30->unk0 = 5;
temp_r30->unk68 = 0;
if(temp_r30->unk72 > temp_r29) {
temp_r29 = temp_r30->unk72;
}
lbl_2_bss_B2[temp_r31] = -1;
lbl_2_bss_AA[temp_r31] = -1;
}
if(temp_r29 > 0) {
for(temp_r31=0; temp_r31<4; temp_r31++) {
temp_r30 = lbl_2_bss_118[temp_r31]->data;
if(temp_r30->unk72 == temp_r29) {
lbl_2_bss_AA[lbl_2_bss_BA] = GWPlayerCfg[temp_r31].character;
lbl_2_bss_B2[lbl_2_bss_BA++] = temp_r31;
temp_r30->unk68 = 1;
}
}
}
OSReport("winnercnt:%d\n", lbl_2_bss_BA);
}
break;
}
if(omSysExitReq) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
HuAudSeqFadeOut(lbl_2_bss_A4, 100);
HuAudFXStop(lbl_2_bss_11C);
object->func = fn_2_A10;
}
}
void fn_2_A10(omObjData *object)
{
s32 i;
if(!WipeStatGet()) {
fn_2_10710();
for(i=0; i<4; i++) {
CharModelKill(lbl_2_data_4[GWPlayerCfg[i].character]);
}
HuAudFXListnerKill();
omOvlReturnEx(1, 1);
}
}
void fn_2_A98(void)
{
Hu3DFogSet(3000, 10000, 10, 60, 160);
Hu3DBGColorSet(10, 60, 160);
}
typedef struct m401_work_2d {
s16 unk0[4];
s16 unk8[4][3];
u8 unk20[0x30];
s16 unk50[4][3];
s16 unk68[4][3];
s16 unk80[4];
s16 unk88[4];
float unk90[4];
float unkA0[4];
float unkB0[4];
float unkC0[4];
float unkD0[4];
float unkE0[4];
float unkF0[4];
float unk100[4];
float unk110[4];
float unk120[4];
s16 unk130[4];
s16 unk138[4];
s16 unk140[4];
} M401Work2D;
void fn_2_AEC(s16 arg0)
{
M401Work2D *temp_r31;
s32 i;
s32 j;
temp_r31 = lbl_2_bss_E0->data;
if(arg0) {
for(i=0; i<4; i++) {
espDispOn(temp_r31->unk0[i]);
espDispOn(temp_r31->unk80[i]);
espDispOn(temp_r31->unk88[i]);
for(j=0; j<2; j++) {
espDispOn(temp_r31->unk8[i][j]);
}
}
} else {
for(i=0; i<4; i++) {
espDispOff(temp_r31->unk0[i]);
espDispOff(temp_r31->unk80[i]);
espDispOff(temp_r31->unk88[i]);
for(j=0; j<2; j++) {
espDispOff(temp_r31->unk8[i][j]);
}
}
}
}
s32 lbl_2_data_80[] = {
0x610000,
0x610001,
0x610002,
0x610003,
0x610004,
0x610005,
0x610006,
0x610007
};
#define PLAYER_POS_X(index, left, width) ((((index)&1)*width)+left)
#define PLAYER_POS_Y(index, top, height) ((((index)>1)*height)+top)
void fn_2_C1C(omObjData *object)
{
M401Work2D *temp_r31;
s32 i;
s32 j;
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401Work2D), MEMORY_DEFAULT_NUM);
temp_r31 = object->data;
for(i=0; i<4; i++) {
temp_r31->unk0[i] = espEntry(lbl_2_data_80[GWPlayerCfg[i].character], 2, 0);
espDispOff(temp_r31->unk0[i]);
espDrawNoSet(temp_r31->unk0[i], 0);
espPosSet(temp_r31->unk0[i], PLAYER_POS_X(i, 37, 438), PLAYER_POS_Y(i, 59, 358));
temp_r31->unk80[i] = espEntry(0x20002F, 3, 0);
espDispOff(temp_r31->unk80[i]);
espDrawNoSet(temp_r31->unk80[i], 0);
espPosSet(temp_r31->unk80[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358));
temp_r31->unk88[i] = espEntry(0x200030, 4, 0);
espDispOff(temp_r31->unk88[i]);
espDrawNoSet(temp_r31->unk88[i], 0);
espPosSet(temp_r31->unk88[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358));
espColorSet(temp_r31->unk88[i], 0, 0, 0);
espTPLvlSet(temp_r31->unk88[i], 0.5f);
for(j=0; j<2; j++) {
temp_r31->unk8[i][j] = espEntry(0x20002E, 1, 0);
espDispOff(temp_r31->unk8[i][j]);
espDrawNoSet(temp_r31->unk8[i][j], 0);
espPosSet(temp_r31->unk8[i][j], PLAYER_POS_X(i, 69+(j*20), 438), PLAYER_POS_Y(i, 63, 358));
espAttrSet(temp_r31->unk8[i][j], HUSPR_ATTR_NOANIM);
}
for(j=0; j<3; j++) {
temp_r31->unk50[i][j] = espEntry(0x20002D, 0, 0);
espDispOff(temp_r31->unk50[i][j]);
espDrawNoSet(temp_r31->unk50[i][j], 0);
espAttrSet(temp_r31->unk50[i][j], HUSPR_ATTR_NOANIM);
temp_r31->unk68[i][j] = espEntry(0x20002D, 0, 0);
espDispOff(temp_r31->unk68[i][j]);
espDrawNoSet(temp_r31->unk68[i][j], 0);
espAttrSet(temp_r31->unk68[i][j], HUSPR_ATTR_NOANIM);
}
espBankSet(temp_r31->unk50[i][0], 10);
espBankSet(temp_r31->unk68[i][0], 11);
temp_r31->unk90[i] = 1.0f;
temp_r31->unkA0[i] = 1.0f;
temp_r31->unk130[i] = 0;
temp_r31->unk138[i] = 0;
}
object->func = fn_2_11D0;
}
void fn_2_15C4(s16 arg0);
void fn_2_11D0(omObjData *object)
{
M401Work2D *temp_r31;
s32 i;
s32 j;
omObjData *temp_r28;
Vec sp18;
Vec spC;
M401WorkPlayer *sp8;
temp_r31 = object->data;
for(i=0; i<4; i++) {
sp8 = lbl_2_bss_118[i]->data;
if(temp_r31->unk130[i]) {
temp_r28 = lbl_2_bss_118[i];
sp18.x = temp_r28->trans.x;
sp18.y = temp_r28->trans.y;
sp18.z = temp_r28->trans.z;
fn_2_10240(&sp18, &spC);
for(j=0; j<3; j++) {
espPosSet(temp_r31->unk50[i][j], (-20.0f+spC.x+temp_r31->unkF0[i])+(j*16), 20.0f+spC.y+temp_r31->unk100[i]);
espTPLvlSet(temp_r31->unk50[i][j], temp_r31->unk90[i]);
}
temp_r31->unkC0[i] -= 0.5f;
temp_r31->unk100[i] -= 1.0f;
if(temp_r31->unk130[i] < 15) {
temp_r31->unk90[i] -= 1.0f/15.0f;
}
if(--temp_r31->unk130[i] == 0) {
espDispOff(temp_r31->unk50[i][0]);
espDispOff(temp_r31->unk50[i][1]);
}
}
if(temp_r31->unk138[i]) {
temp_r28 = lbl_2_bss_118[i];
sp18.x = temp_r28->trans.x;
sp18.y = temp_r28->trans.y;
sp18.z = temp_r28->trans.z;
fn_2_10240(&sp18, &spC);
for(j=0; j<2; j++) {
espPosSet(temp_r31->unk68[i][j], (-20.0f+spC.x+temp_r31->unk110[i])+(j*16), -20.0f+spC.y+temp_r31->unk120[i]);
espTPLvlSet(temp_r31->unk68[i][j], temp_r31->unkA0[i]);
}
temp_r31->unkE0[i] += 0.5f;
temp_r31->unk120[i] += 1.0f;
if(temp_r31->unk138[i] < 15) {
temp_r31->unkA0[i] -= 1.0f/15.0f;
}
if(--temp_r31->unk138[i] == 0) {
espDispOff(temp_r31->unk68[i][0]);
espDispOff(temp_r31->unk68[i][1]);
}
}
fn_2_15C4(i);
}
}
void fn_2_15C4(s16 arg0)
{
M401Work2D *temp_r31;
s32 temp_r30;
M401WorkPlayer *temp_r29;
temp_r31 = lbl_2_bss_E0->data;
temp_r29 = lbl_2_bss_118[arg0]->data;
temp_r30 = temp_r29->unk72;
espBankSet(temp_r31->unk8[arg0][0], temp_r30/10);
espBankSet(temp_r31->unk8[arg0][1], temp_r30%10);
}
void fn_2_169C(s16 arg0)
{
M401Work2D *temp_r31;
s32 i;
M401WorkPlayer *temp_r28;
temp_r31 = lbl_2_bss_E0->data;
temp_r28 = lbl_2_bss_118[arg0]->data;
for(i=0; i<2; i++ ){
espDispOn(temp_r31->unk50[arg0][i]);
}
temp_r31->unk90[arg0] = 1;
temp_r31->unkC0[arg0] = PLAYER_POS_Y(arg0, 52, 398);
temp_r31->unkB0[arg0] = PLAYER_POS_X(arg0, 41, 442);
temp_r31->unk100[arg0] = 0;
temp_r31->unkF0[arg0] = 0;
espBankSet(temp_r31->unk50[arg0][1], temp_r28->unk74);
temp_r31->unk130[arg0] = 45;
}
void fn_2_1858(s16 arg0, s16 arg1)
{
M401Work2D *temp_r31;
M401WorkPlayer *temp_r29;
s32 i;
temp_r31 = lbl_2_bss_E0->data;
temp_r29 = lbl_2_bss_118[arg0]->data;
for(i=0; i<2; i++ ){
espDispOn(temp_r31->unk68[arg0][i]);
}
temp_r31->unkA0[arg0] = 1;
temp_r31->unkE0[arg0] = PLAYER_POS_Y(arg0, 20, 398);
temp_r31->unkD0[arg0] = PLAYER_POS_X(arg0, 41, 442);
temp_r31->unk120[arg0] = 0;
temp_r31->unk110[arg0] = 0;
espBankSet(temp_r31->unk68[arg0][1], arg1);
temp_r31->unk138[arg0] = 45;
temp_r31->unk140[arg0] = arg1;
temp_r29->unk72 -= arg1;
if(temp_r29->unk72 < 0) {
temp_r29->unk72 = 0;
}
}
float lbl_2_data_A0[] = {
-500,
-8500,
-17500,
-26500,
-99000
};
float lbl_2_data_B4[] = {
-9100,
-18100,
-27100,
-36100,
-45100,
-100000
};
void fn_2_1A38(omObjData *object);
void fn_2_1B80(omObjData *object);
void fn_2_1CF0(omObjData *object);
void fn_2_1DE8(omObjData *object);
void fn_2_1DE8(omObjData *object);
void fn_2_20B0(omObjData *object);
void fn_2_2CBC(omObjData *object);
void fn_2_2D64(omObjData *object);
void fn_2_2DCC(omObjData *object);
void fn_2_2E20(omObjData *object);
void fn_2_2ED0(omObjData *object);
omObjFunc lbl_2_data_CC[] = {
fn_2_1A38,
fn_2_2CBC,
fn_2_1B80,
fn_2_2D64,
fn_2_1CF0,
fn_2_2DCC,
fn_2_1DE8,
fn_2_2E20,
fn_2_20B0,
fn_2_2ED0
};
char *lbl_2_data_124[] = {
"kaitei01",
"kaitei02",
"kaitei03",
"kaitei04",
"kaitei05"
};
s32 lbl_2_data_138[] = {
0x5C0002,
0x5C0002,
0x5C0002,
0x5C0002,
0x5C0002,
0x5C0002,
0x5C0002,
0x5C0002,
};
omObjData *fn_2_FC40(s16 arg0, Vec *arg1, Vec *arg2, Vec *arg3);
void fn_2_E6BC(omObjData *object, float arg2, float arg3, float arg4, float arg5, float arg6);
void fn_2_1A38(omObjData *object)
{
Vec sp20;
Vec sp14;
Vec sp8;
HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]);
omObjData *temp_r30;
temp_r31->type = 2;
sp20.x = -2500;
sp20.y = 150;
sp20.z = -6800;
sp14.x = 50;
sp14.y = 50;
sp14.z = 50;
sp8.x = 1500;
sp8.y = 150;
sp8.z = -4800;
temp_r30 = fn_2_FC40(18, &sp20, &sp14, &sp8);
fn_2_E6BC((omObjData *)temp_r30->work[0], 5, 1.5, 0.2, 0.8, 3);
}
void fn_2_1B80(omObjData *object)
{
Vec sp14;
Vec sp8;
omObjData *temp_r31;
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]);
temp_r30->type = 2;
sp14.x = -1000;
sp14.y = 0;
sp14.z = -9100;
sp8.x = 150;
sp8.y = 100;
sp8.z = 100;
temp_r31 = fn_2_FC40(14, &sp14, &sp8, &sp14);
omSetRot(temp_r31, 3, 0, 0);
omSetSca(temp_r31, 0, 0, 50);
fn_2_E6BC((omObjData *)temp_r31->work[0], 4.5, 2.5, 0.08, 0.9, 1);
}
void fn_2_1CF0(omObjData *object)
{
Vec sp20;
Vec sp14;
Vec sp8;
HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]);
temp_r31->type = 2;
sp20.x = 500;
sp20.y = 0;
sp20.z = -24300;
sp14.x = 200;
sp14.y = 100;
sp14.z = 100;
sp8.x = 1000;
sp8.y = 0;
sp8.z = -16300;
fn_2_FC40(40, &sp20, &sp14, &sp8);
}

View file

@ -211,7 +211,7 @@ void fn_1_4E8C(void) {
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_06 == -1) {
temp_r31->unk_06 = MGSeqCreate(3, 0);
temp_r31->unk_06 = MGSeqStartCreate();
temp_r31->unk_44 = HuAudSeqPlay(0x46);
fn_1_2564();
for (i = 0; i < 4; i++) {
@ -222,7 +222,7 @@ void fn_1_4E8C(void) {
MGSeqKill(temp_r31->unk_06);
temp_r31->unk_06 = -1;
temp_r31->unk_10 = 0x258;
temp_r31->unk_08 = MGSeqCreate(1, temp_r31->unk_10 / 60, -1, -1);
temp_r31->unk_08 = MGSeqTimerCreate(temp_r31->unk_10 / 60);
fn_1_1E4();
fn_1_4C3C(3);
}
@ -299,7 +299,7 @@ void fn_1_52AC(void) {
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
temp_r31->unk_06 = MGSeqCreate(3, 1);
temp_r31->unk_06 = MGSeqFinishCreate();
temp_r31->unk_04++;
HuAudSeqFadeOut(temp_r31->unk_44, 100);
}
@ -362,7 +362,7 @@ void fn_1_5574(void) {
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
GWMGRecordSet(1, fn_1_28D4());
temp_r31->unk_06 = MGSeqCreate(14, fn_1_28D4());
temp_r31->unk_06 = MGSeqRecordCreate(fn_1_28D4());
fn_1_5F40(1);
temp_r31->unk_04++;
return;
@ -384,15 +384,15 @@ void fn_1_5630(void) {
}
}
if (temp_r31->unk_24 == 0) {
temp_r31->unk_06 = MGSeqCreate(3, 2);
temp_r31->unk_06 = MGSeqDrawCreate();
HuAudSStreamPlay(4);
} else {
temp_r31->unk_06 = MGSeqCreate(5, 3, fn_1_4C0(temp_r31->unk_1C[0]), fn_1_4C0(temp_r31->unk_1C[1]), fn_1_4C0(temp_r31->unk_1C[2]), fn_1_4C0(temp_r31->unk_1C[3]));
temp_r31->unk_06 = MGSeqWinCreate(fn_1_4C0(temp_r31->unk_1C[0]), fn_1_4C0(temp_r31->unk_1C[1]), fn_1_4C0(temp_r31->unk_1C[2]), fn_1_4C0(temp_r31->unk_1C[3]));
for (i = 0; i < ARRAY_COUNT(temp_r31->unk_1C); i++) {
if (temp_r31->unk_1C[i] != -1) {
fn_1_3C4(temp_r31->unk_1C[i]);
GWPlayerCoinWinSet(temp_r31->unk_1C[i], GWPlayerCoinWinGet(temp_r31->unk_1C[i])+10);
}
GWPlayerCoinWinAdd(temp_r31->unk_1C[i], 10);
}
}
HuAudSStreamPlay(1);
}
@ -500,7 +500,7 @@ void fn_1_5BB0(void) {
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
temp_r31->unk_06 = MGSeqCreate(3, 2);
temp_r31->unk_06 = MGSeqDrawCreate();
temp_r31->unk_04++;
}
if (MGSeqStatGet(temp_r31->unk_06) == 0) {

View file

@ -11,6 +11,7 @@
#include "game/window.h"
#include "game/gamework_data.h"
#include "game/sprite.h"
#include "game/minigame_seq.h"
#include "REL/modeltestDll.h"
@ -287,7 +288,7 @@ void fn_1_29C(omObjData * arg0)
HuSprExecLayerSet(0x40, 1);
HuSprGrpDrawNoSet(lbl_1_bss_99C, 0x40);
lbl_1_bss_458 = 0x293;
lbl_1_bss_45A[0] = MGSeqCreate(1, lbl_1_bss_458 / 60, -1, -1);
lbl_1_bss_45A[0] = MGSeqTimerCreate(lbl_1_bss_458 / 60);
temp_r29 = HuDataSelHeapReadNum(0x120001, 0x10000000, 2);
temp_r28 = HuSprAnimRead(temp_r29);
lbl_1_bss_888 = Hu3DParManCreate(temp_r28, 0x3E8, &lbl_1_data_208);
@ -505,27 +506,27 @@ void fn_1_F9C(struct om_obj_data * omData)
}
if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) {
var_r30 = MGSeqCreate(teropPatterns.unk0[lbl_1_bss_24], 0);
var_r30 = MGSeqStartCreateType(teropPatterns.unk0[lbl_1_bss_24]);
}
if ((HuPadBtnDown[0] & PAD_BUTTON_A) != 0) {
var_r30 = MGSeqCreate(teropPatterns.unk0[lbl_1_bss_24], 2);
var_r30 = MGSeqDrawCreateType(teropPatterns.unk0[lbl_1_bss_24]);
}
if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) {
var_r30 = MGSeqCreate(0xE, 0x3B);
var_r30 = MGSeqRecordCreate(59);
}
if ((HuPadBtnDown[0] & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_UP | PAD_BUTTON_DOWN)) != 0) {
if ((HuPadBtnDown[0] & PAD_BUTTON_UP) != 0) {
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, -1, -1, -1);
MGSeqChampionCreate(GWPlayerCfg[0].character, -1, -1, -1);
}
if ((HuPadBtnDown[0] & PAD_BUTTON_LEFT) != 0) {
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, -1, -1);
MGSeqChampionCreate(GWPlayerCfg[0].character, GWPlayerCfg[1].character, -1, -1);
}
if ((HuPadBtnDown[0] & PAD_BUTTON_DOWN) != 0) {
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, -1);
MGSeqChampionCreate(GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, -1);
}
if ((HuPadBtnDown[0] & PAD_BUTTON_RIGHT) != 0) {
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, GWPlayerCfg[3].character);
MGSeqChampionCreate(GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, GWPlayerCfg[3].character);
}
}
fontcolor = 5;

View file

@ -337,7 +337,7 @@ static void fn_1_E914(omObjData *arg0) {
lbl_1_bss_7FC[i]->func = fn_1_FED0;
}
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7B8, 0.0f, 5.0f, 0x40000001);
lbl_1_bss_7D6 = MGSeqCreate(3, 0);
lbl_1_bss_7D6 = MGSeqStartCreate();
BoardMusStart(1, 0xE, 0x7F, 0);
arg0->func = fn_1_ECD4;
}
@ -359,7 +359,7 @@ static void fn_1_ECD4(omObjData *arg0) {
arg0->func = fn_1_EED8;
lbl_1_bss_7D2 = 5;
lbl_1_bss_7D0 = 60;
lbl_1_bss_7D4 = MGSeqCreate(1, lbl_1_bss_7D2, 0x120, 0x40);
lbl_1_bss_7D4 = MGSeqTimerCreateXY(lbl_1_bss_7D2, 288, 64);
}
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);

View file

@ -209,7 +209,7 @@ void fn_1_8140(s32 arg0) {
fn_1_81E0(arg0);
BoardMusStart(1, 0x16, 0x7F, 0);
temp_r31 = MGSeqCreate(3, 0);
temp_r31 = MGSeqStartCreate();
while (MGSeqStatGet(temp_r31)) {
HuPrcVSleep();
@ -305,7 +305,7 @@ void fn_1_84A8(s32 arg0) {
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_144, someBits3);
temp_r31->unk00_bit1 = arg0;
if (arg0 == 0) {
temp_r31->unk_04 = MGSeqCreate(1, temp_r31->unk2, 0x120, 0x40);
temp_r31->unk_04 = MGSeqTimerCreateXY(temp_r31->unk2, 288, 64);
}
}
}

View file

@ -345,7 +345,7 @@ void fn_1_A44C(s32 arg0) {
s32 temp_r28;
BoardMusStart(1, 0x17, 0x7F, 0);
temp_r30 = MGSeqCreate(3, 0);
temp_r30 = MGSeqStartCreate();
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
@ -434,7 +434,7 @@ void fn_1_A7A0(s32 arg0) {
temp_r31->unk00_bit1 = 0;
temp_r31->unk1 = 5U;
temp_r31->unk2 = 0x3C;
temp_r31->unk4 = MGSeqCreate(1, temp_r31->unk1, 0x120, 0x40);
temp_r31->unk4 = MGSeqTimerCreateXY(temp_r31->unk1, 288, 64);
fn_1_BB74(lbl_1_bss_194);
lbl_1_bss_18C = fn_1_AE4C(arg0, lbl_1_bss_194);
}

View file

@ -295,7 +295,7 @@ static void fn_1_15CC(s32 arg0) {
s32 var_r31;
BoardMusStart(1, 0x26, 0x7F, 0);
temp_r26 = MGSeqCreate(3, 0);
temp_r26 = MGSeqStartCreate();
while (MGSeqStatGet(temp_r26) != 0) {
HuPrcVSleep();
}
@ -1072,7 +1072,7 @@ static void fn_1_4070(void) {
temp_r31->unk00_field0 = 0;
temp_r31->unk01 = 5;
temp_r31->unk02 = 60;
temp_r31->unk04 = MGSeqCreate(1, temp_r31->unk01, 0x120, 0x40);
temp_r31->unk04 = MGSeqTimerCreateXY(temp_r31->unk01, 288, 64);
}
static void fn_1_4124(void) {

View file

@ -83,15 +83,15 @@ static s32 seqType2SprTbl[6] = {
};
static s16 mgSeqTypeTbl[9] = {
8,
4,
9,
11,
6,
10,
7,
11,
7
MG_SEQ_TYPE_4P,
MG_SEQ_TYPE_1VS3,
MG_SEQ_TYPE_2VS2,
MG_SEQ_TYPE_BOWSER,
MG_SEQ_TYPE_BATTLE,
MG_SEQ_TYPE_PINBALL,
MG_SEQ_TYPE_STORY,
MG_SEQ_TYPE_BOWSER,
MG_SEQ_TYPE_STORY
};
static char lbl_8012F336[] = {
@ -252,9 +252,9 @@ s16 MGSeqCreate(s16 type, ...)
s16 ret;
va_list params;
va_start(params, type);
if(type == 3) {
if(type == MG_SEQ_TYPE_AUTO) {
if(GWSystem.mg_next == 0xFFFF) {
type = 8;
type = MG_SEQ_TYPE_4P;
} else {
type = mgSeqTypeTbl[mgInfoTbl[GWSystem.mg_next].type];
}