Small updates:

- added methods to CModel3 to access sound board and drive board
 - added methods to CSoundBoard to access 68K and DSB (if attached)
 - added methods to CDSB1 & CDSB2 to access Z80 & 68K respectively
 - small code tweak in DriveBoard.cpp
 - comment tweaks in Model3.h & Model3.cpp
This commit is contained in:
Nik Henson 2011-09-15 21:10:38 +00:00
parent 1629cd711c
commit 58954ee4cc
7 changed files with 101 additions and 15 deletions

View file

@ -590,6 +590,11 @@ bool CDSB1::Init(const UINT8 *progROMPtr, const UINT8 *mpegROMPtr)
return OKAY;
}
CZ80 *CDSB1::GetZ80(void)
{
return &Z80;
}
CDSB1::CDSB1(void)
{
progROM = NULL;
@ -1161,6 +1166,11 @@ bool CDSB2::Init(const UINT8 *progROMPtr, const UINT8 *mpegROMPtr)
return OKAY;
}
M68KCtx *CDSB2::GetM68K(void)
{
return &M68K;
}
CDSB2::CDSB2(void)
{
progROM = NULL;

View file

@ -241,6 +241,9 @@ public:
void LoadState(CBlockFile *StateFile);
bool Init(const UINT8 *progROMPtr, const UINT8 *mpegROMPtr);
// Returns a reference to the Z80 CPU
CZ80 *GetZ80(void);
// Constructor and destructor
CDSB1(void);
~CDSB1(void);
@ -313,6 +316,9 @@ public:
void LoadState(CBlockFile *StateFile);
bool Init(const UINT8 *progROMPtr, const UINT8 *mpegROMPtr);
// Returns a reference to the 68K CPU context
M68KCtx *GetM68K(void);
// Constructor and destructor
CDSB2(void);
~CDSB2(void);

View file

@ -646,15 +646,12 @@ void CDriveBoard::ProcessEncoderCmd(void)
// Disable uncentering
SendVibrate(0);
}
else if (seqNum == 3)
else if (seqNum == 3 && m_uncenterVal1 > 0)
{
if (m_uncenterVal1 > 0)
{
// Uncentering - unsure exactly how values sent map to strength or whether they specify some other attributes of effect
// For now just attempting to map them to a sensible value in range 0x00-0xFF
UINT8 strength = ((m_uncenterVal1>>1) - 7) * 0x50 + ((m_uncenterVal2>>1) - 5) * 0x10 + 0xF;
SendVibrate(strength);
}
// Uncentering - unsure exactly how values sent map to strength or whether they specify some other attributes of effect
// For now just attempting to map them to a sensible value in range 0x00-0xFF
UINT8 strength = ((m_uncenterVal1>>1) - 7) * 0x50 + ((m_uncenterVal2>>1) - 5) * 0x10 + 0xF;
SendVibrate(strength);
}
}
break;

View file

@ -2197,7 +2197,7 @@ void CModel3::RunSoundBoardThread(void)
goto ThreadError;
}
// Keep processing frames until audio buffer is half full
// Keep processing frames until audio buffer is full
bool repeat = true;
// NOTE - performs an unlocked read of pausedThreads here, but this is okay
while (!pausedThreads && !SoundBoard.RunFrame())
@ -2928,6 +2928,16 @@ bool CModel3::Init(void)
return OKAY;
}
CSoundBoard *CModel3::GetSoundBoard(void)
{
return &SoundBoard;
}
CDriveBoard *CModel3::GetDriveBoard(void)
{
return &DriveBoard;
}
CModel3::CModel3(void)
{
// Initialize pointers so dtor can know whether to free them

View file

@ -170,8 +170,9 @@ public:
*
* Loads and resumes execution from a state image. Modifies data that may
* be used by multiple threads -- use with caution and ensure threads are
* not accessing data that will be touched. Must never be called while
* emulator is running (inside RunFrame()).
* not accessing data that will be touched, this can be done by calling
* PauseThreads beforehand. Must never be called while emulator is running
* (inside RunFrame()).
*
* Parameters:
* SaveState Block file to load state information from.
@ -278,7 +279,42 @@ public:
* occurred. Prints own error messages.
*/
bool Init(void);
/*
* GetSoundBoard(void):
*
* Returns a reference to the sound board.
*
* Returns:
* Pointer to CSoundBoard object.
*/
CSoundBoard *GetSoundBoard(void);
/*
* GetDriveBoard(void):
*
* Returns a reference to the drive board.
* Returns:
* Pointer to CDriveBoard object.
*/
CDriveBoard *GetDriveBoard(void);
/*
* PauseThreads(void):
*
* Flags that any running threads should pause and waits for them to do so.
* Should be used before invoking any method that accesses the internal state, eg LoadState or SaveState.
*/
bool PauseThreads(void);
/*
* ResumeThreads(void):
*
* Flags that any paused threads should resume running.
*/
void ResumeThreads(void);
/*
* CModel3(void):
* ~CModel3(void):
@ -291,9 +327,6 @@ public:
CModel3(void);
~CModel3(void);
bool PauseThreads(void);
void ResumeThreads(void);
/*
* Private Property.
* Tresspassers will be shot! ;)

View file

@ -515,6 +515,16 @@ bool CSoundBoard::Init(const UINT8 *soundROMPtr, const UINT8 *sampleROMPtr)
return OKAY;
}
M68KCtx *CSoundBoard::GetM68K(void)
{
return &M68K;
}
CDSB *CSoundBoard::GetDSB(void)
{
return DSB;
}
CSoundBoard::CSoundBoard(void)
{
DSB = NULL;

View file

@ -148,6 +148,26 @@ public:
*/
void AttachDSB(CDSB *DSBPtr);
/*
* GetMS68K(void):
*
* Returns a reference to the 68K CPU of the sound board.
*
* Returns:
* A pointer to the M68K context.
*/
M68KCtx *GetM68K(void);
/*
* GetDSB(void):
*
* Returns a reference the Digital Sound Board (if attached).
*
* Returns:
* A pointer to the DSB object or NULL if not attached.
*/
CDSB *GetDSB(void);
/*
* Init(soundROMPtr, sampleROMPtr):
*