Merge pull request #418 from dbalatoni13/main

Finished mpexDll/mgname.c
This commit is contained in:
Liam Coleman 2024-09-15 20:57:45 -05:00 committed by GitHub
commit 3194ca3f9f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 381 additions and 1 deletions

View file

@ -1302,7 +1302,7 @@ config.libs = [
Object(Matching, "REL/mpexDll/main.c"),
Object(NonMatching, "REL/mpexDll/mpex.c"),
Object(NonMatching, "REL/mpexDll/charsel.c"),
Object(NonMatching, "REL/mpexDll/mgname.c"),
Object(Matching, "REL/mpexDll/mgname.c"),
},
),
Rel(

View file

@ -34,4 +34,6 @@ s32 fn_1_1B574(float, float, float, float);
s32 fn_1_1B64C(float, float, float, float);
s32 fn_1_1B7D0(s32 arg0);
extern u8 lbl_1_bss_6AC;
#endif

378
src/REL/mpexDll/mgname.c Normal file
View file

@ -0,0 +1,378 @@
#include "ext_math.h"
#include "game/armem.h"
#include "game/audio.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
#include "REL/mpexDll.h"
s32 lbl_1_data_788[0xC6] = {
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x140025,
0x140026,
0x140027,
0x140028,
0x140029,
0x14002A,
0x14002B,
0x14002C,
0x14002D,
0x14002E,
0x140025,
0x140025,
0x140025,
0x14002F,
0x140025,
0x140025,
0x140025,
0x140034,
0x140035,
0x140036,
0x140037,
0x140038,
0x140039,
0x14003A,
0x14003B,
0x14003C,
0x14003D,
0x14003E,
0x14003F,
0x140040,
0x140041,
0x140042,
0x140043,
0x140044,
0x140045,
0x140046,
0x140047,
0x140048,
0x140049,
0x14004A,
0x14004B,
0x14004C,
0x14004D,
0x140042,
0x140032,
0x140042,
0x140042,
0x140042,
0x140042,
0x14004E,
0x14004F,
0x140050,
0x140051,
0x140052,
0x140053,
0x140054,
0x140055,
0x140056,
0x140057,
0x140058,
0x140059,
0x14005A,
0x14005B,
0x14005C,
0x14005D,
0x14005E,
0x14005F,
0x140060,
0x140061,
0x140062,
0x140063,
0x140064,
0x140065,
0x140066,
0x140067,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x14002F,
0x140033,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140025,
0x140030,
0x140031,
0x140025,
0x140025,
};
s32 fn_1_1CB80(SeqWork *arg0, u8 *arg1, s16 arg2)
{
u8 *var_r31;
s16 var_r30;
s16 *var_r29;
s16 var_r28;
s32 *var_r27;
s16 var_r26;
s32 var_r25;
s16 var_r23;
s16 *var_r22;
AnimData **var_r21;
s16 var_r20;
s16 var_r19;
var_r27 = lbl_1_data_788;
for (var_r23 = 0; var_r23 < 0x10; var_r23++) {
if (arg0->spr_grp[var_r23] == -1) {
break;
}
}
if (var_r23 == 0x10) {
return -1;
}
var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190);
var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8);
var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8);
for (var_r31 = arg1, var_r30 = 0, var_r28 = 0; var_r31[0] != 0; var_r31++) {
if (var_r31[0] == 0x20 || var_r31[0] == 0x10) {
var_r30 += 0xE;
}
else if (var_r31[0] < 0x30 || var_r31[0] == 0x80 || var_r31[0] == 0x81) {
continue;
}
else {
if (var_r31[1] == 0x80) {
if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) {
var_r25 = var_r27[var_r31[0] + 0x6A];
}
else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) {
var_r25 = var_r27[var_r31[0] + 0x65];
}
else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) {
var_r25 = var_r27[var_r31[0] + 0x43];
}
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) {
var_r25 = var_r27[var_r31[0] + 0x3E];
}
}
else if (var_r31[1] == 0x81) {
if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) {
var_r25 = var_r27[var_r31[0] + 0x6A];
}
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) {
var_r25 = var_r27[var_r31[0] + 0x43];
}
}
else {
var_r25 = var_r27[var_r31[0]];
}
var_r21[var_r28] = HuSprAnimReadFile(var_r25);
var_r22[var_r28] = var_r30;
if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) {
var_r29[var_r28] = 2;
var_r30 += 0x12;
}
else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) {
var_r29[var_r28] = 0;
var_r30 += 0x12;
}
else if (var_r31[0] == 0x5C) {
var_r29[var_r28] = 0;
var_r30 += 8;
}
else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) {
var_r29[var_r28] = 4;
var_r30 += 0x18;
}
else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) {
var_r29[var_r28] = 4;
var_r30 += 0x18;
}
else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) {
var_r29[var_r28] = 0;
var_r30 += 0x14;
}
else {
var_r29[var_r28] = 0;
var_r30 += 0x1C;
}
var_r28++;
}
}
var_r20 = HuSprGrpCreate(var_r28);
arg0->spr_grp[var_r23] = var_r20;
arg0->alt_word_len = var_r30;
var_r30 = (var_r30 / 2) - 0xE;
for (var_r26 = 0; var_r26 < var_r28; var_r26++) {
var_r19 = HuSprCreate(var_r21[var_r26], 0, 0);
HuSprGrpMemberSet(var_r20, var_r26, var_r19);
HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]);
}
arg0->word_len = var_r28;
HuMemDirectFree(var_r21);
HuMemDirectFree(var_r22);
HuMemDirectFree(var_r29);
return var_r20;
}
s32 fn_1_1D02C(u32 arg0)
{
SeqWork sp10;
s16 spC[2];
u8 *var_r31;
s32 var_r30;
s16 var_r29;
u8 *var_r28;
s32 var_r27;
s32 var_r26;
s16 var_r25;
var_r25 = GWGameStat.language;
lbl_1_bss_6AC = var_r25;
for (var_r30 = 0; var_r30 < 0x10; var_r30++) {
sp10.sprite[var_r30] = sp10.spr_grp[var_r30] = -1;
}
var_r28 = MessData_MesPtrGet(messDataPtr, arg0);
var_r31 = var_r28;
var_r30 = 0;
var_r29 = 0;
while (TRUE) {
if (var_r31[0] == 0 || var_r31[0] == 0xA) {
if (var_r31[0] == 0) {
var_r30 = 1;
}
var_r31[0] = 0;
if (lbl_1_bss_6AC == 0) {
var_r27 = 1;
}
else {
var_r27 = 0;
}
var_r26 = fn_1_1CB80(&sp10, var_r28, var_r27);
HuSprGrpPosSet(sp10.spr_grp[var_r29], 288.0f, 240.0f);
spC[var_r29] = sp10.alt_word_len;
var_r29++;
if (var_r30 == 0) {
var_r28 = var_r31 + 1;
}
else {
break;
}
}
var_r31++;
}
return var_r26;
}