Skip to content

Commit 190ff8e

Browse files
committed
menu/p3mc: match functions
- _P3MC_ASC2SJIS - _P3MC_SetBrowsInfo
1 parent ff71b03 commit 190ff8e

File tree

4 files changed

+132
-23
lines changed

4 files changed

+132
-23
lines changed

config/p3.jul12.symbol_addrs.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,6 +1593,10 @@ _P3MC_dataCheckFunc = 0x0013ac78; // type:func
15931593
_P3MC_CheckUserData = 0x0013ac80; // type:func
15941594
_P3MC_CheckUserDataHead = 0x0013acc0; // type:func
15951595

1596+
sjisASCII0 = 0x0018dd90;
1597+
sjisASCII1 = 0x0018ddd8;
1598+
sjisASCII2 = 0x0018dde8;
1599+
15961600
D_00396190 = 0x00396190; // type:asciz
15971601

15981602
HedderID = 0x00399830; // size:0x4

configure.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ def write_permuter_settings():
184184
EUCJP_FILES = {
185185
Path("src/main/wipe.c"),
186186
Path("src/menu/menudata.c"),
187+
Path("src/menu/p3mc.c"),
187188
Path("src/menu/pksprite.c"),
188189
}
189190

src/main/subt.c

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,12 @@ static void euc2sjis(unsigned char *c1, unsigned char *c2) {
9090
}
9191

9292
void SubtMsgPrint(u_char* msg_pp, int xp, int yp, int jap_flag, int mline) {
93-
u_char* tmp_pp;
94-
int line_num;
95-
int i, j, k;
96-
int hsize;
97-
int cnt_all;
98-
u_char dat0, dat1;
99-
int posx, posy;
100-
93+
u_char *tmp_pp;
94+
int line_num;
95+
int i, j, k;
96+
int hsize;
97+
int cnt_all;
98+
10199
cnt_all = 0;
102100
SubtMcodeSet(jap_flag);
103101

@@ -108,22 +106,22 @@ void SubtMsgPrint(u_char* msg_pp, int xp, int yp, int jap_flag, int mline) {
108106
WorkClear(&subt_code, sizeof(subt_code));
109107

110108
line_num = 0;
111-
hsize = 13;
112-
tmp_pp = msg_pp;
109+
hsize = 13;
110+
tmp_pp = msg_pp;
113111

114112
while (1) {
115113
if (hsize == 13) {
116114
hsize = 13;
117115
}
118-
116+
119117
if (*tmp_pp == '\0') {
120118
line_num++;
121119
break;
122120
}
123121

124122
if (jap_flag) {
125-
dat0 = tmp_pp[0];
126-
dat1 = tmp_pp[1];
123+
u_char dat0 = tmp_pp[0];
124+
u_char dat1 = tmp_pp[1];
127125

128126
if (dat0 == '@') {
129127
line_num++;
@@ -156,18 +154,17 @@ void SubtMsgPrint(u_char* msg_pp, int xp, int yp, int jap_flag, int mline) {
156154
tmp_pp++;
157155
}
158156

159-
160157
if (mline != 0 && mline < line_num) {
161158
line_num = mline;
162159
}
163160

164161
for (i = 0, k = 0; i < line_num; i++) {
165-
posx = xp - (subt_code[i].wsize / 2);
166-
posy = yp + (hsize * i);
162+
int posx = xp - (subt_code[i].wsize / 2);
163+
int posy = yp + (hsize * i);
167164

168165
for (j = 0; j < subt_code[i].cnt; j++) {
169166
MCODE_DAT *mcode_pp = mcode_dat_pp[k++];
170-
167+
171168
sceGifPkAddGsAD(&subtPkSpr, SCE_GS_PRIM, SCE_GS_SET_PRIM(SCE_GS_PRIM_SPRITE, 0, 1, 0, 1, 0, 1, 0, 0));
172169

173170
sceGifPkAddGsAD(&subtPkSpr, SCE_GS_UV,
@@ -283,7 +280,7 @@ u_char* SubtMsgDataPos(u_char *msg_pp, int jap_flag, int pos) {
283280
}
284281

285282
tmp_pp = msg_pp;
286-
283+
287284
while (1) {
288285
if (ret == pos) {
289286
return tmp_pp;
@@ -350,17 +347,17 @@ void SubtCtrlPrintBoxyWipe(JIMAKU_STR *jstr_pp, int line, int time, int lang, vo
350347
if ((time >= jstr_tmp_pp->jimaku_dat_pp[i].starTime) &&
351348
(time < jstr_tmp_pp->jimaku_dat_pp[i].endTime)) {
352349
SubtInit();
353-
350+
354351
kanjiset_tmp_pp = SubtKanjiSet(code_pp);
355352

356353
lang_f = (lang == LANG_JAPANESE);
357354
if (lang_f) {
358355
lang_f = 2;
359356
}
360-
357+
361358
SubtClear();
362359
SubtMsgPrint(jstr_tmp_pp->jimaku_dat_pp[i].txtData[lang], 2048, 2122, lang_f, 0);
363-
360+
364361
SubtFlash();
365362
SubtKanjiSet(kanjiset_tmp_pp);
366363
return;

src/menu/p3mc.c

Lines changed: 109 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "main/cdctrl.h"
44

55
#include "menu/memc.h"
6+
#include "menu/menudata.h"
67
#include "menu/menufont.h"
78

89
#include <libcdvd.h>
@@ -194,14 +195,120 @@ static void _P3MC_EUC2SJIS(char *des, char *src) {
194195
*des = '\0';
195196
}
196197

197-
INCLUDE_ASM("asm/nonmatchings/menu/p3mc", _P3MC_ASC2SJIS);
198+
static void _P3MC_ASC2SJIS(char *des, char *src) {
199+
/* static */ extern char sjisASCII0[65]; // = "!”#$%&’()*+,−./0123456789:;<=>?@";
200+
/* static */ extern char sjisASCII1[13]; // = "[¥]^_’";
201+
/* static */ extern char sjisASCII2[11]; // = "{|}〜 ";
202+
203+
char *des0;
204+
u_char c;
205+
int n;
206+
207+
des0 = des;
208+
209+
for (; (c = *src) != '\0'; src++, des += 2) {
210+
if (c <= ' ') {
211+
n = 0xa1a1; /* Space */
212+
} else if (c <= '@') {
213+
c = (c - '!');
214+
n = ((u_short*)sjisASCII0)[c];
215+
} else if (c <= 'Z') {
216+
c = (c - 'A');
217+
n = (c << 8) + 0xc1a3 /* A */;
218+
} else if (c <= '`') {
219+
c = (c - '[');
220+
n = ((u_short*)sjisASCII1)[c];
221+
} else if (c <= 'z') {
222+
c = (c - 'a');
223+
n = (c << 8) + 0xe1a3 /* a */;
224+
} else if (c <= '~') {
225+
c = (c - '{');
226+
n = ((u_short*)sjisASCII2)[c];
227+
} else {
228+
n = 0xa1a1; /* Space */
229+
}
230+
231+
*(u_short*)des = n;
232+
}
233+
234+
*des = '\0';
235+
_P3MC_EUC2SJIS(des0, des0);
236+
}
198237

199238
static void _P3MC_UserName_ASC2SJIS(char *des, char *src) {
200239
MenuFont_ASC2EUC(des, src);
201240
_P3MC_EUC2SJIS(des, des);
202241
}
203242

204-
INCLUDE_ASM("asm/nonmatchings/menu/p3mc", _P3MC_SetBrowsInfo);
243+
static void _P3MC_SetBrowsInfo(int mode, int fileNo, char *name, int stageNo, int roundNo, int isVs, int ParaCol) {
244+
char tname[256];
245+
int s;
246+
char tmps[30];
247+
int r;
248+
int size;
249+
void *ptr;
250+
int iconNo;
251+
252+
if (name == NULL) {
253+
return;
254+
}
255+
256+
_P3MC_EUC2SJIS(tname, "PARAPPA2");
257+
258+
if (mode == 1) {
259+
sprintf(tmps, "/SYS-%02d", fileNo + 1);
260+
} else {
261+
sprintf(tmps, "/REP-%02d", fileNo + 1);
262+
}
263+
264+
s = strlen(tname);
265+
_P3MC_ASC2SJIS(tname + s, tmps);
266+
s = strlen(tname);
267+
268+
switch (mode) {
269+
case 2:
270+
if (!isVs) {
271+
sprintf(tmps, "%s-ST%1d", name, stageNo);
272+
} else {
273+
sprintf(tmps, "%s-VS_ST%1d", name, stageNo);
274+
}
275+
break;
276+
277+
default:
278+
case 1:
279+
if (roundNo == 0) {
280+
sprintf(tmps, "%s(ST%1d)", name, stageNo);
281+
} else {
282+
r = roundNo + 1;
283+
if (r > 99) r = 99;
284+
sprintf(tmps, "%s(C%2d)", name, r);
285+
}
286+
break;
287+
}
288+
289+
_P3MC_UserName_ASC2SJIS(tname + s, tmps);
290+
291+
memc_setSaveTitle(tname, s);
292+
293+
if (mode == 1) {
294+
iconNo = ParaCol + 1;
295+
296+
if (iconNo > 4) {
297+
iconNo = 4;
298+
}
299+
300+
ptr = MenuDataGetIconSysHed(0, iconNo, &size);
301+
} else {
302+
iconNo = stageNo;
303+
ptr = MenuDataGetIconSysHed(1, iconNo, &size);
304+
}
305+
306+
memc_setIconSysHed(ptr, size);
307+
308+
memc_setSaveIcon(0, P3MC_GetIconPtr(mode, iconNo), P3MC_GetIconSize(mode));
309+
memc_setSaveIcon(1, NULL, 0);
310+
memc_setSaveIcon(2, NULL, 0);
311+
}
205312

206313
INCLUDE_ASM("asm/nonmatchings/menu/p3mc", _P3MC_mainfile_chk);
207314

0 commit comments

Comments
 (0)