marco-sacchi / RLoader

DOS programs launcher with customizable lists, search and thumbnails display.
MIT License
24 stars 1 forks source link

Feature Offer: RLoader list generator #35

Open jsmolina opened 2 years ago

jsmolina commented 2 years ago

Let's say you have your nice list of long folder names with DOS games in /home/user/DIST/GAMES

➭ ls -lah
total 0
drwxr-xr-x    6 user  staff   192B 31 oct 17:24 .
drwx------+ 177 user  staff   5,5K 31 oct 17:24 ..
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 Commander Keen
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 Destruction Derby
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 Duke Nukem 3d
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 Teenage Mutant Turtles 1

I created an automatic list generator using python https://github.com/jsmolina/simple-menu-dos-launcher/blob/main/scripts/rloadergen.py

Example usage: python3 rloadergen.py -i /home/user/DIST/GAMES -o /Users/jsmolina/OUT -d c:\menu

It scans the list of directories with long names, and copies such games to dos short names and generates the LIST.txt automatically. It will try to guess the executable, and ask you if it is ambiguous. So it will generate in the directory /Users/jsmolina/OUT/GAMES something like this:

➭ ls -lah
total 0
drwxr-xr-x    6 jordism  staff   192B 31 oct 17:33 .
drwx------+ 177 user  staff   5,5K 31 oct 17:24 ..
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 CKEEN
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 DDERBY
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 DUKE3D
drwxr-xr-x    2 user  staff    64B 31 oct 17:24 TMNT

And in /Users/jsmolina/OUT/LISTS/PCXT LIST.TXT, ....

If you are interested, I could add in a Pull request or just take it directly to your repo and do any modification you might consider interesting (like allowing passing the LIST name on the commandline, or asking you about cycles).

it fastens a crazy lot the generation of lists.

cyberluke commented 2 years ago

That's great! I have been looking for something like that!

I have Windows batch script that will convert game screenshots (downloaded into folder from MobyGames or simiilar DB) and convert these using imagemagick to RLoader screenshot format.

marco-sacchi commented 2 years ago

@jsmolina @cyberluke, they are both excellent tools, but both can only be run on modern OS, they can be very useful if combined with RLoader and maybe I could create a RLoader-tools repo where to catalog these utilities, in order to keep this repo easily manageable from DOS.

The spirit of RLoader however is to be a DOS tool, and it would be nice to have some help in generating the lists directly in the machine (real or virtual) where the games / programs will be launched.

I was thinking of two approaches, based on the system specification:

I have configured mTCP (which also works on 8088 systems) and for now the only obstacle I have found is the use of certificates (https vs http), otherwise I think the following may be feasible:

However, this requires:

I need to do some more research.

cyberluke commented 2 years ago

Yes, that is a good long term approach. There is https://github.com/SuperIlu/DOjS that might be suitable for this.

Me as a retrogamer have two desks with 10 computers, 8 of them connected to one CRT via KVM. So I would not do this on each machine separately, rather than prepare my DB of games and use categories like 386, 486, Pentium and then distribute this on my machines, so I can also performance test some games.

But I don't have time for this long term, I'm already attached on four other opensource projects.

The ultimate idea with networking would be that there would be also chat in rloader and you would see a number of active rloader sessions. Then you would have some Raspberry Pi or Windows 10 or Linux machine acting as IPX to TCP to VPN Internet gateway, so you could play these DOS games online. And downloading screenshots would be only a cherry on top :-)

There should be probably also some simple database for games, so it would know which executable is for setup.exe and which one is for launching the game. You could apply some heuristics based on directory name or title name, of course.

The spirit of this tool is DOS, indeed, but you need to transfer the games to machine somehow. There is no GoG or STEAM for DOS. I have even original big box games on CD and floppy. Sometime floppy does not read anymore and I need to download the game on another computer.

To make working what you describe, it would require whole architecture of components and develop a some kind of enterprise grade integration with custom setup for retro https gateway (SSL) on 2nd machine (Linux, Mac, Win, embedded computers). Then you could have like one click installer and setup and use mTCP. But the scope of this project would be like 1-2 years for development in my personal opinion.

cyberluke commented 2 years ago

BTW: forget HTML parsing, you would use Mobygames API: https://www.mobygames.com/info/api and no regex. You would parse JSON. My daily job is tech lead in enterprise backend integrations. The reason why people mention Mobygames is because they do have web services API.

jsmolina commented 2 years ago

@jsmolina @cyberluke, they are both excellent tools, but both can only be run on modern OS, they can be very useful if combined with RLoader and maybe I could create a RLoader-tools repo where to catalog these utilities, in order to keep this repo easily manageable from DOS.

The spirit of RLoader however is to be a DOS tool, and it would be nice to have some help in generating the lists directly in the machine (real or virtual) where the games / programs will be launched.

I was thinking of two approaches, based on the system specification:

  • for low-end computers it might be useful to scan all folders starting from one or more user-specified paths and, like rloadergen, propose for each folder:

    • list of executables (exe, com or bat) from which to select the program and any configurator, when there is more than one executable
    • list of text files from which to extract the complete game title. Very often there are readme.txt, read.me, readme.1st or similar files that contain the exact title of the program
  • for 286+ computers it would be nice:

I have configured mTCP (which also works on 8088 systems) and for now the only obstacle I have found is the use of certificates (https vs http), otherwise I think the following may be feasible:

  • download the html
  • extract the addresses to be able to visit the individual pages, creating the list of games locally (title + url)
  • take advantage of the same RLoader code used to filter the LIST.TXT file, applying it to the downloaded list, in order to simplify the identification of the game
  • select the screenshots to download as title and in-game (it can be problematic to view the downloaded screenshots, from DOS)
  • in addition, since MobyGames has a lot of information it should be possible to download the game description or other information as well.

However, this requires:

  • the ability to search through regex within the html source to avoid false positives in the url selection.
  • the conversion from html to markdown of the description.

I need to do some more research.

yes sure, the idea of my generator is to skip the tedious process of generating the list + folders just by having the folders in LFN on a modern computer. IMHO, that would save a lot of hours to anyone willing to use this nice launcher.

marco-sacchi commented 2 years ago

@jsmolina @cyberluke, you are both right. A tool that allows the semi-automatic generation of lists would be very useful and in this case it makes no sense to develop it inside RLoader or as an MS-DOS executable.

Surely the possibility of modifying the lists can be useful within RLoader, but for small maintenance changes.

Instead, it makes much more sense to develop a tool that runs on modern systems for building and maintaining lists. Given these premises, it makes even more sense to try to find a development framework that allows you to write the code only once and be able to deploy for Windows, Linux and MacOS systems, at the cost of a larger executable, but without dependencies.

I'm thinking for example of Electron, which is based on chromium, allows you to write code in javascript or typescript and use web technologies, which would also allow simple access to the MobyGames API.

What do you think?

(@cyberluke I didn't see that MobyGames exposed APIs, obviously this makes integration into other applications easier and more consistent.)