first commit

This commit is contained in:
izzy2lost
2025-12-16 21:51:41 -05:00
commit 23d795e60a
349 changed files with 241987 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
# Build output
bin/
obj/
bin64/
obj64/
build/
out/
dist/
target/
Debug/
Release/
x64/
x86/
# Compiled artifacts
*.o
*.obj
*.lo
*.la
*.a
*.lib
*.so
*.dylib
*.dll
*.exe
*.exp
*.pdb
*.idb
*.ilk
*.ipdb
*.iobj
*.pch
# Generated files
*.nv
Makefile
*.log
*.tmp
*.swp
*.swo
# Archives
*.zip
*.tar
*.gz
*.bz2
*.7z
*.rar
# Android/Gradle
android/.gradle/
android/.idea/
android/local.properties
android/*.iml
android/**/build/
android/**/.cxx/
# IDE/Editor
.idea/
.vs/
.vscode/
*.suo
*.user
*.userosscache
*.sln.docstates
*.VC.db
*.VC.opendb
# OS-generated
.DS_Store
Thumbs.db
desktop.ini
+3372
View File
File diff suppressed because it is too large Load Diff
+433
View File
@@ -0,0 +1,433 @@
;;
;; Supermodel Configuration File
;; Default settings.
;;
;
; Quick Overview
; --------------
;
; All settings are case sensitive. Numbers must be integers. Check your
; spelling carefully because invalid settings are silently ignored. To verify
; that your settings are being parsed correctly, check the contents of
; Supermodel.log.
;
; Global options apply to all games. To create configuration profiles for
; individual games, place settings under sections with the same name as the
; corresponding MAME ROM set, like so:
;
; ; Scud Race
; [ scud ]
;
; SoundVolume = 50
; MusicVolume = 200
; ; ... etc. ...
;
; For a list of all valid settings, please consult README.txt. Only default
; inputs are assigned here.
;
[ Global ]
; Graphics
New3DEngine = false
QuadRendering = false
WideScreen = false
Stretch = false
WideBackground = false
; Refresh rate (milliHertz accuracy). Actual Model 3 refresh rate is 57.524 Hz
; but this can cause judder so we use 60 Hz by default.
RefreshRate = 60.000
; Legacy SCSP DSP implementation for games that do not play well with the newer
; one (e.g., Fighting Vipers 2)
LegacySoundDSP = false
; Network board
Network = false
SimulateNet = true
PortIn = 1970
PortOut = 1971
AddressOut = "127.0.0.1"
; Input
; Sets the ManyMouse backend to ignore any mouse devices that don't provide
; absolute positioning when enabled, ideal for using Lightguns.
ABSMiceOnly = false
; Common
InputUIExit = "JOY1_BUTTON10+JOY1_BUTTON9"
InputUIPause = "JOY1_BUTTON9+JOY1_BUTTON4"
InputUISelectCrosshairs = "JOY1_BUTTON9+JOY1_BUTTON2"
InputUISaveState = "KEY_9,JOY1_BUTTON10+JOY1_BUTTON4"
InputUILoadState = "KEY_0,JOY1_BUTTON10+JOY1_BUTTON2"
InputStart1 = "KEY_1,JOY1_BUTTON10"
InputStart2 = "KEY_2,JOY2_BUTTON10"
InputCoin1 = "KEY_3,KEY_ALT,JOY1_BUTTON9"
InputCoin2 = "KEY_4,JOY2_BUTTON9"
InputServiceA = "KEY_5"
InputServiceB = "KEY_7"
InputTestA = "KEY_6"
InputTestB = "KEY_8"
; 4-way digital joysticks
InputJoyUp = "KEY_UP,JOY1_UP"
InputJoyDown = "KEY_DOWN,JOY1_DOWN"
InputJoyLeft = "KEY_LEFT,JOY1_LEFT"
InputJoyRight = "KEY_RIGHT,JOY1_RIGHT"
InputJoyUp2 = "JOY2_UP"
InputJoyDown2 = "JOY2_DOWN"
InputJoyLeft2 = "JOY2_LEFT"
InputJoyRight2 = "JOY2_RIGHT"
; Fighting game buttons
InputPunch = "KEY_A,JOY1_BUTTON1"
InputKick = "KEY_S,JOY1_BUTTON2"
InputGuard = "KEY_D,JOY1_BUTTON3"
InputEscape = "KEY_F,JOY1_BUTTON4"
InputPunch2 = "JOY2_BUTTON1"
InputKick2 = "JOY2_BUTTON2"
InputGuard2 = "JOY2_BUTTON3"
InputEscape2 = "JOY2_BUTTON4"
; Spikeout buttons
InputShift = "KEY_A,JOY1_BUTTON1"
InputBeat = "KEY_S,JOY1_BUTTON2"
InputCharge = "KEY_D,JOY1_BUTTON3"
InputJump = "KEY_F,JOY1_BUTTON4"
; Virtua Striker buttons
InputShortPass = "KEY_A,JOY1_BUTTON1"
InputLongPass = "KEY_S,JOY1_BUTTON2"
InputShoot = "KEY_D,JOY1_BUTTON3"
InputShortPass2 = "JOY2_BUTTON1"
InputLongPass2 = "JOY2_BUTTON2"
InputShoot2 = "JOY2_BUTTON3"
; Steering wheel
InputSteeringLeft = "KEY_LEFT" ; digital, turn wheel left
InputSteeringRight = "KEY_RIGHT" ; digital, turn wheel right
InputSteering = "JOY1_XAXIS" ; analog, full steering range
; Pedals
InputAccelerator = "KEY_UP,JOY1_UP"
InputBrake = "KEY_DOWN,JOY1_DOWN"
; Up/down shifter manual transmission (all racers)
InputGearShiftUp = "KEY_Y" ; sequential shift up
InputGearShiftDown = "KEY_H" ; sequential shift down
; 4-Speed manual transmission (Daytona 2, Sega Rally 2, Scud Race)
InputGearShift1 = "KEY_Q,JOY1_BUTTON5"
InputGearShift2 = "KEY_W,JOY1_BUTTON6"
InputGearShift3 = "KEY_E,JOY1_BUTTON7"
InputGearShift4 = "KEY_R,JOY1_BUTTON8"
InputGearShiftN = "KEY_T"
; VR4 view change buttons (Daytona 2, Le Mans 24, Scud Race)
InputVR1 = "KEY_A,JOY1_BUTTON1"
InputVR2 = "KEY_S,JOY1_BUTTON2"
InputVR3 = "KEY_D,JOY1_BUTTON3"
InputVR4 = "KEY_F,JOY1_BUTTON4"
; Single view change button (Dirt Devils, ECA, Harley-Davidson, Sega Rally 2)
InputViewChange = "KEY_A,JOY1_BUTTON1"
; Handbrake (Sega Rally 2)
InputHandBrake = "KEY_S,JOY1_BUTTON2"
; Harley-Davidson controls
InputRearBrake = "KEY_S,JOY1_BUTTON2"
InputMusicSelect = "KEY_D,JOY1_BUTTON3"
; Virtual On macros
InputTwinJoyTurnLeft = "KEY_Q,JOY1_RXAXIS_NEG"
InputTwinJoyTurnRight = "KEY_W,JOY1_RXAXIS_POS"
InputTwinJoyForward = "KEY_UP,JOY1_YAXIS_NEG"
InputTwinJoyReverse = "KEY_DOWN,JOY1_YAXIS_POS"
InputTwinJoyStrafeLeft = "KEY_LEFT,JOY1_XAXIS_NEG"
InputTwinJoyStrafeRight = "KEY_RIGHT,JOY1_XAXIS_POS"
InputTwinJoyJump = "KEY_E,JOY1_BUTTON1"
InputTwinJoyCrouch = "KEY_R,JOY1_BUTTON2"
; Virtual On individual joystick mapping
InputTwinJoyLeft1 = "NONE"
InputTwinJoyLeft2 = "NONE"
InputTwinJoyRight1 = "NONE"
InputTwinJoyRight2 = "NONE"
InputTwinJoyUp1 = "NONE"
InputTwinJoyUp2 = "NONE"
InputTwinJoyDown1 = "NONE"
InputTwinJoyDown2 = "NONE"
; Virtual On buttons
InputTwinJoyShot1 = "KEY_A,JOY1_BUTTON5"
InputTwinJoyShot2 = "KEY_S,JOY1_BUTTON6"
InputTwinJoyTurbo1 = "KEY_Z,JOY1_BUTTON7"
InputTwinJoyTurbo2 = "KEY_X,JOY1_BUTTON8"
; Analog joystick (Star Wars Trilogy)
InputAnalogJoyLeft = "KEY_LEFT" ; digital, move left
InputAnalogJoyRight = "KEY_RIGHT" ; digital, move right
InputAnalogJoyUp = "KEY_UP" ; digital, move up
InputAnalogJoyDown = "KEY_DOWN" ; digital, move down
InputAnalogJoyX = "JOY_XAXIS,MOUSE1_XAXIS_INV" ; analog, full X axis
InputAnalogJoyY = "JOY_YAXIS,MOUSE1_YAXIS_INV" ; analog, full Y axis
InputAnalogJoyTrigger = "KEY_A,JOY_BUTTON1,MOUSE1_LEFT_BUTTON"
InputAnalogJoyEvent = "KEY_S,JOY_BUTTON2,MOUSE1_RIGHT_BUTTON"
InputAnalogJoyTrigger2 = "KEY_D,JOY_BUTTON2"
InputAnalogJoyEvent2 = "NONE"
; Light guns (Lost World)
InputGunLeft = "KEY_LEFT" ; digital, move gun left
InputGunRight = "KEY_RIGHT" ; digital, move gun right
InputGunUp = "KEY_UP" ; digital, move gun up
InputGunDown = "KEY_DOWN" ; digital, move gun down
InputGunX = "MOUSE1_XAXIS,JOY1_XAXIS" ; analog, full X axis
InputGunY = "MOUSE1_YAXIS,JOY1_YAXIS" ; analog, full Y axis
InputTrigger = "KEY_A,JOY1_BUTTON1,MOUSE1_LEFT_BUTTON"
InputOffscreen = "KEY_S,JOY1_BUTTON2,MOUSE1_RIGHT_BUTTON" ; point off-screen
InputAutoTrigger = 1 ; automatic reload when off-screen
InputGunLeft2 = "NONE"
InputGunRight2 = "NONE"
InputGunUp2 = "NONE"
InputGunDown2 = "NONE"
InputGunX2 = "JOY2_XAXIS,MOUSE2_XAXIS"
InputGunY2 = "JOY2_YAXIS,MOUSE2_YAXIS"
InputTrigger2 = "JOY2_BUTTON1,MOUSE2_LEFT_BUTTON"
InputOffscreen2 = "JOY2_BUTTON2,MOUSE2_RIGHT_BUTTON"
InputAutoTrigger2 = 1
; Analog guns (Ocean Hunter, LA Machineguns)
InputAnalogGunLeft = "KEY_LEFT" ; digital, move gun left
InputAnalogGunRight = "KEY_RIGHT" ; digital, move gun right
InputAnalogGunUp = "KEY_UP" ; digital, move gun up
InputAnalogGunDown = "KEY_DOWN" ; digital, move gun down
InputAnalogGunX = "MOUSE1_XAXIS,JOY1_XAXIS" ; analog, full X axis
InputAnalogGunY = "MOUSE1_YAXIS,JOY1_YAXIS" ; analog, full Y axis
InputAnalogTriggerLeft = "KEY_A,JOY1_BUTTON1,MOUSE1_LEFT_BUTTON"
InputAnalogTriggerRight = "KEY_S,JOY1_BUTTON2,MOUSE1_RIGHT_BUTTON"
InputAnalogGunLeft2 = "NONE"
InputAnalogGunRight2 = "NONE"
InputAnalogGunUp2 = "NONE"
InputAnalogGunDown2 = "NONE"
InputAnalogGunX2 = "MOUSE2_XAXIS"
InputAnalogGunY2 = "MOUSE2_YAXIS"
InputAnalogTriggerLeft2 = "MOUSE2_LEFT_BUTTON"
InputAnalogTriggerRight2 = "MOUSE2_RIGHT_BUTTON"
; Ski Champ controls
InputSkiLeft = "KEY_LEFT"
InputSkiRight = "KEY_RIGHT"
InputSkiUp = "KEY_UP"
InputSkiDown = "KEY_DOWN"
InputSkiX = "JOY1_XAXIS"
InputSkiY = "JOY1_YAXIS"
InputSkiPollLeft = "KEY_A,JOY1_BUTTON1"
InputSkiPollRight = "KEY_S,JOY1_BUTTON2"
InputSkiSelect1 = "KEY_Q,JOY1_BUTTON3"
InputSkiSelect2 = "KEY_W,JOY1_BUTTON4"
InputSkiSelect3 = "KEY_E,JOY1_BUTTON5"
; Magical Truck Adventure controls
InputMagicalLeverUp1 = "KEY_UP"
InputMagicalLeverDown1 = "KEY_DOWN"
InputMagicalLeverUp2 = "NONE"
InputMagicalLeverDown2 = "NONE"
InputMagicalLever1 = "JOY1_YAXIS"
InputMagicalLever2 = "JOY2_YAXIS"
InputMagicalPedal1 = "KEY_A,JOY1_BUTTON1"
InputMagicalPedal2 = "KEY_S,JOY2_BUTTON1"
; Sega Bass Fishing / Get Bass controls
InputFishingRodLeft = "KEY_LEFT"
InputFishingRodRight = "KEY_RIGHT"
InputFishingRodUp = "KEY_UP"
InputFishingRodDown = "KEY_DOWN"
InputFishingStickLeft = "KEY_A"
InputFishingStickRight = "KEY_D"
InputFishingStickUp = "KEY_W"
InputFishingStickDown = "KEY_S"
InputFishingRodX = "JOY1_XAXIS"
InputFishingRodY = "JOY1_YAXIS"
InputFishingStickX = "JOY1_RXAXIS"
InputFishingStickY = "JOY1_RYAXIS"
InputFishingReel = "KEY_SPACE,JOY1_ZAXIS_POS"
InputFishingCast = "KEY_Z,JOY1_BUTTON1"
InputFishingSelect = "KEY_X,JOY1_BUTTON2"
InputFishingTension = "KEY_T,JOY1_ZAXIS_NEG"
;Our non input settings...
; Game specific settings
;daytona 2 power edition
[ dayto2pe ]
PowerPCFrequency = 90
EmulateDSB = 1
;daytona 2: battle to the edge
[ daytona2 ]
PowerPCFrequency = 90
EmulateDSB = 1
;Dirt Devils (Export, Revision A)
[ dirtdvls ]
PowerPCFrequency = 60
;Dirt Devils (Australia, Revision A)
[ dirtdvlsa ]
PowerPCFrequency = 60
;Dirt Devils (German)
[ dirtdvlsg ]
PowerPCFrequency = 60
;Dirt Devils (Japan, Revision A)
[ dirtdvlsj ]
PowerPCFrequency = 60
;Emergency Call Ambulance (Export) - NOT WORKING PI
[ eca ]
;Emergency Call Ambulance (Japan) - NOIT WORKING PI
[ ecaj ]
;Emergency Call Ambulance (US location test?) - NOT WORKING PI
[ ecap ]
;Emergency Call Ambulance (USA) - NOT WORKING PI
[ ecau ]
;Fighting Vipers 2 (Japan, Revision A)
[ fvipers2 ]
PowerPCFrequency = 55
;Fighting Vipers 2 (?)
[ fvipers2o ]
PowerPCFrequency = 48
;Get Bass (?)
[ getbass ]
PowerPCFrequency = 30
;Harley-Davidson and L.A. Riders (Revision B) - pi too slow
[ harley ]
PowerPCFrequency = 166
;Harley-Davidson and L.A. Riders (Revision A) - pi too slow
[ harleya ]
PowerPCFrequency = 166
;L.A. Machineguns: Rage of the Machines (Japan)
[ lamachin ]
PowerPCFrequency = 40
;Le Mans 24 (Revision B)
[ lemans24 ]
;The Lost World (Japan, Revision A)
[ lostwsga ];The Lost World (Original Revision)
PowerPCFrequency = 33
[ lostwsgo ]
PowerPCFrequency = 33
;Magical Truck Adventure (Japan)
[ magtruck ]
PowerPCFrequency = 40
;The Ocean Hunter - Default works fine on pi
[ oceanhun ]
MusicVolume = 200
SoundVolume = 200
[ oceanhuna ]
MusicVolume = 200
SoundVolume = 200
;Scud Race (Australia, Twin)
[ scud ]
PowerPCFrequency = 35
MusicVolume = 200
EmulateDSB = 1
;Scud Race (Export, Twin)
[ scuda ]
PowerPCFrequency = 35
MusicVolume = 200
EmulateDSB = 1
;Scud Race (Japan, Deluxe)
[ scudj ]
PowerPCFrequency = 35
MusicVolume = 200
EmulateDSB = 1
;Scud Race Plus (Revision A)
[ scudplus ]
PowerPCFrequency = 35
MusicVolume = 200
EmulateDSB = 1
;Scud Race Plus (?)
[ scudplusa ]
PowerPCFrequency = 35
MusicVolume = 200
EmulateDSB = 1
;Ski Champ (Japan)
[ skichamp ]
;PowerPCFrequency = 43
PowerPCFrequency = 60
;Spikeout Final Edition (?) - too slow on pi
[ spikeofe ]
PowerPCFrequency = 100
EmulateDSB = 1
;Spikeout (Revision C)
[ spikeout ]
;PowerPCFrequency = 35
PowerPCFrequency = 55
EmulateDSB = 1
;Sega Rally 2 (?)
[ srally2 ]
EmulateDSB = 1
PowerPCFrequency = 60
;Sega Rally 2 (Prototype)
[ srally2p ]
PowerPCFrequency = 48
EmulateDSB = 1
;Sega Rally 2 (Prototype Version A)
[ srally2pa ]
PowerPCFrequency = 48
EmulateDSB = 1
;Sega Rally 2 (Deluxe)
[ srally2x ]
;Playable on pi but more slower down than srally2
PowerPCFrequency = 100
EmulateDSB = 1
;Star Wars Trilogy Arcade - Default works fine on pi
[ swtrilgy ]
;Star Wars Trilogy Arcade (?)
[ swtrilgya ]
;Star Wars Trilogy Arcade (?)
[ swtrilgyp ]
;Virtua Fighter 3 (Revision D)
[ vf3 ]
PowerPCFrequency = 40
;PowerPCFrequency = 100
;Virtua Fighter 3 (Revision A)
[ vf3a ]
PowerPCFrequency = 40
;Virtua Fighter 3 (Revision C)
[ vf3c ]
PowerPCFrequency = 40
;Virtua Fighter 3 Team Battle (?)
[ vf3tb ]
PowerPCFrequency = 40
;Virtual On 2: Oratorio Tangram (Revision B)
[ von2 ]
PowerPCFrequency = 30
;Virtual On 2: Oratorio Tangram (Ver 5.4g)
[ von254g ]
PowerPCFrequency = 30
;Virtual On 2: Oratorio Tangram (Revision A)
[ von2a ]
PowerPCFrequency = 30
;Virtual On 2: Oratorio Tangram (?)
[ von2o ]
PowerPCFrequency = 35
;Virtua Striker 2 (Step 2.0) - no special settings
[ vs2 ]
;Virtua Striker 2 (Step 1.5) - no special settings
[ vs215 ]
;Virtua Striker 2 (Step 1.5, older) - no special settings
[ vs215o ]
;Virtua Striker 2 '98 (Step 2.0) - no special settings
[ vs298 ]
;Virtua Striker 2 '98 (Step 1.5) - no special settings
[ vs29815 ]
;Virtua Striker 2 '99 (?)
[ vs299 ]
;Virtua Striker 2 '99 (Step 1.5)
[ vs29915 ]
;Virtua Striker 2 '99 (Revision A)
[ vs299a ]
;Virtua Striker 2 '99 (Revision B)
[ vs299b ]
;Virtua Striker 2 '99.1 (Revision B)
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 MiB

+699
View File
File diff suppressed because it is too large Load Diff
+1894
View File
File diff suppressed because it is too large Load Diff
+674
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
Source code for Third-party libraries needs to be placed in here.
+81
View File
@@ -0,0 +1,81 @@
##
## Supermodel
## A Sega Model 3 Arcade Emulator.
## Copyright 2003-2022 The Supermodel Team
##
## This file is part of Supermodel.
##
## Supermodel is free software: you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation, either version 3 of the License, or (at your option)
## any later version.
##
## Supermodel is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
## more details.
##
## You should have received a copy of the GNU General Public License along
## with Supermodel. If not, see <http://www.gnu.org/licenses/>.
##
#
# Makefile.OSX
#
# Makefile for Mac OS X systems using clang.
#
###############################################################################
# Build Options
###############################################################################
DELETE = rm -d -r -f
###############################################################################
# Platform Configuration
#
# Edit library and include paths as needed.
###############################################################################
#
# Must be included first
#
include Makefiles/Options.inc
#
# Toolchain
#
CC = clang
CXX = clang
LD = clang
#
# SDL
#
SDL_CFLAGS =
SDL_LIBS = -framework SDL2 -framework AGL -framework OpenGL -framework GLUT -framework Cocoa
ifeq ($(strip $(NET_BOARD)),1)
SDL_LIBS += -framework SDL2_net
endif
#
# OSX-specific
#
PLATFORM_CXXFLAGS = $(SDL_CFLAGS) -DSUPERMODEL_OSX -F/Library/Frameworks/ -O3
PLATFORM_LDFLAGS = $(SDL_LIBS) -lz -lm -lstdc++ -F/Library/Frameworks/
###############################################################################
# Core Makefile
###############################################################################
include Makefiles/Rules.inc
clean:
$(SILENT)echo Cleaning up \"$(BIN_DIR)\" and \"$(OBJ_DIR)\"...
$(SILENT)$(DELETE) $(BIN_DIR)
$(SILENT)$(DELETE) $(OBJ_DIR)
+78
View File
@@ -0,0 +1,78 @@
##
## Supermodel
## A Sega Model 3 Arcade Emulator.
## Copyright 2003-2022 The Supermodel Team
##
## This file is part of Supermodel.
##
## Supermodel is free software: you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation, either version 3 of the License, or (at your option)
## any later version.
##
## Supermodel is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
## more details.
##
## You should have received a copy of the GNU General Public License along
## with Supermodel. If not, see <http://www.gnu.org/licenses/>.
##
#
# Makefile.UNIX
#
# Makefile for UNIX/Linux systems.
#
###############################################################################
# Build Options
###############################################################################
DELETE = rm -d -r -f
###############################################################################
# Platform Configuration
#
# Edit library and include paths as needed.
###############################################################################
#
# Must be included first
#
include Makefiles/Options.inc
#
# Toolchain
#
CC = gcc
CXX = g++
LD = gcc
#
# SDL
#
SDL2_CFLAGS = `sdl2-config --cflags`
SDL2_LIBS = `sdl2-config --libs`
#
# UNIX-specific
#
PLATFORM_CXXFLAGS = $(SDL2_CFLAGS) -O3
PLATFORM_LDFLAGS = $(SDL2_LIBS) -lGL -lGLU -lz -lm -lstdc++ -lpthread -lSDL2_net -ldl
###############################################################################
# Core Makefile
###############################################################################
include Makefiles/Rules.inc
clean:
$(SILENT)echo Cleaning up \"$(BIN_DIR)\" and \"$(OBJ_DIR)\"...
$(SILENT)$(DELETE) $(BIN_DIR)
$(SILENT)$(DELETE) $(OBJ_DIR)
+115
View File
@@ -0,0 +1,115 @@
##
## Supermodel
## A Sega Model 3 Arcade Emulator.
## Copyright 2003-2022 The Supermodel Team
##
## This file is part of Supermodel.
##
## Supermodel is free software: you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation, either version 3 of the License, or (at your option)
## any later version.
##
## Supermodel is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
## more details.
##
## You should have received a copy of the GNU General Public License along
## with Supermodel. If not, see <http://www.gnu.org/licenses/>.
##
#
# Makefile.Win32
#
# Makefile for Windows systems using gcc and the standard Command Prompt.
#
# Set variables in the "Configuration" section as required by your system
# configuration.
#
###############################################################################
# Configuration
#
# Edit as necessary. Some users may need to edit the "Platform Configuration"
# section as well, namely SDL2_LIBS and PLATFORM_LIBS.
###############################################################################
#
# Must be included first
#
include Makefiles/Options.inc
#
# Bitness of build ('32' or '64')
#
BITS = 64
#
# Path to SDL2
#
SDL2_INCLUDE_DIR = \msys64\mingw64\include\SDL2
SDL2_LIB_DIR = \msys64\mingw64\lib
#
# Toolchain
#
CC = gcc
CXX = g++
LD = g++
###############################################################################
# Platform Configuration
###############################################################################
# Safety check: can be only '32' or '64' otherwise defaults to '64'
ifneq ($(filter $(strip $(BITS)),32 64),$(strip $(BITS)))
override BITS = 64
endif
#
# Use Bash or Windows Prompt shell commands?
#
DELETE = rm -d -r -f
ifeq ($(strip $(MSYSTEM)),)
DELETE = rmdir /s /q
endif
#
# SDL2
#
SDL2_LIBS = -lmingw32 -lSDL2main -lSDL2 -Wl,--no-undefined -lshell32 -lsetupapi -ladvapi32 -luuid -lversion -limm32 -lwinmm -lgdi32 -luser32 -lm -pipe
SDL2_CFLAGS =
ifeq ($(strip $(NET_BOARD)),1)
SDL2_LIBS += -lSDL2_net -liphlpapi
endif
#
# MinGW/Windows-specific
#
PLATFORM_INCLUDE_DIR = $(SDL2_INCLUDE_DIR)
PLATFORM_LIB_DIR = $(SDL2_LIB_DIR)
PLATFORM_LIBS = -ldxerr8 -ldinput8 -lglu32 -lole32 -loleaut32 -lopengl32 -lwbemuuid -lws2_32 -lz
PLATFORM_CXXFLAGS = $(SDL2_CFLAGS) -DSUPERMODEL_WIN32 $(addprefix -I,$(sort $(PLATFORM_INCLUDE_DIR)))
PLATFORM_LDFLAGS = -static -L$(sort $(PLATFORM_LIB_DIR)) $(SDL2_LIBS) $(PLATFORM_LIBS)
###############################################################################
# Core Makefile
###############################################################################
PLATFORM_SRC_FILES = \
Src/OSD/Windows/DirectInputSystem.cpp \
Src/OSD/Windows/WinOutputs.cpp
.PHONY: clean
include Makefiles/Rules.inc
clean:
$(SILENT)echo Cleaning up $(BIN_DIR) and $(OBJ_DIR)...
$(SILENT)$(DELETE) $(BIN_DIR)
$(SILENT)$(DELETE) $(OBJ_DIR)
+67
View File
@@ -0,0 +1,67 @@
##
## Supermodel
## A Sega Model 3 Arcade Emulator.
## Copyright 2003-2022 The Supermodel Team
##
## This file is part of Supermodel.
##
## Supermodel is free software: you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation, either version 3 of the License, or (at your option)
## any later version.
##
## Supermodel is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
## more details.
##
## You should have received a copy of the GNU General Public License along
## with Supermodel. If not, see <http://www.gnu.org/licenses/>.
##
#
# Options.inc
#
# Build options.
#
###############################################################################
# Build Options
###############################################################################
#
# Verbose progression
#
VERBOSE =
ifneq ($(filter $(strip $(VERBOSE)),0 1),$(strip $(VERBOSE)))
override VERBOSE =
endif
SILENT = @
ifeq ($(strip $(VERBOSE)),1)
SILENT =
endif
#
# Enable render state analyser for the legacy 3D engine (will slow down emulation!)
#
DEBUG =
ifneq ($(filter $(strip $(DEBUG)),0 1),$(strip $(DEBUG)))
override DEBUG =
endif
#
# Enable support for Model3 Net Board emulation
#
NET_BOARD =
ifneq ($(filter $(strip $(NET_BOARD)),0 1),$(strip $(NET_BOARD)))
override NET_BOARD =
endif
#
# Include console-based debugger in emulator ('yes' or 'no')
#
ENABLE_DEBUGGER =
ifneq ($(filter $(strip $(ENABLE_DEBUGGER)),0 1),$(strip $(ENABLE_DEBUGGER)))
override ENABLE_DEBUGGER =
endif
+334
View File
@@ -0,0 +1,334 @@
##
## Supermodel
## A Sega Model 3 Arcade Emulator.
## Copyright 2003-2022 The Supermodel Team
##
## This file is part of Supermodel.
##
## Supermodel is free software: you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation, either version 3 of the License, or (at your option)
## any later version.
##
## Supermodel is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
## more details.
##
## You should have received a copy of the GNU General Public License along
## with Supermodel. If not, see <http://www.gnu.org/licenses/>.
##
#
# Rules.inc
#
# Build rules, included by all (platform-specific) top-level Makefiles.
#
###############################################################################
# Output Locations
###############################################################################
OBJ_DIR = obj$(strip $(BITS))
BIN_DIR = bin$(strip $(BITS))
OUTFILE = supermodel
###############################################################################
# Compiler Flags
###############################################################################
#
# Construct Supermodel build options
#
SUPERMODEL_BUILD_FLAGS =
# If render state analyser is enabled, need to define DEBUG
ifeq ($(strip $(DEBUG)),1)
SUPERMODEL_BUILD_FLAGS += -DDEBUG
endif
# If Net Board support is enabled, need to define NET_BOARD
ifeq ($(strip $(NET_BOARD)),1)
SUPERMODEL_BUILD_FLAGS += -DNET_BOARD
endif
# If Bart's new frame timing is enabled, need to define NEW_FRAME_TIMING
ifeq ($(strip $(NEW_FRAME_TIMING)),1)
SUPERMODEL_BUILD_FLAGS += -DNEW_FRAME_TIMING
endif
# If built-in debugger enabled, need to define SUPERMODEL_DEBUGGER
ifeq ($(strip $(ENABLE_DEBUGGER)),1)
SUPERMODEL_BUILD_FLAGS += -DSUPERMODEL_DEBUGGER
endif
#
# Compiler options
#
ARCH = -march=native
OPT = -O3
WARN = -Wall
CSTD = -std=iso9899:2011
CXXSTD = -std=c++17
#
# Construct the compiler (C and C++) and linker flags
#
COMMON_CFLAGS = -c $(ARCH) $(OPT) $(WARN) $(addprefix -I,$(sort $(INCLUDE_DIRS))) -DGLEW_STATIC $(SUPERMODEL_BUILD_FLAGS)
CFLAGS = $(COMMON_CFLAGS) $(CSTD)
CXXFLAGS = $(PLATFORM_CXXFLAGS) $(COMMON_CFLAGS) $(CXXSTD)
LDFLAGS = -o $(BIN_DIR)/$(OUTFILE) $(PLATFORM_LDFLAGS) -s
###############################################################################
# Source Files
###############################################################################
SRC_FILES = \
Src/CPU/PowerPC/PPCDisasm.cpp \
Src/BlockFile.cpp \
Src/Pkgs/unzip.cpp \
Src/Pkgs/ioapi.cpp \
Src/Model3/93C46.cpp \
Src/Util/BitRegister.cpp \
Src/JTAG.cpp \
Src/Graphics/Legacy3D/Error.cpp \
Src/Pkgs/glew.cpp \
Src/Graphics/Shader.cpp \
Src/Model3/Real3D.cpp \
Src/Graphics/Legacy3D/Legacy3D.cpp \
Src/Graphics/Legacy3D/Models.cpp \
Src/Graphics/Legacy3D/TextureRefs.cpp \
Src/Graphics/New3D/GLSLShader.cpp \
Src/Graphics/New3D/R3DFrameBuffers.cpp \
Src/Graphics/New3D/New3D.cpp \
Src/Graphics/New3D/Mat4.cpp \
Src/Graphics/New3D/Model.cpp \
Src/Graphics/New3D/PolyHeader.cpp \
Src/Graphics/New3D/Texture.cpp \
Src/Graphics/New3D/TextureSheet.cpp \
Src/Graphics/New3D/VBO.cpp \
Src/Graphics/New3D/Vec.cpp \
Src/Graphics/New3D/R3DShader.cpp \
Src/Graphics/New3D/R3DFloat.cpp \
Src/Graphics/New3D/R3DScrollFog.cpp \
Src/Graphics/Render2D.cpp \
Src/Model3/TileGen.cpp \
Src/Model3/Model3.cpp \
Src/CPU/PowerPC/ppc.cpp \
Src/OSD/SDL/Main.cpp \
Src/OSD/SDL/Audio.cpp \
Src/OSD/SDL/Thread.cpp \
Src/Model3/SoundBoard.cpp \
Src/Sound/SCSP.cpp \
Src/Sound/SCSPDSP.cpp \
Src/CPU/68K/68K.cpp \
$(OBJ_DIR)/m68kcpu.c \
$(OBJ_DIR)/m68kopnz.c \
$(OBJ_DIR)/m68kopdm.c \
$(OBJ_DIR)/m68kopac.c \
$(OBJ_DIR)/m68kops.c \
Src/Model3/DSB.cpp \
Src/CPU/Z80/Z80.cpp \
Src/Model3/IRQ.cpp \
Src/Model3/53C810.cpp \
Src/Model3/PCI.cpp \
Src/Model3/RTC72421.cpp \
Src/Model3/DriveBoard/DriveBoard.cpp \
Src/Model3/DriveBoard/WheelBoard.cpp \
Src/Model3/DriveBoard/JoystickBoard.cpp \
Src/Model3/DriveBoard/SkiBoard.cpp \
Src/Model3/DriveBoard/BillBoard.cpp \
Src/Model3/MPC10x.cpp \
Src/Inputs/Input.cpp \
Src/Inputs/Inputs.cpp \
Src/Inputs/InputSource.cpp \
Src/Inputs/InputSystem.cpp \
Src/Inputs/InputTypes.cpp \
Src/Inputs/Linux_evdev.c \
Src/Inputs/X11_xinput2.c \
Src/Inputs/Manymouse.c \
Src/Inputs/MultiInputSource.cpp \
Src/OSD/SDL/SDLInputSystem.cpp \
Src/OSD/Outputs.cpp \
Src/Sound/MPEG/MpegAudio.cpp \
Src/Model3/Crypto.cpp \
Src/OSD/Logger.cpp \
Src/Util/Format.cpp \
Src/Util/NewConfig.cpp \
Src/Util/ByteSwap.cpp \
Src/Util/ConfigBuilders.cpp \
Src/GameLoader.cpp \
Src/Pkgs/tinyxml2.cpp \
Src/ROMSet.cpp \
$(PLATFORM_SRC_FILES)
ifeq ($(strip $(NET_BOARD)),1)
SRC_FILES += \
Src/Network/TCPReceive.cpp \
Src/Network/TCPSend.cpp \
Src/Network/NetBoard.cpp \
Src/Network/SimNetBoard.cpp
endif
ifeq ($(strip $(ENABLE_DEBUGGER)),1)
SRC_FILES += \
Src/Debugger/Debugger.cpp \
Src/Debugger/ConsoleDebugger.cpp \
Src/Debugger/SupermodelDebugger.cpp \
Src/Debugger/CPUDebug.cpp \
Src/Debugger/AddressTable.cpp \
Src/Debugger/Breakpoint.cpp \
Src/Debugger/CodeAnalyser.cpp \
Src/Debugger/Exception.cpp \
Src/Debugger/Interrupt.cpp \
Src/Debugger/DebuggerIO.cpp \
Src/Debugger/Label.cpp \
Src/Debugger/Register.cpp \
Src/Debugger/Watch.cpp \
Src/Debugger/CPU/PPCDebug.cpp \
Src/Debugger/CPU/68KDebug.cpp \
Src/Debugger/CPU/Musashi68KDebug.cpp \
Src/Debugger/CPU/Z80Debug.cpp
endif
#
# Sorted-path compile order
#
OBJ_FILES = $(foreach file,$(SRC_FILES),$(OBJ_DIR)/$(basename $(notdir $(file))).o)
#
# Deduce include directories from the source file list. The sort function
# removes duplicates and is used to construct a set.
#
INCLUDE_DIRS = $(sort $(foreach file,$(SRC_FILES),$(dir $(file))))
###############################################################################
# Targets
###############################################################################
#
# Default target: build Supermodel binary. Must be specified *before* the auto-
# generated dependencies because otherwise, make gets confused for some reason
# and thinks the default target is just one of the object files.
#
all: $(BIN_DIR)/$(OUTFILE)
#
# Release targets: used only to create official builds stamped with the Git
# version number. Double-colon rules should force ordered execution.
# The automated build script relies on these -- don't modify their output!
#
.PHONY: set_version
.PHONY: print_message
.PHONY: version
release:: set_version
release:: print_message
release:: clean
release:: all
set_version:
$(eval VERSION = $(strip $(subst ',,0.3a-git-$(shell git rev-parse --short HEAD --sq))))
$(eval SUPERMODEL_BUILD_FLAGS += -DSUPERMODEL_VERSION=\"$(VERSION)\")
print_message:
$(info Building Supermodel Version $(VERSION))
version: set_version
@echo $(VERSION)
$(BIN_DIR)/$(OUTFILE): $(BIN_DIR) $(OBJ_DIR) $(OBJ_FILES)
$(info --------------------------------------------------------------------------------)
$(info Linking Supermodel : $(BIN_DIR)/$(OUTFILE))
$(SILENT)$(LD) $(OBJ_FILES) $(LDFLAGS)
$(info --------------------------------------------------------------------------------)
$(BIN_DIR):
$(info Creating directory : $(BIN_DIR))
$(SILENT)mkdir $(BIN_DIR)
$(OBJ_DIR):
$(info Creating directory : $(OBJ_DIR))
$(SILENT)mkdir $(OBJ_DIR)
###############################################################################
# Rules
###############################################################################
#
# Create list of auto-generated dependency files (which contain rules that make
# understands) and include them all.
#
AUTODEPS := $(patsubst %.o,%.d,$(OBJ_FILES))
-include $(AUTODEPS)
#
# VPATH is the search path for files. This trick allows a single %.cpp rule to
# be matched against files in sub-directories of Src/.
#
VPATH = $(INCLUDE_DIRS)
#
# Compilation rules that both auto-generate the dependency files and compile
# the source code. This technique is described in the reply by user "rr-" at:
# https://stackoverflow.com/questions/8025766/makefile-auto-dependency-generation
#
$(OBJ_DIR)/%.o: %.cpp
$(info Generating dependencies: $< -> $(OBJ_DIR)/$(*F).d)
$(SILENT)$(CXX) -MM -MP -MT $(OBJ_DIR)/$(*F).o -MT $(OBJ_DIR)/$(*F).d $(CXXFLAGS) $< > $(OBJ_DIR)/$(*F).d
$(info Compiling : $< -> $@)
$(SILENT)$(CXX) $(CXXFLAGS) $< -o $@
$(OBJ_DIR)/%.o: %.c
$(info Generating dependencies: $< -> $(OBJ_DIR)/$(*F).d)
$(SILENT)$(CC) -MM -MP -MT $(OBJ_DIR)/$(*F).o -MT $(OBJ_DIR)/$(*F).d $(CFLAGS) $< > $(OBJ_DIR)/$(*F).d
$(info Compiling : $< -> $@)
$(SILENT)$(CC) $(CFLAGS) $< -o $@
#
# Musashi 68K emulator
#
# All generated source files are emitted to the object directory. For MSVC,
# INLINE must be redefined as "static __inline", which is the syntax in C mode.
#
# The .exe suffix is absolutely required for native Windows non-MSYS builds!
#
MUSASHI_OUTFILE = $(OBJ_DIR)/m68kmake.exe # do not remove the .exe suffix!
MUSASHI_CFLAGS = -ISrc/CPU/68K/Musashi -I$(OBJ_DIR) -DINLINE="static inline" -Wno-unused-variable
MUSASHI_LDFLAGS = -o $(MUSASHI_OUTFILE) $(OBJ_DIR)/m68kmake.o -s
$(MUSASHI_OUTFILE): Src/CPU/68K/Musashi/m68kmake.c Src/CPU/68K/Musashi/m68k_in.c
$(info --------------------------------------------------------------------------------)
$(info Compiling : $< -> $(OBJ_DIR)/m68kmake.o)
$(SILENT)$(CC) $< $(CFLAGS) -o $(OBJ_DIR)/m68kmake.o
$(info Linking : $(MUSASHI_OUTFILE))
$(SILENT)$(LD) $(MUSASHI_LDFLAGS)
$(OBJ_DIR)/m68kops.h $(OBJ_DIR)/m68kops.c $(OBJ_DIR)/m68kopac.c $(OBJ_DIR)/m68kopdm.c $(OBJ_DIR)/m68kopnz.c: $(MUSASHI_OUTFILE) Src/CPU/68K/Musashi/m68k_in.c Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h
$(info Generating 68K emulator: $@)
@$(MUSASHI_OUTFILE) $(OBJ_DIR) Src/CPU/68K/Musashi/m68k_in.c
$(OBJ_DIR)/m68kcpu.o: Src/CPU/68K/Musashi/m68kcpu.c $(OBJ_DIR)/m68kops.h Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h
$(info Compiling : $< -> $@)
@$(CC) $< $(CFLAGS) $(MUSASHI_CFLAGS) -o $(OBJ_DIR)/m68kcpu.o
$(OBJ_DIR)/m68kops.o: $(OBJ_DIR)/m68kops.c $(OBJ_DIR)/m68kops.h Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h $(MUSASHI_OUTFILE)
$(info Compiling : $< -> $@)
@$(CC) $< $(CFLAGS) $(MUSASHI_CFLAGS) -o $@
$(OBJ_DIR)/m68kopac.o: $(OBJ_DIR)/m68kopac.c $(OBJ_DIR)/m68kops.h Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h $(MUSASHI_OUTFILE)
$(info Compiling : $< -> $@)
@$(CC) $< $(CFLAGS) $(MUSASHI_CFLAGS) -o $@
$(OBJ_DIR)/m68kopdm.o: $(OBJ_DIR)/m68kopdm.c $(OBJ_DIR)/m68kops.h Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h $(MUSASHI_OUTFILE)
$(info Compiling : $< -> $@)
@$(CC) $< $(CFLAGS) $(MUSASHI_CFLAGS) -o $@
$(OBJ_DIR)/m68kopnz.o: $(OBJ_DIR)/m68kopnz.c $(OBJ_DIR)/m68kops.h Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h $(MUSASHI_OUTFILE)
$(info Compiling : $< -> $@)
@$(CC) $< $(CFLAGS) $(MUSASHI_CFLAGS) -o $@
+2
View File
@@ -0,0 +1,2 @@
# Super3
Sega Model 3 emulator for android based on the supermodel emulator

Some files were not shown because too many files have changed in this diff Show More