Sega model 3 #segamodel3
-
@mechafatnick said in Sega model 3 #segamodel3:
@folly WIll people want to skip the initial boot sequence? That might be part of the fun. Hmm.
I've been thinking about your approach of putting everything into the ini and i think this is the right approach. Going forward I think we should:
-have two ( or three?) options in emulator.cfg:
supermodel (which will be at native res)
supermodel high-res (800 x 600)
supermodel very high-res (1024 x 768)Then, we can handle the settings for the individual games in supermodel.ini (so whether to enable the DSB, how far to underclock CPU.) That way we'll have optimal settings for each game without the user having to alter anything. Sound good? I've made sections for each game in the ini file. I think i might be developing carpel tunnel...
EDIT: Ok! We can all chip in!
Add these lines to the global section of supermodel.ini (under your controls:)
;Our non input settings... EmulateDSB = 0 MusicVolume = 60 SoundVolume = 60 Stretch=1 VSync=0 Throttle=0 GameXMLFile= /opt/retropie/emulators/supermodel/bin/Config/Games.xml New3DEngine=0
now, in emulators.cfg we only need to set the res in the command line (if you want to have different options)
Supermodel = "XINIT:/opt/retropie/emulators/supermodel/bin/supermodel %ROM%"
Now all we need to do, as a group, is come up with the optimal settings for each game as a group. I've made a start below (copy this into supermodel.ini - below the global section)
;daytona 2 power edition [ dayto2pe ] ;daytona 2: battle to the edge [ daytona2 ] ;Dirt Devils (Export, Revision A) [dirtdvls] ;Dirt Devils (Australia, Revision A) [ dirtdvlsa ] ;Dirt Devils (German) [ dirtdvlsg ] ;Dirt Devils (Japan, Revision A) [ dirtdvlsj ] ;Emergency Call Ambulance (Export) [ eca ] ;Emergency Call Ambulance (Japan) [ ecaj ] ;Emergency Call Ambulance (US location test?) [ ecap ] ;Emergency Call Ambulance (USA) [ ecau ] ;Fighting Vipers 2 (Japan, Revision A) [ fvipers2 ] ;Fighting Vipers 2 (?) [ fvipers2o ] ;Get Bass (?) [ getbass ] ;Harley-Davidson and L.A. Riders (Revision B) [ harley ] ;Harley-Davidson and L.A. Riders (Revision A) [ harleya ] ;L.A. Machineguns: Rage of the Machines (Japan) [ lamachin ] ;Le Mans 24 (Revision B) [ lemans24 ] ;The Lost World (Japan, Revision A) [ lostwsga ] ;The Lost World (Original Revision) [ lostwsgo ] PowerPCFrequency = 30 ;Magical Truck Adventure (Japan) [ magtruck ] ;The Ocean Hunter (?) [ oceanhun ] ;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 ] ;Spikeout Final Edition (?) - too slow on pi [ spikeofe ] PowerPCFrequency = 45 EmulateDSB = 1 ;Spikeout (Revision C) [ spikeout ] PowerPCFrequency = 35 EmulateDSB = 1 ;Sega Rally 2 (?) [ srally2 ] ;Sega Rally 2 (Prototype) [ srally2p ] ;Sega Rally 2 (Prototype Version A) [ srally2pa ] ;Sega Rally 2 (Deluxe) [ srally2x ] ;Star Wars Trilogy Arcade (Revision A) [ swtrilgy ] ;Star Wars Trilogy Arcade (?) -not working on pi [ swtrilgya ] ;Star Wars Trilogy Arcade (?) -not working on pi [ swtrilgyp ] ;Virtua Fighter 3 (Revision D) [ vf3 ] PowerPCFrequency = 40 ;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) [ vs2v991 ]
I'm gathering initialised nv ram too :D
@mechafatnick can you please confirm what hardware you are testing these settings on ?
I have a raspberry Pi 4b 8GB, and have abandoned full screen mode. The graphics do emulate near perfect but the game play is way too slow, maybe 5 times slower.
I have reduced the screen size to 768 x 576 and have better results while tweaking the PowerPCFrequency up 5 points at a time from 50, though I see you have recommended going down a few ticks.
Havent had time to do much testing yet but the Lost World runs very impressively with the following:
[ Global ]
XResolution=768
YResolution=576
FullScreen=0
WideScreen=1
Stretch=0
WideBackground=0
EmulateNet = 0supermodel= "XINIT:/opt/retropie/emulators/supermodel/bin/supermodel -game-xml-file=/opt/retropie/emulators/supermodel/bin/Config/Games.xml -legacy3d -sound-volume=50 -music-volume=80 -no-vsync -no-throttle -ppc-frequency=65 -no-dsb %ROM%"
-
@red_trev
Hello!Just a normal 4gb pi4, overclocked slightly (up to 1900 i think)?
I think you're probably making it do too much work by changing the resolution. I don't think the Pi has enough grunt for the emulator to draw a screen bigger than the Model 3's native 496 x 384. Render at this resolution and stretch it. It still looks good :D
When it comes to overclocking/underclocking the CPU, its definitely worth going by a game-game basis. The original revision had the CPU clocked at 66gz, while the later revisions had it clocked at 166hz, so later games will probably need it clocked above Supermodel's defaults to work their best. I think the factors in play are:
-Different games use the cpu differently. If you emulate all 66hz for games that are barely using the cpu you're wasting your Pi's resources emulating CPU cycles that are basically idle.
-overclocking the virtual CPU makes the game run smoother in the virtual world, but increases the load on the Pi. Though your virtual cpu in the emulator probably thinks its speeding along at 60fps, the game you're seeing on screen is chugging because the pi doesn't have the resources to keep up with the speed of the virtual CPU
-Underclocking the virtualCPU makes the emulator run smoothly by freeing the pi's resources, but if we take it too far our virtual model 3 isn't quick enough to runt he game and will experience issues. A good example of this is to underclock Virtual Fighter 3 down to 30 and watch as the characters literally come apart at the seams :D
so basically we just need to experiement a bit. I think i have most of these to the point where they're as good as they can be, but its worth experimenting.
-
It will take a bit longer for me to make the module-script better.
There is an issue with moving the NVRAM and Saves directory.
If these directories already exists in the rom directory the source files are not moved and then a link is nested inside the directories.
I will have to find a good solution for that.To be continued.....
-
I think I have fixed the issues.
I have chosen to update all the files from the source.
So we can see how the fixes in the source evolve.The Supermodel.ini will be backed-up to Supermodel.ini.old when installing or updating.
I removed the old runcommand-lines and added 3 different resolution lines without extra options as the are now in the ini.
-
@folly
Should I copy paste the new script from Github or I can update it from source in the blue menu in Retropie (I already installed your first version of the script)New edit: I copied pasted it from Github. What's the difference between supermodel-mechafatnick.sh and supermodel-svn.sh?
Your new supermodel-mechafatnick.sh works well!!!
-
Great !
No problems with the menu anymore ?
The svn version is a version that is created from the pure source from sourceforge.
It patches some files on the fly so it will compile on rpi.
I created it just before we got the github link from @mechafatnick .It's a bit obsolete but for now, I keep it in there, you never know.
-
@folly @mechafatnick
No problem with the menu.Just one question. When you are playing a racing game and you are in the options menu at the start. Do you have a problem with the sensitivity or the auto-center when choosing your car or your race track? In the game itself it's good but in the menu it's different. Is there an auto-centering option "enabled" on it?
-
What game are you referring too ?
-
@folly
Scud -
@Folly Great work! Well done! that's tremendous stuff. Now we can bring Model 3 emulation to the masses.
@dteam
Picking stuff is a bit tricky because its intended for the full rotation of a sterring wheel :) you can try messing with your deadzone/saturation if you want. That might help:
add to the ini and play with the numbers (saturation reduced the far end of motion of your stick)
InputJoy[controller number]XDeadzone
InputJoy[controller number]YDeadzone
InputJoy[controller number]XSaturation
InputJoy[controller number]YSaturationAll controls have to go into the GLOBAL section. Some games let you configure the controls from the test menu too.
-
@mechafatnick
What is the range for deadzone or sensitivity (1-100?)Some games let you configure the controls from the test menu too.
I'll try that also
That might help:
add to the ini and play with the numbers (saturation reduced the far end of motion of your stick)
InputJoy[controller number]XDeadzone
InputJoy[controller number]YDeadzone
InputJoy[controller number]XSaturation
InputJoy[controller number]YSaturation
This is a great idea
Now we can bring Model 3 emulation to the masses.
They create 3 new logos for New Comic Book Theme Thanks to @MrSeven The first one seems to be the chosen one
NEW EDIT:I found this for Keyboard and mouse here . For Joystick they use none. I suppose I have to replace NONE by your lines? I'll try It and give you news about the performance of those settings. thanks again
Input System Settings
Input System: DirectInput
Keyboards:
System Keyboard
Mice:
System Mouse
Joysticks:
NoneCommon Keyboard Settings:
Sensitivity = 25 %
Decay Speed = 50 %
Common Mouse Settings:
X-Axis Dead Zone = 0 %
Y-Axis Dead Zone = 0 %
Z-Axis Dead Zone = 0 % -
You mean, for pasting inside the Supermodel.ini then it should be something like this :
; Common Keyboard Settings: Sensitivity = 25 % Decay Speed = 50 % ; Common Mouse Settings: X-Axis Dead Zone = 0 % Y-Axis Dead Zone = 0 % Z-Axis Dead Zone = 0 %
-
@folly
honestly I don't know yet. I haven't tested it yet.
New edit: maybe we will have answers in Supermodel.log like for screen parameters. I don’t have my Pi for the next 4 days. I’ll test it monday. -
@dteam said in Sega model 3 #segamodel3:
@folly
honestly I don't know yet. I haven't tested it yet.
New edit: maybe we will have answers in Supermodel.log like for screen parameters. I don’t have my Pi for the next 4 days. I’ll test it monday.Ok then we wait a while.
I did put it in the Supermodel.ini.
The log only complained about the comments that have no ";".
So that is why I added them.I tried a bit, the setting seems to work a bit.
Steering seems to be a bit less sensitive, which is good !Edit :
Choosing the menu items is still a problem.
I think this is due to the fact that the keyboard is basically emulating an analog steering wheel in a digital way.
I will try some stuff if I can. -
@folly Yeah, My defult pad is the retrobit Saturn one, and i was never able to get analogie-digital to work very well.
I have a knock-off PS3 pad and the analogue controls work great. I made it all the way through the Lost World
-
@mechafatnick said in Sega model 3 #segamodel3:
@folly Yeah, My defult pad is the retrobit Saturn one, and i was never able to get analogie-digital to work very well.
Digital always goes to "full left" 00h, "middle" 80h or "full right" FFh (see input test).
No values in between, that is needed to select the proper menu.
I don't see much difference in the test menu if I set Sensitivity and Decay Speed.The analog part works also with my "O BIGBEN Joystick".
-
@folly if you look in the ini you have the axis to setting to set the analogue mapping and then joystick up/down/left/right which is supposed to be for controlling things digitally. I've never got it to work properly though.
(not that i've put a massive amount of effort in. Turns out the sking game us my favourite!)
-
@mechafatnick said in Sega model 3 #segamodel3:
I've never got it to work properly though.
It works well if you set InputAnalogJoyX and InputAnalogJoyY to NONE.
InputAnalogJoyLeft = JOY1_ZAXIS_POS InputAnalogJoyRight = JOY1_ZAXIS_NEG InputAnalogJoyUp = JOY1_RXAXIS_POS InputAnalogJoyDown = JOY1_RXAXIS_NEG InputAnalogJoyX = NONE InputAnalogJoyY = NONE
Z or RX axis could be different. depends on the gamepad used
-
@dteam Yeah you have to be a little careful as some of the controls sound generic but are actually for specific games:
the master ini file has comments for which control goes with each game - it's a shame it doesn't add them into the one used for the emulator:
; 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 (Dirt Devils, 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,MOUSE_XAXIS" ; analog, full X axis InputAnalogJoyY = "JOY_YAXIS,MOUSE_YAXIS" ; analog, full Y axis InputAnalogJoyTrigger = "KEY_A,JOY_BUTTON1,MOUSE_LEFT_BUTTON" InputAnalogJoyEvent = "KEY_S,JOY_BUTTON2,MOUSE_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 = "MOUSE_XAXIS,JOY1_XAXIS" ; analog, full X axis InputGunY = "MOUSE_YAXIS,JOY1_YAXIS" ; analog, full Y axis InputTrigger = "KEY_A,JOY1_BUTTON1,MOUSE_LEFT_BUTTON" InputOffscreen = "KEY_S,JOY1_BUTTON2,MOUSE_RIGHT_BUTTON" ; point off-screen InputAutoTrigger = 0 ; automatic reload when off-screen InputGunLeft2 = "NONE" InputGunRight2 = "NONE" InputGunUp2 = "NONE" InputGunDown2 = "NONE" InputGunX2 = "JOY2_XAXIS" InputGunY2 = "JOY2_YAXIS" InputTrigger2 = "JOY2_BUTTON1" InputOffscreen2 = "JOY2_BUTTON2" InputAutoTrigger2 = 0 ; 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 = "MOUSE_XAXIS,JOY1_XAXIS" ; analog, full X axis InputAnalogGunY = "MOUSE_YAXIS,JOY1_YAXIS" ; analog, full Y axis InputAnalogTriggerLeft = "KEY_A,JOY1_BUTTON1,MOUSE_LEFT_BUTTON" InputAnalogTriggerRight = "KEY_S,JOY1_BUTTON2,MOUSE_RIGHT_BUTTON" InputAnalogGunLeft2 = "NONE" InputAnalogGunRight2 = "NONE" InputAnalogGunUp2 = "NONE" InputAnalogGunDown2 = "NONE" InputAnalogGunX2 = "NONE" InputAnalogGunY2 = "NONE" InputAnalogTriggerLeft2 = "NONE" InputAnalogTriggerRight2 = "NONE" ; 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"
-
@mechafatnick
I know, but it’s the same concept for the other games. I showed you an exemple. Also, you can combine analog and input for a game like scud, I can turn right and left with analog stick and right and left buttons.New edit: like this
; Steering wheel InputSteeringLeft = JOY1_BUTTON8,JOY1_ZAXIS_POS ; digital, turn wheel left InputSteeringRight = JOY1_BUTTON9,JOY1_ZAXIS_NEG ; digital, turn wheel right InputSteering = NONE ; analog, full steering range
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.