Updates in inputdevice
This commit is contained in:
parent
914677fdb7
commit
3c37275593
13 changed files with 882 additions and 181 deletions
|
@ -2740,6 +2740,7 @@ int disk_setwriteprotect(struct uae_prefs* p, int num, const TCHAR* name, bool w
|
|||
|
||||
void disk_eject(int num)
|
||||
{
|
||||
set_config_changed();
|
||||
gui_filename(num, _T(""));
|
||||
drive_eject(floppy + num);
|
||||
*currprefs.floppyslots[num].df = *changed_prefs.floppyslots[num].df = 0;
|
||||
|
|
|
@ -48,6 +48,8 @@ extern TCHAR *DISK_history_get (int idx, int type);
|
|||
int DISK_examine_image (struct uae_prefs *p, int num, struct diskinfo *di);
|
||||
extern TCHAR *DISK_get_saveimagepath (const TCHAR *name);
|
||||
extern void DISK_reinsert (int num);
|
||||
extern int disk_prevnext(int drive, int dir);
|
||||
extern int disk_prevnext_name(TCHAR *img, int dir);
|
||||
|
||||
extern void DSKLEN (uae_u16 v, int hpos);
|
||||
extern uae_u16 DSKBYTR (int hpos);
|
||||
|
|
|
@ -170,30 +170,31 @@ struct inputevent {
|
|||
#define AM_KK (AM_KEY|AM_JOY_BUT|AM_MOUSE_BUT)
|
||||
#define AM_KT (AM_K|AM_SETTOGGLE)
|
||||
|
||||
extern int inputdevice_iterate (int devnum, int num, TCHAR *name, int *af);
|
||||
extern bool inputdevice_set_gameports_mapping (struct uae_prefs *prefs, int devnum, int num, int evtnum, uae_u64 flags, int port, int input_selected_setting);
|
||||
extern int inputdevice_set_mapping (int devnum, int num, const TCHAR *name, TCHAR *custom, uae_u64 flags, int port, int sub);
|
||||
extern int inputdevice_get_mapping (int devnum, int num, uae_u64 *pflags, int *port, TCHAR *name, TCHAR *custom, int sub);
|
||||
extern void inputdevice_copyconfig (const struct uae_prefs *src, struct uae_prefs *dst);
|
||||
extern void inputdevice_copy_single_config (struct uae_prefs *p, int src, int dst, int devnum, int selectedwidget);
|
||||
extern void inputdevice_swap_ports (struct uae_prefs *p, int devnum);
|
||||
extern void inputdevice_swap_compa_ports (struct uae_prefs *p, int portswap);
|
||||
extern void inputdevice_config_change (void);
|
||||
extern int inputdevice_config_change_test (void);
|
||||
extern int inputdevice_get_device_index (int devnum);
|
||||
extern const char *inputdevice_get_device_name(int type, int devnum);
|
||||
extern const char *inputdevice_get_device_name2(int devnum);
|
||||
extern const char *inputdevice_get_device_unique_name(int type, int devnum);
|
||||
extern int inputdevice_get_device_status (int devnum);
|
||||
extern void inputdevice_set_device_status (int devnum, int enabled);
|
||||
extern int inputdevice_get_device_total (int type);
|
||||
extern int inputdevice_get_widget_num (int devnum);
|
||||
extern int inputdevice_get_widget_type (int devnum, int num, TCHAR *name);
|
||||
extern int inputdevice_iterate(int devnum, int num, TCHAR *name, int *af);
|
||||
extern bool inputdevice_set_gameports_mapping(struct uae_prefs *prefs, int devnum, int num, int evtnum, uae_u64 flags, int port, int input_selected_setting);
|
||||
extern int inputdevice_set_mapping(int devnum, int num, const TCHAR *name, TCHAR *custom, uae_u64 flags, int port, int sub);
|
||||
extern int inputdevice_get_mapping(int devnum, int num, uae_u64 *pflags, int *port, TCHAR *name, TCHAR *custom, int sub);
|
||||
extern void inputdevice_copyconfig(const struct uae_prefs *src, struct uae_prefs *dst);
|
||||
extern void inputdevice_copy_single_config(struct uae_prefs *p, int src, int dst, int devnum, int selectedwidget);
|
||||
extern void inputdevice_swap_ports(struct uae_prefs *p, int devnum);
|
||||
extern void inputdevice_swap_compa_ports(struct uae_prefs *p, int portswap);
|
||||
extern void inputdevice_config_change(void);
|
||||
extern int inputdevice_config_change_test(void);
|
||||
extern int inputdevice_get_device_index(int devnum);
|
||||
extern const char* inputdevice_get_device_name(int type, int devnum);
|
||||
extern const char* inputdevice_get_device_name2(int devnum);
|
||||
extern const char* inputdevice_get_device_unique_name(int type, int devnum);
|
||||
extern int inputdevice_get_device_status(int devnum);
|
||||
extern void inputdevice_set_device_status(int devnum, int enabled);
|
||||
extern int inputdevice_get_device_total(int type);
|
||||
extern int inputdevice_get_widget_num(int devnum);
|
||||
extern int inputdevice_get_widget_type(int devnum, int num, TCHAR *name);
|
||||
|
||||
extern int input_get_default_mouse (struct uae_input_device *uid, int num, int port, int af, bool gp, bool wheel, bool joymouseswap);
|
||||
extern int input_get_default_joystick (struct uae_input_device *uid, int num, int port, int af, int mode, bool gp, bool joymouseswap);
|
||||
extern int input_get_default_joystick_analog (struct uae_input_device *uid, int num, int port, int af, bool gp, bool joymouseswap);
|
||||
extern int input_get_default_keyboard (int num);
|
||||
extern int input_get_default_mouse(struct uae_input_device *uid, int num, int port, int af, bool gp, bool wheel, bool joymouseswap);
|
||||
extern int input_get_default_lightpen(struct uae_input_device *uid, int num, int port, int af, bool gp, bool joymouseswap);
|
||||
extern int input_get_default_joystick(struct uae_input_device *uid, int num, int port, int af, int mode, bool gp, bool joymouseswap);
|
||||
extern int input_get_default_joystick_analog(struct uae_input_device *uid, int num, int port, int af, bool gp, bool joymouseswap);
|
||||
extern int input_get_default_keyboard(int num);
|
||||
|
||||
#define DEFEVENT(A, B, C, D, E, F) INPUTEVENT_ ## A,
|
||||
enum inputevents {
|
||||
|
@ -207,29 +208,36 @@ extern void handle_cd32_joystick_cia (uae_u8, uae_u8);
|
|||
extern uae_u8 handle_parport_joystick (int port, uae_u8 pra, uae_u8 dra);
|
||||
extern uae_u8 handle_joystick_buttons (uae_u8, uae_u8);
|
||||
|
||||
#define MAGICMOUSE_BOTH 0
|
||||
#define MAGICMOUSE_NATIVE_ONLY 1
|
||||
#define MAGICMOUSE_HOST_ONLY 2
|
||||
|
||||
extern int magicmouse_alive(void);
|
||||
extern int is_tablet(void);
|
||||
extern int inputdevice_is_tablet(void);
|
||||
extern int inputdevice_is_tablet (void);
|
||||
extern int input_mousehack_status (int mode, uaecptr diminfo, uaecptr dispinfo, uaecptr vp, uae_u32 moffset);
|
||||
extern void input_mousehack_mouseoffset (uaecptr pointerprefs);
|
||||
extern int mousehack_alive(void);
|
||||
extern void setmouseactive(int);
|
||||
extern bool ismouseactive(void);
|
||||
|
||||
extern void setmousebuttonstateall (int mouse, uae_u32 buttonbits, uae_u32 buttonmask);
|
||||
extern void setjoybuttonstateall (int joy, uae_u32 buttonbits, uae_u32 buttonmask);
|
||||
extern void setjoybuttonstate (int joy, int button, int state);
|
||||
extern void setmousebuttonstate (int mouse, int button, int state);
|
||||
extern void setjoystickstate (int joy, int axle, int state, int max);
|
||||
extern int getjoystickstate (int mouse);
|
||||
void setmousestate (int mouse, int axis, int data, int isabs);
|
||||
|
||||
extern int getmousestate (int mouse);
|
||||
extern void inputdevice_updateconfig (const struct uae_prefs *srcprefs, struct uae_prefs *dstprefs);
|
||||
extern void inputdevice_updateconfig_internal (const struct uae_prefs *srcprefs, struct uae_prefs *dstprefs);
|
||||
#ifndef INPUTDEVICE_SIMPLE
|
||||
extern void setmousebuttonstateall(int mouse, uae_u32 buttonbits, uae_u32 buttonmask);
|
||||
extern void setjoybuttonstateall(int joy, uae_u32 buttonbits, uae_u32 buttonmask);
|
||||
extern void setjoybuttonstate(int joy, int button, int state);
|
||||
extern void setmousebuttonstate(int mouse, int button, int state);
|
||||
extern void setjoystickstate(int joy, int axle, int state, int max);
|
||||
extern int getjoystickstate(int mouse);
|
||||
void setmousestate(int mouse, int axis, int data, int isabs);
|
||||
extern int getmousestate(int mouse);
|
||||
extern void inputdevice_updateconfig(const struct uae_prefs *srcprefs, struct uae_prefs *dstprefs);
|
||||
extern void inputdevice_updateconfig_internal(const struct uae_prefs *srcprefs, struct uae_prefs *dstprefs);
|
||||
extern void inputdevice_devicechange (struct uae_prefs *prefs);
|
||||
|
||||
#define INTERNALEVENT_CPURESET 0
|
||||
#define INTERNALEVENT_KBRESET 1
|
||||
|
||||
extern void send_internalevent (int eventid);
|
||||
#endif
|
||||
|
||||
extern int inputdevice_translatekeycode (int keyboard, int scancode, int state);
|
||||
extern void inputdevice_checkqualifierkeycode (int keyboard, int scancode, int state);
|
||||
|
@ -276,18 +284,24 @@ extern void inputdevice_default_prefs (struct uae_prefs *p);
|
|||
extern void inputdevice_acquire (int allmode);
|
||||
extern void inputdevice_unacquire (void);
|
||||
|
||||
extern void indicator_leds(int num, int state);
|
||||
|
||||
extern void warpmode(int mode);
|
||||
extern void pausemode(int mode);
|
||||
|
||||
extern void inputdevice_add_inputcode (int code, int state);
|
||||
extern void inputdevice_handle_inputcode (void);
|
||||
|
||||
extern void inputdevice_tablet_strobe (void);
|
||||
extern void inputdevice_tablet(int x, int y, int z,
|
||||
int pressure, uae_u32 buttonbits, int inproximity,
|
||||
int ax, int ay, int az);
|
||||
extern void inputdevice_tablet_info(int maxx, int maxy, int maxz, int maxax, int maxay, int maxaz, int xres, int yres);
|
||||
extern void inputdevice_tablet_strobe(void);
|
||||
|
||||
extern uae_u64 input_getqualifiers (void);
|
||||
|
||||
extern void setsystime (void);
|
||||
|
||||
extern int inputdevice_get_device_total (int type);
|
||||
extern const char *inputdevice_get_device_name(int type, int devnum);
|
||||
|
||||
#define JSEM_MODE_DEFAULT 0
|
||||
#define JSEM_MODE_WHEELMOUSE 1
|
||||
#define JSEM_MODE_MOUSE 2
|
||||
|
|
|
@ -131,20 +131,28 @@ extern void restore_bootrom (int, size_t);
|
|||
extern void restore_pram (int, size_t);
|
||||
extern void restore_ram (size_t, uae_u8*);
|
||||
|
||||
extern uae_u8 *save_cram (int *);
|
||||
extern uae_u8 *save_bram (int *);
|
||||
extern uae_u8 *save_fram (int *);
|
||||
extern uae_u8 *save_zram (int *, int);
|
||||
extern uae_u8 *save_bootrom (int *);
|
||||
extern uae_u8 *save_pram (int *);
|
||||
extern uae_u8 *save_cram(int *);
|
||||
extern uae_u8 *save_bram(int *);
|
||||
extern uae_u8 *save_fram(int *);
|
||||
extern uae_u8 *save_zram(int *, int);
|
||||
extern uae_u8 *save_bootrom(int *);
|
||||
extern uae_u8 *save_pram(int *);
|
||||
extern uae_u8 *save_a3000lram(int *);
|
||||
extern uae_u8 *save_a3000hram(int *);
|
||||
|
||||
extern uae_u8 *restore_rom(uae_u8 *);
|
||||
extern uae_u8 *save_rom(int, int *, uae_u8 *);
|
||||
|
||||
extern uae_u8 *restore_action_replay(uae_u8 *);
|
||||
extern uae_u8 *save_action_replay(int *, uae_u8 *);
|
||||
extern uae_u8 *restore_hrtmon(uae_u8 *);
|
||||
extern uae_u8 *save_hrtmon(int *, uae_u8 *);
|
||||
|
||||
extern uae_u8 *restore_rom (uae_u8 *);
|
||||
extern uae_u8 *save_rom (int, int *, uae_u8 *);
|
||||
|
||||
extern void savestate_initsave (const TCHAR *filename, int docompress, int nodialogs, bool save);
|
||||
extern int save_state (const TCHAR *filename, const TCHAR *description);
|
||||
extern void restore_state (const TCHAR *filename);
|
||||
extern void savestate_restore_finish (void);
|
||||
extern void savestate_initsave(const TCHAR *filename, int docompress, int nodialogs, bool save);
|
||||
extern int save_state(const TCHAR *filename, const TCHAR *description);
|
||||
extern void restore_state(const TCHAR *filename);
|
||||
extern void savestate_restore_finish(void);
|
||||
extern void savestate_memorysave(void);
|
||||
|
||||
extern void custom_save_state (void);
|
||||
extern void custom_prepare_savestate (void);
|
||||
|
@ -162,7 +170,18 @@ extern int savestate_state;
|
|||
extern TCHAR savestate_fname[MAX_DPATH];
|
||||
extern struct zfile *savestate_file;
|
||||
|
||||
STATIC_INLINE bool isrestore (void)
|
||||
{
|
||||
return savestate_state == STATE_RESTORE;
|
||||
STATIC_INLINE bool isrestore(void)
|
||||
{
|
||||
return savestate_state == STATE_RESTORE || savestate_state == STATE_REWIND;
|
||||
}
|
||||
|
||||
extern void savestate_quick(int slot, int save);
|
||||
|
||||
extern void savestate_capture(int);
|
||||
extern void savestate_free(void);
|
||||
extern void savestate_init(void);
|
||||
extern void savestate_rewind(void);
|
||||
extern int savestate_dorewind(int);
|
||||
extern void savestate_listrewind(void);
|
||||
extern void statefile_save_recording(const TCHAR*);
|
||||
extern void savestate_capture_request(void);
|
|
@ -32,7 +32,7 @@ extern int lockscr (void);
|
|||
extern void unlockscr (void);
|
||||
extern bool target_graphics_buffer_update (void);
|
||||
|
||||
extern void screenshot (int);
|
||||
extern void screenshot (int, int);
|
||||
|
||||
extern int bits_in_mask (unsigned long mask);
|
||||
extern int mask_shift (unsigned long mask);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -278,7 +278,7 @@ void target_save_options(struct zfile* f, struct uae_prefs* p)
|
|||
cfgfile_write(f, "amiberry.custom_y", "%d", customControlMap[VK_Yellow]);
|
||||
cfgfile_write(f, "amiberry.custom_l", "%d", customControlMap[VK_LShoulder]);
|
||||
cfgfile_write(f, "amiberry.custom_r", "%d", customControlMap[VK_RShoulder]);
|
||||
cfgfile_write(f, "amiberry.custom_start", "%d", customControlMap[VK_Start]);
|
||||
cfgfile_write(f, "amiberry.custom_start", "%d", customControlMap[VK_Play]);
|
||||
}
|
||||
|
||||
void target_restart()
|
||||
|
@ -323,7 +323,7 @@ int target_parse_option(struct uae_prefs* p, const char* option, const char* val
|
|||
|| cfgfile_intval(option, value, "custom_y", &customControlMap[VK_Yellow], 1)
|
||||
|| cfgfile_intval(option, value, "custom_l", &customControlMap[VK_LShoulder], 1)
|
||||
|| cfgfile_intval(option, value, "custom_r", &customControlMap[VK_RShoulder], 1)
|
||||
|| cfgfile_intval(option, value, "custom_start", &customControlMap[VK_Start], 1);
|
||||
|| cfgfile_intval(option, value, "custom_start", &customControlMap[VK_Play], 1);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -890,6 +890,8 @@ int handle_msgpump()
|
|||
}
|
||||
else if (rEvent.button.button == SDL_BUTTON_RIGHT)
|
||||
setmousebuttonstate(0, 1, 1);
|
||||
else if (rEvent.button.button == SDL_BUTTON_MIDDLE)
|
||||
setmousebuttonstate(0, 2, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -902,6 +904,8 @@ int handle_msgpump()
|
|||
}
|
||||
else if (rEvent.button.button == SDL_BUTTON_RIGHT)
|
||||
setmousebuttonstate(0, 1, 0);
|
||||
else if (rEvent.button.button == SDL_BUTTON_MIDDLE)
|
||||
setmousebuttonstate(0, 2, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -457,7 +457,7 @@ static void read_joystick()
|
|||
setjoybuttonstate(0, 3, keystate[VK_Yellow]);
|
||||
|
||||
if (!joyButXviaCustom[6])
|
||||
setjoybuttonstate(0, 6, keystate[VK_Start]);
|
||||
setjoybuttonstate(0, 6, keystate[VK_Play]);
|
||||
if (!joyButXviaCustom[5])
|
||||
setjoybuttonstate(0, 5, keystate[VK_RShoulder]);
|
||||
if (!joyButXviaCustom[4])
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
* Virtual Key for CD32 Start button
|
||||
* default: Pause/Break
|
||||
*/
|
||||
#define VK_Start SDL_SCANCODE_PAUSE
|
||||
#define VK_Play SDL_SCANCODE_RETURN
|
||||
|
||||
/*
|
||||
* Virtual Key for (up) button
|
||||
|
|
|
@ -53,7 +53,7 @@ static gcn::UaeDropDown* cboLeft;
|
|||
static gcn::Label* lblRight;
|
||||
static gcn::UaeDropDown* cboRight;
|
||||
static gcn::Label* lblStart;
|
||||
static gcn::UaeDropDown* cboStart;
|
||||
static gcn::UaeDropDown* cboPlay;
|
||||
|
||||
class StringListModel : public gcn::ListModel
|
||||
{
|
||||
|
@ -266,8 +266,8 @@ public:
|
|||
else if (actionEvent.getSource() == cboRight)
|
||||
customControlMap[VK_RIGHT] = amigaKey[cboRight->getSelected()];
|
||||
|
||||
else if (actionEvent.getSource() == cboStart)
|
||||
customControlMap[VK_Start] = amigaKey[cboStart->getSelected()];
|
||||
else if (actionEvent.getSource() == cboPlay)
|
||||
customControlMap[VK_Play] = amigaKey[cboPlay->getSelected()];
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -421,14 +421,14 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
cboRight->setId("cboRight");
|
||||
cboRight->addActionListener(inputActionListener);
|
||||
|
||||
lblStart = new gcn::Label("Start:");
|
||||
lblStart = new gcn::Label("Play:");
|
||||
lblStart->setSize(80, LABEL_HEIGHT);
|
||||
lblStart->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboStart = new gcn::UaeDropDown(&mappingList);
|
||||
cboStart->setSize(150, DROPDOWN_HEIGHT);
|
||||
cboStart->setBaseColor(gui_baseCol);
|
||||
cboStart->setId("cboStart");
|
||||
cboStart->addActionListener(inputActionListener);
|
||||
cboPlay = new gcn::UaeDropDown(&mappingList);
|
||||
cboPlay->setSize(150, DROPDOWN_HEIGHT);
|
||||
cboPlay->setBaseColor(gui_baseCol);
|
||||
cboPlay->setId("cboPlay");
|
||||
cboPlay->addActionListener(inputActionListener);
|
||||
|
||||
int posY = DISTANCE_BORDER;
|
||||
int posColumn2;
|
||||
|
@ -479,7 +479,7 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
category.panel->add(cboRight, posColumn2 + lblRight->getWidth() + 8, posY);
|
||||
posY += cboLeft->getHeight() + 4;
|
||||
category.panel->add(lblStart, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboStart, DISTANCE_BORDER + lblStart->getWidth() + 8, posY);
|
||||
category.panel->add(cboPlay, DISTANCE_BORDER + lblStart->getWidth() + 8, posY);
|
||||
|
||||
RefreshPanelInput();
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ void ExitPanelInput()
|
|||
delete cboLeft;
|
||||
delete lblRight;
|
||||
delete cboRight;
|
||||
delete cboStart;
|
||||
delete cboPlay;
|
||||
|
||||
delete inputActionListener;
|
||||
}
|
||||
|
@ -606,5 +606,5 @@ void RefreshPanelInput()
|
|||
cboDown->setSelected(GetAmigaKeyIndex(customControlMap[VK_DOWN]));
|
||||
cboLeft->setSelected(GetAmigaKeyIndex(customControlMap[VK_LEFT]));
|
||||
cboRight->setSelected(GetAmigaKeyIndex(customControlMap[VK_RIGHT]));
|
||||
cboStart->setSelected(GetAmigaKeyIndex(customControlMap[VK_Start]));
|
||||
cboPlay->setSelected(GetAmigaKeyIndex(customControlMap[VK_Play]));
|
||||
}
|
||||
|
|
|
@ -491,7 +491,7 @@ int loadconfig_old(struct uae_prefs* p, const char* orgpath)
|
|||
fscanf(f, "custom_Y=%d\n", &customControlMap[VK_Yellow]);
|
||||
fscanf(f, "custom_L=%d\n", &customControlMap[VK_LShoulder]);
|
||||
fscanf(f, "custom_R=%d\n", &customControlMap[VK_RShoulder]);
|
||||
fscanf(f, "custom_start=%d\n", &customControlMap[VK_Start]);
|
||||
fscanf(f, "custom_start=%d\n", &customControlMap[VK_Play]);
|
||||
fscanf(f, "cpu=%d\n", &cpu_level);
|
||||
if (cpu_level > 0) // M68000
|
||||
// Was old format
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
#define SOUND_BUFFERS_COUNT 4
|
||||
#define SNDBUFFER_LEN 2048
|
||||
|
||||
extern uae_u16 sndbuffer[SOUND_BUFFERS_COUNT][(SNDBUFFER_LEN+32)*DEFAULT_SOUND_CHANNELS];
|
||||
extern uae_u16 *sndbufpt;
|
||||
extern uae_u16 paula_sndbuffer[SOUND_BUFFERS_COUNT][(SNDBUFFER_LEN+32)*DEFAULT_SOUND_CHANNELS];
|
||||
extern uae_u16 *paula_sndbufpt;
|
||||
extern uae_u16 *render_sndbuff;
|
||||
extern uae_u16 *finish_sndbuff;
|
||||
extern int sndbufsize;
|
||||
extern int paula_sndbufsize;
|
||||
extern void finish_sound_buffer (void);
|
||||
extern void restart_sound_buffer (void);
|
||||
extern void pause_sound_buffer (void);
|
||||
|
@ -28,23 +28,26 @@ extern int setup_sound (void);
|
|||
extern void resume_sound (void);
|
||||
extern void pause_sound (void);
|
||||
extern void reset_sound (void);
|
||||
extern void sound_mute(int);
|
||||
extern void sound_volume (int);
|
||||
extern void set_volume(int, int);
|
||||
extern void master_sound_volume(int);
|
||||
|
||||
STATIC_INLINE void set_sound_buffers (void)
|
||||
{
|
||||
}
|
||||
|
||||
#define check_sound_buffers() { if (sndbufpt >= finish_sndbuff) finish_sound_buffer (); }
|
||||
#define check_sound_buffers() { if (paula_sndbufpt >= finish_sndbuff) finish_sound_buffer (); }
|
||||
|
||||
STATIC_INLINE void clear_sound_buffers (void)
|
||||
{
|
||||
memset (sndbuffer, 0, sizeof(sndbuffer));
|
||||
memset (paula_sndbuffer, 0, sizeof(paula_sndbuffer));
|
||||
}
|
||||
|
||||
#define PUT_SOUND_WORD_MONO(x) put_sound_word_mono_func(x)
|
||||
|
||||
#define PUT_SOUND_WORD(b) do { *sndbufpt = b; sndbufpt = sndbufpt + 1; } while (0)
|
||||
#define PUT_SOUND_WORD_STEREO(l,r) do { *((uae_u32 *)sndbufpt) = (r << 16) | (l & 0xffff); sndbufpt = sndbufpt + 2; } while (0)
|
||||
#define PUT_SOUND_WORD(b) do { *paula_sndbufpt = b; paula_sndbufpt = paula_sndbufpt + 1; } while (0)
|
||||
#define PUT_SOUND_WORD_STEREO(l,r) do { *((uae_u32 *)paula_sndbufpt) = (r << 16) | (l & 0xffff); paula_sndbufpt = paula_sndbufpt + 2; } while (0)
|
||||
|
||||
#define PUT_SOUND_WORD_LEFT(b) do { if (currprefs.sound_filter) b = filter (b, &sound_filter_state[0]); PUT_SOUND_WORD(b); } while (0)
|
||||
#define PUT_SOUND_WORD_RIGHT(b) do { if (currprefs.sound_filter) b = filter (b, &sound_filter_state[1]); PUT_SOUND_WORD(b); } while (0)
|
||||
|
|
|
@ -37,11 +37,11 @@ int produce_sound = 0;
|
|||
int changed_produce_sound = 0;
|
||||
|
||||
// #define SOUND_USE_SEMAPHORES
|
||||
uae_u16 sndbuffer[SOUND_BUFFERS_COUNT][(SNDBUFFER_LEN + 32)*DEFAULT_SOUND_CHANNELS];
|
||||
uae_u16 paula_sndbuffer[SOUND_BUFFERS_COUNT][(SNDBUFFER_LEN + 32)*DEFAULT_SOUND_CHANNELS];
|
||||
unsigned n_callback_sndbuff, n_render_sndbuff;
|
||||
uae_u16 *sndbufpt = sndbuffer[0];
|
||||
uae_u16 *render_sndbuff = sndbuffer[0];
|
||||
uae_u16 *finish_sndbuff = sndbuffer[0] + SNDBUFFER_LEN * 2;
|
||||
uae_u16 *paula_sndbufpt = paula_sndbuffer[0];
|
||||
uae_u16 *render_sndbuff = paula_sndbuffer[0];
|
||||
uae_u16 *finish_sndbuff = paula_sndbuffer[0] + SNDBUFFER_LEN * 2;
|
||||
|
||||
uae_u16 cdaudio_buffer[CDAUDIO_BUFFERS][(CDAUDIO_BUFFER_LEN + 32) * 2];
|
||||
uae_u16 *cdbufpt = cdaudio_buffer[0];
|
||||
|
@ -119,13 +119,13 @@ static void sound_copy_produced_block(void *ud, Uint8 *stream, int len)
|
|||
if (cdaudio_active && currprefs.sound_freq == 44100 && cdrdcnt < cdwrcnt)
|
||||
{
|
||||
for (int i = 0; i < SNDBUFFER_LEN * 2; ++i)
|
||||
sndbuffer[rdcnt % SOUND_BUFFERS_COUNT][i] += cdaudio_buffer[cdrdcnt & (CDAUDIO_BUFFERS - 1)][i];
|
||||
paula_sndbuffer[rdcnt % SOUND_BUFFERS_COUNT][i] += cdaudio_buffer[cdrdcnt & (CDAUDIO_BUFFERS - 1)][i];
|
||||
}
|
||||
|
||||
memcpy(stream, sndbuffer[rdcnt % SOUND_BUFFERS_COUNT], MIN(SNDBUFFER_LEN * 4, len));
|
||||
memcpy(stream, paula_sndbuffer[rdcnt % SOUND_BUFFERS_COUNT], MIN(SNDBUFFER_LEN * 4, len));
|
||||
}
|
||||
else
|
||||
memcpy(stream, sndbuffer[rdcnt % SOUND_BUFFERS_COUNT], MIN(SNDBUFFER_LEN * 2, len));
|
||||
memcpy(stream, paula_sndbuffer[rdcnt % SOUND_BUFFERS_COUNT], MIN(SNDBUFFER_LEN * 2, len));
|
||||
|
||||
|
||||
//cdrdcnt = cdwrcnt;
|
||||
|
@ -171,9 +171,9 @@ static void sound_thread_mixer(void *ud, Uint8 *stream, int len)
|
|||
|
||||
static void init_soundbuffer_usage(void)
|
||||
{
|
||||
sndbufpt = sndbuffer[0];
|
||||
render_sndbuff = sndbuffer[0];
|
||||
finish_sndbuff = sndbuffer[0] + SNDBUFFER_LEN * 2;
|
||||
paula_sndbufpt = paula_sndbuffer[0];
|
||||
render_sndbuff = paula_sndbuffer[0];
|
||||
finish_sndbuff = paula_sndbuffer[0] + SNDBUFFER_LEN * 2;
|
||||
//output_cnt = 0;
|
||||
rdcnt = 0;
|
||||
wrcnt = 0;
|
||||
|
@ -273,13 +273,13 @@ void finish_sound_buffer(void)
|
|||
|
||||
// "GET NEXT PRODUCER BUFFER FOR WRITING"
|
||||
wrcnt++;
|
||||
sndbufpt = render_sndbuff = sndbuffer[wrcnt % SOUND_BUFFERS_COUNT];
|
||||
paula_sndbufpt = render_sndbuff = paula_sndbuffer[wrcnt % SOUND_BUFFERS_COUNT];
|
||||
|
||||
|
||||
if (currprefs.sound_stereo)
|
||||
finish_sndbuff = sndbufpt + SNDBUFFER_LEN * 2;
|
||||
finish_sndbuff = paula_sndbufpt + SNDBUFFER_LEN * 2;
|
||||
else
|
||||
finish_sndbuff = sndbufpt + SNDBUFFER_LEN;
|
||||
finish_sndbuff = paula_sndbufpt + SNDBUFFER_LEN;
|
||||
|
||||
#ifdef SOUND_USE_SEMAPHORES
|
||||
sem_post(&sound_sem);
|
||||
|
@ -301,11 +301,11 @@ void pause_sound_buffer(void)
|
|||
|
||||
void restart_sound_buffer(void)
|
||||
{
|
||||
sndbufpt = render_sndbuff = sndbuffer[wrcnt % SOUND_BUFFERS_COUNT];
|
||||
paula_sndbufpt = render_sndbuff = paula_sndbuffer[wrcnt % SOUND_BUFFERS_COUNT];
|
||||
if (currprefs.sound_stereo)
|
||||
finish_sndbuff = sndbufpt + SNDBUFFER_LEN * 2;
|
||||
finish_sndbuff = paula_sndbufpt + SNDBUFFER_LEN * 2;
|
||||
else
|
||||
finish_sndbuff = sndbufpt + SNDBUFFER_LEN;
|
||||
finish_sndbuff = paula_sndbufpt + SNDBUFFER_LEN;
|
||||
|
||||
cdbufpt = render_cdbuff = cdaudio_buffer[cdwrcnt & (CDAUDIO_BUFFERS - 1)];
|
||||
finish_cdbuff = cdbufpt + CDAUDIO_BUFFER_LEN * 2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue