Merge pull request #249 from gamemasterplc/main

Decompile rest of resultdll/main.c
This commit is contained in:
gamemasterplc 2024-04-05 15:42:22 -05:00 committed by GitHub
commit d35bece179
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 559 additions and 93 deletions

View file

@ -31,70 +31,70 @@ fn_1_927C = .text:0x0000927C; // type:function size:0x138
fn_1_93B4 = .text:0x000093B4; // type:function size:0x78
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float
lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float
lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float
lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x10 data:4byte
lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:float
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float
lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float
lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x10 scope:local data:4byte
lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float
@ -137,20 +137,20 @@ lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:
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
lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 data:string
lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string
lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x18
lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x18
lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x20
lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10
lbl_1_data_408 = .data:0x00000408; // type:object size:0x30
lbl_1_data_438 = .data:0x00000438; // type:object size:0x10
lbl_1_data_448 = .data:0x00000448; // type:object size:0x8
lbl_1_data_448 = .data:0x00000448; // type:object size:0x8 scope:local
lbl_1_data_450 = .data:0x00000450; // type:object size:0x18
lbl_1_data_468 = .data:0x00000468; // type:object size:0x20
lbl_1_data_488 = .data:0x00000488; // type:object size:0x30
lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 data:string
lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 data:string
lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB data:string
lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string
lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string
lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string
lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x270
lbl_1_data_758 = .data:0x00000758; // type:object size:0x28
lbl_1_data_780 = .data:0x00000780; // type:object size:0x70

View file

@ -972,14 +972,14 @@ SLSaveDataMake = .text:0x80058860; // type:function size:0x154
SLSaveDataInfoSet = .text:0x800589B4; // type:function size:0x218
SLCommonSet = .text:0x80058BCC; // type:function size:0x254
SLSaveBoard = .text:0x80058E20; // type:function size:0x8C
SLSaveBoardBackup = .text:0x80058EAC; // type:function size:0x8C
SLSaveBoardStory = .text:0x80058EAC; // type:function size:0x8C
SLSave = .text:0x80058F38; // type:function size:0x380
SLCreateSaveWin = .text:0x800592B8; // type:function size:0xDC scope:local
SLKillSaveWin = .text:0x80059394; // type:function size:0x48 scope:local
SLLoad = .text:0x800593DC; // type:function size:0x110
SLLoadGameStat = .text:0x800594EC; // type:function size:0x38
SLLoadBoard = .text:0x80059524; // type:function size:0x1A0
SLLoadBoardBackup = .text:0x800596C4; // type:function size:0x184
SLLoadBoardStory = .text:0x800596C4; // type:function size:0x184
SLSerialNoGet = .text:0x80059848; // type:function size:0x28
SLSerialNoCheck = .text:0x80059870; // type:function size:0xA0
SLCheckSumCheck = .text:0x80059910; // type:function size:0x60

View file

@ -1053,7 +1053,7 @@ config.libs = [
Rel('resultDll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/resultDll/main.c"),
Object(Matching, "REL/resultDll/main.c"),
Object(NonMatching, "REL/resultDll/battle.c"),
Object(Matching, "REL/resultDll/datalist.c"),
}

View file

@ -234,6 +234,11 @@ static inline void GWLuckyValueSet(s32 value)
GWSystem.lucky_value = value;
}
static inline s16 GWPlayerCoinBattleGet(s32 player)
{
return GWPlayer[player].coins_battle;
}
static inline s16 GWPlayerCoinCollectGet(s32 player)
{
return GWPlayer[player].coin_collect;

View file

@ -15,8 +15,8 @@ typedef struct save_buf_data {
GameStat stat;
SystemState system;
PlayerState player[4];
SystemState systemBackup;
PlayerState playerBackup[4];
SystemState systemStory;
PlayerState playerStory[4];
} SaveBufData;
typedef union save_buf_all {
@ -24,7 +24,12 @@ typedef union save_buf_all {
u8 ATTRIBUTE_ALIGN(32) buf[SAVE_BUF_SIZE];
} SaveBufAll;
extern CARDFileInfo curFileInfo;
extern SaveBufAll saveBuf;
extern u64 SLSerialNo;
extern s32 saveExecF;
extern u8 curBoxNo;
extern s16 curSlotNo;
s32 SLFileOpen(char *fileName);
s32 SLFileCreate(char *fileName, u32 size, void *addr);
@ -39,12 +44,12 @@ void SLSaveDataMake(s32 erase, OSTime *time);
void SLSaveDataInfoSet(OSTime *time);
void SLCommonSet(void);
void SLSaveBoard(void);
void SLSaveBoardBackup(void);
void SLSaveBoardStory(void);
s32 SLSave(void);
s32 SLLoad(void);
void SLLoadGameStat(void);
void SLLoadBoard(void);
void SLLoadBoardBackup(void);
void SLLoadBoardStory(void);
void SLSerialNoGet(void);
BOOL SLSerialNoCheck(void);
BOOL SLCheckSumCheck(void);

View file

@ -10,6 +10,7 @@
#include "game/audio.h"
#include "game/wipe.h"
#include "game/pad.h"
#include "game/armem.h"
#include "game/saveload.h"
#include "game/gamework.h"
#include "game/board/player.h"
@ -385,7 +386,7 @@ void fn_1_B78(void)
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]);
HuSprGrpPosSet(lbl_1_bss_3A[i], lbl_1_data_438[(i*2)], lbl_1_data_438[(i*2)+1]);
fn_1_3CAC(lbl_1_bss_3A[i], 9);
HuSprGrpScaleSet(lbl_1_bss_3A[i], 0.0f, 0.0f);
}
@ -687,7 +688,7 @@ void fn_1_2ADC(void)
temp_r27 = temp_r28-(i*20);
if(temp_r27 <= 20) {
if(temp_r27 <= 10) {
HuSprScaleSet(lbl_1_bss_52, i, 1.0f, sin(M_PI*(9.0f*temp_r27)/180.0));
HuSprScaleSet(lbl_1_bss_52, i, 1.0f, cos(M_PI*(9.0f*temp_r27)/180.0));
} else {
HuSprAttrSet(lbl_1_bss_52, i, 4);
HuSprAttrReset(lbl_1_data_380, i, 4);
@ -841,4 +842,459 @@ void fn_1_3E08(void)
}
}
}
}
s32 lbl_1_data_450[] = {
DATADIR_W01,
DATADIR_W02,
DATADIR_W03,
DATADIR_W04,
DATADIR_W05,
DATADIR_W06
};
void fn_1_3FD8(void)
{
s32 status;
u32 ardma;
if(!_CheckFlag(0x10000)) {
lbl_1_bss_178 = 1;
HuPrcEnd();
while(1) {
HuPrcVSleep();
}
}
status = HuDataDirReadAsync(DATADIR_BOARD);
if(status != -1) {
while(!HuDataGetAsyncStat(status)) {
HuPrcVSleep();
}
}
ardma = HuAR_MRAMtoARAM(DATADIR_BOARD);
if(ardma) {
while(HuARDMACheck()) {
HuPrcVSleep();
}
}
HuDataDirClose(DATADIR_BOARD);
status = HuDataDirReadAsync(lbl_1_data_450[GWSystem.board]);
if(status != -1) {
while(!HuDataGetAsyncStat(status)) {
HuPrcVSleep();
}
}
lbl_1_bss_178 = 1;
HuPrcEnd();
while(1) {
HuPrcVSleep();
}
}
void fn_1_40DC(void)
{
s16 i;
s16 sp8[5];
fn_1_423C(sp8);
sp8[lbl_1_bss_172] += sp8[4];
for(i=0; i<4; i++) {
GWCoinsAdd(i, sp8[i]);
GWPlayerCoinWinSet(i, 0);
GWPlayerCoinCollectSet(i, 0);
if(mgInfoTbl[GWSystem.mg_next].type != 4) {
GWPlayer[i].coins_mg += sp8[i];
if(GWPlayer[i].coins_mg > 9999) {
GWPlayer[i].coins_mg = 9999;
}
}
}
}
void fn_1_423C(s16 *data)
{
s16 i;
s32 coin;
u32 mul_coin;
u32 coin_battle;
s16 temp_r26;
s16 mgtype;
float sp10[4];
s16 sp8[4];
mgtype = mgInfoTbl[GWSystem.mg_next].type;
switch(mgtype) {
case 4:
temp_r26 = 0;
for(i=coin_battle=0; i<4; i++) {
coin_battle += GWPlayerCoinBattleGet(i);
}
sp8[0] = sp8[1] = sp8[2] = sp8[3] = 0;
for(i=0; i<4; i++) {
sp8[GWPlayerCoinWinGet(i)]++;
}
sp10[0] = sp10[1] = sp10[2] = sp10[3] = 0;
if(sp8[0] == 1 && sp8[1] == 1 && sp8[2] == 1) {
sp10[0] = 0.7f;
sp10[1] = 0.3f;
} else if(sp8[0] ==2) {
sp10[0] = 0.5f;
} else if(sp8[0] == 3) {
sp10[0] = 0.3333333f;
} else if(sp8[0] == 1 && sp8[1] == 2) {
sp10[0] = 0.6f;
sp10[1] = 0.2f;
} else if(sp8[0] == 1 && sp8[1] == 3) {
sp10[0] = 0.7f;
sp10[1] = 0.1f;
} else if(sp8[0] == 1 && sp8[1] == 1 && sp8[2] == 2) {
sp10[0] = 0.7f;
sp10[1] = 0.3f;
} else if(sp8[0] == 4) {
sp10[0] = 0.25f;
} else {
temp_r26 = 1;
}
for(i=coin=0; i<4; i++) {
if(!temp_r26) {
mul_coin = coin_battle*sp10[GWPlayerCoinWinGet(i)];
} else {
mul_coin = GWPlayerCoinBattleGet(i);
}
data[i] = mul_coin;
coin += mul_coin;
}
if(coin < coin_battle) {
data[4] = coin_battle-coin;
} else {
data[4] = 0;
}
break;
default:
for(i=0; i<4; i++) {
coin = GWPlayerCoinWinGet(i)+GWPlayerCoinCollectGet(i);
mul_coin = GWLuckyValueGet();
if(mul_coin == 0) {
mul_coin = 1;
}
coin *= mul_coin;
data[i] = coin;
}
break;
}
}
void fn_1_461C(void)
{
s16 sprite;
Hu3DAllKill();
HuSprClose();
HuSprInit();
espInit();
HuPrcVSleep();
sprite = espEntry(0x860020, 5000, 0);
espPosSet(sprite, 288.0, 240.0);
espAttrReset(sprite, 4);
Hu3DBGColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20);
while(WipeStatGet()) {
HuPrcVSleep();
}
if(GWSaveModeGet() == 2) {
GWSystem.save_mode = 1;
}
if(GWPartyGet() == 1) {
GWGameStat.party_continue = 1;
SLSaveBoard();
} else {
GWGameStat.story_continue = 1;
SLSaveBoardStory();
}
SLCommonSet();
if(SLSave()) {
saveExecF = 1;
} else {
GWSystem.save_mode = 1;
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while(WipeStatGet()) {
HuPrcVSleep();
}
}
s32 lbl_1_data_468[] = {
DATADIR_MARIOMDL1,
DATADIR_LUIGIMDL1,
DATADIR_PEACHMDL1,
DATADIR_YOSHIMDL1,
DATADIR_WARIOMDL1,
DATADIR_DONKEYMDL1,
DATADIR_DAISYMDL1,
DATADIR_WALUIGIMDL1
};
Vec lbl_1_data_488[] = {
{ 160, 185, 500 },
{ 240, 185, 500 },
{ 160, 355, 500 },
{ 240, 355, 500 },
};
void fn_1_47FC(void)
{
s16 temp_r31;
s16 temp_r24;
s16 temp_r21;
s16 temp_r20;
s16 temp_r19;
s16 temp_r18;
s16 temp_r17;
Vec sp40;
Vec sp34;
s16 sp2C[4];
s16 sp28[2];
s16 sp24[2];
s16 sp20[2];
s16 sp1C[2];
s16 sp18[2];
AnimData *sp14;
s32 sp10;
s16 spC;
s16 spA;
s16 sp8;
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10);
while(WipeStatGet()) {
HuPrcVSleep();
}
espAttrSet(lbl_1_bss_1A1A[0], 4);
espAttrSet(lbl_1_bss_1A1A[1], 4);
for(temp_r31=0; temp_r31<2; temp_r31++) {
Hu3DModelAttrSet(lbl_1_bss_1A9C[temp_r31+6], 1);
Hu3DModelAttrSet(lbl_1_bss_1A9C[temp_r31+10], 1);
}
for(temp_r31=0; temp_r31<4; temp_r31++) {
espAttrSet(lbl_1_bss_1A1A[temp_r31+6], 4);
}
for(temp_r31=4; temp_r31<8; temp_r31++) {
Hu3DModelAttrSet(lbl_1_bss_158[temp_r31], 1);
}
for(temp_r31=4; temp_r31<8; temp_r31++) {
HuSprGrpTPLvlSet(lbl_1_bss_CE[temp_r31], 0.0f);
}
for(temp_r31=0; temp_r31<4; temp_r31++) {
for(temp_r19=0; temp_r19<4; temp_r19++) {
Hu3DModelAttrSet(lbl_1_bss_5C[GWPlayerCfg[temp_r31].character][temp_r19], 1);
}
Hu3DModelAttrSet(lbl_1_bss_54[temp_r31], 1);
}
HuSprGrpKill(lbl_1_bss_9C);
HuSprGrpKill(lbl_1_bss_52);
if(lbl_1_data_380 != -1) {
HuSprGrpKill(lbl_1_data_380);
}
sp28[0] = sp28[1] = 0;
sp24[0] = sp24[1] = 0;
sp1C[0] = 0;
sp1C[1] = 2;
for(temp_r31=0; temp_r31<4; temp_r31++) {
temp_r17 = GWPlayer[temp_r31].team;
sp28[temp_r17] += BoardPlayerCoinsGet(temp_r31);
sp24[temp_r17] += GWStarsGet(temp_r31);
sp2C[sp1C[temp_r17]++] = GWPlayerCfg[temp_r31].character;
}
sp18[0] = 0;
sp18[1] = 1;
if(sp24[0] > sp24[1]) {
lbl_1_bss_8 = 0;
} else {
if(sp24[0] == sp24[1]) {
if(sp28[0] > sp28[1]) {
lbl_1_bss_8 =0;
} else if(sp28[0] == sp28[1]) {
sp18[0] = sp18[1] = 0;
lbl_1_bss_8 = 0;
} else {
lbl_1_bss_8 = 1;
}
} else {
lbl_1_bss_8 = 1;
}
}
HuSprAttrReset(lbl_1_bss_170, 0, 4);
HuSprAttrReset(lbl_1_bss_170, 1, 4);
HuSprPosSet(lbl_1_bss_170, 1, 0, -180);
HuSprAttrReset(lbl_1_bss_170, 2, 4);
HuSprAttrReset(lbl_1_bss_170, 3, 4);
if(lbl_1_bss_8 == 0) {
sp20[0] = -55;
sp20[1] = 115;
} else {
sp20[0] = 115;
sp20[1] = -55;
temp_r24 = sp2C[0];
sp2C[0] = sp2C[2];
sp2C[2] = temp_r24;
temp_r24 = sp2C[1];
sp2C[1] = sp2C[3];
sp2C[3] = temp_r24;
temp_r24 = sp28[0];
sp28[0] = sp28[1];
sp28[1] = temp_r24;
temp_r24 = sp24[0];
sp24[0] = sp24[1];
sp24[1] = temp_r24;
}
HuSprPosSet(lbl_1_bss_170, 2, 0, sp20[0]);
HuSprPosSet(lbl_1_bss_170, 3, 0, sp20[1]);
HuSprGrpPosSet(lbl_1_bss_170, 288, 240);
for(temp_r31=0; temp_r31<4; temp_r31++) {
if(temp_r31 < 2) {
sp10 = 0;
} else {
sp10 = 1;
}
temp_r18 = lbl_1_bss_5C[sp2C[temp_r31]][sp10];
Hu3DAnimCreate(lbl_1_bss_E4[sp2C[temp_r31]][0], temp_r18, "ys22");
Hu3DModelAttrReset(temp_r18, 1);
Hu3D2Dto3D(&lbl_1_data_488[temp_r31], 1, &sp40);
Hu3DModelPosSetV(temp_r18, &sp40);
Hu3DModelRotSet(temp_r18, 0, 0, 0);
sp34 = lbl_1_data_488[temp_r31];
sp34.y += 5.0f;
sp34.x += 3.0f;
sp34.z += 200.0f;
Hu3D2Dto3D(&sp34, 1, &sp40);
Hu3DModelPosSetV(lbl_1_bss_168[temp_r31], &sp40);
}
spC = HuSprGrpCreate(2);
for(temp_r31=0; temp_r31<2; temp_r31++) {
sp14 = HuSprAnimReadFile(0x6F0016+sp18[temp_r31]);
spA = HuSprCreate(sp14, temp_r31, 0);
HuSprGrpMemberSet(spC, temp_r31, spA);
HuSprPosSet(spC, temp_r31, (lbl_1_data_488[temp_r31*2].x)-80.0f, lbl_1_data_488[temp_r31*2].y);
sp34 = lbl_1_data_488[temp_r31*2];
sp34.x += 180.0f;
sp34.y -= 35.0f;
Hu3D2Dto3D(&sp34, 1, &sp40);
Hu3DModelPosSetV(lbl_1_bss_1A9C[temp_r31+4], &sp40);
sp34.y += 5.0f;
sp34.x += 3.0f;
sp34.z += 200.0f;
Hu3D2Dto3D(&sp34, 1, &sp40);
Hu3DModelPosSetV(lbl_1_bss_158[temp_r31*2], &sp40);
espPosSet(lbl_1_bss_1A1A[(temp_r31*2)+2], 230.0f+lbl_1_data_488[temp_r31*2].x, lbl_1_data_488[temp_r31*2].y-35.0f);
fn_1_3B50(lbl_1_bss_CE[temp_r31*2], sp24[temp_r31]);
HuSprGrpPosSet(lbl_1_bss_CE[temp_r31*2], 320.0f+lbl_1_data_488[temp_r31*2].x, lbl_1_data_488[temp_r31*2].y-35.0f);
sp34 = lbl_1_data_488[temp_r31*2];
sp34.x += 180.0f;
sp34.y += 35.0f;
Hu3D2Dto3D(&sp34, 1, &sp40);
Hu3DModelPosSetV(lbl_1_bss_1A9C[temp_r31+8], &sp40);
sp34.y += 5.0f;
sp34.x += 3.0f;
sp34.z += 200.0f;
Hu3D2Dto3D(&sp34, 1, &sp40);
Hu3DModelPosSetV(lbl_1_bss_158[(temp_r31*2)+1], &sp40);
espPosSet(lbl_1_bss_1A1A[(temp_r31*2)+3], 230.0f+lbl_1_data_488[temp_r31*2].x, 35.0f+lbl_1_data_488[temp_r31*2].y);
fn_1_3B50(lbl_1_bss_CE[(temp_r31*2)+1], sp28[temp_r31]);
HuSprGrpPosSet(lbl_1_bss_CE[(temp_r31*2)+1], 320.0f+lbl_1_data_488[temp_r31*2].x, 35.0f+lbl_1_data_488[temp_r31*2].y);
}
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
while(WipeStatGet()) {
HuPrcVSleep();
}
temp_r21 = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0);
HuWinMesSpeedSet(temp_r21, 0);
HuWinBGTPLvlSet(temp_r21, 0);
HuWinPriSet(temp_r21, 5);
HuWinAttrSet(temp_r21, 0x800);
HuWinMesSet(temp_r21, 0x240007);
HuPrcSleep(4);
temp_r31 = 0;
while(1) {
if(lbl_1_bss_4 && temp_r31 > 120) {
break;
}
for(temp_r20=sp8=0; temp_r20<4; temp_r20++) {
if(!GWPlayerCfg[temp_r20].iscom) {
sp8 |= HuPadBtnDown[GWPlayerCfg[temp_r20].pad_idx];
}
}
if(sp8 & PAD_BUTTON_A) {
HuAudFXPlay(28);
break;
}
HuPrcVSleep();
temp_r31++;
}
HuWinKill(temp_r21);
}
void fn_1_5880(omObjData *object)
{
Vec pos;
Vec offset;
Vec dir;
Vec y_offset;
f32 z_rot;
s8 stick_pos;
if(HuPadBtn[0] & PAD_BUTTON_UP) {
CRot.x += 2.0f;
}
if(HuPadBtn[0] & PAD_BUTTON_DOWN) {
CRot.x -= 2.0f;
}
if(HuPadBtn[0] & PAD_BUTTON_LEFT) {
CRot.y += 2.0f;
}
if(HuPadBtn[0] & PAD_BUTTON_RIGHT) {
CRot.y -= 2.0f;
}
if(HuPadBtnDown[0] & PAD_BUTTON_B) {
OSReport("CRot %f,%f,%f\n", CRot.x, CRot.y, CRot.z);
OSReport("Center %f,%f,%f\n", Center.x, Center.y, Center.z);
OSReport("CZoom %f\n", CZoom);
}
CZoom += HuPadTrigL[0] / 2;
CZoom -= HuPadTrigR[0] / 2;
pos.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
pos.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
pos.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
offset.x = Center.x - pos.x;
offset.y = Center.y - pos.y;
offset.z = Center.z - pos.z;
dir.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
dir.y = cos((M_PI * CRot.x) / 180.0);
dir.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
z_rot = CRot.z;
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0))
+ dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0))
+ dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0))
+ (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0))
+ dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0)));
PSVECCrossProduct(&dir, &offset, &offset);
PSVECNormalize(&offset, &offset);
stick_pos = (HuPadSubStkX[0] & 0xF8);
if (stick_pos != 0) {
Center.x += 0.05f * (offset.x * stick_pos);
Center.y += 0.05f * (offset.y * stick_pos);
Center.z += 0.05f * (offset.z * stick_pos);
}
PSVECNormalize(&y_offset, &offset);
stick_pos = -(HuPadSubStkY[0] & 0xF8);
if (stick_pos != 0) {
Center.x += 0.05f * (offset.x * stick_pos);
Center.y += 0.05f * (offset.y * stick_pos);
Center.z += 0.05f * (offset.z * stick_pos);
}
}

View file

@ -578,11 +578,11 @@ void SLCurSlotNoSet(void);
void SLSaveDataMake(void);
void SLCommonSet(void);
void SLSaveBoard(void);
void SLSaveBoardBackup(void);
void SLSaveBoardStory(void);
void SLSave(void);
void SLLoadGameStat(void);
void SLLoadBoard(void);
void SLLoadBoardBackup(void);
void SLLoadBoardStory(void);
void SLLoad(void);
void SLCurBoxNoSet(void);
void SLSaveFlagSet(void);
@ -1595,11 +1595,11 @@ extern void _kerjmp_SLCurSlotNoSet(void);
extern void _kerjmp_SLSaveDataMake(void);
extern void _kerjmp_SLCommonSet(void);
extern void _kerjmp_SLSaveBoard(void);
extern void _kerjmp_SLSaveBoardBackup(void);
extern void _kerjmp_SLSaveBoardStory(void);
extern void _kerjmp_SLSave(void);
extern void _kerjmp_SLLoadGameStat(void);
extern void _kerjmp_SLLoadBoard(void);
extern void _kerjmp_SLLoadBoardBackup(void);
extern void _kerjmp_SLLoadBoardStory(void);
extern void _kerjmp_SLLoad(void);
extern void _kerjmp_SLCurBoxNoSet(void);
extern void _kerjmp_SLSaveFlagSet(void);
@ -3195,16 +3195,16 @@ asm void _kerent(void) {
b SLCommonSet
entry _kerjmp_SLSaveBoard
b SLSaveBoard
entry _kerjmp_SLSaveBoardBackup
b SLSaveBoardBackup
entry _kerjmp_SLSaveBoardStory
b SLSaveBoardStory
entry _kerjmp_SLSave
b SLSave
entry _kerjmp_SLLoadGameStat
b SLLoadGameStat
entry _kerjmp_SLLoadBoard
b SLLoadBoard
entry _kerjmp_SLLoadBoardBackup
b SLLoadBoardBackup
entry _kerjmp_SLLoadBoardStory
b SLLoadBoardStory
entry _kerjmp_SLLoad
b SLLoad
entry _kerjmp_SLCurBoxNoSet

View file

@ -12,7 +12,7 @@
#include "stddef.h"
#define SAVE_GET_PLAYER(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, player)]
#define SAVE_GET_PLAYER_BACKUP(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, playerBackup)]
#define SAVE_GET_PLAYER_STORY(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, playerStory)]
static s16 SLCreateSaveWin(void);
static void SLKillSaveWin(void);
@ -319,12 +319,12 @@ void SLSaveBoard(void) {
}
}
void SLSaveBoardBackup(void) {
void SLSaveBoardStory(void) {
s16 i;
memcpy(&saveBuf.data.systemBackup, &GWSystem, sizeof(SystemState));
memcpy(&saveBuf.data.systemStory, &GWSystem, sizeof(SystemState));
for (i = 0; i < 4; i++) {
memcpy(SAVE_GET_PLAYER_BACKUP(i), &GWPlayer[i], sizeof(PlayerState));
memcpy(SAVE_GET_PLAYER_STORY(i), &GWPlayer[i], sizeof(PlayerState));
}
}
@ -470,12 +470,12 @@ void SLLoadBoard(void) {
}
}
void SLLoadBoardBackup(void) {
void SLLoadBoardStory(void) {
s16 i;
memcpy(&GWSystem, &saveBuf.data.systemBackup, 0xDC);
memcpy(&GWSystem, &saveBuf.data.systemStory, 0xDC);
for (i = 0; i < 4; i++) {
memcpy(&GWPlayer[i], SAVE_GET_PLAYER_BACKUP(i), sizeof(PlayerState));
memcpy(&GWPlayer[i], SAVE_GET_PLAYER_STORY(i), sizeof(PlayerState));
GWPlayerCfg[i].character = GWPlayer[i].character;
GWPlayerCfg[i].pad_idx = GWPlayer[i].port;
GWPlayerCfg[i].diff = GWPlayer[i].diff;