- 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:
Bart Trzynadlowski 2011-09-22 06:11:47 +00:00
parent 206ef1aca4
commit 46bc52bb12
24 changed files with 1126 additions and 835 deletions

View file

@ -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"

View file

@ -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.
======================= =======================

View file

@ -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

View file

@ -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;
} }

View file

@ -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

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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:

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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"))

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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

View file

@ -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;
} }

View file

@ -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
/****************************************************************************** /******************************************************************************