Turrican (hurricane clone) black screen
-
Anyone know how to install that one in a way that shows up in the ports list in emulation station?
Just change line # 39 in the file
hurrican.sh
to:make TARGET=linux_GL2
... seems that SDL2 is also supported and it runs on the console with KMS/DRM ...
-
@jengun wow thanks. Where is the hurricane.sh file located in the file system? Sorry for the noob question. Finding will save me a bunch of time.
Dave
-
Man did I stick my foot in it...
Help!
I checked the only place I could think of, (/home/pi/RetroPie-Extra/scriptmodules/ports/) and the script file was there. I edited line 39 as JenGun said and ran the script from RetroPie Setup.
Everything seemed to go great for a few minutes and then I got the following error message:
could not successfully install Hurrican /home/pi/RetroPie-Setup/tmp/build/hurrican/Hurrican/hurrican not found.
I clicked ok and got the next message:
please see /home/pi/RetroPie-Setup/logs/rps_2021_01_01141435.log.gz for more information in depth information regarding errors
I checked the location and downloaded the file; the total text file is 10.2 MB and too big to fit into pastebin, unless you have a pro account and you currently can't get a pro account. I did paste the last section of the log in there and it can be found here: [link](link URL).
I'm running RetroPie 4.7.1 on a Raspberry Pi 4, 4 GB RAM,
(updated from a 4.6 image downloaded in July of 2020 from this website)
Vilros power cord
128 GB flash memory cardThanks for any advice in advance.
David
-
@daviddraper My bad: the binary is called
hurricanlinux
, so you have also to edit line # 70 inhurrican.sh
:addPort "$md_id" "hurrican" "Hurrican" "pushd $md_inst; $md_inst/hurricanlinux; popd"
like line # 72 ...
Maybe line 16 needs to be changed too:
rp_module_flags="dispmanx !mali"
I'm fiddling with the SDL2 version ... should be better suited for the Raspberry Pi 4 ...
-
-
@jengun Made the changes, but I got the same set of error messages after running the install. I went to the end of the 10.2 MB log file and had an identical end to that log:
= = = = = = = = = = = = = = = = = = = = = Installing 'hurrican' : Hurrican - Turrican Clone = = = = = = = = = = = = = = = = = = = = = /home/pi Could not successfully install Hurrican - Turrican Clone (/home/pi/RetroPie-Setup/tmp/build/hurrican/Hurrican/hurrican not found). Log ended at: Fri 1 Jan 15:26:30 CST 2021 Total running time: 0 hours, 6 mins, 16 secs
Any ideas?
-
@DavidDraper One more change in line # 49 to:
'Hurrican/hurricanlinux'
like line # 58 ... should work now ...
-
@jengun I'll try it. Fingers crossed.
Dave
-
@daviddraper Please use this
hurrican.sh
: it uses SDL2 with KMS/DRM, so you don't need to boot into the LXDE desktop. The resolution is still 640x480 ...#!/usr/bin/env bash # This file is part of The RetroPie Project # # The RetroPie Project is the legal property of its developers, whose names are # too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source. # # See the LICENSE.md file at the top-level directory of this distribution and # at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md # rp_module_id="hurrican" rp_module_desc="Hurrican - Turrican Clone" rp_module_help="Hurrican can only be played in 640x480 so to avoid huge black borders everywhere, use runcommand to set Hurrican to run at 640x480 or 720x480 if aspect ratio matters to you. There are minor off-by-one errors in the graphics everywhere. Nothing I can do about that at the moment so please do not report it as a bug to me, but upstream instead." rp_module_section="exp" rp_module_flags="!mali" function depends_hurrican() { local depends=(subversion libsdl2-dev libsdl2-mixer-dev libsdl2-image-dev libmodplug-dev libgl-dev) getDepends "${depends[@]}" } function sources_hurrican() { svn checkout svn://svn.code.sf.net/p/hurrican/code/trunk "$md_build" if isPlatform "rpi"; then sed -i 's/USE_EGL := yes/USE_EGL := no/' "$md_build/Hurrican/src/Makefile" sed -i 's/-DRPI -DUSE_GLES2 -DUSE_EGL_RPI/-DLINUX -DUSE_HOME_DIR -DUSE_GLFULL/' "$md_build/Hurrican/src/Makefile" sed -i 's/-I\/usr\/include\/SDL/-I\/usr\/include\/SDL2/' "$md_build/Hurrican/src/Makefile" sed -i 's/-I\/opt\/vc\/include -I\/opt\/vc\/include\/interface\/vcos\/pthreads -I\/opt\/vc\/include\/GLES2 -I\/opt\/vc\/include\/EGL/-I\/usr\/include\/GL/' "$md_build/Hurrican/src/Makefile" sed -i 's/-L\/opt\/vc\/lib -g -lmodplug -lSDL_mixer -lSDL_image -lSDL -lGLESv2/-lSDL2 -lSDL2_mixer -lSDL2_image -lmodplug -lGL -lpthread/' "$md_build/Hurrican/src/Makefile" fi } function build_hurrican() { cd $md_build/Hurrican/src/ if isPlatform "rpi"; then make TARGET=rpi else make fi md_ret_require="$md_build" } function install_hurrican() { if isPlatform "rpi"; then md_ret_files=( 'Hurrican/hurrican' 'Hurrican/data' 'Hurrican/lang' 'Hurrican/splashscreen.bmp' 'Editor/maps' 'Editor/Gfx' ) else md_ret_files=( 'Hurrican/hurricanlinux' 'Hurrican/data' 'Hurrican/lang' 'Hurrican/splashscreen.bmp' 'Editor/maps' 'Editor/Gfx' ) fi } function configure_hurrican() { if isPlatform "rpi"; then addPort "$md_id" "hurrican" "Hurrican" "pushd $md_inst; $md_inst/hurrican; popd" else addPort "$md_id" "hurrican" "Hurrican" "pushd $md_inst; $md_inst/hurricanlinux; popd" fi mkRomDir "ports" moveConfigDir "$home/.hurrican" "$md_conf_root/hurrican" touch "$md_inst/Hurrican.cfg" touch "$md_inst/Hurrican.hsl" touch "$md_inst/Game_Log.txt" touch "$md_inst/Savegame0.sav" chown pi:pi "$md_inst/Hurrican.cfg" chown pi:pi "$md_inst/Hurrican.hsl" chown pi:pi "$md_inst/Game_Log.txt" chown pi:pi "$md_inst/Savegame0.sav" }
-
@jengun Ugg. Thanks for taking the time to get that written up. I have the same error message.
I used Atom to open up the error logs and I found the following message 184 times in the each log:
./cml/cml/mathlib/checking.h: In function ‘void cml::detail::CheckVecN(const VecT&, cml::fixed_size_tag)’: ./cml/cml/core/cml_assert.h:94:27: warning: typedef ‘__bogus_assert_type_64’ locally defined but not used [-Wunused-local-typedefs] ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~~~~~~~~~~~~~ ./cml/cml/core/cml_assert.h:27:27: note: in definition of macro ‘CML_DO_JOIN2’ #define CML_DO_JOIN2(X,Y) X##Y ^ ./cml/cml/core/cml_assert.h:25:23: note: in expansion of macro ‘CML_DO_JOIN’ #define CML_JOIN(X,Y) CML_DO_JOIN(X,Y) ^~~~~~~~~~~ ./cml/cml/core/cml_assert.h:94:18: note: in expansion of macro ‘CML_JOIN’ ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~ ./cml/cml/mathlib/checking.h:64:5: note: in expansion of macro ‘CML_STATIC_REQUIRE_M’ CML_STATIC_REQUIRE_M(((size_t)VecT::array_size == N), ErrorT);
This is the only time the string "error" shows up in the log.
Here is an example of the log that contains that passage:
g++ -c -O2 -Wall -fsingle-precision-constant -fno-rtti -I. -I./SDLPort -I./cml -I/usr/include -I/usr/include/SDL -I/usr/include/GLES2 -I/usr/include/libmodplug -DPLATFORM_SDL -DENABLE_CONSOLE_COMMANDS -DUSE_MODPLUG -DUSE_INDEXED_BATCH -DLINUX -DUSE_HOME_DIR -DUSE_GLES2 -DUSE_EGL_SDL -DUSE_GL2 -DUSE_FBO Boss_RiesenSpinne.cpp -o Boss_RiesenSpinne.o In file included from ./cml/cml/et/size_checking.h:20, from ./cml/cml/vector/vector_expr.h:17, from ./cml/cml/vector/vector_ops.h:17, from ./cml/cml/vector.h:50, from ./cml/cml/cml.h:66, from ./SDLPort/SDL_port.h:36, from DX8Joystick.h:28, from DX8Input.h:25, from Console.h:18, from stdafx.h:6, from Boss_RiesenQualle.cpp:7: ./cml/cml/mathlib/checking.h: In function ‘void cml::detail::CheckVec(const VecT&)’: ./cml/cml/core/cml_assert.h:94:27: warning: typedef ‘__bogus_assert_type_55’ locally defined but not used [-Wunused-local-typedefs] ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~~~~~~~~~~~~~ ./cml/cml/core/cml_assert.h:27:27: note: in definition of macro ‘CML_DO_JOIN2’ #define CML_DO_JOIN2(X,Y) X##Y ^ ./cml/cml/core/cml_assert.h:25:23: note: in expansion of macro ‘CML_DO_JOIN’ #define CML_JOIN(X,Y) CML_DO_JOIN(X,Y) ^~~~~~~~~~~ ./cml/cml/core/cml_assert.h:94:18: note: in expansion of macro ‘CML_JOIN’ ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~ ./cml/cml/mathlib/checking.h:53:5: note: in expansion of macro ‘CML_STATIC_REQUIRE_M’ CML_STATIC_REQUIRE_M( ^~~~~~~~~~~~~~~~~~~~ ./cml/cml/mathlib/checking.h: In function ‘void cml::detail::CheckVecN(const VecT&, cml::fixed_size_tag)’: ./cml/cml/core/cml_assert.h:94:27: warning: typedef ‘__bogus_assert_type_64’ locally defined but not used [-Wunused-local-typedefs] ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~~~~~~~~~~~~~ ./cml/cml/core/cml_assert.h:27:27: note: in definition of macro ‘CML_DO_JOIN2’ #define CML_DO_JOIN2(X,Y) X##Y ^ ./cml/cml/core/cml_assert.h:25:23: note: in expansion of macro ‘CML_DO_JOIN’ #define CML_JOIN(X,Y) CML_DO_JOIN(X,Y) ^~~~~~~~~~~ ./cml/cml/core/cml_assert.h:94:18: note: in expansion of macro ‘CML_JOIN’ ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~ ./cml/cml/mathlib/checking.h:64:5: note: in expansion of macro ‘CML_STATIC_REQUIRE_M’ CML_STATIC_REQUIRE_M(((size_t)VecT::array_size == N), ErrorT); ^~~~~~~~~~~~~~~~~~~~ ./cml/cml/mathlib/checking.h: In function ‘void cml::detail::CheckVec2Or3(const VecT&, cml::fixed_size_tag)’: ./cml/cml/core/cml_assert.h:94:27: warning: typedef ‘__bogus_assert_type_116’ locally defined but not used [-Wunused-local-typedefs] ::result CML_JOIN(__bogus_assert_type_, __LINE__) ^~~~~~~~~~~~~~~~~~~~
:-/
David
-
@daviddraper Yes, patching
Makefiles
is ugly and error prone ... of course it works here ... ;-) To rule out the usual copy and paste problems:$ sha1sum hurrican.sh
should show
2a27b0383b1b9be7251a6d189309d5036c14521b hurrican.sh
Some compiler macros like
-DUSE_GLES2 -DUSE_EGL_SDL -DUSE_GL2 -DUSE_FBO
(which causes to error above) should not be there, but-DUSE_GLFULL
is missing ... seems that the target is stilllinux_GL2
and notrpi
in theMakefile
... did you "Update (from source)" in RetroPie setup? -
@jengun ok- wierd. I ran
sha1sum hurrican.sh
and got
97fd14f14448a1035db77d3ee5e1d4701726dd63 hurrican.sh
So! Not the same file. I tried renaming the current file to hurricanold.sh and creating a new file, named it hurrican.sh, and copied and pasted the contents from your post (which I thought I had done yesterday) and when I ran the same command on the new file, I got:
7b7c52eadc1f1dbd54af707328d3f68402be3145 hurrican.sh
still not the same as your file. I am using WinSCP to SSH into the raspberry pi; yesterday I used Atom to edit the file and today I used SSH's built-in text editor. Does the editor make a difference? I could try nano if it does.
Thanks.
David
-
Next try: the new
TARGET sdl2
makes it possible to run Hurrican in full resolution on the Raspberry Pi 4 with "Buster" (KMS/DRM on console and LXDE desktop)Index: src/Makefile =================================================================== --- src/Makefile (revision 286) +++ src/Makefile (working copy) @@ -264,6 +264,25 @@ endif +ifeq ($(TARGET),sdl2) + +EXE := ../hurrican +CXX := g++ +CC := gcc +LD := g++ +RM := rm -f + +USE_EGL := no +USE_GL2 := yes +USE_FBO := yes + +DEFINES += -DLINUX -DUSE_HOME_DIR -DUSE_GLFULL + +INCLUDES_OS := -I/usr/include -I/usr/include/SDL2 -I/usr/include/GL -I/usr/include/libmodplug +LDFLAGS := -g -lSDL2 -lSDL2_mixer -lSDL2_image -lmodplug -lGL + +endif + INCLUDES := -I. -I./SDLPort -I./cml $(INCLUDES_OS) COMMON_CXXFLAGS := -Wall -fsingle-precision-constant -fno-rtti @@ -316,7 +335,7 @@ ## to avoid numerous spurious warnings compiling against CML libary: ## This will convert a version number like 4.8.1 to 4*100+8 and a version ## number like 4.10.2 to 4*100+10, allowing direct comparison through bc. -GCC_VER_GTE48 := $(shell echo `$(CXX) -dumpversion | cut -f1-2 -d.` \>= 4.8 | sed -e 's/\./*100+/g' | bc ) +GCC_VER_GTE48 := $(shell echo `${CXX} -dumpversion | cut -f1-2 -d.` \>= 4.8 | sed -e 's/\./*100+/g' | bc ) ifeq ($(GCC_VER_GTE48),1) COMMON_CXXFLAGS += -Wno-unused-local-typedefs endif Index: src/SDLPort/cfbo.cpp =================================================================== --- src/SDLPort/cfbo.cpp (revision 286) +++ src/SDLPort/cfbo.cpp (working copy) @@ -77,7 +77,11 @@ case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Protokoll.WriteText( false, "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Not all framebuffer attachment points are framebuffer attachment complete.\n" ); break; +#ifdef PLATFORM_SDL + case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: +#else case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: +#endif Protokoll.WriteText( false, "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Not all attached images have the same width and height.\n" ); break; case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
$ svn checkout svn://svn.code.sf.net/p/hurrican/code/trunk $ cd trunk/Hurrican/src $ svn patch /path/to/the/above/patch $ make TARGET=sdl2
should create a working binary ...
-
@jengun thanks for your patience and help. I need a little more expanation right now though. Is this is a little beyond me. Is the new file something be added to hurrican.sh? A new file? What should it be called and where should it be saved?
Also, if i don't have the same hash for the hurrican.sh doesnt that mean something in the hurrican.sh file is off?
Gratz in advance.
Dave
-
@jengun to answer your question about updating from source, the only option for hurrican when installing from reptropie setup is to install from source; I added retropie-extra to my install pie and it the way it is written there is no option to install from a pre-compiled binary, at least on my system. I think I did run an update script for RetroPie-Extra recently (two or three weeks ago?) As part of some generally updating i did on the RetroPie jnstall, b.ut I'm not sure it made a difference. I don't think RetroPie-Extra been updated at github in a while. I don't recall if I updated RetroPie-Extra from source or a pre-compiled binary.
D
-
Is the new file something be added to hurrican.sh? A new file?
Yes, the first part is a
subversion
patch file, there is no connection tohurrican.sh
at this moment: this is just a test of whether the binary works at all ...What should it be called and where should it be saved?
Save it in the home directory (
/home/pi
) on the Raspberry Pi under a name of your choice, e.g.hurrican-sdl2.patch
, so the above commands to execute should like this:$ svn checkout svn://svn.code.sf.net/p/hurrican/code/trunk $ cd trunk/Hurrican/src $ svn patch /home/pi/hurrican-sdl2.patch $ make TARGET=sdl2 $ cd .. $ ./hurrican
The binary should start in fullscreen mode, integration with
hurrican.sh
will follow, but needs some time ... -
Hey @jengun
For this newb, this is pretty cool stiff!
I created the file in Atom, named it
hurrican.sh
and put it in/home/pi
via SSH.I entered
svn checkout svn://svn.code.sf.net/p/hurrican/code/trunk
and a series of output lines, ending with:
.... (lots of lines like the ones below) A trunk/Editor/src/DX8Font.cpp A trunk/Editor/src/resource.h A trunk/Editor/src/Logdatei.h A trunk/Editor/Editor.dsp A trunk/Editor/Editor.suo A trunk/Editor/MainMenu.aps A trunk/Editor/MainMenu.rc A trunk/Editor/Editor v1.plg Checked out revision 286.
I entered the rest and here is what I got:
pi@RetroPi:~ $ cd trunk/Hurrican/src pi@RetroPi:~/trunk/Hurrican/src $ svn patch /home/pi/hurrican-sdl2.patch C src/Makefile > rejected hunk @@ -264,6 +264,25 @@ > rejected hunk @@ -316,7 +335,7 @@ C src/SDLPort/cfbo.cpp > rejected hunk @@ -77,7 +77,11 @@ Summary of conflicts: Text conflicts: 2 pi@RetroPi:~/trunk/Hurrican/src $ make TARGET=sdl2 rm -f *.o SDLPort/*.o unrarlib040/unrarlib/*.o pi@RetroPi:~/trunk/Hurrican/src $ cd .. pi@RetroPi:~/trunk/Hurrican $ ./hurrican -bash: ./hurrican: No such file or directory pi@RetroPi:~/trunk/Hurrican $ ./Hurrican -bash: ./Hurrican: No such file or directory
Dave
-
I created the file in Atom, named it
hurrican.sh
and put it in/home/pi
via SSH.OK, enough with Atom's copy and paste weirdness: please SSH to your Raspberry and execute this command to get the file:
curl -LJO "https://gitlab.com/jengun/Hurrican/-/raw/master/hurrican-sdl2.patch"
-
@jengun ok...
pi@RetroPi:~ $ curl -LJO "https://gitlab.com/jengun/Hurrican/-/raw/master/hurrican-sdl2.patch" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Warning: Failed to create the file hurrican-sdl2.patch: Permission denied 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (23) Failed writing header pi@RetroPi:~ $ sudo curl -LJO "https://gitlab.com/jengun/Hurrican/-/raw/master/hurrican-sdl2.patch" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1445 0 1445 0 0 13256 0 --:--:-- --:--:-- --:--:-- 13256 pi@RetroPi:~ $
Dave
-
@jengun FWIW,
I deleted the /home/pi/trunk directory, recreated the hurrican-sdl2.patch file in notepad and ran the commands again and got the following results:
pi@RetroPi:~ $ svn checkout svn://svn.code.sf.net/p/hurrican/code/trunk A trunk/Hurrican A trunk/Hurrican/data A trunk/Hurrican/data/shaders
...
(lots of files)
...A trunk/Editor/MainMenu.rc A trunk/Editor/Editor v1.plg Checked out revision 286. pi@RetroPi:~ $ cd trunk/Hurrican/src pi@RetroPi:~/trunk/Hurrican/src $ svn patch /home/pi/hurrican-sdl2.patch C src/Makefile > rejected hunk @@ -264,6 +264,25 @@ > rejected hunk @@ -316,7 +335,7 @@ C src/SDLPort/cfbo.cpp > rejected hunk @@ -77,7 +77,11 @@ Summary of conflicts: Text conflicts: 2 pi@RetroPi:~/trunk/Hurrican/src $ make TARGET=sdl2 rm -f *.o SDLPort/*.o unrarlib040/unrarlib/*.o pi@RetroPi:~/trunk/Hurrican/src $ cd .. pi@RetroPi:~/trunk/Hurrican $ ./hurrican -bash: ./hurrican: No such file or directory pi@RetroPi:~/trunk/Hurrican $
Do you think its something related to my system? I'm running RetroPie commit number ac8d87759f4cad763affbba624be4fb206790ceb, "bump to version 4.7.2.," Running on Raspbian GNU/Linux 10 (buster).
Dave
David
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.