deathkiller / jazz2

🎮 · Jazz² Resurrection: Open-source reimplementation of Jazz Jackrabbit 2
https://deat.tk/jazz2/
GNU General Public License v3.0
495 stars 18 forks source link

Import.exe doesn't function on Linux #3

Closed rea987 closed 6 years ago

rea987 commented 6 years ago

Hi,

On v0.5.0 release of the project, Import.exe doesn't function on Linux via Mono. Here is the output:

$ mono Import.exe "~/Masaüstü/Jazz2"
                                                                          ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒
Unhandled Exception:
System.ArgumentOutOfRangeException: Value must be positive and below the buffer height.
Parameter name: top
  at System.TermInfoDriver.SetCursorPosition (System.Int32 left, System.Int32 top) [0x0004d] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.TermInfoDriver.set_CursorTop (System.Int32 value) [0x00018] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.ConsoleDriver.set_CursorTop (System.Int32 value) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.Console.set_CursorTop (System.Int32 value) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0 
  at Jazz2.ConsoleImage.Render (System.IO.Stream s) [0x00158] in <f2457719c05a44819cbb96eadf890ecd>:0 
  at Jazz2.ConsoleImage.RenderFromManifestResource (System.String name) [0x00031] in <f2457719c05a44819cbb96eadf890ecd>:0 
  at Import.App.Main (System.String[] args) [0x0001c] in <f2457719c05a44819cbb96eadf890ecd>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentOutOfRangeException: Value must be positive and below the buffer height.
Parameter name: top
  at System.TermInfoDriver.SetCursorPosition (System.Int32 left, System.Int32 top) [0x0004d] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.TermInfoDriver.set_CursorTop (System.Int32 value) [0x00018] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.ConsoleDriver.set_CursorTop (System.Int32 value) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.Console.set_CursorTop (System.Int32 value) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0 
  at Jazz2.ConsoleImage.Render (System.IO.Stream s) [0x00158] in <f2457719c05a44819cbb96eadf890ecd>:0 
  at Jazz2.ConsoleImage.RenderFromManifestResource (System.String name) [0x00031] in <f2457719c05a44819cbb96eadf890ecd>:0 
  at Import.App.Main (System.String[] args) [0x0001c] in <f2457719c05a44819cbb96eadf890ecd>:0 

Mono information:

$ mono --version
Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1ubuntu1)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug 
    LLVM:          supported, not enabled.
    GC:            sgen

I tried importing game assets via Import.exe on Windows 10, then moved the directory back to Linux partition, finally launched Jazz2.exe; it worked just fine. I detect some animation load errors in the terminal but have no idea if that affected the game or not:

$ mono Jazz2.exe
Using 'DefaultAssemblyLoader' to load plugins.
Environment Info: 
  Current Directory: ~/Masaüstü/a/Jazz2
  Command Line: ~/Masaüstü/a/Jazz2/Jazz2.exe
  Operating System: Unix 4.15.0.33
  64 Bit OS: True
  64 Bit Process: True
  CLR Version: 4.0.30319.42000
  Processor Count: 4
Currently Loaded Assemblies:
  mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  Jazz2, Version=0.5.0.0, Culture=neutral, PublicKeyToken=null
  System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Plugin Base Directories:
  Extensions
Available Assembly Paths:
  Extensions/GL21Backend.core.dll
  Extensions/OpenALSoft.x64.dll
  Extensions/OpenALSoft.x86.dll
  Extensions/OpenTKBackend.core.dll
Assembly loaded: GL21Backend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly loaded: Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly loaded: Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Assembly loaded: OpenTKBackend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Loading auxiliary libraries...
Assembly loaded: OpenTK, Version=1.1.10.0, Culture=neutral, PublicKeyToken=null
Initializing OpenTK...
Platform Backend: Default
EnableHighResolution: True
Active graphics backend: OpenGL 2.1
Assembly loaded: System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Available display devices:
First : 1920x1080 at  60 Hz, 32 bpp, pos [   0,   0] (Primary)
Available audio devices:
  Dahili Ses Analog Stereo (Default)
Current device: OpenAL Soft
OpenAL Version: 1.1 ALSOFT 1.18.2
Vendor: OpenAL Community
Renderer: OpenAL Soft
Effects: True
Initializing core plugins...
DualityApp initialized
Debug Mode: False
Command line arguments: 
Window Specification: 
  Buffers: 2
  Samples: 0
  ColorFormat: 24 (8880)
  AccumFormat: 64 (16161616)
  Depth: 24
  Stencil: 0
  VSync: On
  SwapInterval: 1
OpenGL Version: 4.6.0 NVIDIA 396.54
Vendor: NVIDIA Corporation
Renderer: GeForce 940M/PCIe/SSE2
Shader Version: 4.60 NVIDIA
Can't load animation "MenuDifficultyLori" from metadata "UI/MainMenu": System.IO.FileNotFoundException: File "Animations\UI\character_art_difficulty_lori.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
Determining OpenGL context capabilities...
Assembly loaded: System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Assembly loaded: System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Loading level "Dungeon Dilemma"...
Can't load animation "WeaponBlasterLori" from metadata "UI/HUD": System.IO.FileNotFoundException: File "Animations\Pickup\fast_fire_lori.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
Can't load animation "WeaponPowerUpBlasterLori" from metadata "UI/HUD": System.IO.FileNotFoundException: File "Animations\UI\blaster_upgraded_lori.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
Can't load animation "CharacterLori" from metadata "UI/HUD": System.IO.FileNotFoundException: File "Animations\UI\icon_lori.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
Can't load animation "FastFireLori" from metadata "Object/Collectible": System.IO.FileNotFoundException: File "Animations\Pickup\fast_fire_lori.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
Can't load animation "CrateAmmoPepper" from metadata "Object/CrateContainer": System.IO.FileNotFoundException: File "Animations\Object\crate_ammo_pepper.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
Can't load animation "CrateAmmoElectro" from metadata "Object/CrateContainer": System.IO.FileNotFoundException: File "Animations\Object\crate_ammo_electro.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
^[Can't load animation "MenuDifficultyLori" from metadata "UI/MainMenu": System.IO.FileNotFoundException: File "Animations\UI\character_art_difficulty_lori.png.res" was not found in CompressedContent
  at Jazz2.Storage.Content.CompressedContent.Duality.IO.IFileSystem.OpenFile (System.String path, Duality.IO.FileAccessMode mode) [0x0002b] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Duality.IO.FileOp.Open (System.String path, Duality.IO.FileAccessMode mode) [0x00020] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestGraphicResource (System.String path, System.Boolean async) [0x00046] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0 
  at Jazz2.Game.ContentResolver.RequestMetadataInner (System.String path, System.Boolean async) [0x00174] in <ddc67b3ac9a34f5ebb64c0d240dc64e9>:0

As it seems, gamepads aren't supported yet but I am fairly certain that if mapped correctly, the game should run with AntiMicro just fine.

deathkiller commented 6 years ago

Hi!

I fixed the issue with Import in latest commit. It should work now, but it will not show Jazz 2 logo on Linux. Which Linux terminal emulator are you using, so I can try to fix it properly?

Also, which version of the original game did you import? It seems that it's some version without Lori. Lori will not be available as playable character, but the game will work good. Errors about ammo crates are strange, but it should not be issue if these crates are not used in a level.

Did you try to map gamepad buttons in settings? It must be done manually and it does not save the preset for now. I will try to make this better.

rea987 commented 6 years ago

Hey,

https://lutris.net/games/jazz-jackrabbit-2/ https://lutris.net/games/install/2782/view

deathkiller commented 6 years ago

Thank you for information. I will try it myself to see what is wrong. Messages with "Can't load animation..." are probably OK, because the mentioned version of the game doesn't have these animations (and logging is just too verbose), but I will try it too. Then I will release new precompiled version.

You are right, AntiMicro should work, but native gamepad support is another thing I want to have.

deathkiller commented 6 years ago

I tried to run the latest version on Linux Mint 19 (x64) Mate and it works without any issues.

rea987 commented 6 years ago

As I am quite bad at compiling software, I will wait for the next pre-compiled release. Thanks a lot!

deathkiller commented 6 years ago

Here it is - https://github.com/deathkiller/jazz2/releases/tag/0.5.1 I hope it works correctly. I didn't have too much time to test it.

rea987 commented 6 years ago

Both Import.exe and Jazz2.exe of v0.5.1 work just fine on Mint 19. I am not sure if that's a new enhancement but Logitech F310 buttons can be assigned and used in Xinput mode; though menus should still be navigated by keyboard. I was looking forward to play The Secret Files, so I would be Jazz² Resurrection's job as it seems. :-) Lastly, I couldn't find a way to switch to fullscreen yet.

deathkiller commented 5 years ago

Fullscreen mode was added in v0.5.2.