Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lag in Emergency Call Ambulance #128

Closed
jaoxford opened this issue Dec 30, 2023 · 26 comments
Closed

Lag in Emergency Call Ambulance #128

jaoxford opened this issue Dec 30, 2023 · 26 comments

Comments

@jaoxford
Copy link
Contributor

We're having an issue in Emergency Call Ambulance.
About halfway in the 3rd level (nighttime fire), there are massive frame drops.

Any idea what's causing it / how to fix?

Thanks!

@dukeeeey
Copy link
Collaborator

what's your emulated CPU clock speed? The default 50 is too low for the game

@jaoxford
Copy link
Contributor Author

How can I find that out?

@jaoxford
Copy link
Contributor Author

Is it this: PowerPCFrequency

And what should I set this to using the command line options?

e.g. -ppc-frequency=50?

@trzy
Copy link
Owner

trzy commented Dec 30, 2023 via email

@jaoxford
Copy link
Contributor Author

I've tried to do this via the supermodel.ini file. Nothing works there for game specific settings:

My ini file:

;;
;; 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 = true
QuadRendering = true
WideScreen = true
Stretch = false
XResolution = 3840
YResolution = 2160
WideBackground = true
ShowFrameRate = true

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

; Common
InputStart1 = "KEY_1,JOY1_BUTTON19"
InputStart2 = "KEY_2,JOY2_BUTTON9"
InputCoin1 = "KEY_3,JOY1_BUTTON17"
InputCoin2 = "KEY_4,JOY2_BUTTON10"
InputServiceA = "KEY_F1"
InputServiceB = "KEY_F2"
InputTestA = "KEY_F3"
InputTestB = "KEY_F4"

; 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 = "JOY1_BUTTON11"           ; sequential shift up
InputGearShiftDown = "JOY1_BUTTON12"         ; sequential shift down

; 4-Speed manual transmission (Daytona 2, Sega Rally 2, Scud Race)
InputGearShift1 = "KEY_Q,JOY1_BUTTON9"
InputGearShift2 = "KEY_W,JOY1_BUTTON10"
InputGearShift3 = "KEY_E,JOY1_BUTTON11"
InputGearShift4 = "KEY_R,JOY1_BUTTON12"
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,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"


[ eca ]

PowerPCFrequency = 160

[ daytona2 ]

PowerPCFrequency = 25

[ scud ]

InputJoy1XSaturation = 200
SoundVolume = 50
MusicVolume = 200

@jaoxford
Copy link
Contributor Author

And for good measure here's my supermodel.log file:

[Info]  Supermodel Version 0.3a-git-75260f9
[Info]  Started as:
[Info]    argv[0] = C:\Users\jacob\Games\Sega Arcade\Model3\Supermodel_0.3a-git-75260f9_Win64\Supermodel.exe
[Info]    argv[1] = -outputs=win
[Info]    argv[2] = C:\Users\jacob\Games\Sega Arcade\Model3\ROMs\eca.zip
[Info]  Opened C:\Users\jacob\Games\Sega Arcade\Model3\ROMs\eca.zip.
[Info]  ecau:
[Info]    banked_crom: stride=8, chunk size=2, byte layout=10325476
[Info]      mpr-22873.4, crc32=0xdd406330, offset=0x00000000
[Info]      mpr-22872.3, crc32=0x4fde63a1, offset=0x00000002
[Info]      mpr-22871.2, crc32=0xcf5bb5b5, offset=0x00000004
[Info]      mpr-22870.1, crc32=0x52054043, offset=0x00000006
[Info]      mpr-22877.8, crc32=0xe53b8764, offset=0x01000000
[Info]      mpr-22876.7, crc32=0xa7561249, offset=0x01000002
[Info]      mpr-22875.6, crc32=0x1bb5c018, offset=0x01000004
[Info]      mpr-22874.5, crc32=0x5e990497, offset=0x01000006
[Info]      epr-22885.16, crc32=0x3525b46d, offset=0x03000000
[Info]      epr-22884.15, crc32=0x254c3b63, offset=0x03000002
[Info]      epr-22883.14, crc32=0x86d90148, offset=0x03000004
[Info]      epr-22882.13, crc32=0xb161416f, offset=0x03000006
[Info]    crom: stride=8, chunk size=2, byte layout=10325476
[Info]      epr-22898.20, crc32=0xefb96701, offset=0x00000000
[Info]      epr-22905.19, crc32=0x9755dd8c, offset=0x00000002
[Info]      epr-22904.18, crc32=0x0ff828a8, offset=0x00000004
[Info]      epr-22895.17, crc32=0x07df16a0, offset=0x00000006
[Info]    driveboard_program: stride=1, chunk size=1, byte layout=
[Info]      epr-19338a.bin, crc32=0xc9fac464, offset=0x00000000
[Info]    sound_program: stride=2, chunk size=2, byte layout=10
[Info]      epr-22886.21, crc32=0x374ec1c6, offset=0x00000000
[Info]    sound_samples: stride=2, chunk size=2, byte layout=10
[Info]      mpr-22887.22, crc32=0x7d04a867, offset=0x00000000
[Info]      mpr-22889.24, crc32=0x4f9ba45d, offset=0x00400000
[Info]      mpr-22888.23, crc32=0x018fcf22, offset=0x00800000
[Info]      mpr-22890.25, crc32=0xb638bd7c, offset=0x00c00000
[Info]    vrom: stride=32, chunk size=2, byte layout=
[Info]      mpr-22854.26, crc32=0x97a23d16, offset=0x00000000
[Info]      mpr-22855.27, crc32=0x7249cdc9, offset=0x00000002
[Info]      mpr-22856.28, crc32=0x9c0d1d1b, offset=0x00000004
[Info]      mpr-22857.29, crc32=0x44e6ce2b, offset=0x00000006
[Info]      mpr-22858.30, crc32=0x0af40aae, offset=0x00000008
[Info]      mpr-22859.31, crc32=0xc64f0158, offset=0x0000000a
[Info]      mpr-22860.32, crc32=0x053af14b, offset=0x0000000c
[Info]      mpr-22861.33, crc32=0xd26343da, offset=0x0000000e
[Info]      mpr-22862.34, crc32=0x38347c14, offset=0x00000010
[Info]      mpr-22863.35, crc32=0x28b558e6, offset=0x00000012
[Info]      mpr-22864.36, crc32=0x31ed02f6, offset=0x00000014
[Info]      mpr-22865.37, crc32=0x3e3a211a, offset=0x00000016
[Info]      mpr-22866.38, crc32=0xa863a3c8, offset=0x00000018
[Info]      mpr-22867.39, crc32=0x1ce6c7b2, offset=0x0000001a
[Info]      mpr-22868.40, crc32=0x2db40cf8, offset=0x0000001c
[Info]      mpr-22869.41, crc32=0xc6d62634, offset=0x0000001e
[Info]  Runtime configuration:
[Info]    GameXMLFile=Config/Games.xml
[Info]    InitStateFile=
[Info]    MultiThreaded=1
[Info]    GPUMultiThreaded=1
[Info]    PowerPCFrequency=50
[Info]    MultiTexture=0
[Info]    VertexShader=
[Info]    FragmentShader=
[Info]    VertexShaderFog=
[Info]    FragmentShaderFog=
[Info]    VertexShader2D=
[Info]    FragmentShader2D=
[Info]    EmulateSound=1
[Info]    Balance=0.0
[Info]    BalanceLeftRight=0.0
[Info]    BalanceFrontRear=0.0
[Info]    NbSoundChannels=4
[Info]    SoundFreq=57.6
[Info]    EmulateDSB=1
[Info]    SoundVolume=100
[Info]    MusicVolume=100
[Info]    LegacySoundDSP=false
[Info]    ForceFeedback=0
[Info]    New3DEngine=true
[Info]    QuadRendering=true
[Info]    XResolution=3840
[Info]    YResolution=2160
[Info]    WindowXPosition=<empty>
[Info]    WindowYPosition=<empty>
[Info]    FullScreen=0
[Info]    BorderlessWindow=0
[Info]    Supersampling=1
[Info]    WideScreen=true
[Info]    Stretch=false
[Info]    WideBackground=true
[Info]    VSync=1
[Info]    Throttle=1
[Info]    RefreshRate=60.000
[Info]    ShowFrameRate=true
[Info]    Crosshairs=0
[Info]    CrosshairStyle=vector
[Info]    FlipStereo=0
[Info]    InputSystem=dinput
[Info]    DirectInputConstForceLeftMax=100
[Info]    DirectInputConstForceRightMax=100
[Info]    DirectInputSelfCenterMax=100
[Info]    DirectInputFrictionMax=100
[Info]    DirectInputVibrateMax=100
[Info]    XInputConstForceThreshold=30
[Info]    XInputConstForceMax=100
[Info]    XInputVibrateMax=100
[Info]    XInputStereoVibration=1
[Info]    SDLConstForceMax=100
[Info]    SDLSelfCenterMax=100
[Info]    SDLFrictionMax=100
[Info]    SDLVibrateMax=100
[Info]    SDLConstForceThreshold=30
[Info]    Network=false
[Info]    SimulateNet=true
[Info]    PortIn=1970
[Info]    PortOut=1971
[Info]    AddressOut=127.0.0.1
[Info]    Outputs=win
[Info]    DumpTextures=0
[Info]    InputStart1=KEY_1,JOY1_BUTTON19
[Info]    InputStart2=KEY_2,JOY2_BUTTON9
[Info]    InputCoin1=KEY_3,JOY1_BUTTON17
[Info]    InputCoin2=KEY_4,JOY2_BUTTON10
[Info]    InputServiceA=KEY_F1
[Info]    InputServiceB=KEY_F2
[Info]    InputTestA=KEY_F3
[Info]    InputTestB=KEY_F4
[Info]    InputJoyUp=KEY_UP,JOY1_UP
[Info]    InputJoyDown=KEY_DOWN,JOY1_DOWN
[Info]    InputJoyLeft=KEY_LEFT,JOY1_LEFT
[Info]    InputJoyRight=KEY_RIGHT,JOY1_RIGHT
[Info]    InputJoyUp2=JOY2_UP
[Info]    InputJoyDown2=JOY2_DOWN
[Info]    InputJoyLeft2=JOY2_LEFT
[Info]    InputJoyRight2=JOY2_RIGHT
[Info]    InputPunch=KEY_A,JOY1_BUTTON1
[Info]    InputKick=KEY_S,JOY1_BUTTON2
[Info]    InputGuard=KEY_D,JOY1_BUTTON3
[Info]    InputEscape=KEY_F,JOY1_BUTTON4
[Info]    InputPunch2=JOY2_BUTTON1
[Info]    InputKick2=JOY2_BUTTON2
[Info]    InputGuard2=JOY2_BUTTON3
[Info]    InputEscape2=JOY2_BUTTON4
[Info]    InputShift=KEY_A,JOY1_BUTTON1
[Info]    InputBeat=KEY_S,JOY1_BUTTON2
[Info]    InputCharge=KEY_D,JOY1_BUTTON3
[Info]    InputJump=KEY_F,JOY1_BUTTON4
[Info]    InputShortPass=KEY_A,JOY1_BUTTON1
[Info]    InputLongPass=KEY_S,JOY1_BUTTON2
[Info]    InputShoot=KEY_D,JOY1_BUTTON3
[Info]    InputShortPass2=JOY2_BUTTON1
[Info]    InputLongPass2=JOY2_BUTTON2
[Info]    InputShoot2=JOY2_BUTTON3
[Info]    InputSteeringLeft=KEY_LEFT
[Info]    InputSteeringRight=KEY_RIGHT
[Info]    InputSteering=JOY1_XAXIS
[Info]    InputAccelerator=KEY_UP,JOY1_UP
[Info]    InputBrake=KEY_DOWN,JOY1_DOWN
[Info]    InputGearShiftUp=JOY1_BUTTON11
[Info]    InputGearShiftDown=JOY1_BUTTON12
[Info]    InputGearShift1=KEY_Q,JOY1_BUTTON9
[Info]    InputGearShift2=KEY_W,JOY1_BUTTON10
[Info]    InputGearShift3=KEY_E,JOY1_BUTTON11
[Info]    InputGearShift4=KEY_R,JOY1_BUTTON12
[Info]    InputGearShiftN=KEY_T
[Info]    InputVR1=KEY_A,JOY1_BUTTON1
[Info]    InputVR2=KEY_S,JOY1_BUTTON2
[Info]    InputVR3=KEY_D,JOY1_BUTTON3
[Info]    InputVR4=KEY_F,JOY1_BUTTON4
[Info]    InputViewChange=KEY_A,JOY1_BUTTON1
[Info]    InputHandBrake=KEY_S,JOY1_BUTTON2
[Info]    InputRearBrake=KEY_S,JOY1_BUTTON2
[Info]    InputMusicSelect=KEY_D,JOY1_BUTTON3
[Info]    InputTwinJoyTurnLeft=KEY_Q,JOY1_RXAXIS_NEG
[Info]    InputTwinJoyTurnRight=KEY_W,JOY1_RXAXIS_POS
[Info]    InputTwinJoyForward=KEY_UP,JOY1_YAXIS_NEG
[Info]    InputTwinJoyReverse=KEY_DOWN,JOY1_YAXIS_POS
[Info]    InputTwinJoyStrafeLeft=KEY_LEFT,JOY1_XAXIS_NEG
[Info]    InputTwinJoyStrafeRight=KEY_RIGHT,JOY1_XAXIS_POS
[Info]    InputTwinJoyJump=KEY_E,JOY1_BUTTON1
[Info]    InputTwinJoyCrouch=KEY_R,JOY1_BUTTON2
[Info]    InputTwinJoyLeft1=NONE
[Info]    InputTwinJoyLeft2=NONE
[Info]    InputTwinJoyRight1=NONE
[Info]    InputTwinJoyRight2=NONE
[Info]    InputTwinJoyUp1=NONE
[Info]    InputTwinJoyUp2=NONE
[Info]    InputTwinJoyDown1=NONE
[Info]    InputTwinJoyDown2=NONE
[Info]    InputTwinJoyShot1=KEY_A,JOY1_BUTTON5
[Info]    InputTwinJoyShot2=KEY_S,JOY1_BUTTON6
[Info]    InputTwinJoyTurbo1=KEY_Z,JOY1_BUTTON7
[Info]    InputTwinJoyTurbo2=KEY_X,JOY1_BUTTON8
[Info]    InputAnalogJoyLeft=KEY_LEFT
[Info]    InputAnalogJoyRight=KEY_RIGHT
[Info]    InputAnalogJoyUp=KEY_UP
[Info]    InputAnalogJoyDown=KEY_DOWN
[Info]    InputAnalogJoyX=JOY_XAXIS,MOUSE_XAXIS
[Info]    InputAnalogJoyY=JOY_YAXIS,MOUSE_YAXIS
[Info]    InputAnalogJoyTrigger=KEY_A,JOY_BUTTON1,MOUSE_LEFT_BUTTON
[Info]    InputAnalogJoyEvent=KEY_S,JOY_BUTTON2,MOUSE_RIGHT_BUTTON
[Info]    InputAnalogJoyTrigger2=KEY_D,JOY_BUTTON2
[Info]    InputAnalogJoyEvent2=NONE
[Info]    InputGunLeft=KEY_LEFT
[Info]    InputGunRight=KEY_RIGHT
[Info]    InputGunUp=KEY_UP
[Info]    InputGunDown=KEY_DOWN
[Info]    InputGunX=MOUSE_XAXIS,JOY1_XAXIS
[Info]    InputGunY=MOUSE_YAXIS,JOY1_YAXIS
[Info]    InputTrigger=KEY_A,JOY1_BUTTON1,MOUSE_LEFT_BUTTON
[Info]    InputOffscreen=KEY_S,JOY1_BUTTON2,MOUSE_RIGHT_BUTTON
[Info]    InputAutoTrigger=0
[Info]    InputGunLeft2=NONE
[Info]    InputGunRight2=NONE
[Info]    InputGunUp2=NONE
[Info]    InputGunDown2=NONE
[Info]    InputGunX2=JOY2_XAXIS
[Info]    InputGunY2=JOY2_YAXIS
[Info]    InputTrigger2=JOY2_BUTTON1
[Info]    InputOffscreen2=JOY2_BUTTON2
[Info]    InputAutoTrigger2=0
[Info]    InputAnalogGunLeft=KEY_LEFT
[Info]    InputAnalogGunRight=KEY_RIGHT
[Info]    InputAnalogGunUp=KEY_UP
[Info]    InputAnalogGunDown=KEY_DOWN
[Info]    InputAnalogGunX=MOUSE_XAXIS,JOY1_XAXIS
[Info]    InputAnalogGunY=MOUSE_YAXIS,JOY1_YAXIS
[Info]    InputAnalogTriggerLeft=KEY_A,JOY1_BUTTON1,MOUSE_LEFT_BUTTON
[Info]    InputAnalogTriggerRight=KEY_S,JOY1_BUTTON2,MOUSE_RIGHT_BUTTON
[Info]    InputAnalogGunLeft2=NONE
[Info]    InputAnalogGunRight2=NONE
[Info]    InputAnalogGunUp2=NONE
[Info]    InputAnalogGunDown2=NONE
[Info]    InputAnalogGunX2=NONE
[Info]    InputAnalogGunY2=NONE
[Info]    InputAnalogTriggerLeft2=NONE
[Info]    InputAnalogTriggerRight2=NONE
[Info]    InputSkiLeft=KEY_LEFT
[Info]    InputSkiRight=KEY_RIGHT
[Info]    InputSkiUp=KEY_UP
[Info]    InputSkiDown=KEY_DOWN
[Info]    InputSkiX=JOY1_XAXIS
[Info]    InputSkiY=JOY1_YAXIS
[Info]    InputSkiPollLeft=KEY_A,JOY1_BUTTON1
[Info]    InputSkiPollRight=KEY_S,JOY1_BUTTON2
[Info]    InputSkiSelect1=KEY_Q,JOY1_BUTTON3
[Info]    InputSkiSelect2=KEY_W,JOY1_BUTTON4
[Info]    InputSkiSelect3=KEY_E,JOY1_BUTTON5
[Info]    InputMagicalLeverUp1=KEY_UP
[Info]    InputMagicalLeverDown1=KEY_DOWN
[Info]    InputMagicalLeverUp2=NONE
[Info]    InputMagicalLeverDown2=NONE
[Info]    InputMagicalLever1=JOY1_YAXIS
[Info]    InputMagicalLever2=JOY2_YAXIS
[Info]    InputMagicalPedal1=KEY_A,JOY1_BUTTON1
[Info]    InputMagicalPedal2=KEY_S,JOY2_BUTTON1
[Info]    InputFishingRodLeft=KEY_LEFT
[Info]    InputFishingRodRight=KEY_RIGHT
[Info]    InputFishingRodUp=KEY_UP
[Info]    InputFishingRodDown=KEY_DOWN
[Info]    InputFishingStickLeft=KEY_A
[Info]    InputFishingStickRight=KEY_D
[Info]    InputFishingStickUp=KEY_W
[Info]    InputFishingStickDown=KEY_S
[Info]    InputFishingRodX=JOY1_XAXIS
[Info]    InputFishingRodY=JOY1_YAXIS
[Info]    InputFishingStickX=JOY1_RXAXIS
[Info]    InputFishingStickY=JOY1_RYAXIS
[Info]    InputFishingReel=KEY_SPACE,JOY1_ZAXIS_POS
[Info]    InputFishingCast=KEY_Z,JOY1_BUTTON1
[Info]    InputFishingSelect=KEY_X,JOY1_BUTTON2
[Info]    InputFishingTension=KEY_T,JOY1_ZAXIS_NEG
[Info]    LogOutput=Supermodel.log
[Info]    LogLevel=info
[Info]  
[Info]  OpenGL information:
[Info]    Vendor                   : NVIDIA Corporation
[Info]    Renderer                 : NVIDIA GeForce RTX 2060/PCIe/SSE2
[Info]    Version                  : 4.5.0 NVIDIA 537.42
[Info]    Shading Language Version : 4.50 NVIDIA
[Info]    Maximum Vertex Array Size: 1048576 vertices
[Info]    Maximum Texture Size     : 32768 texels
[Info]    Maximum Vertex Attributes: 16
[Info]    Maximum Vertex Uniforms  : 4096
[Info]    Maximum Texture Img Units: 32
[Info]  
[Info]  Program terminated normally.

@trzy
Copy link
Owner

trzy commented Dec 30, 2023 via email

@jaoxford
Copy link
Contributor Author

Aha. I've just noticed this in the log file:

[Info]  Opened C:\Users\jacob\Games\Sega Arcade\Model3\ROMs\eca.zip.
[Info]  ecau:

So I added this to my config file:

[ ecau ]

PowerPCFrequency = 160

And now the correct thing is showing up in the logs.

@jaoxford
Copy link
Contributor Author

I think you can see where I'm going with this now.... Even though I'm using the ROM eca.zip, why is this coming up as ecau?

A bug, something to do with the romset, something else?

@trzy
Copy link
Owner

trzy commented Dec 30, 2023 via email

@jaoxford
Copy link
Contributor Author

Just did a run through Emergency call, PowerPCFrequency was set to 166, definitely ran much better. There was a bit of lag towards the end of the 3rd level but I'm not sure if that's an emulation issue or what else now? I need to try it on the real machine 😆

Thanks for your help.

@trzy
Copy link
Owner

trzy commented Dec 30, 2023 via email

@jaoxford
Copy link
Contributor Author

Thank you so much for your help. This is great stuff for me to get on with!

@jaoxford jaoxford reopened this Dec 31, 2023
@jaoxford
Copy link
Contributor Author

I've now tested the 3rd level (the one with the fire) using the -legacy3d option. Performance is much better there / almost perfect, but the visuals are much worse as I expected.

Using the new 3d engine with my PPC at 166. I notice a lot of lag during these moments:

image

image

image

image

So I think you're right, it's something to do with the flames / transparency.

@dukeeeey
Copy link
Collaborator

You need a very fast cpu for 166mhz emulation. Try maybe 100mhz. Also what gpu do you have?

@jaoxford
Copy link
Contributor Author

I'll give 100mhz a go.

My specs:
AMD Ryzen 5 3600X
RTX 2060 6GB
32GB RAM

@jaoxford
Copy link
Contributor Author

jaoxford commented Jan 2, 2024

I've tried again with ppc ranging from 60-166 in increments of 10. I would say that none of them have completely fixed the performance where it's on par with the legacy3d engine. It's definitely an improvement over where I started though!

I'm still getting big dips down to anywhere between 35-50fps with a fair bit of input lag. I'm not really sure what else I can do to fix the performance?

@dukeeeey
Copy link
Collaborator

dukeeeey commented Jan 2, 2024

RTX 2060 6GB

That card should be MORE than fast enough. Are you sure you aren't using integrated gfx lol. What resolution are you using? Are you using super sampling?

@jaoxford
Copy link
Contributor Author

jaoxford commented Jan 2, 2024

I'm pretty sure I don't even have integrated graphics on my CPU lmao. 😆

I'm running in 4k (3140 x 2160). I'm not using any supersampling.

@jaoxford
Copy link
Contributor Author

jaoxford commented Jan 2, 2024

Running in 1080P & 1440P removes all lag for me though! So must be a 4k / GPU issue.

@dukeeeey
Copy link
Collaborator

dukeeeey commented Jan 2, 2024

You can try using the triangle renderer, it's a lot cheaper on the GPU

@jaoxford
Copy link
Contributor Author

jaoxford commented Jan 2, 2024

How can I do that? 😨

@dukeeeey
Copy link
Collaborator

dukeeeey commented Jan 2, 2024

just don't enable -quad-rendering

@jaoxford
Copy link
Contributor Author

jaoxford commented Jan 2, 2024

Setting QuadRendering = false and running in 4k the difference in performance is negligible. My frames still tank when there are flames.

So far the best solution for me has been to downgrade my resolution to 1440p, whilst keeping Quadrendering to true, and the PowerPCFrequency at 166. That gives me the best performance and visuals.

@crashGG
Copy link

crashGG commented Jan 11, 2024

Setting QuadRendering = false and running in 4k the difference in performance is negligible. My frames still tank when there are flames.

So far the best solution for me has been to downgrade my resolution to 1440p, whilst keeping Quadrendering to true, and the PowerPCFrequency at 166. That gives me the best performance and visuals.

Have you ever recorded cpu and gpu usage when lag occurs?
Maybe you can try this build,
https://www.supermodel3.com/Files/Git_Snapshots/Supermodel_0.3a-git-4c727ab_Win64.zip
after this version , the new 3d engine updates the api to opengl 4+ .From then on, the nightmare of lags began...

@jaoxford
Copy link
Contributor Author

Have you ever recorded cpu and gpu usage when lag occurs? Maybe you can try this build, https://www.supermodel3.com/Files/Git_Snapshots/Supermodel_0.3a-git-4c727ab_Win64.zip after this version , the new 3d engine updates the api to opengl 4+ .From then on, the nightmare of lags began...

No I've not tried to record CPU / GPU. Any recommendations / suggestions on how to do so?

I've tried to use the legacy-3d engine on the latest build which solved the lag issue, but the visuals were poor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants