- Only player 1 crosshair is shown by default now.

- Tweaked Makefiles a bit.
- More documentation updates.
- Changed version string to 0.2a in preparation for the final release :)
This commit is contained in:
Bart Trzynadlowski 2011-09-23 07:18:40 +00:00
parent 33f35effaf
commit 83067f076f
7 changed files with 135 additions and 91 deletions

View file

@ -13,6 +13,9 @@
Copyright 2011 Bart Trzynadlowski, Nik Henson Copyright 2011 Bart Trzynadlowski, Nik Henson
LICENSE AGREEMENT FOR SUPERMODEL VERSION 0.2A
Supermodel is distributed as free software under the terms of the GNU General Supermodel is distributed as free software under the terms of the GNU General
Public License, included below. See README.txt for additional documentation. Public License, included below. See README.txt for additional documentation.
The source code may be obtained from the official Supermodel web site: The source code may be obtained from the official Supermodel web site:

View file

@ -1,7 +1,7 @@
TODO: Proof source code, fix capitalization in config dialog! TODO: Proof source code
TODO: if Nik adds MSVC project files, mention that first in compiling section
TODO: discussion of missing input settings in index: saturation, dead zone, analog/digital sensitivity, etc. All missing now. TODO: discussion of missing input settings in index: saturation, dead zone, analog/digital sensitivity, etc. All missing now.
TODO: input stuff to be written in section 12 TODO: input stuff to be written in section 12
TODO: add a title to this document and LICENSE.txt (e.g. 'User Manual for Supermodel Version 0.2a', 'License Agreement for Supermodel v0.2a')
TODO: final proof read, then convert all tabs to spaces TODO: final proof read, then convert all tabs to spaces
TODO: don't forget to add date to revision history! TODO: don't forget to add date to revision history!
@ -15,20 +15,22 @@ TODO: don't forget to add date to revision history!
#### ### ## ## #### #### ## ## #### ### ## #### #### #### ### ## ## #### #### ## ## #### ### ## #### ####
#### ####
Supermodel Version 0.2a
A Sega Model 3 Arcade Emulator. A Sega Model 3 Arcade Emulator.
Copyright 2011 Bart Trzynadlowski, Nik Henson Copyright 2011 Bart Trzynadlowski, Nik Henson
USER MANUAL FOR SUPERMODEL VERSION 0.2A
================ ================
Introduction Introduction
================ ================
Supermodel emulates the Sega Model 3 arcade platform. It uses OpenGL 2.1 and Supermodel emulates the Sega Model 3 arcade platform. It uses OpenGL 2.1 and
is available for Windows, Linux, and Mac OS X. In order to use it, you must runs on Windows, Linux, and Mac OS X. In order to use it, you must legally
legally possess ROM images of Model 3 games. Learning to operate Supermodel possess ROM images of Model 3 games. Learning to operate Supermodel will come
may come with a steep learning curve for most people. Carefully reading this with a steep learning curve for most people. Before seeking out help, please
document in its entirety before seeking out help is strongly advised. read this user manual carefully.
Supermodel is distributed as free software under the terms of the GNU General Supermodel is distributed as free software under the terms of the GNU General
Public License, included in LICENSE.txt. Additional copyright information for Public License, included in LICENSE.txt. Additional copyright information for
@ -44,10 +46,10 @@ The source code may be obtained from the official Supermodel web site:
============== ==============
This is an early public release of Supermodel. It is very much preliminary, This is an early public release of Supermodel. It is very much preliminary,
alpha version software (hence the 'a' in the version number). Development was alpha version software (hence the 'a' in the version number). Development
started in January of 2011 and has focused on reverse engineering aspects of began in January of 2011 and has focused on reverse engineering aspects of the
the system that are still unknown. Consequently, many important features, such Model 3 that are still unknown. Consequently, many important features, such as
as a proper user interface, are not yet implemented and game compatibility is a proper user interface, are not yet implemented and game compatibility is
still low. still low.
@ -81,7 +83,7 @@ still low.
1. Revision History 1. Revision History
======================= =======================
Version 0.2a (September ?, 2011) Version 0.2a (September 24, 2011)
- New, fully customizable input system. Supports any combination of - New, fully customizable input system. Supports any combination of
keyboards, mice, and analog and digital controllers. [Nik Henson] keyboards, mice, and analog and digital controllers. [Nik Henson]
- Texture offsets. Fixes models in 'Fighting Vipers 2', 'Virtual On', - Texture offsets. Fixes models in 'Fighting Vipers 2', 'Virtual On',
@ -94,13 +96,13 @@ still low.
- Sound support. Special thanks to ElSemi for contributing his SCSP - Sound support. Special thanks to ElSemi for contributing his SCSP
emulator and Karl Stenerud for allowing us to use his 68K emulator. emulator and Karl Stenerud for allowing us to use his 68K emulator.
- Multi-threading support. Sound and drive board emulation are off- - Multi-threading support. Sound and drive board emulation are off-
loaded to a separate thread, substantially enhancing performance. loaded to separate threads, substantially enhancing performance.
[Nik Henson] [Nik Henson]
- Z80 emulation based on code by Frank D. Cringle and YAZE-AG by - Z80 emulation based on code by Frank D. Cringle and YAZE-AG by
Andreas Gerlich. Andreas Gerlich.
- Digital Sound Board (MPEG music) emulation courtesy of R. Belmont and - Digital Sound Board (MPEG music) emulation courtesy of R. Belmont and
the MPEG decoder library by Tomislav Uzelac. the MPEG decoder library by Tomislav Uzelac.
- Improved ROM loading. It should no longer be as easily confused by - Improved ROM loader. It should no longer be as easily confused by
combined ROM sets as long as unused files are removed. combined ROM sets as long as unused files are removed.
- Configuration file now supports more settings and allows game- - Configuration file now supports more settings and allows game-
specific customization. specific customization.
@ -154,7 +156,8 @@ directories should be created:
Saves/ Directory where save states will be saved. Saves/ Directory where save states will be saved.
Supermodel requires OpenGL 2.1 and a substantial amount of both video and Supermodel requires OpenGL 2.1 and a substantial amount of both video and
system memory. system memory. A very fast CPU and GPU are needed to achieve playable frame
rates.
As of this version, Linux and Mac OS X binaries are not provided. Users must As of this version, Linux and Mac OS X binaries are not provided. Users must
compile their own. compile their own.
@ -170,7 +173,7 @@ arguments for an explanation of supported options.
Supermodel uses MAME-compatible ROM sets. It loads from ZIP archives based on Supermodel uses MAME-compatible ROM sets. It loads from ZIP archives based on
file checksums and automatically detects games; therefore, file names are not file checksums and automatically detects games; therefore, file names are not
important. A maximum of one ZIP file can be specified on the command line. For important. Only one ZIP file can be specified on the command line. For
example: example:
supermodel scud.zip -fullscreen supermodel scud.zip -fullscreen
@ -314,10 +317,10 @@ automatically adjusts the display area to retain the aspect ratio of the Model
3's native (and Supermodel's default) resolution, 496x384. Currently, this 3's native (and Supermodel's default) resolution, 496x384. Currently, this
cannot be overriden. Changing video modes at run-time is not yet supported. cannot be overriden. Changing video modes at run-time is not yet supported.
By default, Supermodel limits the frame rate to 60 Hz. This has no impact on By default, Supermodel limits the frame rate to 60 frames per second. This has
performance except when the frame rate exceeds 60 FPS on fast systems. This no impact on performance except when the frame rate exceeds 60 FPS on fast
can be disabled with the '-no-throttle' option. Some video drivers may systems. Frame rate limiting can be disabled with the '-no-throttle' option.
continue to lock to the refresh rate. Some video drivers may continue to lock to the refresh rate.
To change the resolution, use the '-res' command line option. For full screen To change the resolution, use the '-res' command line option. For full screen
mode, use '-fullscreen'. For example, to set a full screen 1920x1080 mode, mode, use '-fullscreen'. For example, to set a full screen 1920x1080 mode,
@ -326,7 +329,7 @@ try:
supermodel game.zip -res=1920,1080 -fullscreen supermodel game.zip -res=1920,1080 -fullscreen
Video settings may also be specified globally or on a per-game basis in the Video settings may also be specified globally or on a per-game basis in the
configuration file, described elsewhere in this document. configuration file, described elsewhere in this manual.
===================== =====================
@ -360,7 +363,7 @@ levels become too high.
To disable sound and music board emulation altogether, use the '-no-sound' and To disable sound and music board emulation altogether, use the '-no-sound' and
'-no-dsb' options. These will not merely mute the corresponding audio channels '-no-dsb' options. These will not merely mute the corresponding audio channels
but will prevent the CPUs and audio chips from being emulated altogether. Save but will prevent the audio co-processors from being emulated altogether. Save
states generated with these settings may not be able to properly restore audio states generated with these settings may not be able to properly restore audio
when loaded after emulation is re-enabled. when loaded after emulation is re-enabled.
@ -371,15 +374,16 @@ 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 also quite buggy. Sound glitches are known to occur now 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. and then, and many sounds and tunes do not sound quite correct yet.
=============== ===============
7. Controls 7. Controls
=============== ===============
Supermodel only supports the keyboard and mouse at present. Emulator functions Game controls are fully configurable and can be mapped to keyboards, mice, and
are listed below and cannot be changed. game controllers. Emulator functions, on the other hand, cannot be changed and
are listed below.
Function Key Assignment Function Key Assignment
-------- -------------- -------- --------------
@ -415,19 +419,22 @@ will save changes to 'Supermodel.ini'. You can choose which input to configure
using the Up and Down arrow keys. Clearing an input means it will be unusable. using the Up and Down arrow keys. Clearing an input means it will be unusable.
If the configuration dialog is not responding to your key presses, make sure If the configuration dialog is not responding to your key presses, make sure
that the blank window rather than the command prompt is selected. This may that the blank pop-up window rather than the command prompt is selected. This
seem counter-intuitive but inputs are captured by the graphical window while may seem counter-intuitive but inputs are captured by the graphical window
messages are printed to the command prompt. while messages are printed to the command prompt.
XBox 360 Controllers XBox 360 Controllers
-------------------- --------------------
For full XBox 360 controller support, the XInput system must be used For full XBox 360 controller support, the XInput system must be used on Windows
('-input-system=xinput'). Otherwise, the left and right trigger buttons cannot ('-input-system=xinput'). Otherwise, the left and right trigger buttons cannot
be mapped individually and force feedback will not work. Please read the be mapped individually and force feedback will not work. Please read the
section titled 'Input Systems', further below. section titled 'Input Systems', further below.
Mac OS X users can use Colin Munro's XBox 360 controller driver:
http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/OsxDriver
Analog Controls Analog Controls
--------------- ---------------
@ -461,7 +468,7 @@ Virtual On Twin Joysticks
to a tracked vehicle (e.g. a tank). Movement is accomplished by pushing both to a tracked vehicle (e.g. a tank). Movement is accomplished by pushing both
joysticks in the same direction. Pushing and pulling in opposite directions joysticks in the same direction. Pushing and pulling in opposite directions
will turn the robot, while pulling the joysticks apart sideways or pushing them will turn the robot, while pulling the joysticks apart sideways or pushing them
inwards is for jumping and falling back down to the ground, respectively. inwards are for jumping and falling back down to the ground, respectively.
Supermodel supports mapping the individual joysticks but also provides 'macro' Supermodel supports mapping the individual joysticks but also provides 'macro'
controls by default. These allow all the necessary twin joystick commands to controls by default. These allow all the necessary twin joystick commands to
@ -486,13 +493,16 @@ Light gun axes can be mapped to mice, analog controls, or even digital buttons.
To simulate pointing off-screen (required in order to reload), a 'point off- To simulate pointing off-screen (required in order to reload), a 'point off-
screen' input is provided which, for as long as it is pressed, will aim the gun screen' input is provided which, for as long as it is pressed, will aim the gun
off-screen. To reload, hold down this button and then, while holding it, press off-screen. To reload, hold down this button and then, while holding it, press
the trigger. the trigger. For automatic reloading, the 'InputAutoTrigger' setting can be
enabled in the configuration file (described elsewhere in this manual).
Crosshairs for both players will be visible in full screen mode and can also be Crosshairs will be visible in full screen mode and can also be enabled in
enabled in windowed modes. Use Alt-I to select the crosshair mode. windowed modes. Use Alt-I to cycle through different crosshair options (enable
for a single player, both, or none).
For multiple mouse support, allowing two mice or PC light guns to be used, Raw For multiple mouse support, allowing two mice or PC light guns to be mapped,
Input must be used. This is supported only on Windows and is described below. Raw Input must be used. This is supported only on Windows and is described
below.
Input Systems Input Systems
@ -518,8 +528,8 @@ Windows users can select between four different input systems:
Windows but does not provide full support for all devices. Windows but does not provide full support for all devices.
When switching input systems with '-input-system', you must also configure your When switching input systems with '-input-system', you must also configure your
inputs using the same option. For example, when running Supermodel with inputs using the same option. For example, when running Supermodel with XInput
XInput ('supermodel game.zip -input-system=xinput'), you must configure with ('supermodel game.zip -input-system=xinput'), you must also configure with
XInput ('supermodel -config-inputs -input-system=xinput'). Many settings are XInput ('supermodel -config-inputs -input-system=xinput'). Many settings are
not compatible between input systems. not compatible between input systems.
@ -563,8 +573,8 @@ Force feedback can be enabled and tuned in the configuration file. Setting
ForceFeedback = 1 ForceFeedback = 1
There are three DirectInput effects: constant force, self centering, and There are four DirectInput effects: constant force, self centering, friction,
vibration. The strength of each can be tuned with the following settings: and vibration. The strength of each can be tuned with the following settings:
DirectInputConstForceMax = 100 DirectInputConstForceMax = 100
DirectInputSelfCenterMax = 100 DirectInputSelfCenterMax = 100
@ -588,7 +598,8 @@ The relevant settings are:
The constant force threshold specifies how strong a constant force command must The constant force threshold specifies how strong a constant force command must
be before it is sent to the controller as a vibration effect (whose strength is be before it is sent to the controller as a vibration effect (whose strength is
determined by XInputConstForceMax). The default values are shown above and determined by XInputConstForceMax). The default values are shown above and
will require calibration by the user on a game-by-game basis. will require calibration by the user on a game-by-game basis to achieve the
best feel.
============================ ============================
@ -600,11 +611,19 @@ Save states are saved and restored by pressing F5 and F7, respectively. Up to
Saves/ directory, which must exist beforehand. If you extracted the Supermodel Saves/ directory, which must exist beforehand. If you extracted the Supermodel
ZIP file correctly, it will have been created automatically. ZIP file correctly, it will have been created automatically.
If a Model 3 co-processor (ie. sound board, DSB, drive board) is disabled when
a save state is taken, it will not resume normal operation when the state is
loaded, even if Supermodel is running with the co-processor re-enabled. The
drive board (and consequently, force feedback effects) is explicitly disabled
for the remainder of the session if a save state with an inactive drive board
is loaded. Audio co-processors are not, and therefore audio playback may
eventually resume after the audio boards have booted themselves up.
Non-volatile memory (NVRAM) consists of battery-backed backup RAM and an EEPROM Non-volatile memory (NVRAM) consists of battery-backed backup RAM and an EEPROM
chip. The former is used for high score data and statistics whereas the latter chip. The former is used for high score data and statistics whereas the latter
stores machine settings (often accessed using the Test buttons). NVRAM is stores machine settings (often accessed using the Test buttons). NVRAM is
automatically saved each time Supermodel exits and is loaded at start-up. It automatically saved each time Supermodel exits and is loaded at start-up. It
can be cleared by deleting the NVRAM files or using Alt-N. can be cleared by deleting the NVRAM files or pressing Alt-N.
======================================= =======================================
@ -643,7 +662,7 @@ in attract mode will result in a PowerPC crash before the stage loads. This is
caused by an unknown emulation bug. Simply wait until the Darth Vader sequence caused by an unknown emulation bug. Simply wait until the Darth Vader sequence
appears before attempting to start a game. appears before attempting to start a game.
If Star Wars Trilogy is booting directly into the stage select screen, it is If 'Star Wars Trilogy' is booting directly into the stage select screen, it is
probably because you exited Supermodel with credits still in the machine. probably because you exited Supermodel with credits still in the machine.
Clear the NVRAM (Alt-N) and reset the game (Alt-R). Clear the NVRAM (Alt-N) and reset the game (Alt-R).
@ -651,8 +670,8 @@ Clear the NVRAM (Alt-N) and reset the game (Alt-R).
Sega Rally 2 Sega Rally 2
------------ ------------
As with Star Wars Trilogy, you may experience problems if you attempt to start As with 'Star Wars Trilogy', you may experience problems if you attempt to
a game before any 3D graphics are displayed (for example, during the Sega start a game before any 3D graphics are displayed (for example, during the Sega
logo). logo).
The region can be changed by entering the test menu (press the Test button) and The region can be changed by entering the test menu (press the Test button) and
@ -660,11 +679,22 @@ then pressing the Service button four times for short durations, twice for long
durations, twice for short durations, and once again for a long duration. durations, twice for short durations, and once again for a long duration.
Spikeout and Spikeout Final Edition
-----------------------------------
These games can be played all the way through but may lock up during the
attract mode. There are periodic texture glitches due to Supermodel's
inadequate texture caching system and possibly also due to a texture offset
bug.
The Lost World The Lost World
-------------- --------------
To reload, the light gun must be pointed off-screen by pressing (and holding) To reload, the light gun must be pointed off-screen by pressing (and holding)
the 'off-screen' button and, simultaneously, pressing the trigger to shoot. the 'off-screen' button and, simultaneously, pressing the trigger to shoot.
This behavior can be changed with the 'InputAutoTrigger' setting in the
configuration file.
The region can be changed by entering the test menu (press the Test button) and The region can be changed by entering the test menu (press the Test button) and
pressing: Start, Start, Service, Start, Service, Test. Use the player 1 Start pressing: Start, Start, Service, Start, Service, Test. Use the player 1 Start
@ -681,6 +711,8 @@ during transition scenes.
Virtua Striker 2 '98 (Step 1.5 and 2.0 versions) Virtua Striker 2 '98 (Step 1.5 and 2.0 versions)
------------------------------------------------ ------------------------------------------------
The Virtua Striker games all run very slowly for an unknown reason.
The region can be changed by entering the test menu (press the Test button) The region can be changed by entering the test menu (press the Test button)
and, in the 'Game Assignments' menu, performing the following sequence: and, in the 'Game Assignments' menu, performing the following sequence:
@ -741,7 +773,7 @@ game-specific settings, and lastly, global settings.
An index of all allowed settings is provided further below in this document. An index of all allowed settings is provided further below in this document.
NOTE: Type carefully! Supermodel will not report syntax errors or detect NOTE: Type carefully! Supermodel will not report syntax errors nor detect
typos. Carefully read the discussion of the file syntax below. To verify that typos. Carefully read the discussion of the file syntax below. To verify that
your intended settings are taking effect, check the 'error.log' file that is your intended settings are taking effect, check the 'error.log' file that is
produced by Supermodel during each run. produced by Supermodel during each run.
@ -750,16 +782,15 @@ produced by Supermodel during each run.
File Structure and Syntax File Structure and Syntax
------------------------- -------------------------
The configuration file is a list of settings grouped under sections. All names The configuration file is a list of settings grouped by sections. All setting
and settings in the file are case sensitive. Settings take the form: names and their arguments are case sensitive. They take the form:
Name = Argument Name = Argument
Names are case sensitive. Only one setting per line is allowed. Only two Only one setting per line is allowed. Only two types of arguments are allowed:
types of arguments are allowed: integers and strings. The choice of which to integers and strings. The choice of which to use is determined by the setting.
use is determined by the setting. Integers are unsigned and begin at 0. Integers are unsigned and begin at 0. Strings can contain any characters and
Strings can contain any characters and are enclosed by double quotes. are enclosed by double quotes. Examples:
Examples:
IntegerSetting1 = 0 IntegerSetting1 = 0
IntegerSetting2 = 65536 IntegerSetting2 = 65536
@ -788,7 +819,7 @@ Global and Game-Specific Sections
Sections determine whether settings are applied globally, to all games, or to Sections determine whether settings are applied globally, to all games, or to
specific games. Game-specific settings will override global settings and can specific games. Game-specific settings will override global settings and can
be used to tune Supermodel on a game-by-game basis. Global settings should be be used to tune Supermodel on a game-by-game basis. Global settings must be
placed in the 'Global' section and game-specific settings in sections named placed in the 'Global' section and game-specific settings in sections named
after the ROM sets. ROM sets must be typed in lower case and use the MAME after the ROM sets. ROM sets must be typed in lower case and use the MAME
(http://www.mamedev.org) naming convention. They can be obtained by running (http://www.mamedev.org) naming convention. They can be obtained by running
@ -845,7 +876,7 @@ by generating a configuration file using '-config-inputs'.
===================================== =====================================
All valid command line settings are listed here, ordered by category. Defaults All valid command line settings are listed here, ordered by category. Defaults
are given under the assumption that they also have not been changed in the are given under the assumption that they have not been changed in the
configuration file. configuration file.
Square brackets ('[' and ']') indicate optional parameters. Angled brackets Square brackets ('[' and ']') indicate optional parameters. Angled brackets
@ -890,9 +921,10 @@ not. All options are case sensitive.
may slow down Supermodel on weaker computers. Supermodel's may slow down Supermodel on weaker computers. Supermodel's
performance can frequently be improved by lowering the performance can frequently be improved by lowering the
PowerPC frequency (25 MHz works in many games). In some PowerPC frequency (25 MHz works in many games). In some
games, this will cause timing problems. The optimum value games, this will cause timing problems and jerky
for this setting will vary from game to game and system to performance. The optimum frequency will vary from game to
system. Valid values are 1 to 1000. game and system to system. Valid values for <f> are 1 to
1000.
---------------- ----------------
@ -908,7 +940,8 @@ not. All options are case sensitive.
Description: Disables 60 FPS throttling. The Model 3 runs at a 60 Hz Description: Disables 60 FPS throttling. The Model 3 runs at a 60 Hz
refresh rate, which Supermodel enforces if this option is refresh rate, which Supermodel enforces if this option is
omitted. Unthrottled operation may not work on some omitted. Unthrottled operation may not work on some
systems because graphics drivers may lock the refresh rate. systems because graphics drivers may lock the refresh rate
on their own.
---------------- ----------------
@ -920,8 +953,9 @@ not. All options are case sensitive.
Option: -res=<x>,<y> Option: -res=<x>,<y>
Description: Resolution of the display in pixels. The default is Description: Resolution of the display in pixels, with <x> being width
496x384, the Model 3's native resolution. and <y> being height. The default is 496x384, the Model
3's native resolution.
---------------- ----------------
@ -935,9 +969,12 @@ not. All options are case sensitive.
-vert-shader=<file> -vert-shader=<file>
Description: Allows external fragment and vertex shaders to be used for Description: Allows external fragment and vertex shaders to be used for
3D rendering. Files should be ASCII text files containing 3D rendering. <file> is the file path. Files should be
GLSL source code. The file extension is not important. By ASCII text files containing GLSL source code. The file
default, Supermodel's internal shader programs are used. extension is not important. By default, Supermodel's
internal shader programs are used. These options are
intended for future extensibility and for use by
developers.
---------------- ----------------
@ -967,8 +1004,8 @@ not. All options are case sensitive.
Description: Specifies the volume of MPEG music produced by the Digital Description: Specifies the volume of MPEG music produced by the Digital
Sound Board and the audio produced by the sound board in Sound Board and the audio produced by the sound board in
percent. The default is 100, which is full volume, and the percent. The default is 100, which is full volume, and the
valid range is 0 (muted) to 200%. See the section on audio valid range of <v> is 0 (muted) to 200. See the section on
settings for more information. audio settings for more information.
---------------- ----------------
@ -992,7 +1029,7 @@ not. All options are case sensitive.
Description: Sets the input system. This is only available on Windows, Description: Sets the input system. This is only available on Windows,
where the default is 'dinput' (DirectInput). SDL is used where the default is 'dinput' (DirectInput). SDL is used
for all other platforms. Valid input systems are: for all other platforms. Valid choices for <s> are:
dinput DirectInput. dinput DirectInput.
xinput XInput xinput XInput
@ -1563,6 +1600,7 @@ we would like to thank:
- ElSemi, for all sorts of technical information and insight - ElSemi, for all sorts of technical information and insight
- Naibo Zhang, for his work on Model 3 graphics - Naibo Zhang, for his work on Model 3 graphics
- R. Belmont, for all sorts of help and the Mac OS X port - R. Belmont, for all sorts of help and the Mac OS X port
- krom, for adding in the remaining ROM sets
- Andrew Lewis (a.k.a. Andy Geezer), for dumping the drive board ROMs and - Andrew Lewis (a.k.a. Andy Geezer), for dumping the drive board ROMs and
providing region codes providing region codes
- The Guru, for his efforts in dumping Model 3 ROM sets - The Guru, for his efforts in dumping Model 3 ROM sets
@ -1577,10 +1615,12 @@ we would like to thank:
Supermodel includes code from the following projects: Supermodel includes code from the following projects:
zlib: http://zlib.net - zlib: http://zlib.net
minizip: http://www.winimage.com/zLibDll/minizip.html - minizip: http://www.winimage.com/zLibDll/minizip.html
The OpenGL Extension - YAZE-AG: http://www.mathematik.uni-ulm.de/users/ag/yaze/
Wrangler Library (GLEW): http://glew.sourceforge.net - Amp by Tomislav Uzalec
- The OpenGL Extension Wrangler Library (GLEW):
http://glew.sourceforge.net
The OpenGL Extension Wrangler Library The OpenGL Extension Wrangler Library
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>

View file

@ -66,7 +66,7 @@ CC = gcc
OCC = gcc OCC = gcc
LD = gcc LD = gcc
COMPILER_FLAGS = -I$(OBJ_DIR) -ISrc/ -ISrc/OSD -ISrc/OSD/SDL/ -ISrc/Pkgs/ -ISrc/CPU/68K/Musashi -ISrc/Sound/MPEG -c -Wall -O3 -DUSE_FILE32API -DSUPERMODEL_OSX COMPILER_FLAGS = -I$(OBJ_DIR) -ISrc/ -ISrc/OSD -ISrc/OSD/SDL/ -ISrc/Pkgs/ -ISrc/CPU/68K/Musashi -ISrc/Sound/MPEG -c -Wall -O3 -DUSE_FILE32API -DSUPERMODEL_OSX
CFLAGS = $(COMPILER_FLAGS) -std=c99 CFLAGS = $(COMPILER_FLAGS)
CPPFLAGS = $(COMPILER_FLAGS) CPPFLAGS = $(COMPILER_FLAGS)
LFLAGS = -o $(OUTFILE) $(SDL_LDFLAGS) -lz -lm -lstdc++ LFLAGS = -o $(OUTFILE) $(SDL_LDFLAGS) -lz -lm -lstdc++
@ -213,7 +213,7 @@ $(OBJ_DIR)/%.o: Src/Pkgs/%.c
# To eliminate name conflicts, object files have the prefix "amp_" attached. # To eliminate name conflicts, object files have the prefix "amp_" attached.
# #
$(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp Src/Sound/MPEG/%.h $(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp Src/Sound/MPEG/%.h
$(CC) $< $(CFLAGS) -o $(OBJ_DIR)/amp_$(*F).o $(CC) $< $(CPPFLAGS) -o $(OBJ_DIR)/amp_$(*F).o
$(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp $(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp
$(CC) $< $(CFLAGS) -o $(OBJ_DIR)/amp_$(*F).o $(CC) $< $(CPPFLAGS) -o $(OBJ_DIR)/amp_$(*F).o

View file

@ -67,7 +67,7 @@ OUTFILE = $(BIN_DIR)/Supermodel
CC = gcc CC = gcc
LD = gcc LD = gcc
COMPILER_FLAGS = `sdl-config --cflags` -ISrc/ -ISrc/OSD/SDL/ -ISrc/Pkgs/ -c -Wall -O3 COMPILER_FLAGS = `sdl-config --cflags` -ISrc/ -ISrc/OSD/SDL/ -ISrc/Pkgs/ -c -Wall -O3
CFLAGS = $(COMPILER_FLAGS) -std=c99 CFLAGS = $(COMPILER_FLAGS)
CPPFLAGS = $(COMPILER_FLAGS) CPPFLAGS = $(COMPILER_FLAGS)
LFLAGS = -o $(OUTFILE) -L$(SDL_LIBPATH) -lGL -lGLU -lSDL -lz -lm -lstdc++ LFLAGS = -o $(OUTFILE) -L$(SDL_LIBPATH) -lGL -lGLU -lSDL -lz -lm -lstdc++
@ -215,7 +215,7 @@ $(OBJ_DIR)/%.o: Src/Pkgs/%.c
# To eliminate name conflicts, object files have the prefix "amp_" attached. # To eliminate name conflicts, object files have the prefix "amp_" attached.
# #
$(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp Src/Sound/MPEG/%.h $(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp Src/Sound/MPEG/%.h
$(CC) $< $(CFLAGS) -o $(OBJ_DIR)/amp_$(*F).o $(CC) $< $(CPPFLAGS) -o $(OBJ_DIR)/amp_$(*F).o
$(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp $(OBJ_DIR)/amp_%.o: Src/Sound/MPEG/%.cpp
$(CC) $< $(CFLAGS) -o $(OBJ_DIR)/amp_$(*F).o $(CC) $< $(CPPFLAGS) -o $(OBJ_DIR)/amp_$(*F).o

View file

@ -71,6 +71,10 @@ endif
# Edit these paths as necessary. # Edit these paths as necessary.
# The following environment variables are used: # The following environment variables are used:
# DXSDK_DIR is Direct X installation directory. # DXSDK_DIR is Direct X installation directory.
#
# SDL and zlib must have been built with the multi-threaded static run-time
# library (/MT option). By default, they usually come built with /MD. You must
# either compile them yourself or edit the compiler options below to use /MD.
############################################################################### ###############################################################################
# #

View file

@ -677,9 +677,9 @@ static void UpdateCrosshairs(CInputs *Inputs, unsigned showCrosshairs)
// Draw visible crosshairs // Draw visible crosshairs
glBegin(GL_TRIANGLES); glBegin(GL_TRIANGLES);
if ((showCrosshairs & 2) && !Inputs->trigger[0]->offscreenValue) // Player 1 if ((showCrosshairs & 1) && !Inputs->trigger[0]->offscreenValue) // Player 1
DrawCrosshair(x[0], y[0], 1.0f, 0.0f, 0.0f); DrawCrosshair(x[0], y[0], 1.0f, 0.0f, 0.0f);
if ((showCrosshairs & 1) && !Inputs->trigger[1]->offscreenValue) // Player 2 if ((showCrosshairs & 2) && !Inputs->trigger[1]->offscreenValue) // Player 2
DrawCrosshair(x[1], y[1], 0.0f, 1.0f, 0.0f); DrawCrosshair(x[1], y[1], 0.0f, 1.0f, 0.0f);
glEnd(); glEnd();
} }
@ -739,11 +739,8 @@ int Supermodel(const char *zipFile, CInputs *Inputs, CINIFile *CmdLine)
// Hide mouse if fullscreen, enable crosshairs for gun games // Hide mouse if fullscreen, enable crosshairs for gun games
Inputs->GetInputSystem()->SetMouseVisibility(!g_Config.fullScreen); Inputs->GetInputSystem()->SetMouseVisibility(!g_Config.fullScreen);
gameHasLightguns = !!(Model3->GetGameInfo()->inputFlags & (GAME_INPUT_GUN1|GAME_INPUT_GUN2)); gameHasLightguns = !!(Model3->GetGameInfo()->inputFlags & (GAME_INPUT_GUN1|GAME_INPUT_GUN2));
if (g_Config.fullScreen) if (g_Config.fullScreen && gameHasLightguns)
{ showCrosshairs = 1; // show player 1 cursor only by default (TODO: add an IsMapped() member to CInput to allow testing for both lightguns)
if (gameHasLightguns)
showCrosshairs = 3;
}
// Attach the inputs to the emulator // Attach the inputs to the emulator
Model3->AttachInputs(Inputs); Model3->AttachInputs(Inputs);
@ -980,14 +977,14 @@ int Supermodel(const char *zipFile, CInputs *Inputs, CINIFile *CmdLine)
} }
else if (Inputs->uiSelectCrosshairs->Pressed() && gameHasLightguns) else if (Inputs->uiSelectCrosshairs->Pressed() && gameHasLightguns)
{ {
// Count downwards to get this sequence: both, player 1, player 2, none
showCrosshairs--; showCrosshairs++;
switch ((showCrosshairs&3)) switch ((showCrosshairs&3))
{ {
case 0: puts("Crosshairs disabled."); break; case 0: puts("Crosshairs disabled."); break;
case 3: puts("Crosshairs enabled."); break; case 3: puts("Crosshairs enabled."); break;
case 2: puts("Showing Player 1 crosshair only."); break; case 1: puts("Showing Player 1 crosshair only."); break;
case 1: puts("Showing Player 2 crosshair only."); break; case 2: puts("Showing Player 2 crosshair only."); break;
} }
} }
else if (Inputs->uiClearNVRAM->Pressed()) else if (Inputs->uiClearNVRAM->Pressed())

View file

@ -38,7 +38,7 @@
Program-Wide Definitions Program-Wide Definitions
******************************************************************************/ ******************************************************************************/
#define SUPERMODEL_VERSION "0.2a-RC3" // version string #define SUPERMODEL_VERSION "0.2a" // version string
/****************************************************************************** /******************************************************************************