Code Monkey home page Code Monkey logo

m-ht / sr Goto Github PK

View Code? Open in Web Editor NEW
299.0 13.0 17.0 3.84 MB

A project to statically recompile following games to create Windows or Linux (x86 or arm) versions of the games - Albion, X-Com: UFO Defense (UFO: Enemy Unknown), X-Com: Terror from the Deep, Warcraft: Orcs & Humans, Septerra Core: Legacy of the Creator, Battle Isle 3: Shadow of the Emperor

Shell 0.28% Python 3.03% C++ 6.56% Assembly 12.37% C 75.82% Batchfile 0.03% D 1.90%

sr's Introduction

SR

A project to statically recompile DOS and Windows game executables to create Windows or Linux (x86 or arm) versions of the games.

Following DOS games are supported:

Following Windows games are supported:

The source code is released with MIT license (except libraries, etc. by other people, which have their own license). For the purpose of using the code in GPL projects, the source code is also released with GPLv2 or later and LGPLv2.1 or later.


The projects consists of following subprojects (read the readme files in subproject directories for more information):

  • SR
    • The static recompiler (for DOS executables) itself.
    • It takes the original executable as an input together with information about the original executable and produces x86 / arm / llasm assembler version of the executable.
    • The generated x86/arm/llasm assembler version of the executable is not part of the project.
  • SRW
    • The static recompiler (for Windows executables) itself.
    • It takes the original executable as an input together with information about the original executable and produces x86 / llasm assembler version of the executable.
    • The generated x86/llasm assembler version of the executable is not part of the project.
  • llasm
    • Program which converts .llasm file to LLVM language-independent intermediate representation, which can be compiled to native code.
  • SR-games
    • The information about the original DOS executables.
  • SRW-games
    • The information about the original Windows executables.
  • games
    • Game specific source code.
    • Together with the generated assembler versions of the executables, these files can be used to build Windows or Linux (x86 or arm) versions of the games.
    • Uses plugins to play (or play better) music.
  • midi-libs
    • Libraries that are used by plugins in midi-plugins subproject to play MIDI music.
  • midi-plugins
    • Plugins used by the games to play MIDI (and other types) music.
  • scaler-plugins
    • Plugins used by the DOS games to enlarge/enhance the displayed image.
  • pycfg
    • A configuration utility that can be used on Linux (sorry Windows users) to change settings in the configuration files (without editing the files).
  • SR64-loader
    • Loader for 64-bit versions.

Some notes:

  • The project supports creating 32-bit, Windows or Linux versions of the games.
  • The generated arm version is little-endian, not big-endian.
  • The generated arm version supports softfp and hardfp calling conventions.
  • Creating 64-bit versions is experimental.
    • Only Linux (x64, arm64) versions of Albion, Septerra Core, X-COM 1,2 and Warcraft are working at the moment.
    • 64-bit versions require a loader.

sr's People

Contributors

m-ht avatar xcom169 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sr's Issues

Albion: Alt-keycodes

This is a problem in non-English versions of the game where you have to input non-ASCII characters in dialogue, like "Porenöl" in the German version or, my favourite, "důkazy" in the Czech version. Typically this has been solved by using alt-128 and above to find the correct character.

Unfortunately this doesn't work in the port (but it did in DOSBox and DOS of course), so there's no way to input the characters in the port, as far as I know. Having this fixed would be a good improvement.

I was thinking about other improvements to character input like clipboard support, but since the game uses a non-standard character set anyway, it won't help much.

Albion: interact with the environment using the keyboard

The original game control was mouse-oriented. However, it will be nice to able to use the the keyboard for things like interacting with the environment. This will also open the door to use a controller remapping the keys.

Can't compile Albion for LLasm

I am getting an error when compiling Albion for the LLVM target:

./SR.exe ALBION.EXE out

Output type: LLasm version
esp dword aligned: no
ebp dword aligned: no
2022-12-20 02:33:17.555: Loading EXE file...
        Sections in file: 8
2022-12-20 02:33:17.563: Loading source code information...
2022-12-20 02:33:17.563: Initial disassembly...
2022-12-20 02:33:17.857: Applying fixup...
2022-12-20 02:33:17.909: Full disassembly...
Error: unknown flags on start of region - 0 - 32084 (0x17d54) - 0x38
Error: 

The x86 target is compiled successfully. I am using CentOS 8.

aclocal and automake update

this is built for 1.13 and the newest ubuntu ones are 1.15.1 right now making the script fail to find the command

Building Win32 under mingw32 environment

Hello!

I'm almost done with my win32 build, but the last command gives an error.
I think it can't link together the parts. Maybe with a GCC flag it can be forced to build the .exe file.
Can you please take a look at my GCC work, and linking ?

MINGW32 ~/SR/games/Warcraft/SR-War
$ scons version=cdgog device=pc-windows SDL2=0
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o audio/pc.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE audio/pc.c
gcc -o display/pc.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE display/pc.c
gcc -o Game_config.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Game_config.c
gcc -o Game_thread.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Game_thread.c
gcc -o input/pc.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE input/pc.c
gcc -o main.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE main.c
gcc -o Warcraft-in2.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-in2.c
gcc -o Warcraft-inout.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-inout.c
gcc -o Warcraft-int.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-int.c
gcc -o Warcraft-int2.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-int2.c
gcc -o Warcraft-music-midiplugin.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-music-midiplugin.c
gcc -o Warcraft-music-midiplugin2.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-music-midiplugin2.c
gcc -o Warcraft-music.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-music.c
gcc -o Warcraft-out2.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-out2.c
gcc -o Warcraft-proc-events.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-proc-events.c
gcc -o Warcraft-proc-vfs.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-proc-vfs.c
gcc -o Warcraft-proc.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-proc.c
gcc -o Warcraft-sound.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-sound.c
gcc -o Warcraft-timer.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE Warcraft-timer.c
gcc -o virtualfs.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE virtualfs.c
gcc -o xmi2mid.o -c -m32 -O2 -Wall -DALLOW_OPENGL -lmingw32 -fno-PIE xmi2mid.c
nasm -fwin32 -Ox -w+orphan-labels -w-number-overflow -ix86/ -o x86/Game-asm.o x86/Game-asm.asm
nasm -fwin32 -Ox -w+orphan-labels -w-number-overflow -ix86/ -o x86/SR-asm-calls.o x86/SR-asm-calls.asm
nasm -fwin32 -Ox -w+orphan-labels -w-number-overflow -ix86/ -o x86/SR-asm.o x86/SR-asm.asm
nasm -fwin32 -Ox -w+orphan-labels -w-number-overflow -ix86/ -o x86/asm_inout.o x86/asm_inout.asm
nasm -fwin32 -Ox -w+orphan-labels -w-number-overflow -ix86/ -o x86/asm_int.o x86/asm_int.asm
gcc -o SR-War.exe -m32 -no-pie -s Game_config.o Game_thread.o Warcraft-in2.o Warcraft-inout.o Warcraft-int.o Warcraft-int2.o Warcraft-music-midiplugin.o Warcraft-music-midiplugin2.o Warcraft-music.o Warcraft-out2.o Warcraft-proc-events.o Warcraft-proc-vfs.o Warcraft-proc.o Warcraft-sound.o Warcraft-timer.o main.o virtualfs.o xmi2mid.o display/pc.o audio/pc.o input/pc.o x86/war-asm-cdgog.o x86/Game-asm.o x86/SR-asm-calls.o x86/SR-asm.o x86/asm_inout.o x86/asm_int.o -lSDL_mixer -lSDL -lpthread -lopengl32
C:/tools/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/tools/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o): in function main': C:/_/M/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crt0_c.c:18: undefined reference to WinMain@16'
collect2.exe: error: ld returned 1 exit status
scons: *** [SR-War.exe] Error 1
scons: building terminated because of errors.

Cannot compile wildmidi ("error: this statement may fall through")

Continuing from #16 ...

When trying to compile wildmidi I get the following error:

Making all in include
make[1]: Entering directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
make  all-am
make[2]: Entering directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
make[2]: Leaving directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
make[1]: Leaving directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
Making all in src
make[1]: Entering directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/src'
/bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -I../include    -m32 -std=c99 -U__STRICT_ANSI__ -Wall -Wextra -pedantic -Werror -O2 -std=gnu99 -frename-registers -finline-limit=32000 -Winline -ffast-math -funroll-loops -fexpensive-optimizations -finline-functions -march=i686 -MT libWildMidi_la-wildmidi_lib.lo -MD -MP -MF .deps/libWildMidi_la-wildmidi_lib.Tpo -c -o libWildMidi_la-wildmidi_lib.lo `test -f 'wildmidi_lib.c' || echo './'`wildmidi_lib.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../include -I../include -m32 -std=c99 -U__STRICT_ANSI__ -Wall -Wextra -pedantic -Werror -O2 -std=gnu99 -frename-registers -finline-limit=32000 -Winline -ffast-math -funroll-loops -fexpensive-optimizations -finline-functions -march=i686 -MT libWildMidi_la-wildmidi_lib.lo -MD -MP -MF .deps/libWildMidi_la-wildmidi_lib.Tpo -c wildmidi_lib.c  -fPIC -DPIC -o .libs/libWildMidi_la-wildmidi_lib.o
wildmidi_lib.c: In function ‘midi_setup_control’:
wildmidi_lib.c:1854:23: error: this statement may fall through [-Werror=implicit-fallthrough=]
             tmp_event = *do_control_non_registered_param;
             ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wildmidi_lib.c:1855:9: note: here
         case 100:
         ^~~~
cc1: all warnings being treated as errors
Makefile:541: recipe for target 'libWildMidi_la-wildmidi_lib.lo' failed
make[1]: *** [libWildMidi_la-wildmidi_lib.lo] Error 1
make[1]: Leaving directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/src'
Makefile:381: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

Albion: Disable bilinear filtering

Thank you for supporting and enhancing my favourite game! When compared to my DOSBox setup, I have noticed that your renderer uses bilinear filtering, so the picture is somewhat blurred. DOSBox project addressed this by allowing the user to set the output to openglnb (does not use bilinear filtering), so the pixels are crisp. Would it be too much hassle to allow similar setting within SR?

I have prepared a little comparison.

This is the screenshot from the SR - fullscreen, resolution 1920x1440 for keeping correct aspect ratio on 2560x1440 monitor:

DOSBox screenshot - fullscreen, fullresolution=desktop, output=openglnb, aspect=true, scaler=none:

I have to say that I prefer the output from DOSBox, but the ability run the game directly in Windows with improved 3D rendering is too tempting :-) Thanks.

Xload: File does not exist. (Name : Slab)

After moving SR-Main (self-compiled) and Albion.cfg and Albion.sh from games/Albion/release/linux/ to the game directory and launching the startup script (./Albion.sh) I get the following error:

Using config file: Albion.cfg
An error has occurred.
Please examine the file ERROR.LOG.

Contents of error.log

**** Error log ****

Albion v1.38 (created on Jul 25 1996 12:39:09)
Executed on Sun Mar  3 16:47:05 2019

BBERROR: ERRORSTACK START:--------------
BBDOS Library:  DOS_setcurrentdir: unknown error - FILENAME: D:\ALBION - DATA: 0 - OSERROR: 2
Xload: File does not exist.
     (Name : Slab)
Albion: File access error.
(line 679 of file g:\albion\src\game.c)
BBERROR: ERRORSTACK END-----------------


Please read the README.TXT file to find out how to contact
the Blue Byte hotline.

Any ideas? What's the problem here?

I'm using an unchanged Albion.cfg from the repo by the way.

Septerra Core: Windows 10 64 bit. Mouse stutter tied to polling rate?

This SR port of Septerra Core is great! I've noticed, however that when using my gaming mouse that the mouse stutters constantly. I have realized that it is tied to the mouse polling rate. If I use my gaming mouse default of 1000 Hz it is very jittery. Buttery smooth though at 125 Hz.

I wrote about this experience a bit back on the GOG forums, but have decided to bring it to your attention here in case it may help others who are also having problems with mouse stuttering.

Battle Isle 3 compilation issue

Hi Roman,

Good work re your project!

However, I can't compile it.

[snip]
nasm -felf32 -Ox -w+orphan-labels -w-number-overflow -ix86/ -o x86/main-asm.o x86/main-asm.asm
winegcc -o x86/CLIB-asm-x86.o -c -m32 -O2 -Wall -fno-PIE x86/CLIB-asm-x86.c
winegcc -o x86/WinApi-user32-asm-x86.o -c -m32 -O2 -Wall -fno-PIE x86/WinApi-user32-asm-x86.c
winegcc -o x86/X86_FS_mem.o -c -m32 -O2 -Wall -fno-PIE x86/X86_FS_mem.c
scons: *** [x86/ms_figtr/MS_FIGTR.o] Source x86/ms_figtr/**MS_FIGTR.asm**' not found, needed by target x86/ms_figtr/MS_FIGTR.o'.
scons: building terminated because of errors.

I have not found this asm file anywhere

Also, when taking your tar ball (V 1.0.0), I cannot run it with wine
wine: Fehlerhaftes EXE-Format für .wine\drive_c\BLUEBYTE\SDI\SR-master\games\Battle Isle 3\release\linux\SR-BI3.exe.so.

Is it a 32 bit?
I also tried
WINEARCH=win32 WINEPREFIX=~/.wine32 wine SR-BI3.exe.so

but I get the same error.

Thanks for any help
Leon

No such file or directory: './seg01.inc'

I'm trying to compile an x86 version of Albion for Linux.

I've compiled SR and moved both SR.exe and Albion's MAIN.EXE into SR-games/Albion/SR/x86. If I then run builf-x86.sh, I get the following error:

Traceback (most recent call last):
  File "./compact_source.py", line 51, in <module>
    Compact(cPath + "seg01.inc")
  File "./compact_source.py", line 8, in Compact
    fIn = open(cFile, "rt")
IOError: [Errno 2] No such file or directory: './seg01.inc'

Apparently the script is expecting some files to be in SR-games/Albion/SR. I'm not sure what these files are or where they should be coming from. The instructions don't seem to mention them.

How should I proceed?

Aarch64 support?

Hi!

I would like to run Albion on the Raspberry Pi 400 using my minimal aarch64 system. Are there support plans for generating aarch64 binaries?

Thanks!

Cannot compile wildmidi (headers "present but cannot be compiled")

When trying to compile wildmidi I get a bunch of warnings upon running ./configure. They look like this:

configure: WARNING: alsa/asoundlib.h: present but cannot be compiled
configure: WARNING: alsa/asoundlib.h:     check for missing prerequisite headers?
configure: WARNING: alsa/asoundlib.h: see the Autoconf documentation
configure: WARNING: alsa/asoundlib.h:     section "Present But Cannot Be Compiled"
configure: WARNING: alsa/asoundlib.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------------------------------- ##
configure: WARNING:     ## Report this to http://sourceforge.net/tracker/?group_id=42635&atid=433744 ##
configure: WARNING:     ## ------------------------------------------------------------------------- ##

I get the same block for:

  • alsa/asoundlib.h
  • errno.h
  • linux/soundcard.h
  • sys/ioctl.h
  • sys/soundcard.h

When running make, compilation fails with this error:

Making all in include
make[1]: Entering directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
make  all-am
make[2]: Entering directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
make[2]: Leaving directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
make[1]: Leaving directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/include'
Making all in src
make[1]: Entering directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/src'
/bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -I../include    -m32 -std=c99 -U__STRICT_ANSI__ -Wall -Wextra -pedantic -Werror -O2 -std=gnu99 -frename-registers -finline-limit=32000 -Winline -ffast-math -funroll-loops -fexpensive-optimizations -finline-functions -march=i686 -MT libWildMidi_la-file_io.lo -MD -MP -MF .deps/libWildMidi_la-file_io.Tpo -c -o libWildMidi_la-file_io.lo `test -f 'file_io.c' || echo './'`file_io.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../include -I../include -m32 -std=c99 -U__STRICT_ANSI__ -Wall -Wextra -pedantic -Werror -O2 -std=gnu99 -frename-registers -finline-limit=32000 -Winline -ffast-math -funroll-loops -fexpensive-optimizations -finline-functions -march=i686 -MT libWildMidi_la-file_io.lo -MD -MP -MF .deps/libWildMidi_la-file_io.Tpo -c file_io.c  -fPIC -DPIC -o .libs/libWildMidi_la-file_io.o
In file included from /usr/include/bits/errno.h:26:0,
                 from /usr/include/errno.h:28,
                 from file_io.c:30:
/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory
 #include <asm/errno.h>
          ^~~~~~~~~~~~~
compilation terminated.
Makefile:513: recipe for target 'libWildMidi_la-file_io.lo' failed
make[1]: *** [libWildMidi_la-file_io.lo] Error 1
make[1]: Leaving directory '/home/josh/archive/src/SR/midi-libs/wildmidi-0.2.3.5svn/src'
Makefile:381: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

Any ideas?

Albion: Ability to modify the 3D FOV

Thanks for the immense work you have done on the port, and all its new capabilities! I have wondered whether it would be possible to modify the 3D in another way, like tweaking some of its constants to produce a higher field of vision, as it's generally lower compared to today's games. Of course it might be difficult due to the way it works, and there are also other improvements like looking with mouse that would be cool, but I thought this could be one of the easier patches.

16 bit -> 32 bit translation

Hello,
I have wrote a tool for source to source translation for 16 bit games with segment model into C++ fake-asm.
https://github.com/xor2003/masm2c
And for each 16 bit assembler instruction I have precise copy implemented in C++. The instructions are checked while running game in dosbox.
https://github.com/xor2003/libdosbox
We are thinking of binary translation of 16 bit instructions into 32 bit to use usual decompilers.
https://www.youtube.com/watch?v=MzK9RVgeWGM
Do you know some information which can help?

Septerra Core "desktop" display mode enhancement

Currently, when using the "desktop" display mode, the width & height values are ignored and the image output is stretched to the desktop resolution (with the correct 4:3: aspect ratio).

What I would like, though, is to be able to set width & height to 1280x960 while using the desktop mode. Effectively, the image would be displayed centered on the screen with a 2x integer scaling ratio when using "basicnb" mode.

Now the only way to achieve this is to use windowed mode, which is fine, but this would be a nice enhancement and pretty easy to do, I assume.

Septerra Core: Game Stutters on Windows 10 64-bit System

Thank you so much for making this patch! This is the only thing that seems to work for me. Movies work fine, the game is mostly playable, etc. I say it's -mostly- playable because every 5 seconds or so, the game will stutter/hiccup. I have tried changing various compatibility settings to no avail.

The strange thing is that I can run the game perfectly fine if I use dgVoodoo alongside the original septerra.exe. But then I can't see the movies when using this version. So I am just going to switch between original and SR exe's depending if I want to see movies or focus on game play.

If this is a worthy avenue of inquiry for the devs here, I can provide further details if needed.

Thanks,
-Goron

Is it possible to use this project as a general toolchain ?

Hello, I have a question, I see that this project is focused on some old DOS games.
My question is: is it possible to use this project toolchain to reverse any old DOS games?
For example: I would like to extract and study the Dynamic Mission Generator from DiD Eurofighter 2000 (an old DOS game form '90s)

How can I approach the problem?
Thank you

OSK support

Septerra Core requires keyboard to set savefile name when saving. Is there some way to "hook" save menu to run custom code (e.g., show OSK)?

Startup scripts and sample config files

After compiling the executables for XCOM I noticed that there is no startup script as a replacement for UFO.BAT. Could you please supply one? Also, a sample config file (showing all the possible values) would be great.

About this project

Hi, a linux arm devoted here.

Time has past since notaz did similar stuff with diablo 2 and StarCraft. Why you picked those games? you have generic tools to to this? Are you planning to expand the list? Any tutorial on how to use it?

Thanks.

Albion without a mouse (Steam Deck)

Thanks for your amazing work.
From a technical point of view, would it be possible to make the game 'mouse-free', so that it can be played with a controller without the need of a mouse?

I am considering getting a Steam Deck. While I don't see any problems with installing the Linux port of Albion (has anyone already gone through the process?), the above-mentioned mouse-free option would make the mobile gaming experience much better.

Given that Albion wasn't designed to be played this way, it is more of a general question.

16-bit exe file support broken?

Seems like SR only supports LE executables?

I tried to run SR against exe files from both Covert Action and Centurion: Defender of Rome (exe file for that game needs to be unpacked first with unp) but ran into various "file too small" or "invalid EXE file" errors.

Question: How to get music playing in Albion?

I have compiled the wildmidi plugins and put both midi-wildmidi.so and midiA-wildmidi.so in the same directory as the SR-Main executable. I have also set Audio_MIDI_Subsystem=wildmidi in Albion.cfg.

When I execute the game I get sound effects but no music. What am I missing?

Septerra Core v1.04.0.7 mouse issues on Windows10

Im using the [Septerra Core v1.04.0.7] (https://github.com/M-HT/SR/releases/tag/septerra_v1.04.0.7) patch, and despite the fix listed in the last update to help address high poling mice issues, im still having issues using my Logitech G502 Hero on Windows 10 with the game. My polling rate is set to 3200dpi which is the middle setting. but unless I move my mouse very slowly, my cursor starts stuttering and teleporting, which makes the game nigh unplayable. =( Im using the Steam Release of the game.

Albion: Movement with keyboard is buffered and thus automatically skips popup dialogs

Movement keys, among other keys, can be used to skip dialog. When moving with the keyboard, whether it is the arrow keys or wasd as enabled in the config file, the skip dialog feature of those buttons seems to be buffered or extended, and so when a dialog popup occurs it only shows for a brief moment before automatically disappearing or being skipped, even though you already let go of the movement key.

Furthermore, while in a long dialog, if you hold down any key it is extended for a long while resulting in large amounts of dialog boxes being skipped even though you let go of the key several seconds prior.

This can be easily tested at the beginning of the game which has the long conversation with Christine, and a few automatic popup dialogs on the right side of the ship.

I have tested and this does not happen in the gog version: as long as you let go of a key before the hourglass loading cursor ends, the dialog will not be skipped. Nor can you buffer multiple skips; it will stop skipping as soon as you let go of the key.

Honestly cannot play the game like this.

Running latest Gog version, running your code 1.7.1 sdl2, windows 10.

Some general questions, interesting points in this project

Hello!

From the generated x86/arm/llasm assembler code it's relatively easy to get back the original C/C++ code ?
From the generated x86/arm/llasm assembler how do you know which parts you should replace with some new code ?
The original DOS exes were 16bits? It's not a problem to convert them to 32 bit executables?
Can you also correct programming bugs in the generated x86/arm/llasm assembler or everything is the same as it was the original game ?

Albion: SDL2 Windows version crashes to desktop

The SDL1 version works fine, but with the new SDL2 version I get this behavior:

nativewindows/wildmidi/adlmidi:
The game freezes for one second and then exits without an error message, as soon as you can see Tom in his cabin. The crash happens before you could hear any sound, except for the intro, which works fine.

bassmidi:
You can click the text box away and move around in the cabin, but as soon as you interact with anything, the game freezes for one second and then exits without an error message. There is no sound, except for the intro.

sdl_mixer:
Seems to be working fine. No crashes and sound is working.

Albion: mouse cursor issues

First of all: Thanks for the amazing port. Having the enhanced 3d rendering is great! However, I noticed two issues with the mouse cursor in the windows port (both SDL1 and SLD2):

  • Whenever a new dialogue box is opened, the game pauses for a second or so. When I run the game in DOSBox, the cursor becomes an hourglass symbol and can still be moved during the pause. In the windows port, the cursor does not change to the hourglass symbol and freezes for a second.
  • In both the windows port and in DOSBox, the game seems to be running at 20 FPS in the 2d parts. In DOSBox, however, the 20 FPS cap does not seem to affect the cursor movement. When I just run around with the cursor in one place, I get a constant 20 FPS. But as soon as I move the mouse quickly, the framerate goes up to 60 (whilst the game itself doesn't speed up or anything)! In the windows port, the framerate is always locked to 20, and therefore cursor movement seems quite laggy during the 2d parts. it would also be great to have an option to change mouse movement speed.

keyboard remapping

A possibility to remap keys (e.g. arrows to WSAD, quite useful for 3D mode) would be great, and shouldn't be too hard considering SDL is already on-board. It's currently doable by generic 3rd party tools for remapping the keyboard system-wide, but a possibility to set this e.g. via config would be even better.

build issue on Pi4

i was following the post from the other user on how to build Septerra Core.
when i get to the step with
In directory SR/SRW-games/Septerra Core/SRW run command ./build-llasm.sh

i get this
Traceback (most recent call last): File "./compact_source_llasm.py", line 58, in <module> Compact(cPath + "seg01_data.llinc") File "./compact_source_llasm.py", line 8, in Compact fIn = open(cFile, "rt") IOError: [Errno 2] No such file or directory: './seg01_data.llinc' rm: cannot remove 'Septerra.resdump': No such file or directory

so i looked to see what versions i was running and it was the same as his
``
LLVM (http://llvm.org/):
LLVM version 7.0.1

Optimized build.
Default target: armv6k-unknown-linux-gnueabihf
Host CPU: cortex-a72
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

so i did the update for LLVM but i get this

pi@retropie:~/SR/games/Septerra Core/SR-Septerra $ PATH=home/pi/clang+llvm-9.0.1-armv7a-linux-gnueabihf/bin:$PATH:../../../llasm scons
scons: Reading SConscript files ...

You didn't set any target device (parameter 'device').
'arm-linux-llasm' will be used for compiling.

scons: done reading SConscript files.
scons: Building targets ...
gcc -o SR-Septerra -Wl,-z,noexecstack -no-pie -s CLIB.o Game-Config.o Game-DataFiles.o Game-Main.o Game-Registry.o Game-SoundEngine.o MSS.o QTML.o WinApi-ddraw.o WinApi-dsound.o WinApi-gdi32.o WinApi-kernel32.o WinApi-user32.o WinApi-winmm.o WinApi.o X86_FS_mem.o llasm/CLIB-asm-llasm.o llasm/asm-cpu.o llasm/asm-llasm.o llasm/llasm_divide.o llasm/llasm_float.o llasm/llasm_fs_mem.o llasm/llasm_movs.o llasm/llasm_pushx.o llasm/llasm_scas.o llasm/llasm_stos.o llasm/printf_x86.o llasm/CLIB-asm.o llasm/Game-DataFiles-asm.o llasm/Game-Registry-asm.o llasm/Game-SoundEngine-asm.o llasm/MSS-asm.o llasm/QTML-asm.o llasm/WinApi-ddraw-asm.o llasm/WinApi-dsound-asm.o llasm/WinApi-gdi32-asm.o llasm/WinApi-kernel32-asm.o llasm/WinApi-user32-asm.o llasm/WinApi-winmm-asm.o -lSDL2 -lpthread -lm -lmpg123 -lquicktime
/usr/bin/ld: Game-Main.o: in function init_security_cookie': Game-Main.c:(.text+0x48): undefined reference to security_cookie_'
/usr/bin/ld: Game-SoundEngine.o: in function SE_timer_CB': Game-SoundEngine.c:(.text+0xec): undefined reference to hWritePipe'
/usr/bin/ld: WinApi-ddraw.o: in function DirectDrawCreate_c': WinApi-ddraw.c:(.text+0x84): undefined reference to IDirectDrawVtbl_asm2c'
/usr/bin/ld: WinApi-ddraw.o: in function IDirectDraw_CreateSurface_c': WinApi-ddraw.c:(.text+0x4e0): undefined reference to IDirectDrawSurfaceVtbl_asm2c'
/usr/bin/ld: WinApi-dsound.o: in function DirectSoundCreate_c': WinApi-dsound.c:(.text+0x1e6c): undefined reference to IDirectSoundVtbl_asm2c'
/usr/bin/ld: WinApi-dsound.o: in function IDirectSound_CreateSoundBuffer_c': WinApi-dsound.c:(.text+0x2384): undefined reference to IDirectSoundBufferVtbl_asm2c'
/usr/bin/ld: llasm/asm-llasm.o: in function GetRecordName_asm': asm-llasm.c:(.text+0x20): undefined reference to c_GetRecordName_'
/usr/bin/ld: llasm/asm-llasm.o: in function MessageProc_asm': asm-llasm.c:(.text+0x94): undefined reference to c_MessageProc_c2asm'
/usr/bin/ld: llasm/asm-llasm.o: in function WinMain_asm': asm-llasm.c:(.text+0x108): undefined reference to c_WinMain_'
/usr/bin/ld: llasm/asm-llasm.o: in function RunWndProc_asm': asm-llasm.c:(.text+0x18c): undefined reference to c_RunWndProc_c2asm'
/usr/bin/ld: llasm/asm-llasm.o: in function run_thread_asm': asm-llasm.c:(.text+0x1d4): undefined reference to c_run_thread_c2asm'
collect2: error: ld returned 1 exit status
scons: *** [SR-Septerra] Error 1
scons: building terminated because of errors.

not sure whats going on there since from what i can see i have the same software are the he did in this post

allow HQ scaling (or any similar scaler)

I understand that many people favour the original pixelated look, but since HQ scalers has been around for a long time, I think it's reasonable to allow player to choose the scaler himself, instead of being forced to use simple pixel scaling.

(https://sourceforge.net/projects/xbrz/ comes to mind here, since it provides a really great visual experience w.r.t. old low-res games)

Scalers might be implemented directly via SR, or via proxy DLL similar to https://www.syntax-k.de/projekte/sdl-opengl-hq/ IMHO.

Alternatively, allow running the game with the base resolution (360x240) with just the bitdepth flip(8->32), so that one can benefit from SDL proxy scalers. (currently impossible to do, since the minimum resolution is 640x480, and the scalers provide little effect on already upscaled gfx)

Septerra Core fail to build Pi4 again

i now have gotten around to make a script to do all the hard work for me.

i have gotten most everything working fine, but now im getting a error that i did not get before when i needed your help

i run ./komp.sh from the SR/llasm folder and i get this

llasm.d:3367:29: error: cannot implicitly convert expression (fd.size()) of type ulong to uint
             values.length = fd.size;
                             ^

not sure whats going on.
i went back and traced my steps from the other posts and i used before and i dont see that im missing anything up to that point.
again i would love any help

Septerra Core v1.04.0.3 don't play movies (Wine and Linux)

First, thanks for your good work. Having Septerra Core running natively on Linux is fantastic.

My OS is Linux Mint 19.3 64bits. The game is from GOG.

I followed the instructions and installed the 32-bit libraries, them I started the game through Septerra.sh binary. The game run but without playing any movies.

Then I ran through the terminal and got this errors.

[core] Error: Opening failed (unsupported filetype)
[core] Error: Opening failed (unsupported filetype)
[core] Error: Opening failed (unsupported filetype)
[core] Error: Opening failed (unsupported filetype)


My next test was under Wine (Lutris 5-5 fshack) I know that isn't supported but I like to play GOG games through GOG Galaxy thanks to Lutris. Under this bottle the game has crackling sounds and don't play movies, too. Another issue is the game don't go fullscreen even when I change that option on the CFG.
I don't know how to get error report on Windows.

Build.sh problem with WAR.EXE

I think I copied the SR.EXE and the WAR.EXE to the good and same dir, but I still got this error:

./build-x86.sh
Traceback (most recent call last):
File "./compact_source.py", line 58, in
Compact(cPath + "seg01.inc")
File "./compact_source.py", line 8, in Compact
fIn = open(cFile, "rt")
FileNotFoundError: [Errno 2] No such file or directory: './seg01.inc'
Traceback (most recent call last):
File "./repair_short_jumps.py", line 19, in
iErr = int( cErrLine[iTemp1 + 1 : iTemp2] )
ValueError: invalid literal for int() with base 10: ' line 7'
Traceback (most recent call last):
File "./repair_short_jumps.py", line 19, in
iErr = int( cErrLine[iTemp1 + 1 : iTemp2] )
ValueError: invalid literal for int() with base 10: ' line 9'

My WAR.EXE is corrupted?

Multiple mouse cursors over the game window?

Hello All!

Maybe it's just some config parameter, but how can I disable multiple mouse cursors over the game window? I just would like to see the game's cursor, and not the Windows cursors when I'm in the game.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.