forked from sin365/AxibugEmuOnline
69 lines
3.0 KiB
C++
69 lines
3.0 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Namcot N106 //
|
||
// Norix //
|
||
// written 2001/09/18 //
|
||
// last modify ----/--/-- //
|
||
//////////////////////////////////////////////////////////////////////////
|
||
#ifndef __APU_N106_INCLUDED__
|
||
#define __APU_N106_INCLUDED__
|
||
|
||
#define WIN32_LEAN_AND_MEAN
|
||
#include "windows.h"
|
||
|
||
#include "typedef.h"
|
||
#include "macro.h"
|
||
|
||
#include "APU_INTERFACE.h"
|
||
|
||
class APU_N106 : public APU_INTERFACE
|
||
{
|
||
public:
|
||
APU_N106();
|
||
~APU_N106();
|
||
|
||
void Reset( FLOAT fClock, INT nRate );
|
||
void Setup( FLOAT fClock, INT nRate );
|
||
void Write( WORD addr, BYTE data );
|
||
BYTE Read( WORD addr );
|
||
INT Process( INT channel );
|
||
|
||
INT GetFreq( INT channel );
|
||
|
||
INT GetStateSize();
|
||
void SaveState( LPBYTE p );
|
||
void LoadState( LPBYTE p );
|
||
protected:
|
||
typedef struct {
|
||
INT phaseacc;
|
||
|
||
DWORD freq;
|
||
DWORD phase;
|
||
DWORD tonelen;
|
||
|
||
INT output;
|
||
|
||
BYTE toneadr;
|
||
BYTE volupdate;
|
||
|
||
BYTE vol;
|
||
BYTE databuf;
|
||
} CHANNEL;
|
||
|
||
CHANNEL op[8];
|
||
|
||
FLOAT cpu_clock;
|
||
DWORD cycle_rate;
|
||
|
||
BYTE addrinc;
|
||
BYTE address;
|
||
BYTE channel_use;
|
||
|
||
BYTE tone[0x100];
|
||
|
||
INT ChannelRender( CHANNEL& ch );
|
||
private:
|
||
};
|
||
|
||
#endif // !__APU_N106_INCLUDED__
|