Diff for /np2/statsave.c between versions 1.32 and 1.35

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;

Removed from v.1.32  
changed lines
  Added in v.1.35


RetroPC.NET-CVS <cvs@retropc.net>