1 /*
2  * update 18 mar 2003
3  *  - fake test replaced by good test :) -> more FC14 found
4 */
5 /* testFC14() */
6 /* Rip_FC14() */
7 
8 
9 #include "globals.h"
10 #include "extern.h"
11 
testFC14(void)12 short testFC14 ( void )
13 {
14   PW_Start_Address = PW_i;
15 
16   /* file size < 193 */
17   if ( (PW_in_size - PW_Start_Address) < 193 )
18   {
19 /*printf ( "#1 (start:%ld) (size:%ld)\n" , PW_Start_Address , PW_in_size-PW_Start_Address);*/
20     return BAD;
21   }
22 
23   /* get 1st sample addy */
24   PW_m = (( in_data[PW_Start_Address+32]*256*256*256)+
25           ( in_data[PW_Start_Address+33]*256*256)+
26           ( in_data[PW_Start_Address+34]*256)+
27             in_data[PW_Start_Address+35] );
28 
29   /* test in-size again */
30   if ( PW_Start_Address+PW_m > PW_in_size )
31   {
32 /*printf ( "#2 (start:%ld) (1st smp addy:%ld)\n" , PW_Start_Address , PW_m);*/
33     return BAD;
34   }
35 
36   /* test various addresses  */
37   PW_j = (( in_data[PW_Start_Address+8] *256*256*256)+
38           ( in_data[PW_Start_Address+9] *256*256)+
39           ( in_data[PW_Start_Address+10]*256)+
40             in_data[PW_Start_Address+11] );
41 
42   PW_k = (( in_data[PW_Start_Address+16]*256*256*256)+
43           ( in_data[PW_Start_Address+17]*256*256)+
44           ( in_data[PW_Start_Address+18]*256)+
45             in_data[PW_Start_Address+19] );
46 
47   PW_l = (( in_data[PW_Start_Address+36]*256*256*256)+
48           ( in_data[PW_Start_Address+37]*256*256)+
49           ( in_data[PW_Start_Address+38]*256)+
50             in_data[PW_Start_Address+39] );
51 
52   /* test in-size again */
53   if ( (PW_j > PW_in_size) || (PW_k > PW_in_size) || (PW_l > PW_in_size) )
54   {
55 /*printf ( "#2 (start:%ld) (PW_j:%ld) (PW_k:%ld) (PW_l:%ld)\n"
56            , PW_Start_Address , PW_j, PW_k, PW_l);*/
57     return BAD;
58   }
59 
60   /* PW_l is 1st waveform addy */
61   return GOOD;
62 }
63 
64 
Rip_FC14(void)65 void Rip_FC14 ( void )
66 {
67   /* PW_l is already the 1st waveform addy */
68 
69   /* get Waveforms len */
70   PW_k = 0;
71   for ( PW_j=100 ; PW_j<180 ; PW_j++ )
72   {
73     PW_k += in_data[PW_Start_Address+PW_j];
74   }
75 
76   OutputSize = PW_l + (PW_k*2);
77 
78   CONVERT = BAD;
79   Save_Rip ( "Future Composer 1.4 module", FC14 );
80 
81   if ( Save_Status == GOOD )
82     PW_i += 4; /* after FC14 tag */
83 }
84 
85