mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-10-04 21:08:04 +03:00
NACT: Factor out load/save functions
This commit is contained in:
+4
-164
@@ -545,96 +545,10 @@ void NACT_Sys2::cmd_l()
|
||||
|
||||
output_console("\nL %d:", index);
|
||||
|
||||
if(1 <= index && index <= 26) {
|
||||
if (1 <= index && index <= 26) {
|
||||
// ASLEEP_A.DAT - ASLEEP_Z.DAT
|
||||
char file_name[_MAX_PATH];
|
||||
snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1);
|
||||
|
||||
auto fio = FILEIO::open(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA);
|
||||
if (fio) {
|
||||
fio->seek(112, SEEK_SET);
|
||||
|
||||
int next_page = fio->getw() - 1;
|
||||
fio->getw();
|
||||
fio->getw(); // cg no?
|
||||
fio->getw();
|
||||
int next_music = fio->getw();
|
||||
fio->getw();
|
||||
int next_addr = fio->getw();
|
||||
fio->getw();
|
||||
for(int i = 0; i < 512; i++) {
|
||||
var[i] = fio->getw();
|
||||
}
|
||||
ags->menu_font_size = fio->getw();
|
||||
ags->text_font_size = fio->getw();
|
||||
ags->palette_bank = fio->getw();
|
||||
if(!ags->palette_bank) {
|
||||
ags->palette_bank = -1;
|
||||
}
|
||||
ags->text_font_color = fio->getw();
|
||||
ags->menu_font_color = fio->getw();
|
||||
ags->menu_frame_color = fio->getw();
|
||||
ags->menu_back_color = fio->getw();
|
||||
ags->text_frame_color = fio->getw();
|
||||
ags->text_back_color = fio->getw();
|
||||
for(int i = 0; i < 10; i++) {
|
||||
ags->menu_w[i].sx = fio->getw();
|
||||
ags->menu_w[i].sy = fio->getw();
|
||||
ags->menu_w[i].ex = fio->getw();
|
||||
ags->menu_w[i].ey = fio->getw();
|
||||
ags->menu_w[i].push = fio->getw() ? true : false;
|
||||
ags->menu_w[i].frame = fio->getw() ? true : false;
|
||||
fio->getw();
|
||||
fio->getw();
|
||||
|
||||
if(ags->menu_w[i].screen) {
|
||||
free(ags->menu_w[i].screen);
|
||||
}
|
||||
ags->menu_w[i].screen = NULL;
|
||||
if(ags->menu_w[i].window) {
|
||||
free(ags->menu_w[i].window);
|
||||
}
|
||||
ags->menu_w[i].window = NULL;
|
||||
}
|
||||
for(int i = 0; i < 10; i++) {
|
||||
ags->text_w[i].sx = fio->getw();
|
||||
ags->text_w[i].sy = fio->getw();
|
||||
ags->text_w[i].ex = fio->getw();
|
||||
ags->text_w[i].ey = fio->getw();
|
||||
ags->text_w[i].push = fio->getw() ? true : false;
|
||||
ags->text_w[i].frame = fio->getw() ? true : false;
|
||||
fio->getw();
|
||||
fio->getw();
|
||||
|
||||
if(ags->text_w[i].screen) {
|
||||
free(ags->text_w[i].screen);
|
||||
}
|
||||
ags->text_w[i].screen = NULL;
|
||||
if(ags->text_w[i].window) {
|
||||
free(ags->text_w[i].window);
|
||||
}
|
||||
ags->text_w[i].window = NULL;
|
||||
}
|
||||
for(int i = 0; i < 10; i++) {
|
||||
fio->read(tvar[i], 22);
|
||||
}
|
||||
for(int i = 0; i < 30; i++) {
|
||||
for(int j = 0; j < 10; j++) {
|
||||
fio->read(tvar_stack[i][j], 22);
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < 30; i++) {
|
||||
for(int j = 0; j < 20; j++) {
|
||||
var_stack[i][j] = fio->getw();
|
||||
}
|
||||
}
|
||||
fio.reset();
|
||||
|
||||
sco.page_jump(next_page, next_addr);
|
||||
|
||||
mako->play_music(next_music);
|
||||
if (load(index))
|
||||
RND = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -696,16 +610,6 @@ void NACT_Sys2::cmd_p()
|
||||
output_console("\nP %d:", param);
|
||||
}
|
||||
|
||||
#define FWRITE(data, size) { \
|
||||
memcpy(&buffer[p], data, size); \
|
||||
p += size; \
|
||||
}
|
||||
#define FPUTW(data) { \
|
||||
uint16 tmp = (data); \
|
||||
buffer[p++] = tmp & 0xff; \
|
||||
buffer[p++] = (tmp >> 8) & 0xff; \
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_q()
|
||||
{
|
||||
static char header[112] = {
|
||||
@@ -722,73 +626,9 @@ void NACT_Sys2::cmd_q()
|
||||
|
||||
output_console("\nQ %d:", index);
|
||||
|
||||
if(1 <= index && index <= 26) {
|
||||
if (1 <= index && index <= 26) {
|
||||
// ASLEEP_A.DAT - ASLEEP_Z.DAT
|
||||
char file_name[_MAX_PATH];
|
||||
snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1);
|
||||
|
||||
auto fio = FILEIO::open(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA);
|
||||
if (fio) {
|
||||
uint8 buffer[9510];
|
||||
int p = 0;
|
||||
|
||||
FWRITE(header, 112);
|
||||
FPUTW(sco.page() + 1);
|
||||
FPUTW(0);
|
||||
FPUTW(0); // cg no?
|
||||
FPUTW(0);
|
||||
FPUTW(mako->current_music);
|
||||
FPUTW(0);
|
||||
FPUTW(sco.current_addr());
|
||||
FPUTW(0);
|
||||
for(int i = 0; i < 512; i++) {
|
||||
FPUTW(var[i]);
|
||||
}
|
||||
FPUTW(ags->menu_font_size);
|
||||
FPUTW(ags->text_font_size);
|
||||
FPUTW(ags->palette_bank == -1 ? 0 : ags->palette_bank);
|
||||
FPUTW(ags->text_font_color);
|
||||
FPUTW(ags->menu_font_color);
|
||||
FPUTW(ags->menu_frame_color);
|
||||
FPUTW(ags->menu_back_color);
|
||||
FPUTW(ags->text_frame_color);
|
||||
FPUTW(ags->text_back_color);
|
||||
for(int i = 0; i < 10; i++) {
|
||||
FPUTW(ags->menu_w[i].sx);
|
||||
FPUTW(ags->menu_w[i].sy);
|
||||
FPUTW(ags->menu_w[i].ex);
|
||||
FPUTW(ags->menu_w[i].ey);
|
||||
FPUTW(ags->menu_w[i].push ? 1 : 0);
|
||||
FPUTW(ags->menu_w[i].frame ? 1 : 0);
|
||||
FPUTW(0);
|
||||
FPUTW(0);
|
||||
}
|
||||
for(int i = 0; i < 10; i++) {
|
||||
FPUTW(ags->text_w[i].sx);
|
||||
FPUTW(ags->text_w[i].sy);
|
||||
FPUTW(ags->text_w[i].ex);
|
||||
FPUTW(ags->text_w[i].ey);
|
||||
FPUTW(ags->text_w[i].push ? 1 : 0);
|
||||
FPUTW(ags->text_w[i].frame ? 1 : 0);
|
||||
FPUTW(0);
|
||||
FPUTW(0);
|
||||
}
|
||||
for(int i = 0; i < 10; i++) {
|
||||
FWRITE(tvar[i], 22);
|
||||
}
|
||||
for(int i = 0; i < 30; i++) {
|
||||
for(int j = 0; j < 10; j++) {
|
||||
FWRITE(tvar_stack[i][j], 22);
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < 30; i++) {
|
||||
for(int j = 0; j < 20; j++) {
|
||||
FPUTW(var_stack[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
fio->write(buffer, 9510);
|
||||
}
|
||||
save(index, header);
|
||||
RND = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user