274 static const enum clock_speeds clockSpeed[] = { DEFAULT, PAL, NTSC, DREAN, NTSC2 };
275 static const enum refresh_rates refreshRate[] = { HZ_DEFAULT, HZ_EU, HZ_US, HZ_US, HZ_US };
276 static const enum raster_rates rasterRate[] = { R_DEFAULT, R_EU, R_US, R_US, R_US };
315 int LIBUSB_Setup(
bool start_threaded,
bool with_cycles);
316 int LIBUSB_Exit(
void);
317 int LIBUSB_Available(libusb_context *ctx, uint16_t vendor_id, uint16_t product_id);
318 void LIBUSB_StopTransfers(
void);
319 int LIBUSB_OpenDevice(
void);
320 void LIBUSB_CloseDevice(
void);
321 int LIBUSB_DetachKernelDriver(
void);
322 int LIBUSB_ConfigureDevice(
void);
323 void LIBUSB_InitOutBuffer(
void);
324 void LIBUSB_FreeOutBuffer(
void);
325 void LIBUSB_InitInBuffer(
void);
326 void LIBUSB_FreeInBuffer(
void);
327 static void LIBUSB_CALL usb_out(
struct libusb_transfer *transfer);
328 static void LIBUSB_CALL usb_in(
struct libusb_transfer *transfer);
331 unsigned char encoding[7] = { 0x40, 0x54, 0x89, 0x00, 0x00, 0x00, 0x08 };
334 void* USBSID_Thread(
void);
335 int USBSID_InitThread(
void);
336 void USBSID_StopThread(
void);
337 int USBSID_IsRunning(
void);
339 pthread_attr_t attrs;
342 void USBSID_ResetRingBuffer(
void);
343 void USBSID_InitRingBuffer(
int buffer_size,
int differ_size);
344 void USBSID_InitRingBuffer(
void);
345 void USBSID_DeInitRingBuffer(
void);
346 bool USBSID_IsHigher(
void);
347 int USBSID_RingDiff(
void);
348 void USBSID_RingPut(uint8_t item);
349 uint8_t USBSID_RingGet(
void);
350 void USBSID_FlushBuffer(
void);
353 void USBSID_RingPopCycled(
void);
354 void USBSID_RingPop(
void);
364 int USBSID_Init(
bool start_threaded,
bool with_cycles);
365 int USBSID_Close(
void);
366 bool USBSID_isInitialised(
void){
return us_Initialised; };
367 bool USBSID_isAvailable(
void){
return us_Available; };
368 bool USBSID_isOpen(
void){
return us_PortIsOpen; };
371 void USBSID_Pause(
void);
372 void USBSID_Reset(
void);
373 void USBSID_ResetAllRegisters(
void);
374 void USBSID_Mute(
void);
375 void USBSID_UnMute(
void);
376 void USBSID_DisableSID(
void);
377 void USBSID_EnableSID(
void);
378 void USBSID_ClearBus(
void);
379 void USBSID_SetClockRate(
long clockrate_cycles,
381 long USBSID_GetClockRate(
void);
382 long USBSID_GetRefreshRate(
void);
383 long USBSID_GetRasterRate(
void);
384 uint8_t* USBSID_GetSocketConfig(uint8_t socket_config[]);
385 int USBSID_GetSocketNumSIDS(
int socket, uint8_t socket_config[]);
386 int USBSID_GetSocketChipType(
int socket, uint8_t socket_config[]);
387 int USBSID_GetSocketSIDType1(
int socket, uint8_t socket_config[]);
388 int USBSID_GetSocketSIDType2(
int socket, uint8_t socket_config[]);
389 int USBSID_GetNumSIDs(
void);
390 int USBSID_GetFMOplSID(
void);
391 int USBSID_GetPCBVersion(
void);
392 void USBSID_SetStereo(
int state);
393 void USBSID_ToggleStereo(
void);
396 void USBSID_SingleWrite(
unsigned char *buff,
size_t len);
397 unsigned char USBSID_SingleRead(uint8_t reg);
398 unsigned char USBSID_SingleReadConfig(
unsigned char *buff,
size_t len);
401 void USBSID_Write(
unsigned char *buff,
size_t len);
402 void USBSID_Write(uint8_t reg, uint8_t val);
403 void USBSID_Write(
unsigned char *buff,
size_t len, uint16_t cycles);
404 void USBSID_Write(uint8_t reg, uint8_t val, uint16_t cycles);
405 void USBSID_WriteCycled(uint8_t reg, uint8_t val, uint16_t cycles);
406 unsigned char USBSID_Read(uint8_t reg);
407 unsigned char USBSID_Read(
unsigned char *writebuff);
408 unsigned char USBSID_Read(
unsigned char *writebuff, uint16_t cycles);
411 void USBSID_WriteRing(uint8_t reg, uint8_t val);
412 void USBSID_WriteRingCycled(uint8_t reg, uint8_t val, uint16_t cycles);
415 void USBSID_EnableThread(
void);
416 void USBSID_DisableThread(
void);
419 void USBSID_SetFlush(
void);
420 void USBSID_Flush(
void);
421 void USBSID_SetBufferSize(
int size);
422 void USBSID_SetDiffSize(
int size);
423 void USBSID_RestartRingBuffer(
void);
426 void USBSID_RestartThread(
bool with_cycles);
427 static void *_USBSID_Thread(
void *context)
433 uint_fast64_t USBSID_WaitForCycle(uint_fast16_t cycles);
434 uint_fast64_t USBSID_CycleFromTimestamp(timestamp_t timestamp);
438 uint8_t USBSID_Address(uint16_t addr);