mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2024-11-22 05:45:38 +00:00
442 lines
20 KiB
Plaintext
442 lines
20 KiB
Plaintext
|
TODO: convert all tabs to spaces
|
||
|
|
||
|
|
||
|
#### ### ###
|
||
|
## ## ## ##
|
||
|
### ## ## ## ### #### ## ### ## ## #### ## #### ##
|
||
|
### ## ## ## ## ## ## ### ## ####### ## ## ##### ## ## ##
|
||
|
### ## ## ## ## ###### ## ## ####### ## ## ## ## ###### ##
|
||
|
## ## ## ## ##### ## ## ## # ## ## ## ## ## ## ##
|
||
|
#### ### ## ## #### #### ## ## #### ### ## #### ####
|
||
|
####
|
||
|
|
||
|
Supermodel Version 0.2a
|
||
|
A Sega Model 3 Arcade Emulator.
|
||
|
Copyright 2011 Bart Trzynadlowski, Nik Henson
|
||
|
|
||
|
|
||
|
----------------
|
||
|
Terms of Use
|
||
|
----------------
|
||
|
|
||
|
Supermodel is distributed as free software under the terms of the GNU General
|
||
|
Public License, included in LICENSE.txt. Additional copyright information for
|
||
|
software included within Supermodel is located at the bottom of this file.
|
||
|
|
||
|
The source code may be obtained from the official Supermodel web site:
|
||
|
|
||
|
http://www.Supermodel3.com
|
||
|
|
||
|
|
||
|
--------------
|
||
|
Disclaimer
|
||
|
--------------
|
||
|
|
||
|
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
|
||
|
started in January of 2011 and has focused on reverse engineering aspects of
|
||
|
the system that are still unknown. Consequently, many important features, such
|
||
|
as a proper user interface, are not yet implemented and game compatibility is
|
||
|
still low.
|
||
|
|
||
|
|
||
|
--------------------
|
||
|
Revision History
|
||
|
--------------------
|
||
|
|
||
|
Version 0.2a
|
||
|
- New, fully customizable input system. Supports any combination of
|
||
|
keyboards, mice, and analog and digital game pads. [Nik Henson]
|
||
|
- Texture offsets. Fixes models in 'Fighting Vipers 2', 'Virtual On',
|
||
|
cars in the 'Scud Race' and 'Daytona USA 2' selection screens, etc.
|
||
|
- Fixed a 2D palette bug that would cause black pixels to occasionally
|
||
|
turn transparent.
|
||
|
- Added all remaining ROM sets. [krom]
|
||
|
- Got some new games to boot: 'Spikeout', 'Ski Champ', 'Sega Bass
|
||
|
Fishing', 'Dirt Devils', etc.
|
||
|
- Sound support. Special thanks to ElSemi for contributing his SCSP
|
||
|
emulator and Karl Stenerud for allowing us to use his 68K emulator.
|
||
|
- Multi-threading support. Sound and drive board emulation are off-
|
||
|
loaded to a separate thread, substantially enhancing performance.
|
||
|
[Nik Henson]
|
||
|
- Z80 emulation based on code by Frank D. Cringle and YAZE-AG by
|
||
|
Andreas Gerlich.
|
||
|
- Digital Sound Board (MPEG music) emulation courtesy of R. Belmont and
|
||
|
the MPEG decoder library by Tomislav Uzelac.
|
||
|
- Improved ROM loading. It should no longer be as easily confused by
|
||
|
combined ROM sets as long as unused files are removed.
|
||
|
- Configuration file now supports more settings and allows game-
|
||
|
specific customization.
|
||
|
- Added light gun crosshairs ('Lost World'), enabled by default in full
|
||
|
screen mode and selectable by pressing Alt-I.
|
||
|
- Drive board and force feedback emulation for 'Scud Race', 'Daytona
|
||
|
USA 2', and 'Sega Rally 2'. [Nik Henson]
|
||
|
- Changed gear shifting: added a dedicated neutral gear and sequential
|
||
|
shifting.
|
||
|
- Console-based debugger (not enabled by default, must be
|
||
|
enabled during compile-time). [Nik Henson]
|
||
|
- Source code and Makefile cleanup.
|
||
|
|
||
|
Version 0.1.2a
|
||
|
- Included missing GLEW files.
|
||
|
|
||
|
Version 0.1.1a
|
||
|
- Minor source code update.
|
||
|
- Set Render3D to NULL in the CReal3D constructor. Fixes crashes that
|
||
|
occur on some builds. [Nik Henson]
|
||
|
- Cleaned up UNIX Makefile and added OS X Makefile. [R. Belmont]
|
||
|
- Small changes to ppc_ops.cpp for C++0x compliance. [R. Belmont]
|
||
|
- Included glew.h into the source tree. [R. Belmont]
|
||
|
- Changed WIN32 definition to SUPERMODEL_WIN32.
|
||
|
|
||
|
Version 0.1a
|
||
|
- Initial public alpha release.
|
||
|
|
||
|
|
||
|
-------------------------
|
||
|
Installing Supermodel
|
||
|
-------------------------
|
||
|
|
||
|
To install Supermodel on Windows, extract the ZIP archive containing the
|
||
|
Supermodel executable to a folder of your choice. The following files and
|
||
|
directories should be created:
|
||
|
|
||
|
Name Description
|
||
|
---- -----------
|
||
|
Supermodel.exe Supermodel program. Run this.
|
||
|
SDL.dll The SDL library. Use the bundled DLL file.
|
||
|
README.txt This text file.
|
||
|
LICENSE.txt Supermodel license and terms of use.
|
||
|
Config/ Directory where configuration files will be stored.
|
||
|
NVRAM/ Directory where NVRAM contents will be saved.
|
||
|
Saves/ Directory where save states will be saved.
|
||
|
|
||
|
Supermodel requires OpenGL 2.0 and a substantial amount of both video and
|
||
|
system memory. The 'error.log' file, which is produced during each session,
|
||
|
records the amount of video memory allocated for vertex buffers. If either the
|
||
|
static or dynamic vertex buffer are substantially less than 16 MB or 4 MB,
|
||
|
respectively, Supermodel may run abnormally slowly and drop some geometry.
|
||
|
|
||
|
|
||
|
-----------------------------
|
||
|
Compiling the Source Code
|
||
|
-----------------------------
|
||
|
|
||
|
First, ensure that OpenGL, SDL (http://www.libsdl.org), and zlib
|
||
|
(http://zlib.net) are installed. GLEW (http://glew.sourceforge.net) is now
|
||
|
included in the source tree and should not need to be installed separately.
|
||
|
|
||
|
Next, extract the Supermodel source code and copy the appropriate Makefile
|
||
|
from the Makefiles/ directory to the base directory (that is, the one above
|
||
|
Src/ and Makefiles/). Makefiles for 32-bit Windows (Microsoft Visual C++
|
||
|
2008), Linux/UNIX (GCC), and Mac OS X (GCC) are provided, all requiring GNU
|
||
|
Make. For Windows developers, MinGW (http://www.mingw.org) provides GNU Make.
|
||
|
Alternatively, you can write a Makefile compatible with Microsoft Nmake and
|
||
|
submit it to me for inclusion in the next release. ;) Consult the Visual
|
||
|
Studio documentation to learn how to configure the Microsoft compiler for
|
||
|
command line operation.
|
||
|
|
||
|
Edit SDL_LIBPATH and SDL_INCLUDEPATH to reflect the location of the SDL
|
||
|
development library and header files. This should only be necessary for
|
||
|
Windows. The UNIX and Mac OS X Makefiles should be able to automatically
|
||
|
locate SDL if it was installed properly.
|
||
|
|
||
|
Finally, run 'make'. If all goes well it should produce a Supermodel binary.
|
||
|
|
||
|
|
||
|
---------------
|
||
|
Basic Usage
|
||
|
---------------
|
||
|
|
||
|
For now, Supermodel does not include a proper user interface. It is operated
|
||
|
entirely from the command line. Run 'Supermodel' without any command line
|
||
|
arguments for an explanation of supported options.
|
||
|
|
||
|
Supermodel uses MAME-compatible ROM sets. It loads from ZIP archives based on
|
||
|
file checksums and automatically detects games; therefore, file names are not
|
||
|
important. ROMs that are split into parent and child sets (eg., 'Scud Race
|
||
|
Plus', whose parent ROM set is 'Scud Race') must be combined into a single ZIP
|
||
|
file with the child ROM set appearing first to ensure Supermodel detects the
|
||
|
correct game to load. The best way to do this is to add the contents of the
|
||
|
parent ROM set into the child ROM set ZIP file. If for some reason Supermodel
|
||
|
detects the wrong game, you should try to combine them the opposite way.
|
||
|
|
||
|
To improve performance, Supermodel underclocks the PowerPC down to 25 MHz by
|
||
|
default. This may be the cause of some games running too slowly even when the
|
||
|
frame rate is at 60 FPS (which is the native rate). You may want to experiment
|
||
|
with increasing the clock frequency, although this comes with a performance
|
||
|
penalty.
|
||
|
|
||
|
Note that there is no user interface and all messages are printed to the
|
||
|
terminal. In full screen mode, they will not be visible.
|
||
|
|
||
|
|
||
|
-------------------
|
||
|
Supported Games
|
||
|
-------------------
|
||
|
|
||
|
The following games and ROM sets are supported by this version of Supermodel.
|
||
|
Not all of them are playable.
|
||
|
|
||
|
ROM Set Game Title
|
||
|
------- ----------
|
||
|
vf3 Virtua Fighter 3
|
||
|
lemans24 Le Mans 24
|
||
|
scud Scud Race
|
||
|
scudp Scud Race Plus
|
||
|
lostwsga The Lost World
|
||
|
von2 Virtual On Oratorio Tangram
|
||
|
vs298 Virtua Striker 2 '98
|
||
|
srally2 Sega Rally 2
|
||
|
daytona2 Daytona USA 2
|
||
|
dayto2pe Daytona USA 2 Power Edition
|
||
|
fvipers2 Fighting Vipers 2
|
||
|
harley Harley Davidson & L.A. Riders
|
||
|
lamachin L.A. Machineguns
|
||
|
oceanhun The Ocean Hunter
|
||
|
swtrilgy Star Wars Trilogy
|
||
|
eca Emergency Car Ambulance
|
||
|
|
||
|
The '-print-games' option can be used to obtain this list.
|
||
|
|
||
|
|
||
|
------------------
|
||
|
Video Settings
|
||
|
------------------
|
||
|
|
||
|
Supermodel may be run in either windowed (default) or full screen mode. It
|
||
|
automatically adjusts the display area to retain the aspect ratio of the Model
|
||
|
3's native (and Supermodel's default) resolution, 496x384. Currently, this
|
||
|
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
|
||
|
performance except when the frame rate exceeds 60 FPS on fast systems. This
|
||
|
can be disabled with the '-no-throttle' option.
|
||
|
|
||
|
The mouse cursor is disabled by default in full screen modes but can be toggled
|
||
|
with the Alt-I command.
|
||
|
|
||
|
|
||
|
------------
|
||
|
Controls
|
||
|
------------
|
||
|
|
||
|
Supermodel only supports the keyboard and mouse at present. Emulator functions
|
||
|
are listed below and cannot be changed.
|
||
|
|
||
|
Function Key Assignment
|
||
|
-------- --------------
|
||
|
Exit Escape
|
||
|
Reset Alt-R
|
||
|
Clear NVRAM Alt-N
|
||
|
Toggle Mouse Cursor (Full Screen Mode) Alt-I
|
||
|
Toggle 60 Hz Frame Limiting Alt-T
|
||
|
Save State F5
|
||
|
Load State F7
|
||
|
Change Save Slot F6
|
||
|
|
||
|
Game controls can be configured using the '-config-inputs' command line option.
|
||
|
This starts a configuration utility and requires each button for all supported
|
||
|
games to be defined. Pressing Escape retains the current setting. The blank
|
||
|
window that opens up must be selected when pressing keys. To choose a mouse
|
||
|
button, click the black area of the window. New configurations are saved to
|
||
|
Config/Supermodel.ini. The Config/ directory should have been automatically
|
||
|
created when Supermodel was extracted from its ZIP file.
|
||
|
|
||
|
Default settings are given below.
|
||
|
|
||
|
Game/Input Type Input Default Assignment
|
||
|
--------------- ----- ------------------
|
||
|
All Start 1 1
|
||
|
All Start 2 2
|
||
|
All Coin 1 3
|
||
|
All Coin 2 4
|
||
|
All Service A 5
|
||
|
All Test A 6
|
||
|
All Service B 7
|
||
|
All Test B 8
|
||
|
Digital joystick Up Up arrow
|
||
|
Digital joystick Down Down arrow
|
||
|
Digital joystick Left Left arrow
|
||
|
Digital joystick Right Right arrow
|
||
|
Fighting games Punch A
|
||
|
Fighting games Kick S
|
||
|
Fighting games Guard D
|
||
|
Fighting games Escape F
|
||
|
Racing games Steering Left/Right arrows
|
||
|
Racing games Accelerate Up arrow
|
||
|
Racing games Brake Down arrow
|
||
|
Racing games Shift 1/Up Q
|
||
|
Racing games Shift 2/Down W
|
||
|
Racing games Shift 3 E
|
||
|
Racing games Shift 4 R
|
||
|
Racing games VR1 (Red) A
|
||
|
Racing games VR1 (Blue) S
|
||
|
Racing games VR1 (Yellow) D
|
||
|
Racing games VR1 (Green) F
|
||
|
Sega Rally 2 View Change A
|
||
|
Sega Rally 2 Hand Brake S
|
||
|
Virtua Striker 2 Short Pass A
|
||
|
Virtua Striker 2 Long Pass S
|
||
|
Virtua Striker 2 Shoot D
|
||
|
Virtual On Oratorio Tangram Turn Left Q
|
||
|
Virtual On Oratorio Tangram Turn Right W
|
||
|
Virtual On Oratorio Tangram Forward Up arrow
|
||
|
Virtual On Oratorio Tangram Reverse Down arrow
|
||
|
Virtual On Oratorio Tangram Strafe Left Left arrow
|
||
|
Virtual On Oratorio Tangram Strafe Right Right arrow
|
||
|
Virtual On Oratorio Tangram Jump E
|
||
|
Virtual On Oratorio Tangram Crouch R
|
||
|
Virtual On Oratorio Tangram Left Shot Trigger A
|
||
|
Virtual On Oratorio Tangram Right Shot Trigger S
|
||
|
Virtual On Oratorio Tangram Left Turbo Z
|
||
|
Virtual On Oratorio Tangram Right Turbo X
|
||
|
Analog joystick Motion Mouse
|
||
|
Analog joystick Trigger Button A
|
||
|
Analog joystick Event Button S
|
||
|
Lightgun Aim Mouse
|
||
|
Lightgun Trigger Left mouse button
|
||
|
Lightgun Point Off-screen Right mouse button
|
||
|
|
||
|
The lightgun will point off-screen as long as the 'point off-screen' button is
|
||
|
held down. To shoot off-screen, hold this button and then simultaneously press
|
||
|
the trigger.
|
||
|
|
||
|
|
||
|
-------------------------
|
||
|
Save States and NVRAM
|
||
|
-------------------------
|
||
|
|
||
|
Save states are saved and restored by pressing F5 and F7, respectively. Up to
|
||
|
10 different save slots can be selected with F6. All files are written to the
|
||
|
Saves/ directory, which must exist. If you extracted the Supermodel ZIP file
|
||
|
correctly, they will have automatically been created.
|
||
|
|
||
|
Non-volatile memory (NVRAM) consists of battery-backed backup RAM and an EEPROM
|
||
|
chip. The former is used for things like high score data whereas the latter
|
||
|
stores machine settings (often accessed using the Test buttons). NVRAM is
|
||
|
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.
|
||
|
|
||
|
|
||
|
-----------------------------------
|
||
|
Game-Specific Comments and Tips
|
||
|
-----------------------------------
|
||
|
|
||
|
The following games are not playable due to unimplemented controls, severe
|
||
|
graphical problems, or other issues:
|
||
|
|
||
|
- L.A. Machineguns
|
||
|
- The Ocean Hunter
|
||
|
- Harley Davidson & L.A. Riders
|
||
|
- Emergency Call Ambulance
|
||
|
|
||
|
Daytona USA 2 and Daytona USA 2 Power Edition
|
||
|
---------------------------------------------
|
||
|
|
||
|
To bypass the network board error, enter the Test Menu by pressing the Test
|
||
|
button. Navigate to 'Game Assignments' using the Service button and select it
|
||
|
with Test. Change 'Link ID' from 'Master' to 'Single'.
|
||
|
|
||
|
In 'Daytona USA 2', the region menu can be accessed by entering the Test Menu,
|
||
|
holding down the Start button, and pressing: VR4, VR4, VR2, VR3, VR1, VR3, VR2.
|
||
|
Changing the region to USA changes game text to English.
|
||
|
|
||
|
Star Wars Trilogy
|
||
|
-----------------
|
||
|
|
||
|
Inserting coins and starting a game before any 3D graphics have been displayed
|
||
|
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
|
||
|
appears before attempting to start a game.
|
||
|
|
||
|
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.
|
||
|
Clear the NVRAM (Alt-N) and reset the game (Alt-R).
|
||
|
|
||
|
Sega Rally 2
|
||
|
------------
|
||
|
|
||
|
As with Star Wars Trilogy, you may experience problems if you attempt to start
|
||
|
a game before any 3D graphics are displayed (for example, during the Sega
|
||
|
logo).
|
||
|
|
||
|
Virtua Fighter 3
|
||
|
----------------
|
||
|
|
||
|
The game is playable but there are numerous graphical glitches, particularly
|
||
|
during transition scenes.
|
||
|
|
||
|
|
||
|
-----------------------
|
||
|
Contact Information
|
||
|
-----------------------
|
||
|
|
||
|
The official Supermodel web site is:
|
||
|
|
||
|
http://www.Supermodel3.com
|
||
|
|
||
|
Questions? Comments? Contributions? Your feedback is welcome! I only ask that
|
||
|
you refrain from making feature requests or asking about ROMs. The primary
|
||
|
author, Bart Trzynadlowski, can be reached at:
|
||
|
|
||
|
supermodel.emu@gmail.com
|
||
|
|
||
|
|
||
|
-------------------
|
||
|
Acknowledgments
|
||
|
-------------------
|
||
|
|
||
|
Numerous people contributed their precious time and energy to this project.
|
||
|
Without them, Supermodel would not have been possible. In no particular order,
|
||
|
I would like to thank:
|
||
|
|
||
|
- Ville Linde, original Supermodel team member and MAMEDev extraordinaire
|
||
|
- Stefano Teso, original Supermodel team member
|
||
|
- ElSemi, for all sorts of technical information and insight
|
||
|
- Naibo Zhang, for his work on Model 3 graphics
|
||
|
- R. Belmont, for all sorts of help
|
||
|
- The Guru, for his efforts in dumping Model 3 ROM sets
|
||
|
- Andrew Lewis, for his arcade know-how and helpfulness
|
||
|
- Abelardo Vidal Martos, for providing extremely useful video recordings of
|
||
|
actual Model 3 games
|
||
|
- Andrew Gardner, for fruitful discussion
|
||
|
- Chad Reker, for being an especially thorough play-tester
|
||
|
- And, of course, my sister Nicole, for help with web site images
|
||
|
|
||
|
Supermodel includes code from the following projects:
|
||
|
|
||
|
zlib: http://zlib.net
|
||
|
minizip: http://www.winimage.com/zLibDll/minizip.html
|
||
|
The OpenGL Extension
|
||
|
Wrangler Library (GLEW): http://glew.sourceforge.net
|
||
|
|
||
|
The OpenGL Extension Wrangler Library
|
||
|
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||
|
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||
|
Copyright (C) 2002, Lev Povalahev
|
||
|
All rights reserved.
|
||
|
|
||
|
Redistribution and use in source and binary forms, with or without
|
||
|
modification, are permitted provided that the following conditions are met:
|
||
|
|
||
|
* Redistributions of source code must retain the above copyright notice,
|
||
|
this list of conditions and the following disclaimer.
|
||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||
|
this list of conditions and the following disclaimer in the documentation
|
||
|
and/or other materials provided with the distribution.
|
||
|
* The name of the author may be used to endorse or promote products
|
||
|
derived from this software without specific prior written permission.
|
||
|
|
||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||
|
THE POSSIBILITY OF SUCH DAMAGE.
|