FNA Games on ARM board (i.e. play FEZ, Stardew Valley, Bastion... on Odroid/OrangePI/RPi)


I have Bastion installed on Windows.

Content is like:
folder1.pngfolder_content.png

There is nothing to extract, Shoud i copy all to dev board?

Thomas
 
The Window version will probably not work, but you can try (and yeah, just copy everything in that case).
It more likely you'll need the Linux version: the runtime is not the same between Linux and Windows version, it's FNA on Linux and XNA on Windows, and only FNA runs fine, not XNA (that's why FNA exist).

It's the same for all FNA games, you'll need linux version, not the windows one (only a few C# games use an in-house engine and not XNA, like Hammerwatch).
 
Thanks, downloading linux version.

I add a 4GB swap file and start game, and got an error that libfmod.so is not found, forget this step.
After downloading fmod and installing, i got, after start, a blank black screen and after a while back to desktop with this output:
LIBGL: Initialising gl4es
LIBGL: v1.0.9 built on Aug 31 2018 14:28:25
LIBGL: framebuffer output enabled
LIBGL: Using GLES 2.0 backend
LIBGL:loaded: libGLESv2.so
LIBGL:loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
LIBGL: Hardware Limited NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax detected and used
LIBGL: FBO are in core, and so used
LIBGL: PointSprite are in core, and so used
LIBGL: CubeMap are in core, and so used
LIBGL: BlendColor is in core, and so used
LIBGL: Blend Substract is in core, and so used
LIBGL: Blend Function and Equation Separation is in core, and so used
LIBGL: Texture Mirrored Repeat is in core, and so used
LIBGL: Extension GL_OES_mapbuffer detected
LIBGL: Extension GL_OES_element_index_uint detected and used
LIBGL: Extension GL_OES_packed_depth_stencil detected and used
LIBGL: Extension GL_OES_depth24 detected and used
LIBGL: Extension GL_OES_rgb8_rgba8 detected and used
LIBGL: Extension GL_EXT_multi_draw_arrays detected
LIBGL: Extension GL_EXT_texture_format_BGRA8888 detected and used
LIBGL: Extension GL_OES_depth_texture detected and used
LIBGL: Extension GL_EXT_texture_rg detected and used
LIBGL: Extension GL_OES_texture_float detected and used
LIBGL: Extension GL_OES_fragment_precision_high detected and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 4096
LIBGL: Max Varying Vector: 8
LIBGL: Texture Units: 8(8), Max lights: 8, Max planes: 6
LIBGL: Hardware vendor is Imagination Technologies
LIBGL: Targeting OpenGL 2.1
LIBGL: Forcing NPOT support by disabling MIPMAP support for NPOT textures
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: Current folder is:/home/thomas/Projects/FNA/bastion
IGLDevice: OpenGLDevice
OpenGL Device: GL4ES wrapper
OpenGL Driver: 2.1 gl4es wrapper 1.0.9
OpenGL Vendor: ptitSeb
MojoShader Profile: glsl120
EXT_swap_control_tear unsupported. Fall back to standard VSync.
EXT_swap_control_tear unsupported. Fall back to standard VSync.
LIBGL: going back to npot size pot'ed texture for FBO
FakeMODex : loading FMOD
initializing c# fmod
FakeMODex: Warning, calling faked System_SetReverbProperties function
Killed

In /var/log/messages is shown following lines:
[ 1527.581309] pulseaudio invoked oom-killer: gfp_mask=0x14000c0(GFP_KERNEL), nodemask=(null), order=0, oom_score_adj=0
[ 1527.632691] CPU: 0 PID: 2275 Comm: pulseaudio Tainted: G O 4.15.17-letux-lpae-pyra-l #5
[ 1527.642357] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 1527.648666] [<c020ef6c>] (unwind_backtrace) from [<c020b2ec>] (show_stack+0x10/0x14)
[ 1527.656796] [<c020b2ec>] (show_stack) from [<c07e3d48>] (dump_stack+0x7c/0x98)
[ 1527.664378] [<c07e3d48>] (dump_stack) from [<c02f1dd0>] (dump_header.constprop.6+0x60/0x208)
[ 1527.673232] [<c02f1dd0>] (dump_header.constprop.6) from [<c02f1448>] (oom_kill_process+0xb0/0x410)
[ 1527.682637] [<c02f1448>] (oom_kill_process) from [<c02f1c84>] (out_of_memory+0x340/0x3e8)
[ 1527.691240] [<c02f1c84>] (out_of_memory) from [<c02f6510>] (__alloc_pages_nodemask+0x9d0/0xd20)
[ 1527.700368] [<c02f6510>] (__alloc_pages_nodemask) from [<c02f6870>] (__get_free_pages+0x10/0x20)
[ 1527.709594] [<c02f6870>] (__get_free_pages) from [<c034da78>] (__pollwait+0xb0/0xf0)
[ 1527.717720] [<c034da78>] (__pollwait) from [<c037e1e0>] (eventfd_poll+0x2c/0x80)
[ 1527.725476] [<c037e1e0>] (eventfd_poll) from [<c034e4d8>] (do_sys_poll+0x158/0x450)
[ 1527.733505] [<c034e4d8>] (do_sys_poll) from [<c034f22c>] (SyS_ppoll+0x16c/0x1d0)
[ 1527.741261] [<c034f22c>] (SyS_ppoll) from [<c02076a0>] (ret_fast_syscall+0x0/0x4c)
[ 1527.882121] Mem-Info:
[ 1527.884635] active_anon:28659 inactive_anon:44130 isolated_anon:128
[ 1527.884635] active_file:24923 inactive_file:214982 isolated_file:25
[ 1527.884635] unevictable:8 dirty:37 writeback:0 unstable:0
[ 1527.884635] slab_reclaimable:6483 slab_unreclaimable:3193
[ 1527.884635] mapped:179480 shmem:16591 pagetables:1397 bounce:0
[ 1527.884635] free:23408 free_pcp:64 free_cma:424
[ 1528.082115] Node 0 active_anon:114636kB inactive_anon:176180kB active_file:99668kB inactive_file:859928kB unevictable:32kB isolated(anon):768kB isolated(file):60kB mapped:717920kB dirty:148kB writeback:0kB shmem:66364kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes
[ 1528.182805] DMA free:3016kB min:3452kB low:4312kB high:5172kB active_anon:2512kB inactive_anon:58544kB active_file:60kB inactive_file:96kB unevictable:0kB writepending:36kB present:786432kB managed:751700kB mlocked:0kB kernel_stack:2088kB pagetables:176kB bounce:0kB free_pcp:256kB local_pcp:16kB free_cma:0kB
[ 1528.292380] lowmem_reserve[]: 0 0 1245 1245
[ 1528.296789] HighMem free:90624kB min:512kB low:1988kB high:3464kB active_anon:112124kB inactive_anon:117876kB active_file:99608kB inactive_file:859900kB unevictable:32kB writepending:112kB present:1291264kB managed:1291264kB mlocked:32kB kernel_stack:0kB pagetables:5412kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:1696kB
[ 1528.424200] lowmem_reserve[]: 0 0 0 0
[ 1528.428055] DMA: 48*4kB (E) 17*8kB (UME) 30*16kB (ME) 29*32kB (UME) 14*64kB (UM) 3*128kB (M) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 3016kB
[ 1528.516977] HighMem: 770*4kB (UMC) 963*8kB (UMC) 766*16kB (UMC) 402*32kB (UMC) 143*64kB (MC) 118*128kB (MC) 63*256kB (MC) 24*512kB (UM) 2*1024kB (M) 0*2048kB 0*4096kB 0*8192kB = 90624kB
[ 1528.582814] 256510 total pagecache pages
[ 1528.586933] 5 pages in swap cache
[ 1528.590407] Swap cache stats: add 3453, delete 3445, find 37/54
[ 1528.632751] Free swap = 4094204kB
[ 1528.636319] Total swap = 4095996kB
[ 1528.665696] 519424 pages RAM
[ 1528.668931] 322816 pages HighMem/MovableOnly
[ 1528.678929] 8683 pages reserved
[ 1528.682306] 4096 pages cma reserved
Is there a problem with audio?

Thomas
[doublepost=1538837027,1538835167][/doublepost]Towerfall is starting, success.

I have no keyboard at moment, but that is not important at this time :)

Thomas
 
Looks like it's a memory issue. Strange, with a 4GB swap, it should be more then enough... I'll retry later on my Pandora, to be sure it's still working with latest gl4es (just in case, did you remove the few dll that need to be removed?)

On a side note, it looks like you forgot those 2 exports:
Code:
LIBGL_DEFAULTWRAP=2 LIBGL_FBOFORCETEX=1
They help performances.

And nice for Towerfall! :D
 
You are awesome, you are right, after moving all DLLs out from local directory, and than back FNA.dll and one other, Bastion starts and the intro is fast.

But also no keyboard, strange.

Thomas
 
Maybe the keyboard issue is because the game window is not the one with the focus (because with LIBGL_FB=1, the GL is always fullscreen and in front). Try to alt-tab maybe?
 
I have set up X11 so that only "Bastion" is started directly after login. Thus, no other application can get the focus, but no luck, no keyboard interaction.
 
I have setup up a simple monogame application and same effect. I will test a simple SDL2 tomorrow.
 
I have setup a fresh system,

install SDL2 libs (mixer, net, ttf, image)
install only mono-runtime, mono-utils, libmono-system-xml-linq4.0-cil and libmono-system-xml-serialization4.0-cil
compiled SDL2 Application for keyboard testing, keys are working
copying bastion directory from my second partition

starting bastion, intro is shown, but no keyboard present

?

Thomas
 
any error or strange stuff in the log?

Also, double-check with the Article what dll to keep and what dll to remove.
 
No errors, no libraries left inside directory. I have delete lib and libx64 and remove all mono core libs. Only FNA.dll, FMOD.dll, MojoShader.dll, Lidgren.Network.dll left. Starting bastion, no keyboard.

After that, i testing with an other SLD2 game, and now same effect. No keyboard. What was difference to last test. Library path is set to "~/monolibs", and after removing self compiled SLD2 library, keyboard is back again.

The self compiled SDL2 library was the reason. After removing out from monolib, bastion and towerfall has keyboard.

On my system, compiling SDL2 is not necessary.

Thanks for hint.

Thomas
 
Great!

Some screenshot / photo of your setup maybe? :p

Also, what are the performances on Bastion (as Towerfall should have good performances I guess, it's even playable on the Pandora) ?
 
Bastion crashes after selecting game mode, loading screen is showing, but after 20% of progress is done, the desktop shown. I create a 2 GB swapfile, but same result.

I got a many debug information, but can not interpret the log.

Never ending story :)

Thomas
 
Did you used all the LIBGL_XXXX env variable at launch? If you copy debug info here, I can try to understand what is happening...
 
Export i'm using:
Code:
export LIBGL_ES=2
export LIBGL_GL=21
export LIBGL_FB=1
export LIBGL_DEFAULTWRAP=2
export LIBGL_FBOFORCETEX=1

I think, i run out of memory.

Oct 13 09:29:09 thomas-pyra kernel: [ 507.230961] CPU: 1 PID: 1876 Comm: pulseaudio Tainted: G W O 4.15.17-letux-lpae-pyra-l #5
Oct 13 09:29:09 thomas-pyra kernel: [ 507.240623] Hardware name: Generic OMAP5 (Flattened Device Tree)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.246940] [<c020ef6c>] (unwind_backtrace) from [<c020b2ec>] (show_stack+0x10/0x14)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.255097] [<c020b2ec>] (show_stack) from [<c07e3d48>] (dump_stack+0x7c/0x98)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.262731] [<c07e3d48>] (dump_stack) from [<c02f1dd0>] (dump_header.constprop.6+0x60/0x208)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.271637] [<c02f1dd0>] (dump_header.constprop.6) from [<c02f1448>] (oom_kill_process+0xb0/0x410)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.281090] [<c02f1448>] (oom_kill_process) from [<c02f1c84>] (out_of_memory+0x340/0x3e8)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.289726] [<c02f1c84>] (out_of_memory) from [<c02f6510>] (__alloc_pages_nodemask+0x9d0/0xd20)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.298904] [<c02f6510>] (__alloc_pages_nodemask) from [<c02f6870>] (__get_free_pages+0x10/0x20)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.308187] [<c02f6870>] (__get_free_pages) from [<c034da78>] (__pollwait+0xb0/0xf0)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.316366] [<c034da78>] (__pollwait) from [<c037e1e0>] (eventfd_poll+0x2c/0x80)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.324147] [<c037e1e0>] (eventfd_poll) from [<c034e4d8>] (do_sys_poll+0x158/0x450)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.332184] [<c034e4d8>] (do_sys_poll) from [<c034f22c>] (SyS_ppoll+0x16c/0x1d0)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.339952] [<c034f22c>] (SyS_ppoll) from [<c02076a0>] (ret_fast_syscall+0x0/0x4c)
Oct 13 09:29:09 thomas-pyra kernel: [ 507.369841] Mem-Info:
Oct 13 09:29:09 thomas-pyra kernel: [ 507.372241] active_anon:29874 inactive_anon:42735 isolated_anon:64
Oct 13 09:29:09 thomas-pyra kernel: [ 507.372241] active_file:17650 inactive_file:248124 isolated_file:0
Oct 13 09:29:09 thomas-pyra kernel: [ 507.372241] unevictable:8 dirty:6 writeback:0 unstable:0
Oct 13 09:29:09 thomas-pyra kernel: [ 507.372241] slab_reclaimable:6677 slab_unreclaimable:3303
Oct 13 09:29:09 thomas-pyra kernel: [ 507.372241] mapped:167903 shmem:16017 pagetables:1503 bounce:0
Oct 13 09:29:09 thomas-pyra kernel: [ 507.372241] free:9545 free_pcp:382 free_cma:0
Oct 13 09:29:09 thomas-pyra kernel: [ 507.457130] Node 0 active_anon:119496kB inactive_anon:170856kB active_file:70600kB inactive_file:992496kB unevictable:32kB isolated(anon):384kB isolated(file):0kB mapped:671612kB dirty:24kB
Oct 13 09:29:09 thomas-pyra kernel: [ 507.521723] DMA free:3424kB min:3452kB low:4312kB high:5172kB active_anon:48232kB inactive_anon:58868kB active_file:116kB inactive_file:52kB unevictable:0kB writepending:0kB present:786432kB
Oct 13 09:29:09 thomas-pyra kernel: [ 507.609804] lowmem_reserve[]: 0 0 1245 1245
Oct 13 09:29:09 thomas-pyra kernel: [ 507.614237] HighMem free:34756kB min:512kB low:1988kB high:3464kB active_anon:71264kB inactive_anon:112168kB active_file:70520kB inactive_file:992396kB unevictable:32kB writepending:24kB pre
Oct 13 09:29:09 thomas-pyra kernel: [ 507.706698] lowmem_reserve[]: 0 0 0 0
Oct 13 09:29:09 thomas-pyra kernel: [ 507.717030] DMA: 166*4kB (ME) 105*8kB (UME) 42*16kB (UME) 17*32kB (UM) 7*64kB (UM) 2*128kB (UM) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 3424kB
Oct 13 09:29:09 thomas-pyra kernel: [ 507.751316] HighMem: 671*4kB (UM) 347*8kB (UM) 387*16kB (M) 258*32kB (UM) 116*64kB (M) 42*128kB (UM) 0*256kB 2*512kB (M) 1*1024kB (U) 0*2048kB 0*4096kB 0*8192kB = 34756kB
Oct 13 09:29:09 thomas-pyra kernel: [ 507.805276] 281789 total pagecache pages
Oct 13 09:29:10 thomas-pyra kernel: [ 508.148035] 0 pages in swap cache
Oct 13 09:29:10 thomas-pyra kernel: [ 508.167254] Swap cache stats: add 3547, delete 3547, find 0/0
Oct 13 09:29:10 thomas-pyra kernel: [ 508.181959] Free swap = 2082812kB
Oct 13 09:29:10 thomas-pyra kernel: [ 508.193222] Total swap = 2097148kB
Oct 13 09:29:10 thomas-pyra kernel: [ 508.203503] 519424 pages RAM
Oct 13 09:29:10 thomas-pyra kernel: [ 508.206524] 322816 pages HighMem/MovableOnly
Oct 13 09:29:10 thomas-pyra kernel: [ 508.231435] 8683 pages reserved
Oct 13 09:29:10 thomas-pyra kernel: [ 508.234723] 4096 pages cma reserved
Nearly 2GB swap is free, strange.

Thomas
 
On the Pandora, I need to reduce the size of the textures. Maybe it's the same here. Try to add LIBGL_SHRINK=10 to downsamples large textures...
 
Yes, that was it. Now starts without crash and it is playable at start, only moving to next two rooms.

Added 4 Screenshots, taken with smartphone, screenshot app show desktop and not the game.

Found reason for missing keyboard events. SDL2 uses udev and i had to install "libudev-dev" before compiling SDL2.


Thomas
 

Attachments

  • b1.jpg
    b1.jpg
    60.9 KB · Views: 259
  • b2.jpg
    b2.jpg
    56.4 KB · Views: 252
  • b3.jpg
    b3.jpg
    50 KB · Views: 240
  • b4.jpg
    b4.jpg
    69.6 KB · Views: 247
Here, I'll add some other screenshot of FNA (or at least C#) games, all taken from the Pandora.
Some games are not playable, some are...
 

Attachments

  • bastion04.png
    bastion04.png
    446.6 KB · Views: 245
  • FEZ05.png
    FEZ05.png
    198.9 KB · Views: 237
  • owlboy06.png
    owlboy06.png
    154.7 KB · Views: 234
  • skulls03.png
    skulls03.png
    600.7 KB · Views: 227
  • spacechem05.png
    spacechem05.png
    125 KB · Views: 232
  • TOM04.png
    TOM04.png
    290.1 KB · Views: 240
  • twerfall05.png
    twerfall05.png
    157.6 KB · Views: 240
  • escapegoat02.png
    escapegoat02.png
    143.6 KB · Views: 234
  • escapegoat204.png
    escapegoat204.png
    499.3 KB · Views: 237
Back
Top