parent
71d7697788
commit
b5eb31dabf
|
@ -6,5 +6,6 @@ Built on an M1 Mac mini, using CMake from Homebrew, with the following
|
|||
options:
|
||||
|
||||
```
|
||||
cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.12"
|
||||
cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.12" \
|
||||
-DBUILD_LIBAUDIO=NO -DBUILD_PLAYER=NO -DBUILD_VGM2WAV=NO
|
||||
```
|
||||
|
|
|
@ -69,6 +69,7 @@ struct DRO_HEADER
|
|||
struct DRO_PLAY_OPTIONS
|
||||
{
|
||||
UINT8 v2opl3Mode; // DRO v2 DualOPL2 -> OPL3 fixes
|
||||
UINT32 playbackSpeedScale; // Set to 0x10000 for 1.0 speed, or 16.16 fixed point
|
||||
};
|
||||
|
||||
|
||||
|
@ -112,7 +113,7 @@ public:
|
|||
|
||||
//UINT32 GetSampleRate(void) const;
|
||||
UINT8 SetSampleRate(UINT32 sampleRate);
|
||||
//UINT8 SetPlaybackSpeed(double speed);
|
||||
UINT8 SetPlaybackSpeed(double speed);
|
||||
//void SetEventCallback(PLAYER_EVENT_CB cbFunc, void* cbParam);
|
||||
UINT32 Tick2Sample(UINT32 ticks) const;
|
||||
UINT32 Sample2Tick(UINT32 samples) const;
|
||||
|
@ -138,6 +139,8 @@ private:
|
|||
void RefreshPanning(DRO_CHIPDEV& chipDev, const PLR_PAN_OPTS& panOpts);
|
||||
|
||||
void ScanInitBlock(void);
|
||||
|
||||
void RefreshTSRates(void);
|
||||
|
||||
static void PlayerLogCB(void* userParam, void* source, UINT8 level, const char* message);
|
||||
static void SndEmuLogCB(void* userParam, void* source, UINT8 level, const char* message);
|
||||
|
|
|
@ -37,6 +37,12 @@ struct GYM_HEADER
|
|||
UINT32 realFileSize; // internal file size after possible decompression
|
||||
};
|
||||
|
||||
struct GYM_PLAY_OPTIONS
|
||||
{
|
||||
UINT32 playbackSpeedScale; // Set to 0x10000 for 1.0 speed, or 16.16 fixed point
|
||||
};
|
||||
|
||||
|
||||
class GYMPlayer : public PlayerBase
|
||||
{
|
||||
private:
|
||||
|
@ -78,10 +84,12 @@ public:
|
|||
UINT8 GetDeviceOptions(UINT32 id, PLR_DEV_OPTS& devOpts) const;
|
||||
UINT8 SetDeviceMuting(UINT32 id, const PLR_MUTE_OPTS& muteOpts);
|
||||
UINT8 GetDeviceMuting(UINT32 id, PLR_MUTE_OPTS& muteOpts) const;
|
||||
UINT8 SetPlayerOptions(const GYM_PLAY_OPTIONS& playOpts);
|
||||
UINT8 GetPlayerOptions(GYM_PLAY_OPTIONS& playOpts) const;
|
||||
|
||||
//UINT32 GetSampleRate(void) const;
|
||||
UINT8 SetSampleRate(UINT32 sampleRate);
|
||||
//UINT8 SetPlaybackSpeed(double speed);
|
||||
UINT8 SetPlaybackSpeed(double speed);
|
||||
//void SetEventCallback(PLAYER_EVENT_CB cbFunc, void* cbParam);
|
||||
UINT32 Tick2Sample(UINT32 ticks) const;
|
||||
UINT32 Sample2Tick(UINT32 samples) const;
|
||||
|
@ -111,6 +119,8 @@ private:
|
|||
UINT8 LoadTags(void);
|
||||
void LoadTag(const char* tagName, const void* data, size_t maxlen);
|
||||
std::string GetUTF8String(const char* startPtr, const char* endPtr);
|
||||
|
||||
void RefreshTSRates(void);
|
||||
|
||||
static void PlayerLogCB(void* userParam, void* source, UINT8 level, const char* message);
|
||||
static void SndEmuLogCB(void* userParam, void* source, UINT8 level, const char* message);
|
||||
|
@ -150,6 +160,7 @@ private:
|
|||
UINT64 _tsMult;
|
||||
UINT64 _tsDiv;
|
||||
|
||||
GYM_PLAY_OPTIONS _playOpts;
|
||||
PLR_DEV_OPTS _devOpts[2]; // 0 = YM2612, 1 = SEGA PSG
|
||||
std::vector<GYM_CHIPDEV> _devices;
|
||||
std::vector<std::string> _devNames;
|
||||
|
|
|
@ -33,6 +33,11 @@ struct S98_DEVICE
|
|||
UINT32 pan; // [v2: reserved] [v3: pan setting]
|
||||
UINT32 app_spec; // [v2: application-specific] [v3: reserved]
|
||||
};
|
||||
struct S98_PLAY_OPTIONS
|
||||
{
|
||||
UINT32 playbackSpeedScale; // Set to 0x10000 for 1.0 speed, or 16.16 fixed point
|
||||
};
|
||||
|
||||
|
||||
class S98Player : public PlayerBase
|
||||
{
|
||||
|
@ -79,10 +84,12 @@ public:
|
|||
UINT8 GetDeviceOptions(UINT32 id, PLR_DEV_OPTS& devOpts) const;
|
||||
UINT8 SetDeviceMuting(UINT32 id, const PLR_MUTE_OPTS& muteOpts);
|
||||
UINT8 GetDeviceMuting(UINT32 id, PLR_MUTE_OPTS& muteOpts) const;
|
||||
UINT8 SetPlayerOptions(const S98_PLAY_OPTIONS& playOpts);
|
||||
UINT8 GetPlayerOptions(S98_PLAY_OPTIONS& playOpts) const;
|
||||
|
||||
//UINT32 GetSampleRate(void) const;
|
||||
UINT8 SetSampleRate(UINT32 sampleRate);
|
||||
//UINT8 SetPlaybackSpeed(double speed);
|
||||
UINT8 SetPlaybackSpeed(double speed);
|
||||
//void SetEventCallback(PLAYER_EVENT_CB cbFunc, void* cbParam);
|
||||
UINT32 Tick2Sample(UINT32 ticks) const;
|
||||
UINT32 Sample2Tick(UINT32 samples) const;
|
||||
|
@ -154,6 +161,7 @@ private:
|
|||
|
||||
static const UINT8 _OPT_DEV_LIST[_OPT_DEV_COUNT]; // list of configurable libvgm devices
|
||||
|
||||
S98_PLAY_OPTIONS _playOpts;
|
||||
PLR_DEV_OPTS _devOpts[_OPT_DEV_COUNT * 2]; // space for 2 instances per chip
|
||||
size_t _devOptMap[0x100][2]; // maps libvgm device ID to _devOpts vector
|
||||
std::vector<S98_CHIPDEV> _devices;
|
||||
|
|
|
@ -45,6 +45,7 @@ struct VGM_PLAY_OPTIONS
|
|||
UINT32 playbackHz; // set to 60 (NTSC) or 50 (PAL) for region-specific song speed adjustment
|
||||
// Note: requires VGM_HEADER.recordHz to be non-zero to work.
|
||||
UINT8 hardStopOld; // enforce silence at end of old VGMs (<1.50), fixes Key Off events being trimmed off
|
||||
UINT32 playbackSpeedScale; // Set to 0x10000 for 1.0 speed, or 16.16 fixed point
|
||||
};
|
||||
|
||||
|
||||
|
@ -166,7 +167,7 @@ public:
|
|||
|
||||
//UINT32 GetSampleRate(void) const;
|
||||
UINT8 SetSampleRate(UINT32 sampleRate);
|
||||
//UINT8 SetPlaybackSpeed(double speed);
|
||||
UINT8 SetPlaybackSpeed(double speed);
|
||||
//void SetEventCallback(PLAYER_EVENT_CB cbFunc, void* cbParam);
|
||||
//void SetFileReqCallback(PLAYER_FILEREQ_CB cbFunc, void* cbParam);
|
||||
UINT32 Tick2Sample(UINT32 ticks) const;
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue