Tuesday, January 26, 2016

Hurrican 2D Platformer on i.MX6 Sabrelite

Hurrican is a retro/16-bit styled 2D platformer that I was able to build from source on an i.MX6 Sabrelite board with essentially zero effort, as it has already been ported to SDL 1.2 and GLES2.

Some background info may be of interest on the forum posting at Phoronix. Apparently Hurrican was entirely a Windoze game ported to Linux-SDL-GL by pickle who is pretty active on the Open Pandora Pyra community, which I have been looking at quite a bit lately to research games and GL stuff to try out on the i.MX6 board.

This one builds and runs "out of the box" as they say on my system, with great sound music, keyboard control and no obvious glitches.

Repository Root: svn://svn.code.sf.net/p/hurrican/code

sdl1.2 is installed from the distribution and apparently with GLES2 target enabled ...

apt-get install libsdl-mixer1.2-dev libsdl-image1.2-dev libsdl1.2-dev libmodplug-dev
cd hurrican-code/Hurrican/src/
make TARGET=linux_GL2  # this will link with -lGLESv2

I should get a screenshot of the thing running but even better is gratuitous nerdy console output showing all the startup logging gotta love it ...

debian@arm:~/src/games/hurrican-code/Hurrican$ LIBGL_DEBUG=verbose ./hurricanlinux
--> Using external storage path '.' <--
--> Using save path '/home/debian/.hurrican' <--
Searching for language files in ./lang
File . is directory, skipping
.
Found language file english.lng in path ./lang/english.lng
File .. is directory, skipping
>--------------------<
| GameInit started |
>--------------------<
--> SDL/OpenGL init <--
---------------------
Initializing SDL.
SDL initialized.
EGL ERROR: Unable to read ini settings from file 'eglport.cfg'. Using defaults
EGLport: Opening EGL display
EGLport: Opening SDL/X11 display
EGLport: Initializing
drmOpenByBusid: Searching for BusID platform:Vivante GCCore:00
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 6, (OK)
drmOpenByBusid: drmOpenMinor returns 6
drmOpenByBusid: drmGetBusid reports platform:Vivante GCCore:00
EGL Implementation Version: Major 1 Minor 4
EGL_VENDOR: Vivante Corporation
EGL_VERSION: 1.4
EGL_EXTENSIONS: EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_lock_surface EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_EXT_create_context_robustness EGL_EXT_buffer_age EGL_EXT_protected_surface EXT_image_dma_buf_import
EGLport: Found 5 available configs
EGLport: Using Config 0
EGLport: Binding API
EGLport: Creating Context
EGLport: Creating window surface
EGLport Resolution: 1280 x 1024
EGLport: Making Current
EGLport: Setting swap interval
EGLport: Complete
Window resolution: 1280x1024
GL_FRAMEBUFFER_COMPLETE: created successfully resolution: 640x480
Render viewport resolution: 640x480 at 0x0
Render area: 1364x1024 at 0x0
Window viewport: 1280x1024 at 0x0
GL_VENDOR: Vivante Corporation
GL_RENDERER: Vivante GC2000
GL_VERSION: OpenGL ES 3.0 V5.0.11.p7.33433
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00
GL_EXTENSIONS: GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_vertex_array_object GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_texture_npot GL_OES_rgb8_rgba8 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32 GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_fragment_precision_high GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_sync GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_read_format_bgra GL_EXT_multi_draw_arrays GL_EXT_frag_depth GL_EXT_discard_framebuffer GL_EXT_blend_minmax GL_EXT_multisampled_render_to_texture GL_EXT_robustness GL_VIV_direct_texture
Shader: Compiling ./data/shaders/shader_color.vert
Shader: Compiled ./data/shaders/shader_color.vert
Shader: Compiling ./data/shaders/shader_color.frag
Shader: Compiled ./data/shaders/shader_color.frag
Shader: Compiling ./data/shaders/shader_texture.vert
Shader: Compiled ./data/shaders/shader_texture.vert
Shader: Compiling ./data/shaders/shader_texture.frag
Shader: Compiled ./data/shaders/shader_texture.frag
-> OpenGL init successful!
DirectInput8 polling for 323 keys!
Initializing SDL_mixer
SDL_mixer initialized. Buffer size:2048, Freq:44100, Channels:2
Signed 16-bit samples (little-endian)
Using libModPlug directly for ImpulseTracker music file decoding.
Requested 24 sound channels and got 24
Loaded texture demofont
Loading font: demofont.png
Loaded texture copper1
Loaded texture copper2
Loaded texture copper3
Loaded texture demozahlen
Loaded texture demologo
Loaded texture star
Loaded song file ./data/music/Cracktro.it
-> GameInit successful!
Using language-file './lang/english.lng'
Config file loading successful !
Loaded song file ./data/music/menu.it
Loaded texture menufont
Loading font: menufont.png
Loaded texture hurrican_rund
.
Loaded song file ./data/music/highscore.it
Loaded texture console
>--------------------<
| GameExit started |
>--------------------<
-> Fonts released
-> Head menu released
-> Shutting down Sound Manager
-> Sound system released
-> Texture system released
-> SDL/OpenGL input shutdown successfully completed !
EGLport: Closed
-> SDL/OpenGL shutdown successfully completed !
-> Hurrican closed !
http://www.poke53280.de
Bugreports, questions etc : information@poke53280.de
-> logfile end
debian@arm:~/src/games/hurrican-code/Hurrican$
view raw gistfile1.txt hosted with ❤ by GitHub


More info on Hurrican over at Odroid forum.









No comments:

Post a Comment