mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-11-27 21:14:21 +01:00
Finish update to snes9x 1.56 master. Disable multi pixel format support
for a speed boost.
This commit is contained in:
parent
d895bf6300
commit
a9f851a19f
@ -15,7 +15,7 @@ Wii homebrew is WiiBrew (www.wiibrew.org).
|
|||||||
| FEATURES |
|
| FEATURES |
|
||||||
•˜———–—––-- - —————————––––– ———–—––-- - —————————––––– ———–—––-- - ————————•
|
•˜———–—––-- - —————————––––– ———–—––-- - —————————––––– ———–—––-- - ————————•
|
||||||
|
|
||||||
* Based on Snes9x 1.52
|
* Based on Snes9x 1.56 (with faster Blargg S-SMP module)
|
||||||
* Wiimote, Nunchuk, Classic, and Gamecube controller support
|
* Wiimote, Nunchuk, Classic, and Gamecube controller support
|
||||||
* SNES Superscope, Mouse, Justifier support
|
* SNES Superscope, Mouse, Justifier support
|
||||||
* Cheat support
|
* Cheat support
|
||||||
@ -34,6 +34,9 @@ Wii homebrew is WiiBrew (www.wiibrew.org).
|
|||||||
|
|
||||||
[4.3.8]
|
[4.3.8]
|
||||||
|
|
||||||
|
* Updated core to 1.56 (with less accurate but faster Blargg audio core)
|
||||||
|
* Memory optimizations to free up more MEM1 for Snes9x
|
||||||
|
* Disable multi pixel format support for a speed boost
|
||||||
* Add MSU1 support (thanks qwertymodo!)
|
* Add MSU1 support (thanks qwertymodo!)
|
||||||
* Add BPS soft-patching support (thanks qwertymodo!)
|
* Add BPS soft-patching support (thanks qwertymodo!)
|
||||||
* Allow loader to pass two arguments instead of three (libertyernie)
|
* Allow loader to pass two arguments instead of three (libertyernie)
|
||||||
|
@ -1185,26 +1185,6 @@ static int MenuGame()
|
|||||||
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
titleTxt.SetPosition(50,40);
|
titleTxt.SetPosition(50,40);
|
||||||
|
|
||||||
char memInfo[128];
|
|
||||||
memset(&memInfo[0], 0, 128);
|
|
||||||
#ifdef USE_VM
|
|
||||||
sprintf(&memInfo[0], "Memory Free: RAM %.2fMB VM %.2fMB"
|
|
||||||
,((float)((u32)SYS_GetArena1Hi()-(u32)SYS_GetArena1Lo())/1024/1024)
|
|
||||||
,((float)(vm_size_free())/1024/1024));
|
|
||||||
#else
|
|
||||||
#ifdef HW_RVL
|
|
||||||
sprintf(&memInfo[0], "Memory Free: MEM1 %.2fMB MEM2 %.2fMB"
|
|
||||||
,((float)((u32)SYS_GetArena1Hi()-(u32)SYS_GetArena1Lo())/1024/1024)
|
|
||||||
,((float)((u32)SYS_GetArena2Hi()-(u32)SYS_GetArena2Lo())/1024/1024));
|
|
||||||
#else
|
|
||||||
sprintf(&memInfo[0], "Memory Free: RAM %.2fMB"
|
|
||||||
,((float)((u32)SYS_GetArena1Hi()-(u32)SYS_GetArena1Lo())/1024/1024));
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
GuiText memTxt(memInfo, 18, (GXColor){255, 255, 255, 255});
|
|
||||||
memTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
||||||
memTxt.SetPosition(50,70);
|
|
||||||
|
|
||||||
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM);
|
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM);
|
||||||
GuiSound btnSoundClick(button_click_pcm, button_click_pcm_size, SOUND_PCM);
|
GuiSound btnSoundClick(button_click_pcm, button_click_pcm_size, SOUND_PCM);
|
||||||
GuiImageData btnOutline(button_png);
|
GuiImageData btnOutline(button_png);
|
||||||
@ -1388,7 +1368,6 @@ static int MenuGame()
|
|||||||
HaltGui();
|
HaltGui();
|
||||||
GuiWindow w(screenwidth, screenheight);
|
GuiWindow w(screenwidth, screenheight);
|
||||||
w.Append(&titleTxt);
|
w.Append(&titleTxt);
|
||||||
w.Append(&memTxt);
|
|
||||||
w.Append(&saveBtn);
|
w.Append(&saveBtn);
|
||||||
w.Append(&loadBtn);
|
w.Append(&loadBtn);
|
||||||
w.Append(&deleteBtn);
|
w.Append(&deleteBtn);
|
||||||
@ -1415,7 +1394,6 @@ static int MenuGame()
|
|||||||
bgTopImg->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
bgTopImg->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
||||||
closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
||||||
titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
||||||
memTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 35);
|
|
||||||
mainmenuBtn.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 35);
|
mainmenuBtn.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 35);
|
||||||
bgBottomImg->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 35);
|
bgBottomImg->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 35);
|
||||||
btnLogo->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 35);
|
btnLogo->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 35);
|
||||||
@ -1530,7 +1508,6 @@ static int MenuGame()
|
|||||||
bgTopImg->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
bgTopImg->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
||||||
closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
||||||
titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
||||||
memTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 15);
|
|
||||||
mainmenuBtn.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 15);
|
mainmenuBtn.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 15);
|
||||||
bgBottomImg->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 15);
|
bgBottomImg->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 15);
|
||||||
btnLogo->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 15);
|
btnLogo->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 15);
|
||||||
|
@ -1,186 +0,0 @@
|
|||||||
// Sets up common environment for Shay Green's libraries.
|
|
||||||
// To change configuration options, modify blargg_config.h, not this file.
|
|
||||||
|
|
||||||
// snes_spc 0.9.0
|
|
||||||
#ifndef BLARGG_COMMON_H
|
|
||||||
#define BLARGG_COMMON_H
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#undef BLARGG_COMMON_H
|
|
||||||
// allow blargg_config.h to #include blargg_common.h
|
|
||||||
#include "blargg_config.h"
|
|
||||||
#ifndef BLARGG_COMMON_H
|
|
||||||
#define BLARGG_COMMON_H
|
|
||||||
|
|
||||||
// BLARGG_RESTRICT: equivalent to restrict, where supported
|
|
||||||
#if defined (__GNUC__) || _MSC_VER >= 1100
|
|
||||||
#define BLARGG_RESTRICT __restrict
|
|
||||||
#else
|
|
||||||
#define BLARGG_RESTRICT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// STATIC_CAST(T,expr): Used in place of static_cast<T> (expr)
|
|
||||||
#ifndef STATIC_CAST
|
|
||||||
#define STATIC_CAST(T,expr) ((T) (expr))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// blargg_err_t (0 on success, otherwise error string)
|
|
||||||
#ifndef blargg_err_t
|
|
||||||
typedef const char* blargg_err_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// blargg_vector - very lightweight vector of POD types (no constructor/destructor)
|
|
||||||
template<class T>
|
|
||||||
class blargg_vector {
|
|
||||||
T* begin_;
|
|
||||||
size_t size_;
|
|
||||||
public:
|
|
||||||
blargg_vector() : begin_( 0 ), size_( 0 ) { }
|
|
||||||
~blargg_vector() { free( begin_ ); }
|
|
||||||
size_t size() const { return size_; }
|
|
||||||
T* begin() const { return begin_; }
|
|
||||||
T* end() const { return begin_ + size_; }
|
|
||||||
blargg_err_t resize( size_t n )
|
|
||||||
{
|
|
||||||
// TODO: blargg_common.cpp to hold this as an outline function, ugh
|
|
||||||
void* p = realloc( begin_, n * sizeof (T) );
|
|
||||||
if ( p )
|
|
||||||
begin_ = (T*) p;
|
|
||||||
else if ( n > size_ ) // realloc failure only a problem if expanding
|
|
||||||
return "Out of memory";
|
|
||||||
size_ = n;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
void clear() { void* p = begin_; begin_ = 0; size_ = 0; free( p ); }
|
|
||||||
T& operator [] ( size_t n ) const
|
|
||||||
{
|
|
||||||
assert( n <= size_ ); // <= to allow past-the-end value
|
|
||||||
return begin_ [n];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifndef BLARGG_DISABLE_NOTHROW
|
|
||||||
// throw spec mandatory in ISO C++ if operator new can return NULL
|
|
||||||
#if __cplusplus >= 199711 || defined (__GNUC__)
|
|
||||||
#define BLARGG_THROWS( spec ) throw spec
|
|
||||||
#else
|
|
||||||
#define BLARGG_THROWS( spec )
|
|
||||||
#endif
|
|
||||||
#define BLARGG_DISABLE_NOTHROW \
|
|
||||||
void* operator new ( size_t s ) BLARGG_THROWS(()) { return malloc( s ); }\
|
|
||||||
void operator delete ( void* p ) { free( p ); }
|
|
||||||
#define BLARGG_NEW new
|
|
||||||
#else
|
|
||||||
#include <new>
|
|
||||||
#define BLARGG_NEW new (std::nothrow)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// BLARGG_4CHAR('a','b','c','d') = 'abcd' (four character integer constant)
|
|
||||||
#define BLARGG_4CHAR( a, b, c, d ) \
|
|
||||||
((a&0xFF)*0x1000000L + (b&0xFF)*0x10000L + (c&0xFF)*0x100L + (d&0xFF))
|
|
||||||
|
|
||||||
// BOOST_STATIC_ASSERT( expr ): Generates compile error if expr is 0.
|
|
||||||
#ifndef BOOST_STATIC_ASSERT
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
// MSVC6 (_MSC_VER < 1300) fails for use of __LINE__ when /Zl is specified
|
|
||||||
#define BOOST_STATIC_ASSERT( expr ) \
|
|
||||||
void blargg_failed_( int (*arg) [2 / (int) !!(expr) - 1] )
|
|
||||||
#else
|
|
||||||
// Some other compilers fail when declaring same function multiple times in class,
|
|
||||||
// so differentiate them by line
|
|
||||||
#define BOOST_STATIC_ASSERT( expr ) \
|
|
||||||
void blargg_failed_( int (*arg) [2 / !!(expr) - 1] [__LINE__] )
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// BLARGG_COMPILER_HAS_BOOL: If 0, provides bool support for old compiler. If 1,
|
|
||||||
// compiler is assumed to support bool. If undefined, availability is determined.
|
|
||||||
#ifndef BLARGG_COMPILER_HAS_BOOL
|
|
||||||
#if defined (__MWERKS__)
|
|
||||||
#if !__option(bool)
|
|
||||||
#define BLARGG_COMPILER_HAS_BOOL 0
|
|
||||||
#endif
|
|
||||||
#elif defined (_MSC_VER)
|
|
||||||
#if _MSC_VER < 1100
|
|
||||||
#define BLARGG_COMPILER_HAS_BOOL 0
|
|
||||||
#endif
|
|
||||||
#elif defined (__GNUC__)
|
|
||||||
// supports bool
|
|
||||||
#elif __cplusplus < 199711
|
|
||||||
#define BLARGG_COMPILER_HAS_BOOL 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if defined (BLARGG_COMPILER_HAS_BOOL) && !BLARGG_COMPILER_HAS_BOOL
|
|
||||||
// If you get errors here, modify your blargg_config.h file
|
|
||||||
typedef int bool;
|
|
||||||
const bool true = 1;
|
|
||||||
const bool false = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// blargg_long/blargg_ulong = at least 32 bits, int if it's big enough
|
|
||||||
|
|
||||||
#if INT_MAX < 0x7FFFFFFF || LONG_MAX == 0x7FFFFFFF
|
|
||||||
typedef long blargg_long;
|
|
||||||
#else
|
|
||||||
typedef int blargg_long;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UINT_MAX < 0xFFFFFFFF || ULONG_MAX == 0xFFFFFFFF
|
|
||||||
typedef unsigned long blargg_ulong;
|
|
||||||
#else
|
|
||||||
typedef unsigned blargg_ulong;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// BOOST::int8_t etc.
|
|
||||||
|
|
||||||
// HAVE_STDINT_H: If defined, use <stdint.h> for int8_t etc.
|
|
||||||
#if defined (HAVE_STDINT_H)
|
|
||||||
#include <stdint.h>
|
|
||||||
#define BOOST
|
|
||||||
|
|
||||||
// HAVE_INTTYPES_H: If defined, use <stdint.h> for int8_t etc.
|
|
||||||
#elif defined (HAVE_INTTYPES_H)
|
|
||||||
#include <inttypes.h>
|
|
||||||
#define BOOST
|
|
||||||
|
|
||||||
#else
|
|
||||||
struct BOOST
|
|
||||||
{
|
|
||||||
#if UCHAR_MAX == 0xFF && SCHAR_MAX == 0x7F
|
|
||||||
typedef signed char int8_t;
|
|
||||||
typedef unsigned char uint8_t;
|
|
||||||
#else
|
|
||||||
// No suitable 8-bit type available
|
|
||||||
typedef struct see_blargg_common_h int8_t;
|
|
||||||
typedef struct see_blargg_common_h uint8_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if USHRT_MAX == 0xFFFF
|
|
||||||
typedef short int16_t;
|
|
||||||
typedef unsigned short uint16_t;
|
|
||||||
#else
|
|
||||||
// No suitable 16-bit type available
|
|
||||||
typedef struct see_blargg_common_h int16_t;
|
|
||||||
typedef struct see_blargg_common_h uint16_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ULONG_MAX == 0xFFFFFFFF
|
|
||||||
typedef long int32_t;
|
|
||||||
typedef unsigned long uint32_t;
|
|
||||||
#elif UINT_MAX == 0xFFFFFFFF
|
|
||||||
typedef int int32_t;
|
|
||||||
typedef unsigned int uint32_t;
|
|
||||||
#else
|
|
||||||
// No suitable 32-bit type available
|
|
||||||
typedef struct see_blargg_common_h int32_t;
|
|
||||||
typedef struct see_blargg_common_h uint32_t;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
@ -1,24 +0,0 @@
|
|||||||
// snes_spc 0.9.0 user configuration file. Don't replace when updating library.
|
|
||||||
|
|
||||||
// snes_spc 0.9.0
|
|
||||||
#ifndef BLARGG_CONFIG_H
|
|
||||||
#define BLARGG_CONFIG_H
|
|
||||||
|
|
||||||
// Uncomment to disable debugging checks
|
|
||||||
#define NDEBUG 1
|
|
||||||
|
|
||||||
// Uncomment to enable platform-specific (and possibly non-portable) optimizations
|
|
||||||
//#define BLARGG_NONPORTABLE 1
|
|
||||||
|
|
||||||
// Uncomment if automatic byte-order determination doesn't work
|
|
||||||
//#define BLARGG_BIG_ENDIAN 1
|
|
||||||
|
|
||||||
// Uncomment if you get errors in the bool section of blargg_common.h
|
|
||||||
//#define BLARGG_COMPILER_HAS_BOOL 1
|
|
||||||
|
|
||||||
// Use standard config.h if present
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,185 +0,0 @@
|
|||||||
// CPU Byte Order Utilities
|
|
||||||
|
|
||||||
// snes_spc 0.9.0
|
|
||||||
#ifndef BLARGG_ENDIAN
|
|
||||||
#define BLARGG_ENDIAN
|
|
||||||
|
|
||||||
#include "blargg_common.h"
|
|
||||||
|
|
||||||
// BLARGG_CPU_CISC: Defined if CPU has very few general-purpose registers (< 16)
|
|
||||||
#if defined (_M_IX86) || defined (_M_IA64) || defined (__i486__) || \
|
|
||||||
defined (__x86_64__) || defined (__ia64__) || defined (__i386__)
|
|
||||||
#define BLARGG_CPU_X86 1
|
|
||||||
#define BLARGG_CPU_CISC 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (__powerpc__) || defined (__ppc__) || defined (__POWERPC__) || defined (__powerc)
|
|
||||||
#define BLARGG_CPU_POWERPC 1
|
|
||||||
#define BLARGG_CPU_RISC 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// BLARGG_BIG_ENDIAN, BLARGG_LITTLE_ENDIAN: Determined automatically, otherwise only
|
|
||||||
// one may be #defined to 1. Only needed if something actually depends on byte order.
|
|
||||||
#if !defined (BLARGG_BIG_ENDIAN) && !defined (BLARGG_LITTLE_ENDIAN)
|
|
||||||
#ifdef __GLIBC__
|
|
||||||
// GCC handles this for us
|
|
||||||
#include <endian.h>
|
|
||||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
||||||
#define BLARGG_LITTLE_ENDIAN 1
|
|
||||||
#elif __BYTE_ORDER == __BIG_ENDIAN
|
|
||||||
#define BLARGG_BIG_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
|
|
||||||
#if defined (LSB_FIRST) || defined (__LITTLE_ENDIAN__) || BLARGG_CPU_X86 || \
|
|
||||||
(defined (LITTLE_ENDIAN) && LITTLE_ENDIAN+0 != 1234)
|
|
||||||
#define BLARGG_LITTLE_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (MSB_FIRST) || defined (__BIG_ENDIAN__) || defined (WORDS_BIGENDIAN) || \
|
|
||||||
defined (__sparc__) || BLARGG_CPU_POWERPC || \
|
|
||||||
(defined (BIG_ENDIAN) && BIG_ENDIAN+0 != 4321)
|
|
||||||
#define BLARGG_BIG_ENDIAN 1
|
|
||||||
#elif !defined (__mips__)
|
|
||||||
// No endian specified; assume little-endian, since it's most common
|
|
||||||
#define BLARGG_LITTLE_ENDIAN 1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BLARGG_LITTLE_ENDIAN && BLARGG_BIG_ENDIAN
|
|
||||||
#undef BLARGG_LITTLE_ENDIAN
|
|
||||||
#undef BLARGG_BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline void blargg_verify_byte_order()
|
|
||||||
{
|
|
||||||
#ifndef NDEBUG
|
|
||||||
#if BLARGG_BIG_ENDIAN
|
|
||||||
volatile int i = 1;
|
|
||||||
assert( *(volatile char*) &i == 0 );
|
|
||||||
#elif BLARGG_LITTLE_ENDIAN
|
|
||||||
volatile int i = 1;
|
|
||||||
assert( *(volatile char*) &i != 0 );
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
inline unsigned get_le16( void const* p )
|
|
||||||
{
|
|
||||||
return (unsigned) ((unsigned char const*) p) [1] << 8 |
|
|
||||||
(unsigned) ((unsigned char const*) p) [0];
|
|
||||||
}
|
|
||||||
|
|
||||||
inline unsigned get_be16( void const* p )
|
|
||||||
{
|
|
||||||
return (unsigned) ((unsigned char const*) p) [0] << 8 |
|
|
||||||
(unsigned) ((unsigned char const*) p) [1];
|
|
||||||
}
|
|
||||||
|
|
||||||
inline blargg_ulong get_le32( void const* p )
|
|
||||||
{
|
|
||||||
return (blargg_ulong) ((unsigned char const*) p) [3] << 24 |
|
|
||||||
(blargg_ulong) ((unsigned char const*) p) [2] << 16 |
|
|
||||||
(blargg_ulong) ((unsigned char const*) p) [1] << 8 |
|
|
||||||
(blargg_ulong) ((unsigned char const*) p) [0];
|
|
||||||
}
|
|
||||||
|
|
||||||
inline blargg_ulong get_be32( void const* p )
|
|
||||||
{
|
|
||||||
return (blargg_ulong) ((unsigned char const*) p) [0] << 24 |
|
|
||||||
(blargg_ulong) ((unsigned char const*) p) [1] << 16 |
|
|
||||||
(blargg_ulong) ((unsigned char const*) p) [2] << 8 |
|
|
||||||
(blargg_ulong) ((unsigned char const*) p) [3];
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void set_le16( void* p, unsigned n )
|
|
||||||
{
|
|
||||||
((unsigned char*) p) [1] = (unsigned char) (n >> 8);
|
|
||||||
((unsigned char*) p) [0] = (unsigned char) n;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void set_be16( void* p, unsigned n )
|
|
||||||
{
|
|
||||||
((unsigned char*) p) [0] = (unsigned char) (n >> 8);
|
|
||||||
((unsigned char*) p) [1] = (unsigned char) n;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void set_le32( void* p, blargg_ulong n )
|
|
||||||
{
|
|
||||||
((unsigned char*) p) [0] = (unsigned char) n;
|
|
||||||
((unsigned char*) p) [1] = (unsigned char) (n >> 8);
|
|
||||||
((unsigned char*) p) [2] = (unsigned char) (n >> 16);
|
|
||||||
((unsigned char*) p) [3] = (unsigned char) (n >> 24);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void set_be32( void* p, blargg_ulong n )
|
|
||||||
{
|
|
||||||
((unsigned char*) p) [3] = (unsigned char) n;
|
|
||||||
((unsigned char*) p) [2] = (unsigned char) (n >> 8);
|
|
||||||
((unsigned char*) p) [1] = (unsigned char) (n >> 16);
|
|
||||||
((unsigned char*) p) [0] = (unsigned char) (n >> 24);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if BLARGG_NONPORTABLE
|
|
||||||
// Optimized implementation if byte order is known
|
|
||||||
#if BLARGG_LITTLE_ENDIAN
|
|
||||||
#define GET_LE16( addr ) (*(BOOST::uint16_t*) (addr))
|
|
||||||
#define GET_LE32( addr ) (*(BOOST::uint32_t*) (addr))
|
|
||||||
#define SET_LE16( addr, data ) (void) (*(BOOST::uint16_t*) (addr) = (data))
|
|
||||||
#define SET_LE32( addr, data ) (void) (*(BOOST::uint32_t*) (addr) = (data))
|
|
||||||
#elif BLARGG_BIG_ENDIAN
|
|
||||||
#define GET_BE16( addr ) (*(BOOST::uint16_t*) (addr))
|
|
||||||
#define GET_BE32( addr ) (*(BOOST::uint32_t*) (addr))
|
|
||||||
#define SET_BE16( addr, data ) (void) (*(BOOST::uint16_t*) (addr) = (data))
|
|
||||||
#define SET_BE32( addr, data ) (void) (*(BOOST::uint32_t*) (addr) = (data))
|
|
||||||
|
|
||||||
#if BLARGG_CPU_POWERPC
|
|
||||||
// PowerPC has special byte-reversed instructions
|
|
||||||
#if defined (__MWERKS__)
|
|
||||||
#define GET_LE16( addr ) (__lhbrx( addr, 0 ))
|
|
||||||
#define GET_LE32( addr ) (__lwbrx( addr, 0 ))
|
|
||||||
#define SET_LE16( addr, in ) (__sthbrx( in, addr, 0 ))
|
|
||||||
#define SET_LE32( addr, in ) (__stwbrx( in, addr, 0 ))
|
|
||||||
#elif defined (__GNUC__)
|
|
||||||
#define GET_LE16( addr ) ({unsigned ppc_lhbrx_; asm( "lhbrx %0,0,%1" : "=r" (ppc_lhbrx_) : "r" (addr), "0" (ppc_lhbrx_) ); ppc_lhbrx_;})
|
|
||||||
#define GET_LE32( addr ) ({unsigned ppc_lwbrx_; asm( "lwbrx %0,0,%1" : "=r" (ppc_lwbrx_) : "r" (addr), "0" (ppc_lwbrx_) ); ppc_lwbrx_;})
|
|
||||||
#define SET_LE16( addr, in ) ({asm( "sthbrx %0,0,%1" : : "r" (in), "r" (addr) );})
|
|
||||||
#define SET_LE32( addr, in ) ({asm( "stwbrx %0,0,%1" : : "r" (in), "r" (addr) );})
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GET_LE16
|
|
||||||
#define GET_LE16( addr ) get_le16( addr )
|
|
||||||
#define SET_LE16( addr, data ) set_le16( addr, data )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GET_LE32
|
|
||||||
#define GET_LE32( addr ) get_le32( addr )
|
|
||||||
#define SET_LE32( addr, data ) set_le32( addr, data )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GET_BE16
|
|
||||||
#define GET_BE16( addr ) get_be16( addr )
|
|
||||||
#define SET_BE16( addr, data ) set_be16( addr, data )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GET_BE32
|
|
||||||
#define GET_BE32( addr ) get_be32( addr )
|
|
||||||
#define SET_BE32( addr, data ) set_be32( addr, data )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// auto-selecting versions
|
|
||||||
|
|
||||||
inline void set_le( BOOST::uint16_t* p, unsigned n ) { SET_LE16( p, n ); }
|
|
||||||
inline void set_le( BOOST::uint32_t* p, blargg_ulong n ) { SET_LE32( p, n ); }
|
|
||||||
inline void set_be( BOOST::uint16_t* p, unsigned n ) { SET_BE16( p, n ); }
|
|
||||||
inline void set_be( BOOST::uint32_t* p, blargg_ulong n ) { SET_BE32( p, n ); }
|
|
||||||
inline unsigned get_le( BOOST::uint16_t* p ) { return GET_LE16( p ); }
|
|
||||||
inline blargg_ulong get_le( BOOST::uint32_t* p ) { return GET_LE32( p ); }
|
|
||||||
inline unsigned get_be( BOOST::uint16_t* p ) { return GET_BE16( p ); }
|
|
||||||
inline blargg_ulong get_be( BOOST::uint32_t* p ) { return GET_BE32( p ); }
|
|
||||||
|
|
||||||
#endif
|
|
@ -196,7 +196,7 @@
|
|||||||
#include "memmap.h"
|
#include "memmap.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "msu1.h"
|
#include "msu1.h"
|
||||||
#include "apu/bapu/dsp/blargg_endian.h"
|
#include "apu/blargg_endian.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
@ -17,13 +17,20 @@
|
|||||||
|
|
||||||
(c) Copyright 2002 - 2010 Brad Jorsch (anomie@users.sourceforge.net),
|
(c) Copyright 2002 - 2010 Brad Jorsch (anomie@users.sourceforge.net),
|
||||||
Nach (n-a-c-h@users.sourceforge.net),
|
Nach (n-a-c-h@users.sourceforge.net),
|
||||||
zones (kasumitokoduck@yahoo.com)
|
|
||||||
|
(c) Copyright 2002 - 2011 zones (kasumitokoduck@yahoo.com)
|
||||||
|
|
||||||
(c) Copyright 2006 - 2007 nitsuja
|
(c) Copyright 2006 - 2007 nitsuja
|
||||||
|
|
||||||
(c) Copyright 2009 - 2010 BearOso,
|
(c) Copyright 2009 - 2018 BearOso,
|
||||||
OV2
|
OV2
|
||||||
|
|
||||||
|
(c) Copyright 2017 qwertymodo
|
||||||
|
|
||||||
|
(c) Copyright 2011 - 2017 Hans-Kristian Arntzen,
|
||||||
|
Daniel De Matteis
|
||||||
|
(Under no circumstances will commercial rights be given)
|
||||||
|
|
||||||
|
|
||||||
BS-X C emulator code
|
BS-X C emulator code
|
||||||
(c) Copyright 2005 - 2006 Dreamer Nom,
|
(c) Copyright 2005 - 2006 Dreamer Nom,
|
||||||
@ -117,6 +124,9 @@
|
|||||||
Sound emulator code used in 1.52+
|
Sound emulator code used in 1.52+
|
||||||
(c) Copyright 2004 - 2007 Shay Green (gblargg@gmail.com)
|
(c) Copyright 2004 - 2007 Shay Green (gblargg@gmail.com)
|
||||||
|
|
||||||
|
S-SMP emulator code used in 1.54+
|
||||||
|
(c) Copyright 2016 byuu
|
||||||
|
|
||||||
SH assembler code partly based on x86 assembler code
|
SH assembler code partly based on x86 assembler code
|
||||||
(c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
|
(c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
|
||||||
|
|
||||||
@ -130,7 +140,7 @@
|
|||||||
(c) Copyright 2006 - 2007 Shay Green
|
(c) Copyright 2006 - 2007 Shay Green
|
||||||
|
|
||||||
GTK+ GUI code
|
GTK+ GUI code
|
||||||
(c) Copyright 2004 - 2010 BearOso
|
(c) Copyright 2004 - 2018 BearOso
|
||||||
|
|
||||||
Win32 GUI code
|
Win32 GUI code
|
||||||
(c) Copyright 2003 - 2006 blip,
|
(c) Copyright 2003 - 2006 blip,
|
||||||
@ -138,11 +148,16 @@
|
|||||||
Matthew Kendora,
|
Matthew Kendora,
|
||||||
Nach,
|
Nach,
|
||||||
nitsuja
|
nitsuja
|
||||||
(c) Copyright 2009 - 2010 OV2
|
(c) Copyright 2009 - 2018 OV2
|
||||||
|
|
||||||
Mac OS GUI code
|
Mac OS GUI code
|
||||||
(c) Copyright 1998 - 2001 John Stiles
|
(c) Copyright 1998 - 2001 John Stiles
|
||||||
(c) Copyright 2001 - 2010 zones
|
(c) Copyright 2001 - 2011 zones
|
||||||
|
|
||||||
|
Libretro port
|
||||||
|
(c) Copyright 2011 - 2017 Hans-Kristian Arntzen,
|
||||||
|
Daniel De Matteis
|
||||||
|
(Under no circumstances will commercial rights be given)
|
||||||
|
|
||||||
|
|
||||||
Specific ports contains the works of other authors. See headers in
|
Specific ports contains the works of other authors. See headers in
|
||||||
@ -181,7 +196,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#ifndef GEKKO
|
#ifndef __LIBRETRO__
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#endif
|
#endif
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
@ -196,14 +211,19 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define GFX_MULTI_FORMAT
|
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
//#define RIGHTSHIFT_IS_SAR
|
//#define RIGHTSHIFT_IS_SAR
|
||||||
#define RIGHTSHIFT_int8_IS_SAR
|
#define RIGHTSHIFT_int8_IS_SAR
|
||||||
#define RIGHTSHIFT_int16_IS_SAR
|
#define RIGHTSHIFT_int16_IS_SAR
|
||||||
#define RIGHTSHIFT_int32_IS_SAR
|
#define RIGHTSHIFT_int32_IS_SAR
|
||||||
|
#ifndef __LIBRETRO__
|
||||||
#define SNES_JOY_READ_CALLBACKS
|
#define SNES_JOY_READ_CALLBACKS
|
||||||
|
#define GFX_MULTI_FORMAT
|
||||||
|
#endif //__LIBRETRO__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __LIBRETRO__
|
||||||
|
#define GFX_MULTI_FORMAT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __MACOSX__
|
#ifdef __MACOSX__
|
||||||
@ -211,6 +231,10 @@
|
|||||||
#define PIXEL_FORMAT RGB555
|
#define PIXEL_FORMAT RGB555
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIXEL_FORMAT
|
||||||
|
#define PIXEL_FORMAT RGB565
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef snes9x_types_defined
|
#ifndef snes9x_types_defined
|
||||||
#define snes9x_types_defined
|
#define snes9x_types_defined
|
||||||
typedef unsigned char bool8;
|
typedef unsigned char bool8;
|
||||||
@ -228,30 +252,22 @@ typedef uint64_t uint64;
|
|||||||
#else // HAVE_STDINT_H
|
#else // HAVE_STDINT_H
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
typedef intptr_t pint;
|
typedef intptr_t pint;
|
||||||
#else // __WIN32__
|
|
||||||
#ifdef PTR_NOT_INT
|
|
||||||
typedef long pint;
|
|
||||||
#else
|
|
||||||
typedef int pint;
|
|
||||||
#endif
|
|
||||||
#endif // __WIN32__
|
|
||||||
#ifdef __WIN32__
|
|
||||||
#ifdef __BORLANDC__
|
|
||||||
#include <systypes.h>
|
|
||||||
#else
|
|
||||||
typedef signed char int8;
|
typedef signed char int8;
|
||||||
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
||||||
typedef signed short int16;
|
typedef signed short int16;
|
||||||
typedef unsigned short uint16;
|
typedef unsigned short uint16;
|
||||||
#ifndef WSAAP
|
|
||||||
// winsock2.h typedefs int32 as well
|
|
||||||
typedef signed int int32;
|
typedef signed int int32;
|
||||||
#endif
|
|
||||||
typedef unsigned int uint32;
|
typedef unsigned int uint32;
|
||||||
#endif
|
|
||||||
typedef unsigned char uint8_t;
|
|
||||||
typedef signed __int64 int64;
|
typedef signed __int64 int64;
|
||||||
typedef unsigned __int64 uint64;
|
typedef unsigned __int64 uint64;
|
||||||
|
typedef int8 int8_t;
|
||||||
|
typedef uint8 uint8_t;
|
||||||
|
typedef int16 int16_t;
|
||||||
|
typedef uint16 uint16_t;
|
||||||
|
typedef int32 int32_t;
|
||||||
|
typedef uint32 uint32_t;
|
||||||
|
typedef int64 int64_t;
|
||||||
|
typedef uint64 uint64_t;
|
||||||
typedef int socklen_t;
|
typedef int socklen_t;
|
||||||
#else // __WIN32__
|
#else // __WIN32__
|
||||||
typedef signed char int8;
|
typedef signed char int8;
|
||||||
@ -266,6 +282,11 @@ __extension__
|
|||||||
#endif
|
#endif
|
||||||
typedef long long int64;
|
typedef long long int64;
|
||||||
typedef unsigned long long uint64;
|
typedef unsigned long long uint64;
|
||||||
|
#ifdef PTR_NOT_INT
|
||||||
|
typedef size_t pint;
|
||||||
|
#else // __PTR_NOT_INT
|
||||||
|
typedef size_t pint;
|
||||||
|
#endif // __PTR_NOT_INT
|
||||||
#endif // __WIN32__
|
#endif // __WIN32__
|
||||||
#endif // HAVE_STDINT_H
|
#endif // HAVE_STDINT_H
|
||||||
#endif // snes9x_types_defined
|
#endif // snes9x_types_defined
|
||||||
@ -296,21 +317,24 @@ typedef unsigned long long uint64;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __WIN32__
|
#ifndef __WIN32__
|
||||||
#define ZeroMemory(a, b) memset((a), 0, (b))
|
|
||||||
void _splitpath (const char *, char *, char *, char *, char *);
|
void _splitpath (const char *, char *, char *, char *, char *);
|
||||||
void _makepath (char *, const char *, const char *, const char *, const char *);
|
void _makepath (char *, const char *, const char *, const char *, const char *);
|
||||||
#define S9xDisplayString DisplayStringFromBottom
|
#define S9xDisplayString DisplayStringFromBottom
|
||||||
#else
|
#else // __WIN32__
|
||||||
#define snprintf _snprintf
|
#define snprintf _snprintf
|
||||||
#define strcasecmp stricmp
|
#define strcasecmp stricmp
|
||||||
#define strncasecmp strnicmp
|
#define strncasecmp strnicmp
|
||||||
|
#ifndef __LIBRETRO__
|
||||||
void WinDisplayStringFromBottom(const char *string, int linesFromBottom, int pixelsFromLeft, bool allowWrap);
|
void WinDisplayStringFromBottom(const char *string, int linesFromBottom, int pixelsFromLeft, bool allowWrap);
|
||||||
#define S9xDisplayString WinDisplayStringFromBottom
|
#define S9xDisplayString WinDisplayStringFromBottom
|
||||||
void SetInfoDlgColor(unsigned char, unsigned char, unsigned char);
|
void SetInfoDlgColor(unsigned char, unsigned char, unsigned char);
|
||||||
#define SET_UI_COLOR(r,g,b) SetInfoDlgColor(r,g,b)
|
#define SET_UI_COLOR(r,g,b) SetInfoDlgColor(r,g,b)
|
||||||
#endif
|
#else // __LIBRETRO__
|
||||||
|
#define S9xDisplayString DisplayStringFromBottom
|
||||||
|
#endif // __LIBRETRO__
|
||||||
|
#endif // __WIN32__
|
||||||
|
|
||||||
#ifdef __DJGPP
|
#if defined(__DJGPP) || defined(__WIN32__)
|
||||||
#define SLASH_STR "\\"
|
#define SLASH_STR "\\"
|
||||||
#define SLASH_CHAR '\\'
|
#define SLASH_CHAR '\\'
|
||||||
#else
|
#else
|
||||||
@ -331,7 +355,7 @@ void SetInfoDlgColor(unsigned char, unsigned char, unsigned char);
|
|||||||
#define TITLE "Snes9x"
|
#define TITLE "Snes9x"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__x86_64__) || defined(__alpha__) || defined(__MIPSEL__) || defined(_M_IX86) || defined(_M_X64)
|
#if defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__x86_64__) || defined(__alpha__) || defined(__MIPSEL__) || defined(_M_IX86) || defined(_M_X64) || defined(_XBOX1) || defined(ARM) || defined(ANDROID)
|
||||||
#define LSB_FIRST
|
#define LSB_FIRST
|
||||||
#define FAST_LSB_WORD_ACCESS
|
#define FAST_LSB_WORD_ACCESS
|
||||||
#else
|
#else
|
||||||
|
@ -573,7 +573,8 @@ static FreezeData SnapControls[] =
|
|||||||
ARRAY_ENTRY(6, dummy3, 8, uint8_ARRAY_V),
|
ARRAY_ENTRY(6, dummy3, 8, uint8_ARRAY_V),
|
||||||
INT_ENTRY(6, pad_read),
|
INT_ENTRY(6, pad_read),
|
||||||
INT_ENTRY(6, pad_read_last),
|
INT_ENTRY(6, pad_read_last),
|
||||||
ARRAY_ENTRY(6, internal, 60, uint8_ARRAY_V)
|
ARRAY_ENTRY(6, internal, 60, uint8_ARRAY_V),
|
||||||
|
ARRAY_ENTRY(10, internal_macs, 5, uint8_ARRAY_V)
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
|
@ -194,15 +194,13 @@
|
|||||||
#define _SNES9X_H_
|
#define _SNES9X_H_
|
||||||
|
|
||||||
#ifndef VERSION
|
#ifndef VERSION
|
||||||
#define VERSION "1.53"
|
#define VERSION "1.56.2"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "port.h"
|
#include "port.h"
|
||||||
#include "65c816.h"
|
#include "65c816.h"
|
||||||
#include "messages.h"
|
#include "messages.h"
|
||||||
|
|
||||||
#define S9X_ACCURACY_LEVEL 3
|
|
||||||
|
|
||||||
#ifdef ZLIB
|
#ifdef ZLIB
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
#define FSTREAM gzFile
|
#define FSTREAM gzFile
|
||||||
|
@ -378,7 +378,6 @@ void InitializeSnes9x() {
|
|||||||
if (!S9xInitAPU ())
|
if (!S9xInitAPU ())
|
||||||
ExitApp();
|
ExitApp();
|
||||||
|
|
||||||
S9xSetRenderPixelFormat (RGB565); // Set Pixel Renderer to match 565
|
|
||||||
S9xInitSound (64, 0); // Initialise Sound System
|
S9xInitSound (64, 0); // Initialise Sound System
|
||||||
|
|
||||||
// Initialise Graphics
|
// Initialise Graphics
|
||||||
|
Loading…
Reference in New Issue
Block a user