deathkiller / jazz2-native

🎮 · Jazz² Resurrection: Native C++ reimplementation of Jazz Jackrabbit 2
https://deat.tk/jazz2/
GNU General Public License v3.0
535 stars 35 forks source link

ARMHF build - controls problem #16

Closed dragon99919 closed 1 year ago

dragon99919 commented 1 year ago

Hey! I decided to give this repo a try to compile on my RPi4 (using official stock Raspberry Pi OS 32bit version). Everything went perfect with compilation (I used clang gcc script, no SDL, just changed the -j8 to -j4 for make). However when I start playing, the playable character always goes left if no buttons are touched. Does this somehow happen since last commits, or can this be armhf specific problem?

deathkiller commented 1 year ago

Hi, do you have some gamepads connected? It's probably only some incompatibility with your hardware/software. Also send me log from Terminal.

dragon99919 commented 1 year ago

Nothing, only standard keyboard and mouse. That's the log after launching game from terminal:

dragon99919@marcinek-rpi4-vanilla-sandbox:~/ExtApps/jazz2r $ ./jazz2-git nCine::JoyMapping::JoyMapping() -> Parsed 349 strings for 349 mappings void nCine::StandardFile::OpenStream(nCine::FileAccessMode) -> Cannot open the file "/home/dragon99919/.config/Jazz² Resurrection/Jazz2.config" void nCine::PCApplication::init(std::unique_ptr (*)(), int, char**) -> IAppEventHandler::onPreInit() invoked bool nCine::JoyMapping::onJoyConnected(const nCine::JoyConnectionEvent&) -> Joystick mapping not found for "Razer Razer Cynosa Chroma Keyboard" (0), using XInput void nCine::Application::initCommon() -> Jazz² Resurrection v1.2.r208-f8317cd initializing... void nCine::GfxCapabilities::logGLInfo() -> --- OpenGL device info --- void nCine::GfxCapabilities::logGLInfo() -> Vendor: Broadcom void nCine::GfxCapabilities::logGLInfo() -> Renderer: V3D 4.2 void nCine::GfxCapabilities::logGLInfo() -> OpenGL Version: OpenGL ES 3.1 Mesa 20.3.5 void nCine::GfxCapabilities::logGLInfo() -> GLSL Version: OpenGL ES GLSL ES 3.10 void nCine::GfxCapabilities::logGLCaps() const -> --- OpenGL device capabilities --- void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_TEXTURE_SIZE: 4096 void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_TEXTURE_IMAGE_UNITS: 16 void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_UNIFORM_BLOCK_SIZE: 65536 void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_UNIFORM_BUFFER_BINDINGS: 60 void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_VERTEX_UNIFORM_BLOCKS: 15 void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_FRAGMENT_UNIFORM_BLOCKS: 15 void nCine::GfxCapabilities::logGLCaps() const -> GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: 256 void nCine::GfxCapabilities::logGLCaps() const -> GL_MAX_COLOR_ATTACHMENTS: 4 void nCine::GfxCapabilities::logGLCaps() const -> --- void nCine::GfxCapabilities::logGLCaps() const -> GL_KHR_debug: 1 void nCine::GfxCapabilities::logGLCaps() const -> GL_ARB_texture_storage: 0 void nCine::GfxCapabilities::logGLCaps() const -> GL_EXT_texture_compression_s3tc: 1 void nCine::GfxCapabilities::logGLCaps() const -> GL_OES_compressed_ETC1_RGB8_texture: 1 void nCine::GfxCapabilities::logGLCaps() const -> GL_AMD_compressed_ATC_texture: 0 void nCine::GfxCapabilities::logGLCaps() const -> GL_IMG_texture_compression_pvrtc: 0 void nCine::GfxCapabilities::logGLCaps() const -> GL_KHR_texture_compression_astc_ldr: 1 void nCine::GfxCapabilities::logGLCaps() const -> --- static void nCine::RenderResources::create() -> Creating rendering resources... static void nCine::RenderResources::create() -> Rendering resources created void nCine::Application::initCommon() -> Application initialized void nCine::StandardFile::OpenStream(nCine::FileAccessMode) -> File "Cache/Animations/cache.index" opened void GameEventHandler::RefreshCache() -> Cache is already up-to-date virtual void nCine::StandardFile::Close() -> File "Cache/Animations/cache.index" closed void nCine::StandardFile::OpenStream(nCine::FileAccessMode) -> File "./Source/Intro.j2v" opened virtual void nCine::StandardFile::Close() -> File "./Source/Intro.j2v" closed static std::unique_ptr nCine::IAudioLoader::createFromFile(const StringView&) -> Loading from file "./Source/Intro.j2b" void nCine::StandardFile::OpenStream(nCine::FileAccessMode) -> File "./Source/Intro.j2b" opened virtual void GameEventHandler::onInit() -> Rendering resolution: 720x405 void nCine::Application::initCommon() -> IAppEventHandler::onInit() invoked

What gets me here is that Razer Chroma (the keyboard) is seen as gamepad, and that seems to be the issue. If I disconnect the keyboard and plug in my Retroflag Xbox-like controller instead, it all works fine.

deathkiller commented 1 year ago

I just blacklisted all gamepads that have "Razer" and "Keyboard" in their name. You can get the latest commit and it should work correctly now.

dragon99919 commented 1 year ago

Works like a charm now, thanks a lot! : )