Implement LXX 5 command

Used in Child Assassin.
This commit is contained in:
kichikuou
2023-01-14 16:13:57 +09:00
parent 9600e34229
commit 586a9c855e
3 changed files with 62 additions and 20 deletions
+2
View File
@@ -773,6 +773,8 @@ void exec_command(void) {
commandLXR(); break;
case 'W':
commandLXW(); break;
case 'X':
commandLXX(); break;
default:
undeferr();
}
+1 -1
View File
@@ -135,7 +135,7 @@ extern void commandLXS();
extern void commandLXP();
extern void commandLXR();
extern void commandLXW();
extern void commandLXX();
/* defined by cmdm.c */
extern void commandMA();
+59 -19
View File
@@ -72,13 +72,13 @@ void commandLT() {
struct stat buf;
struct tm *lc;
if (num <= 0) {
*var = 0;
*(var + 1) = 0;
*(var + 2) = 0;
*(var + 3) = 0;
*(var + 4) = 0;
*(var + 5) = 0;
if (num <= 0 || num > SAVE_MAXNUMBER) {
var[0] = 0;
var[1] = 0;
var[2] = 0;
var[3] = 0;
var[4] = 0;
var[5] = 0;
sysVar[0] = 255;
return;
}
@@ -86,21 +86,21 @@ void commandLT() {
status = stat(save_get_file(num - 1), &buf);
if (status) {
/* んなんどこにもかいてないやん! */
*var = 0;
*(var + 1) = 0;
*(var + 2) = 0;
*(var + 3) = 0;
*(var + 4) = 0;
*(var + 5) = 0;
var[0] = 0;
var[1] = 0;
var[2] = 0;
var[3] = 0;
var[4] = 0;
var[5] = 0;
sysVar[0] = 255;
} else {
lc = localtime(&buf.st_mtime);
*var = 1900 + lc->tm_year;
*(var + 1) = 1 + lc->tm_mon;
*(var + 2) = lc->tm_mday;
*(var + 3) = lc->tm_hour;
*(var + 4) = lc->tm_min;
*(var + 5) = lc->tm_sec;
var[0] = lc->tm_year + 1900;
var[1] = lc->tm_mon + 1;
var[2] = lc->tm_mday;
var[3] = lc->tm_hour;
var[4] = lc->tm_min;
var[5] = lc->tm_sec;
sysVar[0] = 0;
}
DEBUG_COMMAND("LT %d,%p",num, var);
@@ -336,3 +336,43 @@ void commandLXW() {
DEBUG_COMMAND_YET("LXW %d,%d,%d:",num,*var,size);
}
void commandLXX() {
/* Gets file timestamp to [var, var+6] */
int type = getCaliValue();
int num = getCaliValue();
int *var = getCaliVariable();
struct stat buf;
struct tm *lc;
switch (type) {
case 5: // save data
if (num <= 0 || num > SAVE_MAXNUMBER || stat(save_get_file(num - 1), &buf)) {
sysVar[0] = 255;
break;
}
lc = localtime(&buf.st_mtime);
var[0] = lc->tm_year + 1900;
var[1] = lc->tm_mon + 1;
var[2] = lc->tm_mday;
var[3] = lc->tm_hour;
var[4] = lc->tm_min;
var[5] = lc->tm_sec;
var[6] = lc->tm_wday;
sysVar[0] = 0;
break;
case 0: // scenario
case 1: // CG
case 2: // wave
case 3: // MIDI
case 4: // data
case 6: // resource
default:
DEBUG_COMMAND_YET("LXX %d,%d,%d:", type, num, *var);
return;
}
DEBUG_COMMAND("LXX %d,%d,%d:", type, num, *var);
}