Updated libvgm

But nothing I updated affects playback currently.
CQTexperiment
Christopher Snowhill 2022-02-02 17:22:57 -08:00
parent 71d7697788
commit b5eb31dabf
8 changed files with 29 additions and 5 deletions

View File

@ -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
```

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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.