trzy / Supermodel

Official repository of the Sega Model 3 arcade emulator.
https://supermodel3.com
276 stars 38 forks source link

Supermodel crashes on startup when using wayland #133

Open SirFritz opened 10 months ago

SirFritz commented 10 months ago

Trying to launch supermodel from the command line when using wayland crashes with an error Error: OpenGL initialization failed: Unknown error as well as [1] 97643 segmentation fault (core dumped).

It runs fine using identical settings under x11.

Specs: i5-8600k rx 6700xt 32gb ram Fedora Linux 39 KDE

Version: Current master branch Launch Options -res=1280,960 swtrilgy.zip

Output from ./supermodel -print-gl-info under x11 (crashes on wayland too)

Supermodel: A Sega Model 3 Arcade Emulator (Version 0.3a-WIP)
Copyright 2003-2023 by The Supermodel Team
GPU info: 4.6 (Compatibility Profile) Mesa 23.3.4 (compatability profile)

OpenGL information:

  Vendor                   : AMD
  Renderer                 : AMD Radeon RX 6700 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.54, 6.6.14-200.fc39.x86_64)
  Version                  : 4.6 (Compatibility Profile) Mesa 23.3.4
  Shading Language Version : 4.60
  Maximum Vertex Array Size: 3000 vertices
  Maximum Texture Size     : 16384 texels
  Maximum Vertex Attributes: 16
  Maximum Vertex Uniforms  : 16384
  Maximum Texture Img Units: 32
jaoxford commented 9 months ago

Can you check your logs?

SirFritz commented 9 months ago

Log is attached.

Supermodel.log

jaoxford commented 9 months ago
[Info]  Supermodel Version 0.3a-WIP
[Info]  Started as:
[Info]    argv[0] = ./supermodel
[Info]    argv[1] = -res=1280,960
[Info]    argv[2] = scudplus.zip
[Info]  Opened scudplus.zip.
[Info]  scudplus:
[Info]    banked_crom: stride=8, chunk size=2, byte layout=10325476
[Info]      mpr-19661.04, crc32=0x8e3fd241, offset=0x00000000
[Info]      mpr-19660.03, crc32=0xd999c935, offset=0x00000002
[Info]      mpr-19659.02, crc32=0xc47e7002, offset=0x00000004
[Info]      mpr-19658.01, crc32=0xd523235c, offset=0x00000006
[Info]      mpr-19665.08, crc32=0xf97c78f9, offset=0x01000000
[Info]      mpr-19664.07, crc32=0xb9d11294, offset=0x01000002
[Info]      mpr-19663.06, crc32=0xf6af1ca4, offset=0x01000004
[Info]      mpr-19662.05, crc32=0x3c700eff, offset=0x01000006
[Info]      mpr-19669.12, crc32=0xcdc43c61, offset=0x02000000
[Info]      mpr-19668.11, crc32=0x0b4dd8d5, offset=0x02000002
[Info]      mpr-19667.10, crc32=0xa8676799, offset=0x02000004
[Info]      mpr-19666.09, crc32=0xb53dc97f, offset=0x02000006
[Info]      mpr-20100.16, crc32=0xc99e2c01, offset=0x03000000
[Info]      mpr-20099.15, crc32=0xfc9bd7d9, offset=0x03000002
[Info]      mpr-20098.14, crc32=0x8355fa41, offset=0x03000004
[Info]      mpr-20097.13, crc32=0x269a9dbe, offset=0x03000006
[Info]    crom: stride=8, chunk size=2, byte layout=10325476
[Info]      epr-20095a.20, crc32=0x58c7e393, offset=0x00000000
[Info]      epr-20094a.19, crc32=0xdbf17a43, offset=0x00000002
[Info]      epr-20093a.18, crc32=0x4ed2e35d, offset=0x00000004
[Info]      epr-20092a.17, crc32=0xa94ec57e, offset=0x00000006
[Info]    driveboard_program: stride=1, chunk size=1, byte layout=
[Info]      epr-19338.bin, crc32=0xdbf88de6, offset=0x00000000
[Info]    mpeg_music: stride=1, chunk size=1, byte layout=
[Info]      mpr-19603.57, crc32=0xb1b1765f, offset=0x00000000
[Info]      mpr-19604.58, crc32=0x6ac85b49, offset=0x00200000
[Info]      mpr-19605.59, crc32=0xbec891eb, offset=0x00400000
[Info]      mpr-19606.60, crc32=0xadad46b2, offset=0x00600000
[Info]    mpeg_program: stride=1, chunk size=1, byte layout=
[Info]      epr-19612.2, crc32=0x13978fd4, offset=0x00000000
[Info]    sound_program: stride=2, chunk size=2, byte layout=10
[Info]      epr-20096a.21, crc32=0x0fef288b, offset=0x00000000
[Info]    sound_samples: stride=2, chunk size=2, byte layout=10
[Info]      mpr-19670.22, crc32=0xbd31cc06, offset=0x00000000
[Info]      mpr-20101.24, crc32=0x66d1e31f, offset=0x00400000
[Info]    vrom: stride=32, chunk size=2, byte layout=
[Info]      mpr-19672.26, crc32=0x588c29fd, offset=0x00000000
[Info]      mpr-19673.27, crc32=0x156abaa9, offset=0x00000002
[Info]      mpr-19674.28, crc32=0xc7b0f98c, offset=0x00000004
[Info]      mpr-19675.29, crc32=0xff113396, offset=0x00000006
[Info]      mpr-19676.30, crc32=0xfd852ead, offset=0x00000008
[Info]      mpr-19677.31, crc32=0xc6ac0347, offset=0x0000000a
[Info]      mpr-19678.32, crc32=0xb8819cfe, offset=0x0000000c
[Info]      mpr-19679.33, crc32=0xe126c3e3, offset=0x0000000e
[Info]      mpr-19680.34, crc32=0x00ea5cef, offset=0x00000010
[Info]      mpr-19681.35, crc32=0xc949325f, offset=0x00000012
[Info]      mpr-19682.36, crc32=0xce5ca065, offset=0x00000014
[Info]      mpr-19683.37, crc32=0xe5856419, offset=0x00000016
[Info]      mpr-19684.38, crc32=0x56f6ec97, offset=0x00000018
[Info]      mpr-19685.39, crc32=0x42b49304, offset=0x0000001a
[Info]      mpr-19686.40, crc32=0x84eed592, offset=0x0000001c
[Info]      mpr-19687.41, crc32=0x776ce694, offset=0x0000001e
[Info]  Runtime configuration:
[Info]    GameXMLFile=/home/alexander/.config/supermodel/Config/Games.xml
[Info]    InitStateFile=
[Info]    MultiThreaded=1
[Info]    GPUMultiThreaded=1
[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=false
[Info]    XResolution=1280
[Info]    YResolution=960
[Info]    WindowXPosition=<empty>
[Info]    WindowYPosition=<empty>
[Info]    FullScreen=0
[Info]    BorderlessWindow=0
[Info]    Supersampling=1
[Info]    WideScreen=false
[Info]    Stretch=false
[Info]    WideBackground=false
[Info]    VSync=1
[Info]    Throttle=1
[Info]    RefreshRate=60.000
[Info]    ShowFrameRate=0
[Info]    Crosshairs=0
[Info]    CrosshairStyle=vector
[Info]    FlipStereo=0
[Info]    InputSystem=sdl
[Info]    SDLConstForceMax=100
[Info]    SDLSelfCenterMax=100
[Info]    SDLFrictionMax=100
[Info]    SDLVibrateMax=100
[Info]    SDLConstForceThreshold=30
[Info]    Outputs=none
[Info]    DumpTextures=0
[Info]    Network=false
[Info]    SimulateNet=true
[Info]    PortIn=1970
[Info]    PortOut=1971
[Info]    AddressOut=127.0.0.1
[Info]    InputStart1=KEY_1,JOY1_BUTTON9
[Info]    InputStart2=KEY_2,JOY2_BUTTON9
[Info]    InputCoin1=KEY_3,JOY1_BUTTON10
[Info]    InputCoin2=KEY_4,JOY2_BUTTON10
[Info]    InputServiceA=KEY_5
[Info]    InputServiceB=KEY_7
[Info]    InputTestA=KEY_6
[Info]    InputTestB=KEY_8
[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=KEY_Y
[Info]    InputGearShiftDown=KEY_H
[Info]    InputGearShift1=KEY_Q,JOY1_BUTTON5
[Info]    InputGearShift2=KEY_W,JOY1_BUTTON6
[Info]    InputGearShift3=KEY_E,JOY1_BUTTON7
[Info]    InputGearShift4=KEY_R,JOY1_BUTTON8
[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=/home/alexander/.local/share/supermodel/Log/Supermodel.log
[Info]    LogLevel=info
[Info]  

I don't see any errors in there. Hmmmm, maybe it's not a supermodel issue at this point? I'm not too sure.

RodoMa92 commented 9 months ago

Can't reproduce any crashes on wayland but yeah, it fails to detect any OpenGL device in the same way. Using the latest flatpaks.

eskay993 commented 7 months ago

I'm having the same issue with wayland and similar logs and results as above, using Fedora 40 with KDE. Workaround for me is to either...

force xwayland:

WAYLAND_DISPLAY="" supermodel  /path/to/rom.zip

or use gamescope:

gamescope -f -- supermodel /path/to/rom.zip

Works with the flatpak too. Just replace supermodel with flatpak run com.supermodel3.Supermodel

Gamescope method works better for me for playing in fullscreen. Just need to make sure I ran the game in window mode when using gamescope.

SirFritz commented 7 months ago

Thanks for that, workaround works fine for me at moment.

jserodio commented 1 day ago

thanks @eskay993 you're a lifesaver! I'm using emudeck in Bazzite Nvidia edition and couldn't run supermodel.

I've edited ~/Emulation/tools/launchers/supermodel.sh and added WAYLAND_DISPLAY="" starting in line 6

1 #!/bin/sh 2 source $HOME/.config/EmuDeck/backend/functions/all.sh 3 emulatorInit "supermodel" 4 param="${@}" 5 param=$(echo "$param" | sed "s|'||g") 6 WAYLAND_DISPLAY="" /usr/bin/flatpak run com.supermodel3.Supermodel "${param}" 7 rm -rf "$savesPath/.gaming"

It works wonderfully.