Javanaise / mrboom-libretro

Mr.Boom is an 8 player Bomberman clone for RetroArch/Libretro
http://mrboom.mumblecore.org
MIT License
206 stars 61 forks source link

Libretro: support 16-bit render depth #108

Closed SimpleTease closed 3 years ago

SimpleTease commented 3 years ago

Some platforms require 16-bit depth to avoid massive speed penalties.

SimpleTease commented 3 years ago

@jdgleaver Could try Mr. Boom on OpenDingux? Core is set to use 16-bpp.

Core has no assets and is standalone. Load core, Start core, Play freeware Bomberman clone.

jdgleaver commented 3 years ago

@SimpleTease 16bpp - very nice!

I can confirm that the core runs flawlessly on an RG350M running OpenDingux. It requires the following trivial makefile fix, however:

diff --git a/Makefile b/Makefile
index 56abbe9..531a8b0 100644
--- a/Makefile
+++ b/Makefile
@@ -225,7 +225,7 @@ else ifeq ($(platform), gcw0)
    CXX = /opt/gcw0-toolchain/usr/bin/mipsel-linux-g++
    AR = /opt/gcw0-toolchain/usr/bin/mipsel-linux-ar
    fpic := -fPIC
-   SHARED := -shared -Wl,--no-undefined -Wl,-version-script=$(LIBRETRO_DIR)/link.T
+   SHARED := -shared -Wl,--no-undefined -Wl,--version-script=$(CORE_DIR)/link.T
    FLAGS += -DDINGUX -fomit-frame-pointer -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float
    WANT_BPP := 16
SimpleTease commented 3 years ago

Thank you! Safe to add Dingux to gitlab-ci.yml recipe also? Thinking of combining both in next PR. Or you can too. ;)

SimpleTease commented 3 years ago

@jdgleaver Performance question. https://github.com/Javanaise/mrboom-libretro/blob/3955b348e496669f4074743312f341854bf07613/libretro/retro.cpp#L413-L422

Could that help Dingux with other cores? SDL_CreateTexture + SDL_TEXTUREACCESS_STREAMING + SDL_UpdateTexture

jdgleaver commented 3 years ago

Thank you! Safe to add Dingux to gitlab-ci.yml recipe also? Thinking of combining both in next PR. Or you can too. ;)

Ah, I see you already added it - yes, this is fine :)

Could that help Dingux with other cores? SDL_CreateTexture + SDL_TEXTUREACCESS_STREAMING + SDL_UpdateTexture

Hmm... Not sure... I will try to investigate after the holidays

frranck commented 3 years ago

@SimpleTease how about using the rumble functionality when we ignite bombs with the remote control?

SimpleTease commented 3 years ago

Based on SameBoy, it should be semi-minor. https://github.com/LIJI32/SameBoy/blob/6b30de5fb1c9c7c177ea544db9fe82e7d40a2171/Core/rumble.c https://github.com/LIJI32/SameBoy/blob/195329463b0927c6e9bf13ea2aceb849b5301bb1/Core/rumble.h https://github.com/LIJI32/SameBoy/blob/bdd27ce50d4b27898e11e8a34c9371e210f10846/libretro/libretro.c

The trick is how to modulate the rumble amplitude. rumble.set_rumble_state(0, RETRO_RUMBLE_STRONG, 65535 * amplitude);

If you do that, you mightest as well add achivements also. Come up with simple and hard badges to get people to player longer.