Gugen展示版

Fork of MagneWave by kouzi osaki

Revision:
9:486d9fde3e64
Parent:
8:34dc92a836a3
Child:
10:8b31cb1e385b
--- a/MagneWave.cpp	Sat Nov 09 13:39:43 2013 +0000
+++ b/MagneWave.cpp	Sat Nov 16 05:27:07 2013 +0000
@@ -1,9 +1,7 @@
 #include "MagneWave.h"
 
-
 #define DATA_OFFSET 44
 #define DAC16_CENTER  32768
-#define NEW_CODE
 
 MagneWave::MagneWave( SoftMCP4922 *dac )
 {
@@ -21,48 +19,30 @@
 
 void MagneWave::play( FILE *wavefile )
 {
-    printf("seek\n");
     // jump to wave data
     fseek( wavefile, DATA_OFFSET, SEEK_SET );
     
-    printf("1\n");
     m_dacOn = true;
-    printf("2\n");
     m_fileEnd = false;
     
-    printf("loop\n");
     while( m_dacOn ){
-        if( m_rptr != ( m_wptr + 1 ) & 0x7f ){
-#ifdef NEW_CODE
-            int tmpL = 0;
-            int tmpH = 0;
-            long dacVal16 = 0;
-            tmpL = fgetc( wavefile );
-            if( tmpL == EOF ){
-                printf("eofL\n.");
+        if( m_rptr != ( ( m_wptr + 1 ) & 0x7f ) ){
+
+            short dacVal16 = 0;
+            unsigned char tmp[2];
+
+            int ret = fread( tmp, 1, 2, wavefile);
+            if( ret < 2 ){
+                printf("eof\n.");
                 m_fileEnd = true;
                 break;
             }
-            tmpH = fgetc( wavefile );
-            if( tmpH == EOF ){
-                printf("eofH\n.");
-                m_fileEnd = true;
-                break;
-            }
-            dacVal16 = tmpL;
-            dacVal16 |= ( tmpH << 8 );
+            dacVal16 = tmp[0];
+            dacVal16 |= ( tmp[1] << 8 );
             dacVal16 += DAC16_CENTER;
+            
             m_fifo[m_wptr]= ( unsigned short )dacVal16;
-#else
-            size_t readSize = fread( (char *)m_fifo[m_wptr], 2, 1, wavefile); 
-            if( readSize < 1 ){
-                m_fileEnd = true;
-                break;
-            }
-#endif
             m_wptr = ( m_wptr + 1 ) & 0x7f;
-        }else{
-            printf("full\n");
         }
     }
     printf("off\n");
@@ -72,16 +52,7 @@
 {
     if ( m_dacOn ) {
         if( m_rptr != m_wptr ){
-#ifdef NEW_CODE
             m_wave_DAC->write_u16( m_fifo[ m_rptr ] );
-#else
-            unsigned short tmpL = ( m_fifo[ m_rptr ] >> 8) & 0x00ff;
-            unsigned short tmpH = ( m_fifo[ m_rptr ] << 8) & 0xff00;
-            short dacVal16 = tmpH | tmpL;
-            
-            dacVal16 += DAC16_CENTER;
-            m_wave_DAC->write_u16( dacVal16 );
-#endif
             m_rptr = ( m_rptr + 1 ) & 0x7f;
         }else{
             //printf("nohit r=%d,w=%d\n", m_rptr, m_wptr);