summaryrefslogtreecommitdiff
path: root/src/adplug/core/dro.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/adplug/core/dro.cc')
-rw-r--r--src/adplug/core/dro.cc141
1 files changed, 0 insertions, 141 deletions
diff --git a/src/adplug/core/dro.cc b/src/adplug/core/dro.cc
deleted file mode 100644
index 179ddf3..0000000
--- a/src/adplug/core/dro.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Adplug - Replayer for many OPL2/OPL3 audio file formats.
- * Copyright (C) 1999 - 2007 Simon Peter, <dn.tlp@gmx.net>, et al.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * dro.c - DOSBox Raw OPL Player by Sjoerd van der Berg <harekiet@zophar.net>
- *
- * upgraded by matthew gambrell <zeromus@zeromus.org>
- *
- * NOTES: 3-oct-04: the DRO format is not yet finalized. beware.
- */
-
-#include <cstring>
-#include <stdio.h>
-
-#include "dro.h"
-
-/*** public methods *************************************/
-
-CPlayer *CdroPlayer::factory(Copl *newopl)
-{
- return new CdroPlayer(newopl);
-}
-
-CdroPlayer::CdroPlayer(Copl *newopl)
- : CPlayer(newopl), data(0)
-{
- if(opl->gettype() == Copl::TYPE_OPL2)
- opl3_mode = 0;
- else
- opl3_mode = 1;
-}
-
-bool CdroPlayer::load(const std::string &filename, const CFileProvider &fp)
-{
- binistream *f = fp.open(filename); if(!f) return false;
- char id[8];
- unsigned long i;
-
- // file validation section
- f->readString(id, 8);
- if(strncmp(id,"DBRAWOPL",8)) { fp.close (f); return false; }
- int version = f->readInt(4); // not very useful just yet
- if(version != 0x10000) { fp.close(f); return false; }
-
- // load section
- mstotal = f->readInt(4); // Total milliseconds in file
- length = f->readInt(4); // Total data bytes in file
- data = new unsigned char [length];
-
- f->ignore(1); // Type of opl data this can contain - ignored
- for (i=0;i<3;i++)
- data[i]=f->readInt(1);
-
- if ((data[0] == 0) || (data[1] == 0) || (data[2] == 0)) {
- // Some early .DRO files only used one byte for the hardware type, then
- // later changed to four bytes with no version number change. If we're
- // here then this is a later (more popular) file with the full four bytes
- // for the hardware-type.
- i = 0; // so ignore the three bytes we just read and start again
- }
- for (;i<length;i++)
- data[i]=f->readInt(1);
- fp.close(f);
- rewind(0);
- return true;
-}
-
-bool CdroPlayer::update()
-{
- if (delay>500) {
- delay-=500;
- return true;
- } else
- delay=0;
-
- while (pos < length) {
- unsigned char cmd = data[pos++];
- switch(cmd) {
- case 0:
- delay = 1 + data[pos++];
- return true;
- case 1:
- delay = 1 + data[pos] + (data[pos+1]<<8);
- pos+=2;
- return true;
- case 2:
- index = 0;
- opl->setchip(0);
- break;
- case 3:
- index = 1;
- opl->setchip(1);
- break;
- default:
- if(cmd==4) cmd = data[pos++]; //data override
- if(index == 0 || opl3_mode)
- opl->write(cmd,data[pos++]);
- break;
- }
- }
-
- return pos<length;
-}
-
-void CdroPlayer::rewind(int subsong)
-{
- delay=1;
- pos = index = 0;
- opl->init();
-
- //dro assumes all registers are initialized to 0
- //registers not initialized to 0 will be corrected
- //in the data stream
- for(int i=0;i<256;i++)
- opl->write(i,0);
-
- opl->setchip(1);
- for(int i=0;i<256;i++)
- opl->write(i,0);
- opl->setchip(0);
-}
-
-float CdroPlayer::getrefresh()
-{
- if (delay > 500) return 1000 / 500;
- else return 1000 / (double)delay;
-}