diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/formats/orao_cas.cpp | 27 | ||||
-rw-r--r-- | src/mame/drivers/orao.cpp | 4 |
2 files changed, 19 insertions, 12 deletions
diff --git a/src/lib/formats/orao_cas.cpp b/src/lib/formats/orao_cas.cpp index a9c3f7473d4..a6930e18d1f 100644 --- a/src/lib/formats/orao_cas.cpp +++ b/src/lib/formats/orao_cas.cpp @@ -11,16 +11,18 @@ #define ORAO_WAV_FREQUENCY 44100 -#define WAVE_HIGH -32768 -#define WAVE_LOW 0 +#define WAVE_HIGH -24576 +#define WAVE_LOW 24576 -#define ORAO_WAVE_ONE 24 -#define ORAO_WAVE_ZERO 11 +#define ORAO_WAVE_ONE 17 +#define ORAO_WAVE_ZERO 9 #define ORAO_HEADER_SIZE 360 static int16_t wave_data; // FIXME: global variables prevent multiple instances -static int len; +static int len; +static int startpos; +static bool newformat; static void orao_output_wave( int16_t **buffer, int length ) { if ( buffer == nullptr ) { @@ -41,7 +43,13 @@ static int orao_cas_to_wav_size( const uint8_t *casdata, int caslen ) { return -1; } size = 0; - for (i=ORAO_HEADER_SIZE;i<caslen-ORAO_HEADER_SIZE;i++) { + startpos = 0; + newformat = true; + if (casdata[0]==0x68 && casdata[1]==0x01 && casdata[2]==0x00) { + startpos = ORAO_HEADER_SIZE; + newformat = false; + } + for (i=startpos;i<caslen-startpos;i++) { for (j=0;j<8;j++) { b = (casdata[i] >> j) & 1; if (b==0) { @@ -56,13 +64,14 @@ static int orao_cas_to_wav_size( const uint8_t *casdata, int caslen ) { } static int orao_cas_fill_wave( int16_t *buffer, int length, uint8_t *bytes ) { - int i,j,size; + int i,j,size,k; uint8_t b; size = 0; if (bytes == nullptr) return -1; - for (i=ORAO_HEADER_SIZE;i<len-ORAO_HEADER_SIZE;i++) { + for (i=startpos;i<len-startpos;i++) { for (j=0;j<8;j++) { - b = (bytes[i] >> j) & 1; + k = newformat ? (7-j) : j; + b = (bytes[i] >> k) & 1; if (b==0) { wave_data = WAVE_LOW; orao_output_wave(&buffer,ORAO_WAVE_ZERO); diff --git a/src/mame/drivers/orao.cpp b/src/mame/drivers/orao.cpp index 162410ecdf9..5f4fc7fd574 100644 --- a/src/mame/drivers/orao.cpp +++ b/src/mame/drivers/orao.cpp @@ -14,12 +14,10 @@ Ctrl-V turns on keyclick Ctrl-S turns on reversed video BC starts BASIC. orao103: EXIT to quit. orao: unknown how to quit. +To load use LMEM"" Todo: - When pasting, shift key doesn't work -- orao103: loads its own tapes, but can't load software items -- orao: can't load anything - ****************************************************************************/ |