mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-01-17 20:58:28 +01:00
a1b2fb0124
byuu says: Changelog: * added driver selection * added video scale + aspect correction settings * added A/V sync + audio mute settings * added configuration file * fixed compilation bugs under Windows and Linux * fixed window sizing * removed HSU1 * the system menu stays as "System", because "Game Boy Advance" was too long a string for the smallest scale size * some more stuff You guys probably won't be ecstatic about the video sizing options, but it's basically your choice of 1x, 2x or 4x scale with optional aspect correction. 3x was intentionally skipped because it looks horrible on hires SNES games. The window is resized and recentered upon loading games. The window doesn't resize otherwise. I never really liked the way v094 always left you with black screen areas and left you with off-centered window positions. I might go ahead and add the pseudo-fullscreen toggle that will jump into 4x mode (respecting your aspect setting.) Short-term: * add input port changing support * add other input types (mouse-based, etc) * add save states * add cheat codes * add timing configuration (video/audio sync) * add hotkeys (single state) We can probably do a new release once the short-term items are completed. Long-term: * add slotted cart loader (SGB, BSX, ST) * add DIP switch selection window (NSS) * add cheat code database * add state manager * add overscan masking Not planned: * video color adjustments (will allow emulated color vs raw color; but no more sliders) * pixel shaders * ananke integration (will need to make a command-line version to get my games in) * fancy audio adjustment controls (resampler, latency, volume) * input focus settings * relocating game library (not hard, just don't feel like it) * localization support (not enough users) * window geometry memory * anything else not in higan v094
172 lines
3.7 KiB
C++
172 lines
3.7 KiB
C++
/* Global Headers */
|
|
|
|
#if defined(PLATFORM_XORG)
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xutil.h>
|
|
#include <X11/Xatom.h>
|
|
#elif defined(PLATFORM_MACOSX)
|
|
#define decimal CocoaDecimal
|
|
#include <Cocoa/Cocoa.h>
|
|
#include <Carbon/Carbon.h>
|
|
#undef decimal
|
|
#elif defined(PLATFORM_WINDOWS)
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
using namespace nall;
|
|
|
|
/* Video */
|
|
|
|
#define DeclareVideo(Name) \
|
|
struct Video##Name : Video { \
|
|
bool cap(const string& name) { return p.cap(name); } \
|
|
any get(const string& name) { return p.get(name); } \
|
|
bool set(const string& name, const any& value) { return p.set(name, value); } \
|
|
\
|
|
bool lock(uint32_t*& data, unsigned& pitch, unsigned width, unsigned height) { return p.lock(data, pitch, width, height); } \
|
|
void unlock() { p.unlock(); } \
|
|
\
|
|
void clear() { p.clear(); } \
|
|
void refresh() { p.refresh(); } \
|
|
bool init() { return p.init(); } \
|
|
void term() { p.term(); } \
|
|
\
|
|
Video##Name() : p(*new pVideo##Name) {} \
|
|
~Video##Name() { delete &p; } \
|
|
\
|
|
private: \
|
|
pVideo##Name& p; \
|
|
};
|
|
|
|
#ifdef VIDEO_CGL
|
|
#include <ruby/video/cgl.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_DIRECT3D
|
|
#include <ruby/video/direct3d.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_DIRECTDRAW
|
|
#include <ruby/video/directdraw.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_GDI
|
|
#include <ruby/video/gdi.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_GLX
|
|
#include <ruby/video/glx.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_SDL
|
|
#include <ruby/video/sdl.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_WGL
|
|
#include <ruby/video/wgl.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_XSHM
|
|
#include <ruby/video/xshm.cpp>
|
|
#endif
|
|
|
|
#ifdef VIDEO_XV
|
|
#include <ruby/video/xv.cpp>
|
|
#endif
|
|
|
|
/* Audio */
|
|
|
|
#define DeclareAudio(Name) \
|
|
struct Audio##Name : Audio { \
|
|
bool cap(const string& name) { return p.cap(name); } \
|
|
any get(const string& name) { return p.get(name); } \
|
|
bool set(const string& name, const any& value) { return p.set(name, value); } \
|
|
\
|
|
void sample(uint16_t left, uint16_t right) { p.sample(left, right); } \
|
|
void clear() { p.clear(); } \
|
|
bool init() { return p.init(); } \
|
|
void term() { p.term(); } \
|
|
\
|
|
Audio##Name() : p(*new pAudio##Name) {} \
|
|
~Audio##Name() { delete &p; } \
|
|
\
|
|
private: \
|
|
pAudio##Name& p; \
|
|
};
|
|
|
|
#ifdef AUDIO_ALSA
|
|
#include <ruby/audio/alsa.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_AO
|
|
#include <ruby/audio/ao.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_DIRECTSOUND
|
|
#include <ruby/audio/directsound.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_OPENAL
|
|
#include <ruby/audio/openal.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_OSS
|
|
#include <ruby/audio/oss.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_PULSEAUDIO
|
|
#include <ruby/audio/pulseaudio.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_PULSEAUDIOSIMPLE
|
|
#include <ruby/audio/pulseaudiosimple.cpp>
|
|
#endif
|
|
|
|
#ifdef AUDIO_XAUDIO2
|
|
#include <ruby/audio/xaudio2.cpp>
|
|
#endif
|
|
|
|
/* Input */
|
|
|
|
#define DeclareInput(Name) \
|
|
struct Input##Name : Input { \
|
|
bool cap(const string& name) { return p.cap(name); } \
|
|
any get(const string& name) { return p.get(name); } \
|
|
bool set(const string& name, const any& value) { return p.set(name, value); } \
|
|
\
|
|
bool acquire() { return p.acquire(); } \
|
|
bool unacquire() { return p.unacquire(); } \
|
|
bool acquired() { return p.acquired(); } \
|
|
\
|
|
vector<HID::Device*> poll() { return p.poll(); } \
|
|
bool rumble(uint64_t id, bool enable) { return p.rumble(id, enable); } \
|
|
bool init() { return p.init(); } \
|
|
void term() { p.term(); } \
|
|
\
|
|
Input##Name() : p(*new pInput##Name) {} \
|
|
~Input##Name() { delete &p; } \
|
|
\
|
|
private: \
|
|
pInput##Name& p; \
|
|
};
|
|
|
|
#ifdef INPUT_CARBON
|
|
#include <ruby/input/carbon.cpp>
|
|
#endif
|
|
|
|
#ifdef INPUT_SDL
|
|
#include <ruby/input/sdl.cpp>
|
|
#endif
|
|
|
|
#ifdef INPUT_UDEV
|
|
#include <ruby/input/udev.cpp>
|
|
#endif
|
|
|
|
#ifdef INPUT_WINDOWS
|
|
#include <ruby/input/windows.cpp>
|
|
#endif
|
|
|
|
#ifdef INPUT_XLIB
|
|
#include <ruby/input/xlib.cpp>
|
|
#endif
|