|
|
| version 1.32, 2004/01/25 05:41:28 | version 1.35, 2004/02/03 08:24:40 |
|---|---|
| Line 57 enum { | Line 57 enum { |
| #if defined(CGWND_FONTPTR) | #if defined(CGWND_FONTPTR) |
| STATFLAG_CGW, | STATFLAG_CGW, |
| #endif | #endif |
| STATFLAG_CLOCK, | |
| STATFLAG_COM, | STATFLAG_COM, |
| STATFLAG_DISK, | STATFLAG_DISK, |
| STATFLAG_DMA, | STATFLAG_DMA, |
| Line 549 static int flagload_common(STFLAGH sfh, | Line 548 static int flagload_common(STFLAGH sfh, |
| } | } |
| // ----- clock | |
| static int flagload_clock(STFLAGH sfh, const SFENTRY *tbl) { | |
| int ret; | |
| ret = statflag_read(sfh, tbl->arg1, tbl->arg2); | |
| sound_changeclock(); | |
| beep_changeclock(); | |
| return(ret); | |
| } | |
| // ---- memory | // ---- memory |
| static int flagsave_mem(STFLAGH sfh, const SFENTRY *tbl) { | static int flagsave_mem(STFLAGH sfh, const SFENTRY *tbl) { |
| Line 1002 static int flagsave_fm(STFLAGH sfh, cons | Line 988 static int flagsave_fm(STFLAGH sfh, cons |
| return(ret); | return(ret); |
| } | } |
| static void play_fmreg(BYTE num, UINT reg) { | |
| UINT chbase; | |
| UINT i; | |
| chbase = num * 3; | |
| for (i=0x30; i<0xa0; i++) { | |
| opngen_setreg((BYTE)chbase, (BYTE)i, opn.reg[reg + i]); | |
| } | |
| for (i=0xb7; i>=0xa0; i--) { | |
| opngen_setreg((BYTE)chbase, (BYTE)i, opn.reg[reg + i]); | |
| } | |
| for (i=0; i<3; i++) { | |
| opngen_keyon(chbase + i, opngen.keyreg[chbase + i]); | |
| } | |
| } | |
| static void play_psgreg(PSGGEN psg) { | |
| BYTE i; | |
| for (i=0; i<0x0e; i++) { | |
| psggen_setreg(psg, i, ((BYTE *)&psg->reg)[i]); | |
| } | |
| } | |
| static int flagload_fm(STFLAGH sfh, const SFENTRY *t) { | static int flagload_fm(STFLAGH sfh, const SFENTRY *t) { |
| int ret; | int ret; |
| UINT saveflg; | UINT saveflg; |
| OPNKEY opnkey; | OPNKEY opnkey; |
| UINT fmreg1a; | |
| UINT fmreg1b; | |
| UINT fmreg2a; | |
| UINT fmreg2b; | |
| opngen_reset(); | |
| psggen_reset(&psg1); | |
| psggen_reset(&psg2); | |
| psggen_reset(&psg3); | |
| rhythm_reset(&rhythm); | |
| adpcm_reset(&adpcm); | |
| pcm86_reset(); | |
| cs4231_reset(); | |
| ret = statflag_read(sfh, &usesound, sizeof(usesound)); | ret = statflag_read(sfh, &usesound, sizeof(usesound)); |
| fmboard_reset(usesound); | fmboard_reset(usesound); |
| fmreg1a = 0x000; | |
| fmreg1b = 0x100; | |
| fmreg2a = 0x200; | |
| fmreg2b = 0x300; | |
| switch(usesound) { | switch(usesound) { |
| case 0x01: | case 0x01: |
| saveflg = FLAG_MG; | saveflg = FLAG_MG; |
| Line 1071 static int flagload_fm(STFLAGH sfh, cons | Line 1014 static int flagload_fm(STFLAGH sfh, cons |
| case 0x06: | case 0x06: |
| saveflg = FLAG_FM1A | FLAG_FM1B | FLAG_FM2A | FLAG_PSG1 | | saveflg = FLAG_FM1A | FLAG_FM1B | FLAG_FM2A | FLAG_PSG1 | |
| FLAG_PSG2 | FLAG_RHYTHM | FLAG_PCM86; | FLAG_PSG2 | FLAG_RHYTHM | FLAG_PCM86; |
| fmreg1a = 0x200; // 逆転してるのん… | |
| fmreg1b = 0x000; | |
| fmreg2a = 0x100; | |
| break; | break; |
| case 0x08: | case 0x08: |
| Line 1140 static int flagload_fm(STFLAGH sfh, cons | Line 1080 static int flagload_fm(STFLAGH sfh, cons |
| cs4231.proc = cs4231dec[cs4231.reg.datafmt >> 4]; | cs4231.proc = cs4231dec[cs4231.reg.datafmt >> 4]; |
| } | } |
| // 復元。 | // 復元。 これ移動すること! |
| rhythm_update(&rhythm); | rhythm_update(&rhythm); |
| adpcm_update(&adpcm); | adpcm_update(&adpcm); |
| pcm86gen_update(); | pcm86gen_update(); |
| if (saveflg & FLAG_PCM86) { | if (saveflg & FLAG_PCM86) { |
| fmboard_extenable((BYTE)(pcm86.extfunc & 1)); | fmboard_extenable((REG8)(pcm86.extfunc & 1)); |
| } | } |
| if (saveflg & FLAG_CS4231) { | if (saveflg & FLAG_CS4231) { |
| fmboard_extenable((BYTE)(cs4231.extfunc & 1)); | fmboard_extenable((REG8)(cs4231.extfunc & 1)); |
| } | |
| if (saveflg & FLAG_FM1A) { | |
| play_fmreg(0, fmreg1a); | |
| } | |
| if (saveflg & FLAG_FM1B) { | |
| play_fmreg(1, fmreg1b); | |
| } | |
| if (saveflg & FLAG_FM2A) { | |
| play_fmreg(2, fmreg2a); | |
| } | |
| if (saveflg & FLAG_FM2B) { | |
| play_fmreg(3, fmreg2b); | |
| } | |
| if (saveflg & FLAG_PSG1) { | |
| play_psgreg(&psg1); | |
| } | |
| if (saveflg & FLAG_PSG2) { | |
| play_psgreg(&psg2); | |
| } | |
| if (saveflg & FLAG_PSG3) { | |
| play_psgreg(&psg3); | |
| } | } |
| (void)t; | (void)t; |
| return(ret); | return(ret); |
| Line 1298 static int flagload_disk(STFLAGH sfh, co | Line 1216 static int flagload_disk(STFLAGH sfh, co |
| fdd_set(i, st.path, FTYPE_NONE, st.readonly); | fdd_set(i, st.path, FTYPE_NONE, st.readonly); |
| } | } |
| } | } |
| sxsi_trash(); | |
| for (i=0x00; i<0x02; i++) { | for (i=0x00; i<0x02; i++) { |
| ret |= statflag_read(sfh, &st, sizeof(st)); | ret |= statflag_read(sfh, &st, sizeof(st)); |
| if (st.path[0]) { | if (st.path[0]) { |
| Line 1445 const SFENTRY *tblterm; | Line 1362 const SFENTRY *tblterm; |
| ret |= statflag_createsection(sffh, tbl); | ret |= statflag_createsection(sffh, tbl); |
| switch(tbl->type) { | switch(tbl->type) { |
| case STATFLAG_BIN: | case STATFLAG_BIN: |
| case STATFLAG_CLOCK: | |
| case STATFLAG_TERM: | case STATFLAG_TERM: |
| ret |= flagsave_common(&sffh->sfh, tbl); | ret |= flagsave_common(&sffh->sfh, tbl); |
| break; | break; |
| Line 1539 const SFENTRY *tblterm; | Line 1455 const SFENTRY *tblterm; |
| #if defined(CGWND_FONTPTR) | #if defined(CGWND_FONTPTR) |
| case STATFLAG_CGW: | case STATFLAG_CGW: |
| #endif | #endif |
| case STATFLAG_CLOCK: | |
| case STATFLAG_MEM: | case STATFLAG_MEM: |
| ret |= flagcheck_versize(&sffh->sfh, tbl); | ret |= flagcheck_versize(&sffh->sfh, tbl); |
| break; | break; |
| Line 1553 const SFENTRY *tblterm; | Line 1468 const SFENTRY *tblterm; |
| case STATFLAG_EGC: | case STATFLAG_EGC: |
| case STATFLAG_EPSON: | case STATFLAG_EPSON: |
| case STATFLAG_EVT: | case STATFLAG_EVT: |
| case STATFLAG_EXT: | |
| case STATFLAG_GIJ: | case STATFLAG_GIJ: |
| case STATFLAG_FM: | case STATFLAG_FM: |
| #if defined(SUPPORT_HOSTDRV) | #if defined(SUPPORT_HOSTDRV) |
| Line 1603 const SFENTRY *tblterm; | Line 1519 const SFENTRY *tblterm; |
| rs232c_midipanic(); | rs232c_midipanic(); |
| mpu98ii_midipanic(); | mpu98ii_midipanic(); |
| pc9861k_midipanic(); | pc9861k_midipanic(); |
| sxsi_trash(); | |
| ret |= flagload_common(&sffh->sfh, np2tbl); | ret |= flagload_common(&sffh->sfh, np2tbl); |
| nevent_init(); | nevent_init(); |
| Line 1621 const SFENTRY *tblterm; | Line 1538 const SFENTRY *tblterm; |
| cbuscore_reset(); | cbuscore_reset(); |
| fmboard_reset(pccore.sound); | fmboard_reset(pccore.sound); |
| done = FALSE; | done = FALSE; |
| while((!done) && (ret != STATFLAG_FAILURE)) { | while((!done) && (ret != STATFLAG_FAILURE)) { |
| ret |= statflag_readsection(sffh); | ret |= statflag_readsection(sffh); |
| Line 1649 const SFENTRY *tblterm; | Line 1565 const SFENTRY *tblterm; |
| break; | break; |
| #endif | #endif |
| case STATFLAG_CLOCK: | |
| ret |= flagload_clock(&sffh->sfh, tbl); | |
| break; | |
| case STATFLAG_COM: | case STATFLAG_COM: |
| ret |= flagload_com(&sffh->sfh, tbl); | ret |= flagload_com(&sffh->sfh, tbl); |
| break; | break; |