mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2024-11-25 15:15:40 +00:00
- Changed save state error messages slightly.
- Wrapped rows that exceed 80 columns in Supermodel.ini. - Added some member and function comments to a few header files. - Changed version string to 0.2a-RC2 in anticipation of sending another release candidate build to testers. - Added GAME_INPUT_RALLY flag to dirtdvlsa, eca, and ecax. - Configuration dialog no longer refers to Sega Rally 2 and Dirt Devils; instead, "Miscellaneous Driving Game Buttons" - More additions to README.txt.
This commit is contained in:
parent
206ef1aca4
commit
46bc52bb12
|
@ -102,7 +102,8 @@ InputVR2 = "KEY_S,JOY1_BUTTON2"
|
||||||
InputVR3 = "KEY_D,JOY1_BUTTON3"
|
InputVR3 = "KEY_D,JOY1_BUTTON3"
|
||||||
InputVR4 = "KEY_F,JOY1_BUTTON4"
|
InputVR4 = "KEY_F,JOY1_BUTTON4"
|
||||||
|
|
||||||
; Sega Rally 2 and Dirt Devils
|
; Miscellaneous driving game buttons: Sega Rally 2, Dirt Devils, Emergency Car
|
||||||
|
; Ambulance
|
||||||
InputViewChange = "KEY_A,JOY1_BUTTON1"
|
InputViewChange = "KEY_A,JOY1_BUTTON1"
|
||||||
InputHandBrake = "KEY_S,JOY1_BUTTON2" ; Sega Rally 2 only
|
InputHandBrake = "KEY_S,JOY1_BUTTON2" ; Sega Rally 2 only
|
||||||
|
|
||||||
|
@ -150,8 +151,8 @@ InputGunDown = "KEY_DOWN" ; digital, move gun down
|
||||||
InputGunX = "MOUSE_XAXIS,JOY1_XAXIS" ; analog, full X axis
|
InputGunX = "MOUSE_XAXIS,JOY1_XAXIS" ; analog, full X axis
|
||||||
InputGunY = "MOUSE_YAXIS,JOY1_YAXIS" ; analog, full Y axis
|
InputGunY = "MOUSE_YAXIS,JOY1_YAXIS" ; analog, full Y axis
|
||||||
InputTrigger = "KEY_A,JOY1_BUTTON1,MOUSE_LEFT_BUTTON"
|
InputTrigger = "KEY_A,JOY1_BUTTON1,MOUSE_LEFT_BUTTON"
|
||||||
InputOffscreen = "KEY_S,JOY1_BUTTON2,MOUSE_RIGHT_BUTTON" ; point gun off screen
|
InputOffscreen = "KEY_S,JOY1_BUTTON2,MOUSE_RIGHT_BUTTON" ; point off-screen
|
||||||
InputAutoTrigger = 0
|
InputAutoTrigger = 0 ; automatic reload when off-screen
|
||||||
InputGunLeft2 = "NONE"
|
InputGunLeft2 = "NONE"
|
||||||
InputGunRight2 = "NONE"
|
InputGunRight2 = "NONE"
|
||||||
InputGunUp2 = "NONE"
|
InputGunUp2 = "NONE"
|
||||||
|
|
165
Docs/README.txt
165
Docs/README.txt
|
@ -1,6 +1,5 @@
|
||||||
|
TODO supported games, compatibility matrix
|
||||||
TODO: convert all tabs to spaces
|
TODO: convert all tabs to spaces
|
||||||
TODO: describe Dinputeffectsgain in config index
|
|
||||||
TODO: XInputConstForceThreshold default? Set in source code.
|
|
||||||
TODO: describe auto trigger in config index
|
TODO: describe auto trigger in config index
|
||||||
TODO: Andy Geezer's region codes
|
TODO: Andy Geezer's region codes
|
||||||
|
|
||||||
|
@ -227,33 +226,125 @@ and in both cases should replace the file with extension 24 from 'Scud Race'
|
||||||
('mpr-19671.24').
|
('mpr-19671.24').
|
||||||
|
|
||||||
|
|
||||||
===================
|
======================
|
||||||
Supported Games
|
Game Compatibility
|
||||||
===================
|
======================
|
||||||
|
|
||||||
The following games and ROM sets are supported by this version of Supermodel.
|
Supermodel recognizes all known Model 3 ROM sets but not all of them are
|
||||||
Not all of them are playable.
|
playable. Below is a compatibility matrix. The most obvious problem with each
|
||||||
|
ROM set is stated.
|
||||||
|
|
||||||
ROM Set Game Title
|
ROM Set Title Playable? Comments
|
||||||
------- ----------
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
vf3 Virtua Fighter 3
|
| bass | Sega Bass Fishing | No | No controls. |
|
||||||
lemans24 Le Mans 24
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
scud Scud Race
|
| daytona2 | Daytona USA 2 Battle on the Edge | Yes | Minor graphics |
|
||||||
scudp Scud Race Plus
|
| | | | problems. |
|
||||||
lostwsga The Lost World
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
von2 Virtual On Oratorio Tangram
|
| dayto2pe | Daytona USA 2 Power Edition | Yes | Minor graphics |
|
||||||
vs298 Virtua Striker 2 '98
|
| | | | problems. |
|
||||||
srally2 Sega Rally 2
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
daytona2 Daytona USA 2
|
| dirtdvls | Dirt Devils | Yes | Severe graphics |
|
||||||
dayto2pe Daytona USA 2 Power Edition
|
| | | | problems. |
|
||||||
fvipers2 Fighting Vipers 2
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
harley Harley Davidson & L.A. Riders
|
| dirtdvlsa | Dirt Devils (Alternate) | Yes | Severe graphics |
|
||||||
lamachin L.A. Machineguns
|
| | | | problems. |
|
||||||
oceanhun The Ocean Hunter
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
swtrilgy Star Wars Trilogy
|
| eca | Emergency Call Ambulance | No | Severe graphics |
|
||||||
eca Emergency Car Ambulance
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| ecax | Emergency Call Ambulance (Export) | No | Severe graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| fvipers2 | Fighting Vipers 2 | Yes | Slow. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| getbass | Get Bass | No | Does not boot. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| harley | Harley Davidson & L.A. Riders | No | Severe graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| harleyb | Harley Davidson & L.A. Riders (Rev. B) | No | Severe graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| lamachin | L.A. Machineguns | No | Severe graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| lemans24 | Le Mans 24 | Yes | Some texture |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| lostwsga | The Lost World | Yes | Some texture |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| magtruck | Magical Truck Adventure | No | Does not boot. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| oceanhun | The Ocean Hunter | No | Severe graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| scud | Scud Race (Australia) | Yes | Minor shading |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| scuda | Scud Race (Export) | Yes | Minor shading |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| scudj | Scud Race (Japan) | Yes | Mis-colored 2D |
|
||||||
|
| | | | graphics. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| scudp | Scud Race Plus | Yes | Minor shading |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| skichamp | Ski Champ | No | Severe graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| spikeofe | Spikeout Final Edition | Yes | Some texture |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| spikeout | Spikeout | Yes | Some texture |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| srally2 | Sega Rally 2 | Yes | Major graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| srally2x | Sega Rally 2 DX | No | Does not boot. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| swtrilgy | Star Wars Trilogy (Rev. A) | Yes | Some graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| swtrilgya | Star Wars Trilogy | No | Does not boot. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vf3 | Virtua Fighter 3 | Yes | Major graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vf3a | Virtua Fighter 3 (Rev. A) | Yes | Major graphics |
|
||||||
|
| | | | problems. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vf3tb | Virtua Fighter 3 Team Battle | No | Cannot coin up. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| von2 | Virtual On Oratorio Tangram | Yes | Encrypted 2D |
|
||||||
|
| | | | graphics. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| von254g | Virtual On Oratorio Tangram (Ver. 5.4g) | Yes | Encrypted 2D |
|
||||||
|
| | | | graphics. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs2 | Virtua Striker 2 (Step 2.0) | Yes | Slow. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs215 | Virtua Striker 2 (Step 1.5) | Yes | Slow. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs298 | Virtua Striker 2 '98 (Step 2.0) | Yes | Slow. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs29815 | Virtua Striker 2 '98 (Step 1.5) | Yes | Slow. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs299 | Virtua Striker 2 '99 | No | PowerPC error. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs299a | Virtua Striker 2 '99 (Rev. A) | No | PowerPC error. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs299b | Virtua Striker 2 '99 (Rev. B) | No | PowerPC error. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
| vs2v991 | Virtua Striker 2 '99.1 | No | PowerPC error. |
|
||||||
|
+-----------+-----------------------------------------+-----+-----------------+
|
||||||
|
|
||||||
The '-print-games' option can be used to obtain this list.
|
Most ROM sets suffering from severe graphics problems are categorized as non-
|
||||||
|
playable when in fact many are partially playable. Controls may not be fully
|
||||||
|
functional, however, and none have been tested thoroughly.
|
||||||
|
|
||||||
|
|
||||||
==================
|
==================
|
||||||
|
@ -321,7 +412,8 @@ configuration file, described elsewhere in this document.
|
||||||
Please keep in mind that MPEG music emulation is preliminary and the decoder is
|
Please keep in mind that MPEG music emulation is preliminary and the decoder is
|
||||||
buggy. Periodic squeaks and pops occur on many music tracks. The Sega Custom
|
buggy. Periodic squeaks and pops occur on many music tracks. The Sega Custom
|
||||||
Sound Processor (SCSP) emulator, used for sound emulation, is an older version
|
Sound Processor (SCSP) emulator, used for sound emulation, is an older version
|
||||||
of ElSemi's code and still quite buggy.
|
of ElSemi's code and also quite buggy. Sound glitches are known to occur now
|
||||||
|
and then, and many sounds and tunes do not sound quite correct.
|
||||||
|
|
||||||
|
|
||||||
============
|
============
|
||||||
|
@ -515,7 +607,6 @@ Force feedback can be enabled and tuned in the configuration file. Setting
|
||||||
There are three DirectInput effects: constant force, self centering, and
|
There are three DirectInput effects: constant force, self centering, and
|
||||||
vibration. The strength of each can be tuned with the following settings:
|
vibration. The strength of each can be tuned with the following settings:
|
||||||
|
|
||||||
DirectInputEffectsGain = 100
|
|
||||||
DirectInputConstForceMax = 100
|
DirectInputConstForceMax = 100
|
||||||
DirectInputSelfCenterMax = 100
|
DirectInputSelfCenterMax = 100
|
||||||
DirectInputFrictionMax = 100
|
DirectInputFrictionMax = 100
|
||||||
|
@ -1077,14 +1168,6 @@ All settings are case sensitive.
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Name: DirectInputEffectsGain
|
|
||||||
|
|
||||||
Argument: Integer value.
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Name: XInputConstForceMax
|
Name: XInputConstForceMax
|
||||||
XInputVibrateMax
|
XInputVibrateMax
|
||||||
|
|
||||||
|
@ -1263,9 +1346,9 @@ All settings are case sensitive.
|
||||||
|
|
||||||
Argument: String.
|
Argument: String.
|
||||||
|
|
||||||
Description: Mapping for the view change button used in 'Sega Rally 2'
|
Description: Mapping for the view change button used in 'Sega Rally 2',
|
||||||
and 'Dirt Devils'. Can only be set in the 'Global'
|
'Dirt Devils', and 'Emergency Car Ambulance'. Can only be
|
||||||
section.
|
set in the 'Global' section.
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
@ -1411,7 +1494,9 @@ All settings are case sensitive.
|
||||||
|
|
||||||
Argument: Integer.
|
Argument: Integer.
|
||||||
|
|
||||||
Description: ? Can only be set in the 'Global' section.
|
Description: When set to 1, the off-screen button will also
|
||||||
|
automatically reload (no need to pull the trigger). Can
|
||||||
|
only be set in the 'Global' section.
|
||||||
|
|
||||||
|
|
||||||
=======================
|
=======================
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
##
|
##
|
||||||
|
|
||||||
#
|
#
|
||||||
# Makefile.SDL.UNIX-MODERN.GCC
|
# Makefile.SDL.UNIX.GCC
|
||||||
#
|
#
|
||||||
# GNU Makefile for SDL port using GCC on modern Linux (e.g. Fedora 14).
|
# GNU Makefile for SDL port using GCC on modern Linux (e.g. Fedora 14).
|
||||||
# Copy this Makefile to the base directory of the source distribution (one up
|
# Copy this Makefile to the base directory of the source distribution (one up
|
||||||
|
|
|
@ -169,7 +169,7 @@ void M68KLoadState(CBlockFile *StateFile, const char *name)
|
||||||
{
|
{
|
||||||
if (OKAY != StateFile->FindBlock(name))
|
if (OKAY != StateFile->FindBlock(name))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load 68K state. Save state file is corrupted.");
|
ErrorLog("Unable to load 68K state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ public:
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* M68KGetARegister(int n):
|
* M68KGetARegister(n):
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* n Register number (0-7).
|
* n Register number (0-7).
|
||||||
|
@ -114,7 +114,7 @@ public:
|
||||||
extern UINT32 M68KGetARegister(int n);
|
extern UINT32 M68KGetARegister(int n);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* M68KSetARegister(int n, UINT32 v):
|
* M68KSetARegister(n, v):
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* n Register number (0-7).
|
* n Register number (0-7).
|
||||||
|
@ -123,7 +123,7 @@ extern UINT32 M68KGetARegister(int n);
|
||||||
extern void M68KSetARegister(int n, UINT32 v);
|
extern void M68KSetARegister(int n, UINT32 v);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* M68KGetDRegister(int n):
|
* M68KGetDRegister(n):
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* n Register number (0-7).
|
* n Register number (0-7).
|
||||||
|
@ -134,7 +134,7 @@ extern void M68KSetARegister(int n, UINT32 v);
|
||||||
extern UINT32 M68KGetDRegister(int n);
|
extern UINT32 M68KGetDRegister(int n);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* M68KGetDRegister(int n, UINT32 v):
|
* M68KGetDRegister(n, v):
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* n Register number (0-7).
|
* n Register number (0-7).
|
||||||
|
@ -282,8 +282,29 @@ extern void M68KSetContext(M68KCtx *Src);
|
||||||
|
|
||||||
static int lastCycles = 0;
|
static int lastCycles = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* M68KGetRegister(ctx, reg):
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* ctx Musashi 68K context.
|
||||||
|
* reg Register (use DBG68K_REG_* macros).
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Register value.
|
||||||
|
*/
|
||||||
UINT32 M68KGetRegister(SM68KCtx *ctx, unsigned reg);
|
UINT32 M68KGetRegister(SM68KCtx *ctx, unsigned reg);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* M68KSetRegister(ctx, reg, value):
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* ctx Musashi 68K context.
|
||||||
|
* reg Register (use DBG68K_REG_* macros).
|
||||||
|
* value Vale to write.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* True if successful, false if register does not exist.
|
||||||
|
*/
|
||||||
UINT32 M68KSetRegister(SM68KCtx *ctx, unsigned reg, UINT32 val);
|
UINT32 M68KSetRegister(SM68KCtx *ctx, unsigned reg, UINT32 val);
|
||||||
#endif // SUPERMODEL_DEBUGGER
|
#endif // SUPERMODEL_DEBUGGER
|
||||||
|
|
||||||
|
|
|
@ -950,7 +950,7 @@ void ppc_load_state(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("PowerPC"))
|
if (OKAY != SaveState->FindBlock("PowerPC"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load PowerPC state. Save state file is corrupted.");
|
ErrorLog("Unable to load PowerPC state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3943,7 +3943,7 @@ void CZ80::LoadState(CBlockFile *StateFile, const char *name)
|
||||||
{
|
{
|
||||||
if (OKAY != StateFile->FindBlock(name))
|
if (OKAY != StateFile->FindBlock(name))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load Z80 state. Save state file is corrupted.");
|
ErrorLog("Unable to load Z80 state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,7 @@ public:
|
||||||
* GetPC(void):
|
* GetPC(void):
|
||||||
*
|
*
|
||||||
* Returns the current PC value.
|
* Returns the current PC value.
|
||||||
|
*
|
||||||
* Returns:
|
* Returns:
|
||||||
* Current value of PC register.
|
* Current value of PC register.
|
||||||
*/
|
*/
|
||||||
|
@ -159,23 +159,42 @@ public:
|
||||||
|
|
||||||
#ifdef SUPERMODEL_DEBUGGER
|
#ifdef SUPERMODEL_DEBUGGER
|
||||||
/*
|
/*
|
||||||
* GetReg8(state):
|
* GetReg8(reg8):
|
||||||
*
|
*
|
||||||
* Returns value of given 8-bit register.
|
* Reads an 8-bit register.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* reg8 Register number (use Z80_REG8_* macros).
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Value of given 8-bit register.
|
||||||
*/
|
*/
|
||||||
UINT8 GetReg8(unsigned reg8);
|
UINT8 GetReg8(unsigned reg8);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SetReg8(state):
|
* SetReg8(reg8, value):
|
||||||
*
|
*
|
||||||
* Sets value of given 8-bit register.
|
* Sets value of given 8-bit register.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* reg8 Register number.
|
||||||
|
* value Value to write.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* True if succeeded, false if invalid register.
|
||||||
*/
|
*/
|
||||||
bool SetReg8(unsigned reg8, UINT8 value);
|
bool SetReg8(unsigned reg8, UINT8 value);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GetReg16(state):
|
* GetReg16(reg16, value):
|
||||||
*
|
*
|
||||||
* Returns value of given 16-bit register.
|
* Reads a 16-bit register.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* reg16 Register number (use Z80_REG16_* macros).
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Value of given 16-bit register.
|
||||||
*/
|
*/
|
||||||
UINT16 GetReg16(unsigned reg16);
|
UINT16 GetReg16(unsigned reg16);
|
||||||
|
|
||||||
|
@ -183,6 +202,13 @@ public:
|
||||||
* SetReg16(state):
|
* SetReg16(state):
|
||||||
*
|
*
|
||||||
* Sets value of given 16-bit register.
|
* Sets value of given 16-bit register.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* reg16 Register.
|
||||||
|
* value Value to write.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* True if succeeded, false if invalid register.
|
||||||
*/
|
*/
|
||||||
bool SetReg16(unsigned reg16, UINT16 value);
|
bool SetReg16(unsigned reg16, UINT16 value);
|
||||||
#endif // SUPERMODEL_DEBUGGER
|
#endif // SUPERMODEL_DEBUGGER
|
||||||
|
|
|
@ -341,7 +341,7 @@ const struct GameInfo g_Model3GameList[] =
|
||||||
true, // 32 MB of banked CROM (Mirror)
|
true, // 32 MB of banked CROM (Mirror)
|
||||||
0x4000000, // 64 MB of VROM
|
0x4000000, // 64 MB of VROM
|
||||||
0xC00000, // 12 MB of sample ROMs
|
0xC00000, // 12 MB of sample ROMs
|
||||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_SHIFT4,
|
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_SHIFT4|GAME_INPUT_RALLY,
|
||||||
0, // no MPEG board
|
0, // no MPEG board
|
||||||
false, // no drive board
|
false, // no drive board
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ const struct GameInfo g_Model3GameList[] =
|
||||||
true, // 48 MB of banked CROM (Mirror)
|
true, // 48 MB of banked CROM (Mirror)
|
||||||
0x4000000, // 64 MB of VROM
|
0x4000000, // 64 MB of VROM
|
||||||
0x1000000, // 16 MB of sample ROMs
|
0x1000000, // 16 MB of sample ROMs
|
||||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_SHIFT4|GAME_INPUT_RALLY,
|
||||||
0, // no MPEG board
|
0, // no MPEG board
|
||||||
false, // no drive board
|
false, // no drive board
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ const struct GameInfo g_Model3GameList[] =
|
||||||
true, // 48 MB of banked CROM (Mirror)
|
true, // 48 MB of banked CROM (Mirror)
|
||||||
0x4000000, // 64 MB of VROM
|
0x4000000, // 64 MB of VROM
|
||||||
0x1000000, // 16 MB of sample ROMs
|
0x1000000, // 16 MB of sample ROMs
|
||||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_SHIFT4|GAME_INPUT_RALLY,
|
||||||
0, // no MPEG board
|
0, // no MPEG board
|
||||||
false, // no drive board
|
false, // no drive board
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ const char* CInput::GetInputGroup()
|
||||||
case GAME_INPUT_VEHICLE: return "Racing Game Steering Controls";
|
case GAME_INPUT_VEHICLE: return "Racing Game Steering Controls";
|
||||||
case GAME_INPUT_SHIFT4: return "Racing Game Gear Shift";
|
case GAME_INPUT_SHIFT4: return "Racing Game Gear Shift";
|
||||||
case GAME_INPUT_VR: return "Racing Game VR View Buttons";
|
case GAME_INPUT_VR: return "Racing Game VR View Buttons";
|
||||||
case GAME_INPUT_RALLY: return "Sega Rally/Dirt Devils Buttons";
|
case GAME_INPUT_RALLY: return "Miscellaneous Driving Game Buttons";
|
||||||
case GAME_INPUT_TWIN_JOYSTICKS: return "Virtual On Controls";
|
case GAME_INPUT_TWIN_JOYSTICKS: return "Virtual On Controls";
|
||||||
case GAME_INPUT_ANALOG_JOYSTICK: return "Analog Joystick";
|
case GAME_INPUT_ANALOG_JOYSTICK: return "Analog Joystick";
|
||||||
case GAME_INPUT_GUN1: // Fall through to below
|
case GAME_INPUT_GUN1: // Fall through to below
|
||||||
|
|
|
@ -75,7 +75,7 @@ void C53C810::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("53C810"))
|
if (OKAY != SaveState->FindBlock("53C810"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load 53C810 state. Save state file is corrupted.");
|
ErrorLog("Unable to load 53C810 state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ void C93C46::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("93C46"))
|
if (OKAY != SaveState->FindBlock("93C46"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load EEPROM state. File is corrupted.");
|
ErrorLog("Unable to load EEPROM state. File is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -516,7 +516,7 @@ void CDSB1::LoadState(CBlockFile *StateFile)
|
||||||
|
|
||||||
if (OKAY != StateFile->FindBlock("DSB1"))
|
if (OKAY != StateFile->FindBlock("DSB1"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load Digital Sound Board state. Save state file is corrupted.");
|
ErrorLog("Unable to load Digital Sound Board state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1081,7 +1081,7 @@ void CDSB2::LoadState(CBlockFile *StateFile)
|
||||||
|
|
||||||
if (OKAY != StateFile->FindBlock("DSB2"))
|
if (OKAY != StateFile->FindBlock("DSB2"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load Digital Sound Board state. Save state file is corrupted.");
|
ErrorLog("Unable to load Digital Sound Board state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
*
|
*
|
||||||
* Implementation of the CDriveBoard class: drive board (force feedback)
|
* Implementation of the CDriveBoard class: drive board (force feedback)
|
||||||
* emulation.
|
* emulation.
|
||||||
|
*
|
||||||
|
* NOTE: Simulation does not yet work. Drive board ROMs are required.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Supermodel.h"
|
#include "Supermodel.h"
|
||||||
|
@ -126,7 +128,7 @@ void CDriveBoard::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (SaveState->FindBlock("DriveBoard") != OKAY)
|
if (SaveState->FindBlock("DriveBoard") != OKAY)
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load DriveBoard state. Save state file is corrupted.");
|
ErrorLog("Unable to load DriveBoard state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,49 +55,207 @@ public:
|
||||||
class CDriveBoard : public CBus
|
class CDriveBoard : public CBus
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*
|
||||||
|
* IsAttached(void):
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* True if the drive board is "attached" and should be emulated,
|
||||||
|
* otherwise false.
|
||||||
|
*/
|
||||||
bool IsAttached(void);
|
bool IsAttached(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IsSimulated(void):
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* True if the drive board is being simulated rather than actually
|
||||||
|
* emulated, otherwise false.
|
||||||
|
*/
|
||||||
bool IsSimulated(void);
|
bool IsSimulated(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GetDIPSwitches(dip1, dip2):
|
||||||
|
*
|
||||||
|
* Reads the two sets of DIP switches on the drive board.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* dip1 Reference of variable to store DIP switch 1 to.
|
||||||
|
* dip2 DIP switch 2.
|
||||||
|
*/
|
||||||
void GetDIPSwitches(UINT8 &dip1, UINT8 &dip2);
|
void GetDIPSwitches(UINT8 &dip1, UINT8 &dip2);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SetDIPSwitches(dip1, dip2):
|
||||||
|
*
|
||||||
|
* Sets the DIP switches.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* dip1 DIP switch 1 value.
|
||||||
|
* dip2 DIP switch 2 value.
|
||||||
|
*/
|
||||||
void SetDIPSwitches(UINT8 dip1, UINT8 dip2);
|
void SetDIPSwitches(UINT8 dip1, UINT8 dip2);
|
||||||
|
|
||||||
unsigned GetSteeringStrength();
|
/*
|
||||||
|
* GetSteeringStrength(void):
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Strength of the steering based on drive board DIP switches (1-8).
|
||||||
|
*/
|
||||||
|
unsigned GetSteeringStrength(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SetSteeringStrength(steeringStrength):
|
||||||
|
*
|
||||||
|
* Sets the steering strength (modifies the DIP switch setting).
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* steeringStrength A value ranging from 1 to 8.
|
||||||
|
*/
|
||||||
void SetSteeringStrength(unsigned steeringStrength);
|
void SetSteeringStrength(unsigned steeringStrength);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get7SegDisplays(seg1Digit1, seg1Digit2, seg2Digit1, seg2Digit2):
|
||||||
|
*
|
||||||
|
* Reads the 7-segment displays.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* seg1Digit1 Reference of variable to store digit 1 of the first 7-
|
||||||
|
* segment display to.
|
||||||
|
* seg1Digit2 First display, second digit.
|
||||||
|
* seg2Digit1 Second display, first digit.
|
||||||
|
* seg2Digit2 Second display, second digit.
|
||||||
|
*/
|
||||||
void Get7SegDisplays(UINT8 &seg1Digit, UINT8 &seg1Digit2, UINT8 &seg2Digit1, UINT8 &seg2Digit2);
|
void Get7SegDisplays(UINT8 &seg1Digit, UINT8 &seg1Digit2, UINT8 &seg2Digit1, UINT8 &seg2Digit2);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GetZ80(void):
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* The Z80 object.
|
||||||
|
*/
|
||||||
CZ80 *GetZ80(void);
|
CZ80 *GetZ80(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SaveState(SaveState):
|
||||||
|
*
|
||||||
|
* Saves the drive board state.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* SaveState Block file to save state information to.
|
||||||
|
*/
|
||||||
void SaveState(CBlockFile *SaveState);
|
void SaveState(CBlockFile *SaveState);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LoadState(SaveState):
|
||||||
|
*
|
||||||
|
* Restores the drive board state.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* SaveState Block file to load save state information from.
|
||||||
|
*/
|
||||||
void LoadState(CBlockFile *SaveState);
|
void LoadState(CBlockFile *SaveState);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Init(romPtr):
|
||||||
|
*
|
||||||
|
* Initializes (and "attaches") the drive board. This should be called
|
||||||
|
* before other members.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* romPtr Pointer to the drive board ROM (Z80 program). If this
|
||||||
|
* is NULL, then the drive board will not be emulated.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* FAIL if the drive board could not be initialized (prints own error
|
||||||
|
* message), otherwise OKAY. If the drive board is not attached
|
||||||
|
* because no ROM was passed to it, no error is generated and the
|
||||||
|
* drive board is silently disabled (detached).
|
||||||
|
*/
|
||||||
bool Init(const UINT8 *romPtr);
|
bool Init(const UINT8 *romPtr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AttachInputs(InputsPtr, gameInputFlags):
|
||||||
|
*
|
||||||
|
* Attaches inputs to the drive board (for access to the steering wheel
|
||||||
|
* position).
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* InputsPtr Pointer to the input object.
|
||||||
|
* gameInputFlags The current game's input flags.
|
||||||
|
*/
|
||||||
void AttachInputs(CInputs *InputsPtr, unsigned gameInputFlags);
|
void AttachInputs(CInputs *InputsPtr, unsigned gameInputFlags);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reset(void):
|
||||||
|
*
|
||||||
|
* Resets the drive board.
|
||||||
|
*/
|
||||||
void Reset(void);
|
void Reset(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read():
|
||||||
|
*
|
||||||
|
* Reads data from the drive board.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Data read.
|
||||||
|
*/
|
||||||
UINT8 Read(void);
|
UINT8 Read(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write(data):
|
||||||
|
*
|
||||||
|
* Writes data to the drive board.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* data Data to send.
|
||||||
|
*/
|
||||||
void Write(UINT8 data);
|
void Write(UINT8 data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RunFrame(void):
|
||||||
|
*
|
||||||
|
* Emulates a single frame's worth of time on the drive board.
|
||||||
|
*/
|
||||||
void RunFrame(void);
|
void RunFrame(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CDriveBoard():
|
||||||
|
* ~CDriveBoard():
|
||||||
|
*
|
||||||
|
* Constructor and destructor. Memory is freed by destructor.
|
||||||
|
*/
|
||||||
CDriveBoard();
|
CDriveBoard();
|
||||||
|
|
||||||
~CDriveBoard(void);
|
~CDriveBoard(void);
|
||||||
|
|
||||||
// CBus methods
|
/*
|
||||||
|
* Read8(addr):
|
||||||
|
* IORead8(portNum):
|
||||||
|
*
|
||||||
|
* Methods for reading from Z80's memory and IO space. Required by CBus.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* addr Address in memory (0-0xFFFF).
|
||||||
|
* portNum Port address (0-255).
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* A byte of data from the address or port.
|
||||||
|
*/
|
||||||
UINT8 Read8(UINT32 addr);
|
UINT8 Read8(UINT32 addr);
|
||||||
|
|
||||||
void Write8(UINT32 addr, UINT8 data);
|
|
||||||
|
|
||||||
UINT8 IORead8(UINT32 portNum);
|
UINT8 IORead8(UINT32 portNum);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write8(addr, data):
|
||||||
|
* IORead8(portNum, data):
|
||||||
|
*
|
||||||
|
* Methods for writing to Z80's memory and IO space. Required by CBus.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* addr Address in memory (0-0xFFFF).
|
||||||
|
* portNum Port address (0-255).
|
||||||
|
* data Byte to write.
|
||||||
|
*/
|
||||||
|
void Write8(UINT32 addr, UINT8 data);
|
||||||
void IOWrite8(UINT32 portNum, UINT8 data);
|
void IOWrite8(UINT32 portNum, UINT8 data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -49,7 +49,7 @@ void CIRQ::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("IRQ"))
|
if (OKAY != SaveState->FindBlock("IRQ"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load IRQ controller state. Save state file is corrupted.");
|
ErrorLog("Unable to load IRQ controller state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ void CMPC10x::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("MPC10x"))
|
if (OKAY != SaveState->FindBlock("MPC10x"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load MPC%X state. Save state file is corrupted.", model);
|
ErrorLog("Unable to load MPC%X state. Save state file is corrupt.", model);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1849,7 +1849,7 @@ void CModel3::LoadState(CBlockFile *SaveState)
|
||||||
// Load Model 3 state
|
// Load Model 3 state
|
||||||
if (OKAY != SaveState->FindBlock("Model 3"))
|
if (OKAY != SaveState->FindBlock("Model 3"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load Model 3 core state. Save state file is corrupted.");
|
ErrorLog("Unable to load Model 3 core state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1896,7 +1896,7 @@ void CModel3::LoadNVRAM(CBlockFile *NVRAM)
|
||||||
// Load backup RAM
|
// Load backup RAM
|
||||||
if (OKAY != NVRAM->FindBlock("Backup RAM"))
|
if (OKAY != NVRAM->FindBlock("Backup RAM"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load Model 3 backup RAM. NVRAM file is corrupted.");
|
ErrorLog("Unable to load Model 3 backup RAM. NVRAM file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NVRAM->Read(backupRAM, 0x20000);
|
NVRAM->Read(backupRAM, 0x20000);
|
||||||
|
@ -2640,8 +2640,6 @@ void CModel3::Patch(void)
|
||||||
}
|
}
|
||||||
else if (!strcmp(Game->id, "spikeofe"))
|
else if (!strcmp(Game->id, "spikeofe"))
|
||||||
{
|
{
|
||||||
//*(UINT32 *) &crom[0x600000+0x1240C] = 0x60000000; // illegal ROM
|
|
||||||
|
|
||||||
*(UINT32 *) &crom[0x600000+0x36F2C] = 0x60000000; // decrementer loop (see Spikeout)
|
*(UINT32 *) &crom[0x600000+0x36F2C] = 0x60000000; // decrementer loop (see Spikeout)
|
||||||
}
|
}
|
||||||
else if (!strcmp(Game->id, "skichamp"))
|
else if (!strcmp(Game->id, "skichamp"))
|
||||||
|
|
|
@ -86,7 +86,7 @@ void CReal3D::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("Real3D"))
|
if (OKAY != SaveState->FindBlock("Real3D"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load Real3D GPU state. Save state file is corrupted.");
|
ErrorLog("Unable to load Real3D GPU state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -432,7 +432,7 @@ void CSoundBoard::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("Sound Board"))
|
if (OKAY != SaveState->FindBlock("Sound Board"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load sound board state. Save state file is corrupted.");
|
ErrorLog("Unable to load sound board state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ void CTileGen::LoadState(CBlockFile *SaveState)
|
||||||
{
|
{
|
||||||
if (OKAY != SaveState->FindBlock("Tile Generator"))
|
if (OKAY != SaveState->FindBlock("Tile Generator"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load tile generator state. Save state file is corrupted.");
|
ErrorLog("Unable to load tile generator state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1213,7 +1213,7 @@ static void Help(void)
|
||||||
puts("Video Options:");
|
puts("Video Options:");
|
||||||
puts(" -res=<x>,<y> Resolution");
|
puts(" -res=<x>,<y> Resolution");
|
||||||
puts(" -fullscreen Full screen mode");
|
puts(" -fullscreen Full screen mode");
|
||||||
puts(" -no-throttle Disable 60 Hz frame rate limit");
|
puts(" -no-throttle Disable 60 Hz frame rate lock");
|
||||||
puts(" -show-fps Display frame rate in window title bar");
|
puts(" -show-fps Display frame rate in window title bar");
|
||||||
puts(" -vert-shader=<file> Load 3D vertex shader from external file");
|
puts(" -vert-shader=<file> Load 3D vertex shader from external file");
|
||||||
puts(" -frag-shader=<file> Load 3D fragment shader from external file");
|
puts(" -frag-shader=<file> Load 3D fragment shader from external file");
|
||||||
|
@ -1227,8 +1227,8 @@ static void Help(void)
|
||||||
puts(" -no-dsb Disable Digital Sound Board (MPEG music)");
|
puts(" -no-dsb Disable Digital Sound Board (MPEG music)");
|
||||||
puts("");
|
puts("");
|
||||||
puts("Input Options:");
|
puts("Input Options:");
|
||||||
puts(" -force-feedback Enable force feedback (DirectInput, XInput) [EXPERIMENTAL]");
|
puts(" -force-feedback Enable force feedback (DirectInput, XInput)");
|
||||||
puts(" -config-inputs Configure inputs for keyboards, mice, and joysticks");
|
puts(" -config-inputs Configure keyboards, mice, and game controllers");
|
||||||
#ifdef SUPERMODEL_WIN32
|
#ifdef SUPERMODEL_WIN32
|
||||||
printf(" -input-system=<s> Input system [Default: %s]\n", g_Config.GetInputSystem());
|
printf(" -input-system=<s> Input system [Default: %s]\n", g_Config.GetInputSystem());
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2219,7 +2219,7 @@ void SCSP_LoadState(CBlockFile *StateFile)
|
||||||
{
|
{
|
||||||
if (OKAY != StateFile->FindBlock("SCSP x 2"))
|
if (OKAY != StateFile->FindBlock("SCSP x 2"))
|
||||||
{
|
{
|
||||||
ErrorLog("Unable to load SCSP state. Save state file is corrupted.");
|
ErrorLog("Unable to load SCSP state. Save state file is corrupt.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
Program-Wide Definitions
|
Program-Wide Definitions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#define SUPERMODEL_VERSION "0.2a-WIP" // version string
|
#define SUPERMODEL_VERSION "0.2a-RC2" // version string
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
Loading…
Reference in a new issue