RobertBeckebans / RBDOOM-3-BFG

Doom 3 BFG Edition source port with updated DX12 / Vulkan renderer and modern game engine features
https://www.moddb.com/mods/rbdoom-3-bfg
GNU General Public License v3.0
1.48k stars 253 forks source link

Keyboard/Mouse unresponsive at launch (Apple M2, aarch64-linux) #941

Open nickbailuc opened 2 weeks ago

nickbailuc commented 2 weeks ago

System

Vulkan (backstory)

Since the Asahi project recently added conformant Vulkan support, I decided to compile some Vulkan games. The system runs the vkcube model as well as GZDoom and vkQuake perfectly, but I wanted something that actually has some nice visuals and thought of RBDOOM-3-BFG's move to Vulkan.

How I installed Doom 3

Anyways, there's no aarch64-linux build of Vulkan SDK, so I first compiled Vulkan SDK, added the binaries to $PATH, compiled RBDOOM-3-BFG, copied the base/ from the latest patched install on gog.com.

The problem

Launching the executable opens a window, loads the screen where you select Doom 1, 3, or 2, plays the music, but I have no mouse cursor to move around nor does it respond to any keyboard input. Given this odd platform (aarch-64-linux) I have to compile most of my games. Thus far, I haven't had any issues with other 3D games utilizing SDL and Vulkan/OpenGL, so I think the system (Mesa, Vulkan, SDL) are functioning correctly. The stdout produces some missing file errors, however not sure if that's causing the no input issue. I've tried the original base/ from GOG, as well as applying the 1.3 or 1.5 patches from Moddb (one of them didn't launch the game at all, the other launched and same no input result).

stdout

Here's the stdout. I am determined to get this port working, so I am willing to do further tests and provide whatever info necessary.

./RBDoom3BFG 
QA Timing INIT: 000767ms
RBDOOM 3 BFG 1.6.0.1403 linux-aarch64 Nov  7 2024 15:20:36
found interface lo - loopback
found interface wlp1s0f0 - 192.168.0.10/255.255.255.0
------ Initializing File System ------
Loaded resource file _common.resources
Loaded resource file _ordered.resources
Loaded resource file _sound_pc.resources
Loaded resource file _sound_pc_en.resources
Loaded resource file _sound_pc_fr.resources
Loaded resource file _sound_pc_gr.resources
Loaded resource file _sound_pc_it.resources
Loaded resource file _sound_pc_jp.resources
Loaded resource file _sound_pc_sp.resources
Loaded resource file maps/admin.resources
Loaded resource file maps/alphalabs1.resources
Loaded resource file maps/alphalabs2.resources
Loaded resource file maps/alphalabs3.resources
Loaded resource file maps/alphalabs4.resources
Loaded resource file maps/caverns1.resources
Loaded resource file maps/caverns2.resources
Loaded resource file maps/comm1.resources
Loaded resource file maps/commoutside.resources
Loaded resource file maps/cpu.resources
Loaded resource file maps/cpuboss.resources
Loaded resource file maps/d3ctf1.resources
Loaded resource file maps/d3ctf2.resources
Loaded resource file maps/d3ctf3.resources
Loaded resource file maps/d3ctf4.resources
Loaded resource file maps/d3dm1.resources
Loaded resource file maps/d3dm2.resources
Loaded resource file maps/d3dm3.resources
Loaded resource file maps/d3dm4.resources
Loaded resource file maps/d3dm5.resources
Loaded resource file maps/d3xpdm1.resources
Loaded resource file maps/d3xpdm2.resources
Loaded resource file maps/d3xpdm3.resources
Loaded resource file maps/d3xpdm4.resources
Loaded resource file maps/delta1.resources
Loaded resource file maps/delta2a.resources
Loaded resource file maps/delta2b.resources
Loaded resource file maps/delta3.resources
Loaded resource file maps/delta4.resources
Loaded resource file maps/delta5.resources
Loaded resource file maps/deltax.resources
Loaded resource file maps/enpro.resources
Loaded resource file maps/erebus1.resources
Loaded resource file maps/erebus2.resources
Loaded resource file maps/erebus3.resources
Loaded resource file maps/erebus4.resources
Loaded resource file maps/erebus5.resources
Loaded resource file maps/erebus6.resources
Loaded resource file maps/hell.resources
Loaded resource file maps/hell1.resources
Loaded resource file maps/hellhole.resources
Loaded resource file maps/le_enpro1.resources
Loaded resource file maps/le_enpro2.resources
Loaded resource file maps/le_exis1.resources
Loaded resource file maps/le_exis2.resources
Loaded resource file maps/le_hell.resources
Loaded resource file maps/le_hell_post.resources
Loaded resource file maps/le_underground.resources
Loaded resource file maps/le_underground2.resources
Loaded resource file maps/mars_city1.resources
Loaded resource file maps/mars_city2.resources
Loaded resource file maps/mc_underground.resources
Loaded resource file maps/monorail.resources
Loaded resource file maps/phobos1.resources
Loaded resource file maps/phobos2.resources
Loaded resource file maps/phobos3.resources
Loaded resource file maps/phobos4.resources
Loaded resource file maps/recycling1.resources
Loaded resource file maps/recycling2.resources
Loaded resource file maps/site3.resources
Current search path:
/home/nick/.local/share/rbdoom3bfg/base
/home/nick/.local/share/rbdoom3bfg/base/maps/site3.resources (1725 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/recycling2.resources (1528 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/recycling1.resources (1657 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/phobos4.resources (2168 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/phobos3.resources (2551 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/phobos2.resources (2792 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/phobos1.resources (2750 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/monorail.resources (2190 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/mc_underground.resources (2365 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/mars_city2.resources (2639 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/mars_city1.resources (2721 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_underground2.resources (2325 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_underground.resources (1918 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_hell_post.resources (1170 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_hell.resources (1057 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_exis2.resources (2674 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_exis1.resources (2579 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_enpro2.resources (1980 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/le_enpro1.resources (2280 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/hellhole.resources (1312 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/hell1.resources (1200 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/hell.resources (1125 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/erebus6.resources (1818 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/erebus5.resources (1986 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/erebus4.resources (2659 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/erebus3.resources (2891 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/erebus2.resources (2115 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/erebus1.resources (1704 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/enpro.resources (2124 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/deltax.resources (2491 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/delta5.resources (2148 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/delta4.resources (1076 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/delta3.resources (2326 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/delta2b.resources (2333 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/delta2a.resources (2432 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/delta1.resources (2299 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3xpdm4.resources (303 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3xpdm3.resources (290 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3xpdm2.resources (339 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3xpdm1.resources (476 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3dm5.resources (957 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3dm4.resources (1152 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3dm3.resources (987 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3dm2.resources (961 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3dm1.resources (1215 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3ctf4.resources (1027 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3ctf3.resources (1079 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3ctf2.resources (1099 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/d3ctf1.resources (690 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/cpuboss.resources (1773 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/cpu.resources (1862 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/commoutside.resources (2205 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/comm1.resources (2493 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/caverns2.resources (1077 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/caverns1.resources (1595 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/alphalabs4.resources (2157 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/alphalabs3.resources (1701 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/alphalabs2.resources (2327 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/alphalabs1.resources (2334 files)
/home/nick/.local/share/rbdoom3bfg/base/maps/admin.resources (2148 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc_sp.resources (825 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc_jp.resources (831 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc_it.resources (830 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc_gr.resources (830 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc_fr.resources (825 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc_en.resources (840 files)
/home/nick/.local/share/rbdoom3bfg/base/_sound_pc.resources (4759 files)
/home/nick/.local/share/rbdoom3bfg/base/_ordered.resources (1336 files)
/home/nick/.local/share/rbdoom3bfg/base/_common.resources (2262 files)
file system initialized.
--------------------------------------
WARNING: Unable to open resource file maps/_startup.resources
----- Initializing Decls -----
------------------------------
Couldn't open journal files
failed parsing /proc/cpuinfo
alternative method used
/proc/cpuinfo CPU processors: 8
/proc/cpuinfo CPU logical cores: 8
execing default.cfg
execing D3BFGConfig.cfg
couldn't exec autoexec.cfg
----- R_InitOpenGL -----
Initializing Vulkan subsystem
Enabled Vulkan instance extensions:
    VK_EXT_debug_report
    VK_KHR_xlib_surface
    VK_KHR_surface
    VK_KHR_get_physical_device_properties2
Enabled Vulkan layers:
Enabled Vulkan device extensions:
    VK_KHR_format_feature_flags2
    VK_KHR_buffer_device_address
    VK_EXT_descriptor_indexing
    VK_KHR_maintenance1
    VK_KHR_synchronization2
    VK_KHR_swapchain
Created Vulkan device: Apple M2 (G14G B0)
----- Initializing Render Shaders -----
Loading shader program builtin/gui
Loading shader program builtin/color
Loading shader program builtin/color
Loading shader program builtin/vertex_color
Loading shader program builtin/lighting/ambient_lighting_IBL
Loading shader program builtin/lighting/ambient_lighting_IBL
Loading shader program builtin/lighting/ambient_lighting_IBL
Loading shader program builtin/lighting/ambient_lighting_IBL
Loading shader program builtin/lighting/ambient_lightgrid_IBL
Loading shader program builtin/lighting/ambient_lightgrid_IBL
Loading shader program builtin/lighting/ambient_lightgrid_IBL
Loading shader program builtin/lighting/ambient_lightgrid_IBL
Loading shader program builtin/gbuffer
Loading shader program builtin/gbuffer
Loading shader program builtin/texture
Loading shader program builtin/texture_color
Loading shader program builtin/texture_color
Loading shader program builtin/texture_color
Loading shader program builtin/texture_color_texgen
Loading shader program builtin/lighting/interaction
Loading shader program builtin/lighting/interaction
Loading shader program builtin/lighting/interactionAmbient
Loading shader program builtin/lighting/interactionAmbient
Loading shader program builtin/lighting/interaction
Loading shader program builtin/lighting/interaction
Loading shader program builtin/lighting/interactionAmbient
Loading shader program builtin/lighting/interactionAmbient
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/lighting/interactionSM
Loading shader program builtin/debug/lightgrid
Loading shader program builtin/debug/lightgrid
Loading shader program builtin/debug/octahedron
Loading shader program builtin/debug/octahedron
Loading shader program builtin/legacy/environment
Loading shader program builtin/legacy/environment
Loading shader program builtin/legacy/bumpyenvironment
Loading shader program builtin/legacy/bumpyenvironment
Loading shader program builtin/depth
Loading shader program builtin/depth
Loading shader program builtin/fog/blendlight
Loading shader program builtin/fog/blendlight
Loading shader program builtin/fog/fog
Loading shader program builtin/fog/fog
Loading shader program builtin/legacy/skybox
Loading shader program builtin/legacy/wobblesky
Loading shader program builtin/post/postprocess
Loading shader program builtin/post/retro_2bit
Loading shader program builtin/post/retro_c64
Loading shader program builtin/post/retro_cpc
Loading shader program builtin/post/retro_nes
Loading shader program builtin/post/retro_genesis
Loading shader program builtin/post/retro_ps1
Loading shader program builtin/post/crt_mattias
Loading shader program builtin/post/crt_newpixie
Loading shader program builtin/post/crt_advanced
Loading shader program builtin/post/screen
Loading shader program builtin/post/tonemap
Loading shader program builtin/post/tonemap
Loading shader program builtin/post/hdr_glare_chromatic
Loading shader program builtin/post/tonemap
Loading shader program builtin/post/SMAA_edge_detection
Loading shader program builtin/post/SMAA_blending_weight_calc
Loading shader program builtin/post/SMAA_final
Loading shader program builtin/post/motionBlur
Loading shader program builtin/post/taa
Loading shader program builtin/post/taa
Loading shader program builtin/post/taa
Loading shader program builtin/post/taa
Loading shader program builtin/SSAO/AmbientOcclusion_AO
Loading shader program builtin/SSAO/AmbientOcclusion_AO
Loading shader program builtin/SSAO/AmbientOcclusion_blur
Loading shader program builtin/SSAO/AmbientOcclusion_blur
Loading shader program builtin/SSGI/DeepGBufferRadiosity_radiosity
Loading shader program builtin/SSGI/DeepGBufferRadiosity_blur
Loading shader program builtin/SSGI/DeepGBufferRadiosity_blur
Loading shader program builtin/VR/stereoDeGhost
Loading shader program builtin/VR/stereoWarp
Loading shader program builtin/video/bink
Loading shader program builtin/video/bink
Loading shader program builtin/video/bink_gui
Loading shader program builtin/VR/stereoInterlace
Loading shader program builtin/post/motionBlur
Loading shader program builtin/debug/debug_shadowmap
Loading shader program builtin/blit
Loading shader program builtin/rect
Loading shader program builtin/post/tonemapping
Loading shader program builtin/post/tonemapping
Loading shader program builtin/post/histogram
Loading shader program builtin/post/histogram
Loading shader program builtin/post/exposure
----- Initializing Sound System ------
Setup OpenAL device and context... Done.
OpenAL vendor: OpenAL Community
OpenAL renderer: OpenAL Soft
OpenAL version: 1.1 ALSOFT 1.23.1
OpenAL extensions: AL_EXT_ALAW AL_EXT_BFORMAT AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_BFORMAT AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_EXT_SOURCE_RADIUS AL_EXT_STATIC_BUFFER AL_EXT_STEREO_ANGLES AL_LOKI_quadriphonic AL_SOFT_bformat_ex AL_SOFTX_bformat_hoa AL_SOFT_block_alignment AL_SOFT_buffer_length_query AL_SOFT_callback_buffer AL_SOFTX_convolution_reverb AL_SOFT_deferred_updates AL_SOFT_direct_channels AL_SOFT_direct_channels_remix AL_SOFT_effect_target AL_SOFT_events AL_SOFT_gain_clamp_ex AL_SOFTX_hold_on_disconnect AL_SOFT_loop_points AL_SOFTX_map_buffer AL_SOFT_MSADPCM AL_SOFT_source_latency AL_SOFT_source_length AL_SOFT_source_resampler AL_SOFT_source_spatialize AL_SOFT_source_start_delay AL_SOFT_UHJ AL_SOFT_UHJ_ex
sound system initialized.
--------------------------------------
------- Initializing renderSystem --------
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
gamedate: Nov  7 2024
WARNING: file def/_tb_models.def, line 5230: entityDef 'genmodel_mapobjects_monitors_hangingmonitor' previously defined at def/_tb_models.def:5216
Initializing event system
...543 event definitions
Initializing class hierarchy
...159 classes, 1016496 bytes for event callbacks
Initializing scripts
measured CPU frequency: 1000.09 MHz
Compiled 'script/doom_main.script': 3702220632 ms
---------- Compile stats ----------

Memory usage:
     Strings: 120, 15840 bytes
  Statements: 95386, 3052352 bytes
   Functions: 3070, 496728 bytes
   Variables: 239712 bytes
    Mem used: 5818032 bytes
 Static data: 5811160 bytes
   Allocated: 8111952 bytes
 Thread size: 14064 bytes

...6 aas types
game initialized.
--------------------------------------
WARNING: Couldn't load image: } : }#__0200
Loaded Bink file: 'video/intro/introloop.bik', looping=1, 512x512, 30.00 FPS, 12.0 sec
Loaded Bink file: 'video/mars1.bik', looping=0, 512x512, 30.00 FPS, 32.2 sec
Loaded Bink file: 'video/mars_rotation.bik', looping=1, 1567x406, 30.00 FPS, 100.0 sec
----- idRenderModelManagerLocal::EndLevelLoad -----
    0 models purged from previous level,     3 models kept.
---------------------------------------------------
----- idImageManager::EndLevelLoad -----
WARNING: Couldn't load image: } : }#__0200
WARNING: Couldn't load image: _cinematicY : _cinematicY#__0200
WARNING: Couldn't load image: _cinematicCr : _cinematicCr#__0200
WARNING: Couldn't load image: _cinematicCb : _cinematicCb#__0200
WARNING: Couldn't load image: _cinematic : _cinematic#__0200
WARNING: Couldn't load image: _cinematicY : _cinematicY#__0200
WARNING: Couldn't load image: _cinematicCr : _cinematicCr#__0200
WARNING: Couldn't load image: _cinematicCb : _cinematicCb#__0200
WARNING: Couldn't load image: _cinematic : _cinematic#__0200
WARNING: Couldn't load image: _cinematicY : _cinematicY#__0200
WARNING: Couldn't load image: _cinematicCr : _cinematicCr#__0200
WARNING: Couldn't load image: _cinematicCb : _cinematicCb#__0200
WARNING: Couldn't load image: _cinematic : _cinematic#__0200
   29 images loaded in   0.0 seconds
----------------------------------------
----- idSoundSystemLocal::EndLevelLoad -----
    7 sounds loaded in   0.0 seconds
----------------------------------------
------------- Warnings ---------------
during DOOM 3: BFG Edition initialization...
WARNING: Unable to open resource file maps/_startup.resources
WARNING: file def/_tb_models.def, line 5230: entityDef 'genmodel_mapobjects_monitors_hangingmonitor' previously defined at def/_tb_models.def:5216
WARNING: Couldn't load image: } : }#__0200
WARNING: Couldn't load image: _cinematicY : _cinematicY#__0200
WARNING: Couldn't load image: _cinematicCr : _cinematicCr#__0200
WARNING: Couldn't load image: _cinematicCb : _cinematicCb#__0200
WARNING: Couldn't load image: _cinematic : _cinematic#__0200
7 warnings
Preloading images...
00362 images preloaded ( or were already loaded ) in   0.0 seconds
----------------------------------------
00259 sounds preloaded in   0.1 seconds
----------------------------------------
WARNING: Couldn't load image: _doomclassic : _doomclassic#__0200
WARNING: Couldn't load image: _doomclassic : _doomclassic#__0200
--- Common Initialization Complete ---
QA Timing IIS: 003143ms
WARNING: terminal type 'xterm-256color' is unknown. terminal support may not work correctly
terminal support enabled ( use +set in_tty 0 to disabled )
pid: 45931
WARNING: unknown event 2304 = 0x900
WARNING: unknown event 2304 = 0x900
SRSaunders commented 1 week ago

Your startup log looks completely normal. The unknown event is likely SDL_CLIPBOARDUPDATE = 0x900, which is not explicitly handled by the game's eventloop. However, one good thing is that it shows the event loop is running.

As an aside, the only unexpected thing is that your implementation does not seem to support VK_EXT_memory_budget. I don't think this will cause problems since it's only used for the overlay stats display. Once you get things working I would like to know if you can set com_showFPS 2 in the console. I don't want the game to crash if this Vulkan extension is not supported.

Back to the original problem, the only thing I can think of is SDL which provides windowing, events, and keyboard/mouse input handling. How did you install your SDL library and what version is it?

We know the game compiles and runs fine on arm64, but is officially tested on this arch using macOS not linux. It would be cool to get this working if possible.

nickbailuc commented 1 week ago

Your startup log looks completely normal. The unknown event is likely SDL_CLIPBOARDUPDATE = 0x900, which is not explicitly handled by the game's eventloop. However, one good thing is that it shows the event loop is running.

As an aside, the only unexpected thing is that your implementation does not seem to support VK_EXT_memory_budget. I don't think this will cause problems since it's only used for the overlay stats display. Once you get things working I would like to know if you can set com_showFPS 2 in the console. I don't want the game to crash if this Vulkan extension is not supported.

Back to the original problem, the only thing I can think of is SDL which provides windowing, events, and keyboard/mouse input handling. How did you install your SDL library and what version is it?

We know the game compiles and runs fine on arm64, but is officially tested on this arch using macOS not linux. It would be cool to get this working if possible.

Here's the result of dpkg -l | grep sdl

ii  libsdl1.2-dev:arm64                              1.2.68-2+b1                               arm64        SDL 1.2 binary compatibility library - development files
ii  libsdl1.2debian:arm64                            1.2.68-2+b1                               arm64        SDL 1.2 binary compatibility library wrapping SDL 2.0
ii  libsdl2-2.0-0:arm64                              2.30.9+dfsg-1                             arm64        Simple DirectMedia Layer
ii  libsdl2-dev:arm64                                2.30.9+dfsg-1                             arm64        Simple DirectMedia Layer development files
ii  libsdl2-doc                                      2.30.9+dfsg-1                             all          Reference manual for libsdl2
ii  libsdl2-gfx-1.0-0:arm64                          1.0.4+dfsg-5+b2                           arm64        drawing and graphical effects extension for SDL2
ii  libsdl2-gfx-dev:arm64                            1.0.4+dfsg-5+b2                           arm64        development files for SDL2_gfx
ii  libsdl2-gfx-doc                                  1.0.4+dfsg-5                              all          documentation files for SDL2_gfx
ii  libsdl2-image-2.0-0:arm64                        2.8.2+dfsg-1+b2                           arm64        Image loading library for Simple DirectMedia Layer 2, libraries
ii  libsdl2-image-dev:arm64                          2.8.2+dfsg-1+b2                           arm64        Image loading library for Simple DirectMedia Layer 2, development files
ii  libsdl2-image-tests                              2.8.2+dfsg-1+b2                           arm64        Image loading library for Simple DirectMedia Layer 2 - tests
ii  libsdl2-mixer-2.0-0:arm64                        2.8.0+dfsg-1+b3                           arm64        Mixer library for Simple DirectMedia Layer 2, libraries
ii  libsdl2-mixer-dev:arm64                          2.8.0+dfsg-1+b3                           arm64        Mixer library for Simple DirectMedia Layer 2, development files
ii  libsdl2-net-2.0-0:arm64                          2.2.0+dfsg-2+b2                           arm64        Network library for Simple DirectMedia Layer 2, libraries
ii  libsdl2-net-dev:arm64                            2.2.0+dfsg-2+b2                           arm64        Network library for Simple DirectMedia Layer 2, development files
ii  libsdl2-tests                                    2.30.9+dfsg-1                             arm64        Simple DirectMedia Layer automated and manual tests
ii  libsdl2-ttf-2.0-0:arm64                          2.22.0+dfsg-1+b1                          arm64        TrueType Font library for Simple DirectMedia Layer 2, libraries
ii  libsdl2-ttf-dev:arm64                            2.22.0+dfsg-1+b1                          arm64        TrueType Font library for Simple DirectMedia Layer 2, development files

I haven't had any issues with SDL on this system (whether the game is from Debian packages, or compiled). I'm assuming the SDL instance is probably fine, unless Doom 3 requires some bleeding edge version, or some kind of extension not provided in Debian packages.

How can I get SDL to ignore the unknown event SDL_CLIPBOARDUPDATE = 0x900. Is there an environment variable I can try launching the game with? I was also wondering if this is an X.org issue (the game launches in Xwayland and I'm unable to force it to launch in pure Wayland). That often causes/fixes input issues as well.

SRSaunders commented 1 week ago

The SDL version seems fine (needs to be sdl2). Unknown events are ignored by default, so no worry there.

Wayland might be an issue - I have never tried it personally, although others use it successfully. And if I understand it correctly, XWayland is an X compatibility layer on top of Wayland, so that could be something to look into.

Some suggestions for now:

  1. The game does an explicit SDL_Init( SDL_INIT_GAMECONTROLLER ) for game controllers. Do you have a PS4 or other game controller that you could plug in via USB? Might be worth a try.
  2. Can you run try running the game on X11 directly vs. XWayland?
  3. Run natively on Wayland, i.e. SDL_VIDEODRIVER=wayland
nickbailuc commented 1 week ago

The SDL version seems fine (needs to be sdl2). Unknown events are ignored by default, so no worry there.

Wayland might be an issue - I have never tried it personally, although others use it successfully. And if I understand it correctly, XWayland is an X compatibility layer on top of Wayland, so that could be something to look into.

Some suggestions for now:

1. The game does an explicit `SDL_Init( SDL_INIT_GAMECONTROLLER )` for game controllers.  Do you have a PS4 or other game controller that you could plug in via USB?  Might be worth a try.

2. Can you run try running the game on X11 directly vs. XWayland?

3. Run natively on Wayland, i.e. SDL_VIDEODRIVER=wayland

Ran some tests (took a while cuz I messed up or corrupted base/ somehow, had to reinstall from scratch (did the GOG.com verify integrity, and compressed into .tar with a checksum before transferring it from an amd64 to this aarch64 MacBook). Game didn't launch at all, but now with fresh install and fresh compilation of RBDOOM3BFG back at the same stage I was before with the "no input" problem.

Anyways, I don't have any controllers plugged into the laptop (in fact I ran these tests with no USB devices or Bluetooth mice just in case). I'm gonna skip the loading files/Vulkan/OpenAL part straight to the tail of what the terminal reads, but I'll have the full logs available as files:

Normal run

--------------------------------------
------- Initializing renderSystem --------
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
gamedate: Nov 13 2024
WARNING: file def/_tb_models.def, line 5230: entityDef 'genmodel_mapobjects_monitors_hangingmonitor' previously defined at def/_tb_models.def:5216
Initializing event system
...543 eve

SDL_VIDEODRIVER=wayland

------- Initializing renderSystem --------
WARNING: Couldn't set gamma ramp: That operation is not supported
WARNING: Couldn't set gamma ramp: That operation is not supported
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
game

QT_QPA_PLATFORM=wayland GDK_BACKEND=wayland SDL_VIDEODRIVER=wayland

------- Initializing renderSystem --------
WARNING: Couldn't set gamma ramp: That operation is not supported
WARNING: Couldn't set gamma ramp: That operation is not supported
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
game

QT_QPA_PLATFORM=xcb GDK_BACKEND=x11 SDL_VIDEODRIVER=x11

------- Initializing renderSystem --------
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
gamedate: Nov 13 2024
WARNING: file def/_tb_models.def, line 5230: entityDef 'genmodel_mapobjects_monitors_hangingmonitor' previously defined at def/_tb_models.def:5216
Initializing event system
...543 eve

Natively running in X11

------- Initializing renderSystem --------
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
gamedate: Nov 13 2024
WARNING: file def/_tb_models.def, line 5230: entityDef 'genmodel_mapobjects_monitors_hangingmonitor' previously defined at def/_tb_models.def:5216
Initializing event system
...543 eve

Results are essentially the same, except when forcing wayland it doesn't capture the mouse whereas normally it captures the cursor but I cannot see it. Each time the music plays and nothing happens (tried waiting 5 minutes in case it was caching something in Vulkan). In the end I have to force quit the game.

Interestingly, i also get

WARNING: Unable to open resource file maps/_startup.resources
WARNING: Unable to open resource file maps/_startup.resources

Not sure if this is actually file related, all I did was copy base/ into DoomCode but 'skipped' overriding files, so that the base/ files in this git repo trump those that come with the original game. If this might be an actual issue with the files, please let me know. I remain very interested in getting this working!

force-wayland.txt force-Xwayland.txt normal.txt super-force-wayland.txt x11-native.txt

SRSaunders commented 2 days ago

Thanks for testing so extensively. All of these combinations and logs show expected behaviour, but unfortunately don't give much of a clue regarding the underlying problem.

If you are able to use a debugger, I would be interested in starting with basic keyboard input. The file in question is /neo/sys/sdl/sdl_events.cpp. In this file, look for case SDL_KEYUP:, and inside that block the relevant code is:

        res.evType = SE_KEY;
        res.evValue = key;
        res.evValue2 = ev.key.state == SDL_PRESSED ? 1 : 0;

-->     kbd_polls.Append( kbd_poll_t( key, ev.key.state == SDL_PRESSED ) );

        if( key == K_BACKSPACE && ev.key.state == SDL_PRESSED )
        {
            uniChar = key;
        }

        return res;

Place a breakpoint on the indicated line above then start the game. After you see the game selector screen, simply hit "enter" (to select a game) and the breakpoint should be hit. What is the value of key in the above line? As long as the breakpoint is hit, we can make progress inside the game. If the breakpoint is not hit, then the problem is with SDL input in your environment (SDL_PollEvent) and is external to the game.

If you get nothing I guess you could go a level up and check for all SDL events by looking in the same file at:

    // loop until there is an event we care about (will return then) or no more events
    while( SDL_PollEvent( &ev ) )
    {
-->     switch( ev.type )
        {
        ...