From a14d12b147e02d0c30c94b88fcb89709701c6875 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Fri, 9 Aug 2024 20:29:31 -0500 Subject: [PATCH] Do mgmodedll/record.c --- configure.py | 2 +- src/REL/mgmodedll/record.c | 222 +++++++++++++++++++++++++++++++++++++ 2 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 src/REL/mgmodedll/record.c diff --git a/configure.py b/configure.py index 7a3274bc..367f53bb 100644 --- a/configure.py +++ b/configure.py @@ -1333,7 +1333,7 @@ config.libs = [ Object(Matching, "REL/executor.c"), Object(Matching, "REL/mgmodedll/mgmode.c"), Object(Matching, "REL/mgmodedll/free_play.c"), - Object(NonMatching, "REL/mgmodedll/record.c"), + Object(Matching, "REL/mgmodedll/record.c"), Object(NonMatching, "REL/mgmodedll/battle.c"), Object(NonMatching, "REL/mgmodedll/tictactoe.c"), Object(NonMatching, "REL/mgmodedll/main.c"), diff --git a/src/REL/mgmodedll/record.c b/src/REL/mgmodedll/record.c new file mode 100644 index 00000000..974cc66e --- /dev/null +++ b/src/REL/mgmodedll/record.c @@ -0,0 +1,222 @@ +#include "REL/mgmodedll.h" +#include "game/gamework.h" + +#include "game/audio.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/saveload.h" +#include "game/wipe.h" + +#include "ext_math.h" + +void fn_1_DE3C(void); +void fn_1_DFB8(void); +void fn_1_E02C(float x, float y, s16 recordNo); + +s16 lbl_1_bss_37C[6]; +s16 lbl_1_bss_370[6]; + +s16 lbl_1_data_120[6][3] = { + 0, 2, 13, + 1, 0, 15, + 2, 1, 35, + 3, 2, 40, + 5, 1, 51, + 10, 1, 62 +}; + +void fn_1_D8D0(void) +{ + s16 i; + float weight; + fn_1_DE3C(); + espAttrReset(lbl_1_bss_2C2C[3], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[3], 0); + for(i=0; i<=20; i++) { + espTPLvlSet(lbl_1_bss_2C2C[3], i/20.0); + HuPrcVSleep(); + } + for(i=0; i<=20; i++) { + weight = i/20.0; + espAttrReset(lbl_1_bss_2C2C[27], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[27], 288, -100.0+(164.0*sind(weight*90.0f))); + espAttrReset(lbl_1_bss_2C2C[28], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[28], weight); + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], ((1-sind(weight*90.0f))*400)+288, 424); + HuPrcVSleep(); + } + for(i=0; i<6; i++) { + fn_1_E02C(288, (i*42)+150.0f, i); + HuPrcVSleep(); + } + while(1) { + if(HuPadBtnDown[0] & PAD_BUTTON_B) { + break; + } + HuPrcVSleep(); + } + HuAudFXPlay(3); + for(i=0; i<6; i++) { + fn_1_E02C(1288, 0, i); + HuPrcVSleep(); + } + fn_1_DFB8(); + for(i=0; i<=20; i++) { + weight = i/20.0; + espAttrReset(lbl_1_bss_2C2C[27], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[27], 288, -100.0+(164.0*cosd(weight*90.0f))); + espAttrReset(lbl_1_bss_2C2C[28], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[28], 1.0-weight); + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], ((1-cosd(weight*90.0f))*400)+288, 424); + HuPrcVSleep(); + } + for(i=0; i<=10; i++) { + espTPLvlSet(lbl_1_bss_2C2C[3], 1-(i/10.0)); + HuPrcVSleep(); + } +} + +void fn_1_DE3C(void) +{ + AnimData *numAnim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 53), MEMORY_DEFAULT_NUM)); + s16 i; + for(i=0; i<6; i++) { + s16 window = HuWinCreate(0, (i*24), 268, 32, 0); + s16 j; + lbl_1_bss_37C[i] = window; + HuWinBGTPLvlSet(window, 0); + HuWinMesSpeedSet(window, 0); + HuWinDispOff(window); + lbl_1_bss_370[i] = HuSprGrpCreate(8); + for(j=0; j<8; j++) { + s16 sprite = HuSprCreate(numAnim, 10, 0); + HuSprGrpMemberSet(lbl_1_bss_370[i], j, sprite); + (void)sprite; + HuSprAttrSet(lbl_1_bss_370[i], j, HUSPR_ATTR_DISPOFF); + } + } +} + +void fn_1_DFB8(void) +{ + s16 i; + for(i=0; i<6; i++) { + HuWinKill(lbl_1_bss_37C[i]); + HuSprGrpKill(lbl_1_bss_370[i]); + } +} + +void fn_1_E02C(float x, float y, s16 recordNo) +{ + s32 sprGrpId = lbl_1_bss_370[recordNo]; + s32 value = GWMGRecordGet(lbl_1_data_120[recordNo][0]); + s32 i; + s16 mgNo; + float xOfs; + + if(lbl_1_data_120[recordNo][2] != -1) { + mgNo = omMgIndexGet(lbl_1_data_120[recordNo][2]); + if(!GWMGAvailGet(mgNo+401)) { + mgNo = -1; + } else { + HuWinMesSet(lbl_1_bss_37C[recordNo], mgInfoTbl[mgNo].name_mess); + } + } else { + mgNo = -1; + } + HuWinDispOn(lbl_1_bss_37C[recordNo]); + HuWinPosSet(lbl_1_bss_37C[recordNo], x-220, y-24); + if(mgNo == -1) { + HuWinMesSet(lbl_1_bss_37C[recordNo], MAKE_MESSID(35, 0)); + for(i=0; i<8; i++) { + HuSprBankSet(sprGrpId, i, 0); + HuSprPosSet(sprGrpId, i, i*16, 0); + HuSprAttrReset(sprGrpId, i, HUSPR_ATTR_DISPOFF); + } + xOfs = 128; + } else { + s32 memberNum; + s32 digitValue; + if(lbl_1_data_120[recordNo][1] == 0) { + memberNum = 0; + if(value > 9999) { + value = 9999; + } + digitValue = value/1000; + if(digitValue != 0) { + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue*1000; + memberNum++; + } + digitValue = value/100; + if(digitValue != 0 || memberNum != 0) { + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue*100; + memberNum++; + } + digitValue = value/10; + if(digitValue != 0 || memberNum != 0) { + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue*10; + memberNum++; + } + HuSprBankSet(sprGrpId, memberNum, value); + memberNum++; + for(i=0; i<8; i++) { + HuSprAttrSet(sprGrpId, i, HUSPR_ATTR_DISPOFF); + } + for(i=0; i