|
|
| version 1.2, 2003/10/17 03:52:24 | version 1.9, 2003/10/20 13:54:27 |
|---|---|
| Line 43 typedef struct { | Line 43 typedef struct { |
| enum { | enum { |
| NP2FLAG_BIN = 0, | NP2FLAG_BIN = 0, |
| NP2FLAG_TERM, | NP2FLAG_TERM, |
| NP2FLAG_286, | NP2FLAG_CLOCK, |
| NP2FLAG_CORE, | |
| NP2FLAG_DMA, | NP2FLAG_DMA, |
| NP2FLAG_EGC, | NP2FLAG_EGC, |
| NP2FLAG_EXT, | NP2FLAG_EXT, |
| NP2FLAG_EVT, | NP2FLAG_EVT, |
| NP2FLAG_GIJ, | NP2FLAG_GIJ, |
| NP2FLAG_FM, | NP2FLAG_FM, |
| NP2FLAG_BEEP, | |
| NP2FLAG_MIDI, | NP2FLAG_MIDI, |
| NP2FLAG_DISK | NP2FLAG_DISK |
| }; | }; |
| Line 350 static int flagload_common(NP2FFILE *f, | Line 348 static int flagload_common(NP2FFILE *f, |
| // ----- | // ----- |
| static int flagsave_286(NP2FFILE *f, const STENTRY *t) { | static int flagload_clock(NP2FFILE *f, const STENTRY *t) { |
| int ret; | |
| ret = flagsave_create(f, t); | |
| if (ret != NP2FLAG_FAILURE) { | |
| ret |= flagsave_save(f, &i286r, sizeof(I286REGS)); | |
| ret |= flagsave_save(f, &i286s, sizeof(I286STAT)); | |
| ret |= flagsave_close(f); | |
| } | |
| return(ret); | |
| } | |
| static int flagload_286(NP2FFILE *f, const STENTRY *t) { | |
| int ret; | |
| ret = flagload_load(f, &i286r, sizeof(I286REGS)); | |
| ret |= flagload_load(f, &i286s, sizeof(I286STAT)); | |
| (void)t; | |
| return(ret); | |
| } | |
| // ----- | |
| static int flagload_core(NP2FFILE *f, const STENTRY *t) { | |
| int ret; | int ret; |
| ret = flagload_common(f, t); | ret = flagload_common(f, t); |
| if (opna_rate) { | sound_changeclock(); |
| pc.sampleclock = (pc.realclock / opna_rate) + 1; | beep_changeclock(); |
| } | |
| else { | |
| pc.sampleclock = 0; | |
| } | |
| return(ret); | return(ret); |
| } | } |
| Line 526 static int flagload_ext(NP2FFILE *f, con | Line 494 static int flagload_ext(NP2FFILE *f, con |
| // ----- | // ----- |
| typedef struct { | typedef struct { |
| SINT32 remainclock; | |
| SINT32 baseclock; | |
| UINT32 clock; | |
| UINT readyevents; | UINT readyevents; |
| UINT waitevents; | UINT waitevents; |
| } NEVTSAVE; | } NEVTSAVE; |
| Line 567 static int flagsave_evt(NP2FFILE *f, con | Line 532 static int flagsave_evt(NP2FFILE *f, con |
| int ret; | int ret; |
| UINT i; | UINT i; |
| nevt.remainclock = nevent.remainclock; | |
| nevt.baseclock = nevent.baseclock; | |
| nevt.clock = nevent.clock; | |
| nevt.readyevents = nevent.readyevents; | nevt.readyevents = nevent.readyevents; |
| nevt.waitevents = nevent.waitevents; | nevt.waitevents = nevent.waitevents; |
| Line 628 static int flagload_evt(NP2FFILE *f, con | Line 590 static int flagload_evt(NP2FFILE *f, con |
| ret = flagload_load(f, &nevt, sizeof(nevt)); | ret = flagload_load(f, &nevt, sizeof(nevt)); |
| nevent.remainclock = nevt.remainclock; | |
| nevent.baseclock = nevt.baseclock; | |
| nevent.clock = nevt.clock; | |
| nevent.readyevents = 0; | nevent.readyevents = 0; |
| nevent.waitevents = 0; | nevent.waitevents = 0; |
| Line 769 static int flagsave_fm(NP2FFILE *f, cons | Line 728 static int flagsave_fm(NP2FFILE *f, cons |
| if (saveflg & FLAG_FM1A) { | if (saveflg & FLAG_FM1A) { |
| ret |= flagsave_save(f, &fmtimer, sizeof(fmtimer)); | ret |= flagsave_save(f, &fmtimer, sizeof(fmtimer)); |
| ret |= flagsave_save(f, &opn, sizeof(opn)); | ret |= flagsave_save(f, &opn, sizeof(opn)); |
| CopyMemory(opnkey.keyreg, fm_keyreg, sizeof(fm_keyreg)); | CopyMemory(opnkey.keyreg, opngen.keyreg, sizeof(opngen.keyreg)); |
| opnkey.extop[0] = opnch[2].extop; | opnkey.extop[0] = opnch[2].extop; |
| opnkey.extop[1] = opnch[5].extop; | opnkey.extop[1] = opnch[5].extop; |
| opnkey.extop[2] = opnch[8].extop; | opnkey.extop[2] = opnch[8].extop; |
| Line 811 static void play_fmreg(BYTE num) { | Line 770 static void play_fmreg(BYTE num) { |
| opngen_setreg((BYTE)chbase, (BYTE)i, opn.reg[reg + i]); | opngen_setreg((BYTE)chbase, (BYTE)i, opn.reg[reg + i]); |
| } | } |
| for (i=0; i<3; i++) { | for (i=0; i<3; i++) { |
| opngen_keyon(chbase + i, fm_keyreg[chbase + i]); | opngen_keyon(chbase + i, opngen.keyreg[chbase + i]); |
| } | } |
| } | } |
| Line 894 static int flagload_fm(NP2FFILE *f, cons | Line 853 static int flagload_fm(NP2FFILE *f, cons |
| ret |= flagload_load(f, &fmtimer, sizeof(fmtimer)); | ret |= flagload_load(f, &fmtimer, sizeof(fmtimer)); |
| ret |= flagload_load(f, &opn, sizeof(opn)); | ret |= flagload_load(f, &opn, sizeof(opn)); |
| ret |= flagload_load(f, &opnkey, sizeof(opnkey)); | ret |= flagload_load(f, &opnkey, sizeof(opnkey)); |
| CopyMemory(fm_keyreg, &opnkey.keyreg, sizeof(fm_keyreg)); | CopyMemory(opngen.keyreg, &opnkey.keyreg, sizeof(opngen.keyreg)); |
| opnch[2].extop = opnkey.extop[0]; | opnch[2].extop = opnkey.extop[0]; |
| opnch[5].extop = opnkey.extop[1]; | opnch[5].extop = opnkey.extop[1]; |
| opnch[8].extop = opnkey.extop[2]; | opnch[8].extop = opnkey.extop[2]; |
| Line 1201 int statsave_save(const char *filename) | Line 1160 int statsave_save(const char *filename) |
| for (i=0; i<sizeof(np2tbl)/sizeof(STENTRY); i++) { | for (i=0; i<sizeof(np2tbl)/sizeof(STENTRY); i++) { |
| switch(np2tbl[i].type) { | switch(np2tbl[i].type) { |
| case NP2FLAG_BIN: | case NP2FLAG_BIN: |
| case NP2FLAG_CORE: | case NP2FLAG_CLOCK: |
| case NP2FLAG_BEEP: | |
| ret |= flagsave_common(&f, &np2tbl[i]); | ret |= flagsave_common(&f, &np2tbl[i]); |
| break; | break; |
| Line 1210 int statsave_save(const char *filename) | Line 1168 int statsave_save(const char *filename) |
| ret |= flagsave_term(&f, &np2tbl[i]); | ret |= flagsave_term(&f, &np2tbl[i]); |
| break; | break; |
| case NP2FLAG_286: | |
| ret |= flagsave_286(&f, &np2tbl[i]); | |
| break; | |
| case NP2FLAG_DMA: | case NP2FLAG_DMA: |
| ret |= flagsave_dma(&f, &np2tbl[i]); | ret |= flagsave_dma(&f, &np2tbl[i]); |
| break; | break; |
| Line 1289 int statsave_check(const char *filename, | Line 1243 int statsave_check(const char *filename, |
| if (i < (sizeof(np2tbl)/sizeof(STENTRY))) { | if (i < (sizeof(np2tbl)/sizeof(STENTRY))) { |
| switch(np2tbl[i].type) { | switch(np2tbl[i].type) { |
| case NP2FLAG_BIN: | case NP2FLAG_BIN: |
| case NP2FLAG_CLOCK: | |
| ret |= flagcheck_versize(&f, &np2tbl[i], &e); | ret |= flagcheck_versize(&f, &np2tbl[i], &e); |
| break; | break; |
| Line 1296 int statsave_check(const char *filename, | Line 1251 int statsave_check(const char *filename, |
| done = TRUE; | done = TRUE; |
| break; | break; |
| case NP2FLAG_286: | |
| case NP2FLAG_CORE: | |
| case NP2FLAG_DMA: | case NP2FLAG_DMA: |
| case NP2FLAG_EGC: | case NP2FLAG_EGC: |
| case NP2FLAG_EXT: | case NP2FLAG_EXT: |
| case NP2FLAG_EVT: | case NP2FLAG_EVT: |
| case NP2FLAG_GIJ: | case NP2FLAG_GIJ: |
| case NP2FLAG_BEEP: | |
| #if defined(MIDICH) | #if defined(MIDICH) |
| case NP2FLAG_MIDI: | case NP2FLAG_MIDI: |
| #endif | #endif |
| Line 1368 int statsave_load(const char *filename) | Line 1320 int statsave_load(const char *filename) |
| if (i < (sizeof(np2tbl)/sizeof(STENTRY))) { | if (i < (sizeof(np2tbl)/sizeof(STENTRY))) { |
| switch(np2tbl[i].type) { | switch(np2tbl[i].type) { |
| case NP2FLAG_BIN: | case NP2FLAG_BIN: |
| case NP2FLAG_BEEP: | |
| ret |= flagload_common(&f, &np2tbl[i]); | ret |= flagload_common(&f, &np2tbl[i]); |
| break; | break; |
| Line 1376 int statsave_load(const char *filename) | Line 1327 int statsave_load(const char *filename) |
| done = TRUE; | done = TRUE; |
| break; | break; |
| case NP2FLAG_286: | case NP2FLAG_CLOCK: |
| ret |= flagload_286(&f, &np2tbl[i]); | ret |= flagload_clock(&f, &np2tbl[i]); |
| break; | |
| case NP2FLAG_CORE: | |
| ret |= flagload_core(&f, &np2tbl[i]); | |
| break; | break; |
| case NP2FLAG_DMA: | case NP2FLAG_DMA: |