guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FSDG issues of SCUMMVM-based games


From: Denis 'GNUtoo' Carikli
Subject: Re: FSDG issues of SCUMMVM-based games
Date: Thu, 15 Jun 2023 18:30:07 +0200

Hi,

About the license it's still unclear if it's free or not as some people
pointed on the gnu-linux-libre mailing[1] list that it's a bit similar
to the open font license, but that is a license for fonts not code
though. So I've looked at the other aspects (missing source code, etc).

On Sat, 6 Aug 2022 17:24:52 +0200
Maxime Devos <maximedevos@telenet.be> wrote:
> As such, I agree they should not be distributed (unless the actual 
> sources are found, but even then there is (1.)), as per the first 
> sentence of ‘(guix)GNU Distribution’.

For the lack of missing source code I've looked a bit more in depth
about Drascula and the other games mentioned and here's what I found
below.

Drascula:
---------
The file used by ScummVM is Packet.001.

Apparently it's an ARJ archive:
> $ file Packet.001
> Packet.001: ARJ archive data, v7, slash-switched, created 11 dec
> 1980+18, original name: PACKET.ARJ, os: MS-DOS

And binwalk can manage to extract the files from it:
> $ binwalk -e Packet.001

There might be way better tools to do that but I don't know them.

That extracted 1146 files.

One of these files is DRASCULA.COM, and it's safe to assume that it
should be a dos executable because many of these games were also
released for DOS. There are other .COM files too.

File also seems to think that DRASCULA.COM is a dos executable (file is
not 100% reliable).
> $ file DRASCULA.COM 
> DRASCULA.COM: DOS executable (COM), start instruction 0xeb3a9043
> 6f6d7069

I've no idea what most of the files are for but here's their extensions:
> $ ls | sed 's#.*\.##' | sort -u
> ALD
> ALG
> ALS
> arj (that could be the header of the Packet.001 file)
> BIN
> CAL
> CFG
> COM
> DEV
> DRV
> EPA
> EXE
[GSAVE* (GSAVE00, GSAVE01, .. GSAVE10)]
> RCT
> VOC

So:
- We lack the source code for DRASCULA.COM
- If people re-make ARJ archives without any of the executables, and
  that the game still works, then still have issues about the other
  files that might contain code that lack corresponding source code.
  More on that below (in the part about draci-historie).

Lure:
-----
The files used by ScummVM are: Disk1.vga Disk2.vga Disk3.vga
and Disk4.vga I don't know much more about the format.

I've also found an executable without source code (Lure.exe) in one of
the source pacakge, but Guix probably has a mechanism to take care of
that to republishing modified source code without Lure.exe.

queen:
------
The file used by ScummVM is queen.1c, but I don't know more.

sky:
----
The following 3 files are used by ScummVM:
- sky.cpt: Targa image data - Map - RLE 487 x 608 x 1 +353 +412 - 1-bit
           alpha
- sky.dnr: DOS executable (COM), start instruction 0xe9130000 cfea0000
- sky.dsk: data

File seems wrong with sky.cpt, and I've no idea if file is write with
sky.dnr.

There are also deeper issues:
------------------------------
- All these files are not built from source, so it's complicated to
  understand the provenance of what's inside. And so it's probably
  safer not to ship them (unless we build everything from source)
  because we're unsure that there is some corresponding source code
  inside. 
- Even if there was complete source code inside, we need to be able to
  modify that source code somehow, so doing that might require a lot of
  work to research or build the tools for that.
- ScummVM might contain checksums (See the "4. Play the recompiled
  game" of the draci-historie build documentation [3]) but if someone
  manages to build a game for ScummVM, it could be added as a
  dependency of ScummVM and its checksum could be added inside ScummVM
  at compilation time. 

Also if:
- There are no free programs for ScummVM (a hello world under
  a free license would could count as a free program) (we don't know if
  it's the case or not)
- ScummVM needs to be patched to run modified games (this is very
  likely)
- We don't know if it's possible to build a game for ScummVM
  with only free software (the game doesn't necessarily need to be
  public but free software tools would need to exist to build it).

Then it would clearly steers users toward nonfree software. 

Though here we don't know if there are free programs or not but we also
cannot tell users that scummVM is usefull with a specific free program
or show them a use case that doesn't require nonfree software, so we
might also have a problem with that.

A way forward:
--------------
A possibility here could be to remove ScummVM and the games that run in
it. Another would be to find a 100% free program for ScummVM (that
doesn't have nonfree dependencies for being modified or rebuilt) or to
find a way to make your own program for ScummVM with 100% free software.

I've looked a bit at another game (draci-historie[2]) that has some
source code published. This game is not packaged nor redistributed by
Guix but it looks way better than the other freedom wise and it can
teach us how ScummVM games are made.

Its probably not good enough as-is as its source code also also relies
on a tarball that contains executable to build the game and I also
didn't manage to build it with Guix yet (I've attached a file with my
attempt) but maybe it's possible to get it to build and maybe we can
build a 100% free software version of it.

For the licenses the website has the following:
> In 2006, I (Robert Špalek) released the source codes under the GNU
> GPL2 license.
> [...]
> The game has been released under the GNU GPL license version 2,
> hence you can download it for free including full source codes. The
> new game engine is a part of ScummVM and its source codes are thus
> also a part of it. The old game engine was written in Borland Pascal
> and Turbo Assembler, and only runs on MS-DOS. It can be downloaded
> below. Besides the game player you can also download the source codes
> of the game scripts written in our proprietary game programming
> language, and source images, sounds, and animations. 

So I'm unsure about the license of the executable, game data, etc.

The interesting thing is that it has some draci-historie specific
scripting language and a compiler for it. So we can safely assume that
the other games most likely have a way to script things and that the
games are complex enough to have scripts.

And these scripts may need to be compiled here (I've no idea how
scripts look like for the other games).

A way forward would be to try to build this draci-historie game if we
really want to have ScummVM games and to patch ScummVM to use the
checksums from the newly built game.

There is also an IDE (QT AGI Studio)[4] and some templates[5] for the
AGI game engine supported by ScummVM, but all that require some work
because (a) the IDE depends on QT4, and (b) the template license is a
bit similar to the games license[6], and (c) if scummVM still has
checksums, then users need to build their own version anyway (d) nobody
knows if that can work with 100% free software unless people audit or
package the software and try to see if it works.

References:
-----------
[1]This gnu-linux-libre mailing list is at nongnu.org. Despite its name,
   this mailing list is meant for discussions about all FSDG compliant
   distributions(even the ones without GNU or linux-libre like
   Replicant), about the list of software to exclude from FSDG
   distributions, about adding new distros in the list, etc.
[2]https://www.ucw.cz/draci-historie/index-en.html
[3]https://www.ucw.cz/draci-historie/src/doc/compiling-the-game.txt
[4]https://agistudio.sourceforge.net/#requirements
[5]https://github.com/nbudin/agikit-project-template
[6]https://github.com/nbudin/agikit-project-template/blob/main/README-original.txt

Denis.

Attachment: draci-historie.scm
Description: Text Data

Attachment: pgpCQ4qG_EZhI.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]