ZX ULAX emulator

Struggling with Fuse or trying to find an emulator with a specific feature. Ask your questions here.
Post Reply
User avatar
PeterJ
Site Admin
Posts: 6855
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: ZX ULAX emulator

Post by PeterJ »

[mention]akeley[/mention],

May I work with you to get one game working? In this case 'Slightly Magic'? I do note that you have worked with computers as long as myself (I started as a computer technician when the College I was at still had a BBC Micro network!), and I also had problems to start with.

This guide tries to cover every mouse click. I'm using Windows 10 Pro. I set-up explorer so I have file types showing.

So without further ado....
  • Start by downloading 'ULAX-emuL.zip' and 'ULAX-games.zip'
  • When you have unzipped both files you should have two folders. 'ULAX-emuL' and 'ULAX-games'. Open up each folder in its own explorer window. Resize both windows so they are both visible. I put one below the other.
  • In the 'ULAX-emuL' explorer window change to the 'exe' folder
  • In the 'ULAX-games' explorer window change to the 'dux' folder
  • Scroll down the 'dux' folder until you see 'slimagic.dux' and 'slimagic.sna'
  • Left click on one of the above files, then hold down the left Ctrl key and click on the second file, so both files are selected. Release the Ctrl key.
  • With the left mouse button drag both selected files so they are on-top of emul.exe in the other window, then release the mouse button. See example below - Make sure two files are being moved:
Image
  • The emulator will now open with the '128 TR-DOS' menu
  • Make sure that the emulator is in-focus by clicking on it's top border with the left mouse key. Next we need the keys from the instructions (This is why show file extensions is important - we know this is a .sna file):

    Image
  • Now press the 'End' key and the game will appear
  • Finally press 'PgDn' to load the multi-colour dux
Image

I'm happy to try any other games if anyone else is struggling
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

Thanks, [mention]PeterJ[/mention]! I'm not so patient to explain everything down to standard windows interface level or Spectrum basics besides the emulator itself (and i hate preparing and editing illustrations). Only a few things in addition:

- starting the emulator by dragging files on it works in standard explorer, but not necessarily in other apps like commanders

- but that's not a problem as it's possible to drag&drop source files onto the working emulator window any time
⠀ (the only ones accepted exclusively at the startup are "extra ini" name and a log name)

- you don't have to drag both (or more) files at once, the emulator remembers the last filename of the each type (snapshot, tape, dux, etc)
⠀ (and in case of disk images, it inserts a given image in drive A shifting previous images to other drives, losing the one located in drive D)

- same about command-line parameters - the last one of the each type will be used (if it's a disk - inserted in the drive A)

- types are recognized by the file extension, order of the different types dragged (or given in a command line) is not important

- control keys, especially alt-combos, might not work as expected (or at all) when alternative keyboard layout is being used
⠀ (this is how windows and/or SDL works, with unpredictable results, couldn't do anything with it, so always use the english one) ;)

- and of course when pressing some control key (well, any key) the emulator must be in-focus, like any other windows app
User avatar
PeterJ
Site Admin
Posts: 6855
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: ZX ULAX emulator

Post by PeterJ »

Thanks [mention]Lethargeek[/mention],

Preparing documentation is part of my work job. There are many ways of doing things in Windows :-)

I'm doing everything on a standard windows vanilla install with a UK English keyboard layout.
Lethargeek wrote: Wed May 27, 2020 10:18 am I hate preparing and editing illustrations.
The Windows Snipping Tool is the best application Microsoft ever built!
User avatar
RMartins
Manic Miner
Posts: 776
Joined: Thu Nov 16, 2017 3:26 pm

Re: ZX ULAX emulator

Post by RMartins »

From my view, the problem seem to lay on the assumptions that each type of user makes (developer, regular user, power user, etc...).

Instead of relaying on any assumption (and I know this is difficult to do, because we do not realise easily that we are assuming stuff, because they are so obvious to the person assuming them), a manual or README file should not, i.e. MUST not assume any prior knowledge, and simply list every single step required, no matter how obvious it is, to do some specific action.

This way, that manual will work for any user, without problems.

As a developer myself, I find that sometimes I do these assumptions unwillingly too, even when I'm trying to be as thorough as possible.
Usually the real test, is to grab someone completely unrelated with the project or even computers in general, hand them the manual and a goal.
Then lay back and watch, without intervention and see where and how they struggle.
User avatar
PeterJ
Site Admin
Posts: 6855
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: ZX ULAX emulator

Post by PeterJ »

Hopefully my tutorial covered that [mention]RMartins[/mention].
User avatar
RMartins
Manic Miner
Posts: 776
Joined: Thu Nov 16, 2017 3:26 pm

Re: ZX ULAX emulator

Post by RMartins »

PeterJ wrote: Wed May 27, 2020 12:11 pm Hopefully my tutorial covered that @RMartins.
Yes and no.

It covers on how to provide the argument files to the executable, but apparently that is not the only thing that is needed.

NOTE: I haven't tried it or even read the manual. I was just stating, how I usually go about to make it more "user proof" :D
User avatar
PeterJ
Site Admin
Posts: 6855
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: ZX ULAX emulator

Post by PeterJ »

RMartins wrote: Wed May 27, 2020 3:22 pm It covers on how to provide the argument files to the executable, but apparently that is not the only thing that is needed.
NOTE: I haven't tried it or even read the manual. I was just stating, how I usually go about to make it more "user proof" :D
There are multiple ways as [mention]Lethargeek[/mention] says, but that completely covers one way. To load that specific game there is nothing else you need to know. Please give it a go.
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

RMartins wrote: Wed May 27, 2020 12:06 pm Instead of relaying on any assumption (and I know this is difficult to do, because we do not realise easily that we are assuming stuff, because they are so obvious to the person assuming them), a manual or README file should not, i.e. MUST not assume any prior knowledge, and simply list every single step required, no matter how obvious it is, to do some specific action.
Right now it's an emulator readme, and it covers just the emulator part. Do you understand how much it will grow in size if i try to teach modern basic computer literacy (there are several ways just to supply files as parameters in Windows!) there as well as the emulated machine controls (like the inlays of the old days explaining how to type two quotation marks after LOAD)? And some people already don't wanna read even something a lot shorter.
RMartins wrote: Wed May 27, 2020 3:22 pm It covers on how to provide the argument files to the executable, but apparently that is not the only thing that is needed.
See? This is what i mean. This time it looks like you didn't read [mention]PeterJ[/mention]'s excellent message to the end. :lol: :cry:
User avatar
RMartins
Manic Miner
Posts: 776
Joined: Thu Nov 16, 2017 3:26 pm

Re: ZX ULAX emulator

Post by RMartins »

Lethargeek wrote: Wed May 27, 2020 5:06 pm
RMartins wrote: Wed May 27, 2020 12:06 pm Instead of relaying on any assumption (and I know this is difficult to do, because we do not realise easily that we are assuming stuff, because they are so obvious to the person assuming them), a manual or README file should not, i.e. MUST not assume any prior knowledge, and simply list every single step required, no matter how obvious it is, to do some specific action.
Right now it's an emulator readme, and it covers just the emulator part. Do you understand how much it will grow in size if i try to teach modern basic computer literacy (there are several ways just to supply files as parameters in Windows!) there as well as the emulated machine controls (like the inlays of the old days explaining how to type two quotation marks after LOAD)? And some people already don't wanna read even something a lot shorter.
You are not listening.
I didn't even mention windows anywhere.

The stuff that you are assuming, is how the emulator works due to your own choices, that users are not supposed to know.
You clarified it here in the comments, on previous posts, but most probably your README is not clear enough about the process, or people wouldn't be complaining.

NOTE: Again, I haven't read the README/Manual. So I'm only commenting on people reactions to it's contents.

Lethargeek wrote: Wed May 27, 2020 5:06 pm
RMartins wrote: Wed May 27, 2020 3:22 pm It covers on how to provide the argument files to the executable, but apparently that is not the only thing that is needed.
See? This is what i mean. This time it looks like you didn't read @PeterJ's excellent message to the end. :lol: :cry:
Maybe you are too eager to jump on people, without first trying to understand the context.

I for one, was replying based on content I saw on the previous page, I didn't even see this page, while I was writing my post.
So don't be too quick to jump to conclusions.
User avatar
PeterJ
Site Admin
Posts: 6855
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: ZX ULAX emulator

Post by PeterJ »

To be fair to [mention]Lethargeek[/mention], to get English language documentation from a Russian speaker is very pleasing. Only a few people have reported issues.
User avatar
RMartins
Manic Miner
Posts: 776
Joined: Thu Nov 16, 2017 3:26 pm

Re: ZX ULAX emulator

Post by RMartins »

Lethargeek wrote: Wed May 27, 2020 5:06 pm
RMartins wrote: Wed May 27, 2020 3:22 pm It covers on how to provide the argument files to the executable, but apparently that is not the only thing that is needed.
See? This is what i mean. This time it looks like you didn't read @PeterJ's excellent message to the end. :lol: :cry:
If after reading @PeterJ's excelente message to the end, you don't realise you have an UI issue, you are too deep into the code and technical details and not the UI experience it provides.
User avatar
RMartins
Manic Miner
Posts: 776
Joined: Thu Nov 16, 2017 3:26 pm

Re: ZX ULAX emulator

Post by RMartins »

Lethargeek wrote: Wed May 27, 2020 1:32 am ... SOME emulators might have disk/tape autostart but not all and it doesn't work properly every time. Okay, most (if not all) other emulators run a snapshot immediately as the name is selected but there are use cases when it's not desired or inconvenient so i decided to actually run it with a hotkey at the right moment.

Same about running a corresponding dux driver.
...
I'm going to go on a limb here and give you some advice on this particular issue from an UI perspective.

It seems, to me, that those particular choices you made is what is breaking the UI principle of least surprise.
When you run a command in the command line, you don't expect the parameters to not have any immediate effect.

So telling the emulator "here are the files to load" but nothing actually happening (in visual terms, i.e. no application running) it will make the users doubt if the first step was correct or they missed something.

It also makes it a lot harder to automate launching a game using your emulator. i.e. you need some way to inject key presses to it, to make it work as expected.

If you really need to not have the application start for development purposes or similar special or power user cases, then make it configurable and most importantly NOT the default behaviour.

So provide an extra parameter, -noLaunch, -noRun, or whatever you find suitable, so that the default behaviour is what the user expects.
The developer (you) or power Users that need the special case, can then use this new parameter to force that behaviour.

My long UI 2 cents.
I hope it is helpful.
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

RMartins wrote: Wed May 27, 2020 9:39 pm You are not listening.
I didn't even mention windows anywhere.
And you are not reading even your own messages it seems. You didn't mention windows, but your words imply much more than just windows:
RMartins wrote: Wed May 27, 2020 12:06 pm Instead of relaying on any assumption (and I know this is difficult to do, because we do not realise easily that we are assuming stuff, because they are so obvious to the person assuming them), a manual or README file should not, i.e. MUST not assume any prior knowledge, and simply list every single step required, no matter how obvious it is, to do some specific action.
ANY prior knowledge, EVERY SINGLE STEP required, NO MATTER HOW OBVIOUS it is
Your words. Or did YOU just assume any prior knowledge of how one must interpret them?
RMartins wrote: Wed May 27, 2020 9:39 pm Maybe you are too eager to jump on people, without first trying to understand the context.

I for one, was replying based on content I saw on the previous page, I didn't even see this page, while I was writing my post.
So don't be too quick to jump to conclusions.
Oh my... i'm really getting tired of people blaming ME for THEIR faults. What the previous page has even to do with it?
First, you were quoting [mention]PeterJ[/mention]'s message about the tutorial located on the same page, not on the previous one, here:
RMartins wrote: Wed May 27, 2020 3:22 pm
PeterJ wrote: Wed May 27, 2020 12:11 pm Hopefully my tutorial covered that @RMartins.
Yes and no.

It covers on how to provide the argument files to the executable, but apparently that is not the only thing that is needed.
Second, in your reply to this quote it was YOU so eager jumping to the conclusion that is obviously wrong for anyone who had read the tutorial mentioned. This is why i said looks like you didn't read it.
RMartins wrote: Wed May 27, 2020 9:44 pm If after reading @PeterJ's excelente message to the end, you don't realise you have an UI issue, you are too deep into the code and technical details and not the UI experience it provides.
His message is a tutorial. These are being written for any app no matter ho much advanced the UI. The problem is rather people not realising that in multitasking environment you can have any UI you want.
Last edited by Lethargeek on Wed May 27, 2020 11:06 pm, edited 1 time in total.
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

RMartins wrote: Wed May 27, 2020 9:56 pm I'm going to go on a limb here and give you some advice on this particular issue from an UI perspective.

It seems, to me, that those particular choices you made is what is breaking the UI principle of least surprise.
A surprise comes out of the wrong expectations. I'm not responsible for the expectations of the other people. Especially when they don't read the files telling them exactly what to expect (and not telling what to not expect).
RMartins wrote: Wed May 27, 2020 9:56 pm When you run a command in the command line, you don't expect the parameters to not have any immediate effect.
If it's a non-interactive app, so not the case here. And actually, not even then - for example, specifying several output file names for the compiler doesn't make all of them appear every time. Also there IS an immediate effect - replacing and remembering the given name(s) :P

And the same actually happens when you open a tape or disk image in many other emulators. You still usually need to do some extra actions to load it. So why it should be much different just for the one and only source type? Do tell about the unexpected!
RMartins wrote: Wed May 27, 2020 9:56 pm So telling the emulator "here are the files to load" but nothing actually happening (in visual terms, i.e. no application running) it will make the users doubt if the first step was correct or they missed something.
Why? The only cause i see here is "because they didn't read the manual". A very short manual. Never promising a load happens immediately.
RMartins wrote: Wed May 27, 2020 9:56 pm It also makes it a lot harder to automate launching a game using your emulator. i.e. you need some way to inject key presses to it, to make it work as expected.

If you really need to not have the application start for development purposes or similar special or power user cases, then make it configurable and most importantly NOT the default behaviour.
Again, these are YOUR expectations. You just want YOUR use case to be default. As for me, i'm not making it any "special" case, but providing the most flexible method at least (and very fast as well). And you can't automate launching every game anyway, not every one is a snapshot (and there are complications for snapshots considering the colorization). Also what's the problem really? Is pressing a few extra keys so hard for you? You will have to press so much more in the game, so the difference is negligible.
RMartins wrote: Wed May 27, 2020 9:56 pm So provide an extra parameter, -noLaunch, -noRun, or whatever you find suitable, so that the default behaviour is what the user expects.
The developer (you) or power Users that need the special case, can then use this new parameter to force that behaviour.
maybe the opposite (definitely NOT doing running a snapshot as default!)
and it's very low priority as it seems really superfluous even next to other possible bells and whistles
Last edited by Lethargeek on Wed May 27, 2020 11:04 pm, edited 1 time in total.
User avatar
MonkZy
Manic Miner
Posts: 278
Joined: Thu Feb 08, 2018 1:01 pm

Re: ZX ULAX emulator

Post by MonkZy »

Hi [mention]Lethargeek[/mention] ,

Great project!

I am a Linux user so I have tested your emulator using Wine. The emulator works in both the original mode and the extra colour mode and looks amazing!

I do have a problem with sound which I am trying to solve, so I have a question. Do you use openAL for sound in your emulator?
AndyC
Dynamite Dan
Posts: 1388
Joined: Mon Nov 13, 2017 5:12 am

Re: ZX ULAX emulator

Post by AndyC »

Lethargeek wrote: Wed May 27, 2020 10:58 pm Again, these are YOUR expectations. You just want YOUR use case to be default. As for me, i'm not making it any "special" case, but providing the most flexible method at least (and very fast as well). And you can't automate launching every game anyway, not every one is a snapshot (and there are complications for snapshots considering the colorization). Also what's the problem really? Is pressing a few extra keys so hard for you? You will have to press so much more in the game, so the difference is negligible.
Windows has a bunch of conventions for how applications work for precisely this reason. If you choose to go down a very different route and break those conventions, then yes you really are going to have to expect to explain how it works over and over again because people will always make reasonable assumptions based on how things usually work. Getting angry at them because they struggle to follow the instructions in a text file is never going to change that.

At the end of the day, it's your application to do with as you please. However if the goal is to show of your hardware technique and get people interested in investing time on upgrading games then it may very well reward you more to bring some simplicity and convention to the interface, even if it isn't as fast for you personally.
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

MonkZy wrote: Wed May 27, 2020 11:02 pm Hi @Lethargeek ,

Great project!

I am a Linux user so I have tested your emulator using Wine. The emulator works in both the original mode and the extra colour mode and looks amazing!

I do have a problem with sound which I am trying to solve, so I have a question. Do you use openAL for sound in your emulator?
Hi, glad you like it! I do everything with just basic SDL, both sound and video. I know people are having sound problems under wine, but i'm not competent enough to solve it. I remember one guy on the russian forum was able to fix the sound (at least for himself) with some reconfiguring, maybe i will find it now but no promises.
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

AndyC wrote: Wed May 27, 2020 11:11 pm Windows has a bunch of conventions for how applications work for precisely this reason. If you choose to go down a very different route and break those conventions, then yes you really are going to have to expect to explain how it works over and over again because people will always make reasonable assumptions based on how things usually work. Getting angry at them because they struggle to follow the instructions in a text file is never going to change that.
i'm not aware of any official convention demanding every command line parameter or dropped file to make an immediately visible effect
AndyC wrote: Wed May 27, 2020 11:11 pm At the end of the day, it's your application to do with as you please. However if the goal is to show of your hardware technique and get people interested in investing time on upgrading games then it may very well reward you more to bring some simplicity and convention to the interface, even if it isn't as fast for you personally.
But the intended hardware was never supposed to be operated exactly like the emulator. There is now one example of possible "real" release in the ULAX-emuL archive (test\elopulax.scl), just to give a taste of it. Basically you just load a disked game as usual, it's will run some code to preload the driver, then the game, and then the driver will be activated at the right moment. But it will need a converter tool to automate making such a release, and it's not ready yet (and even the exact hardware interface logic isn't decided).
Last edited by Lethargeek on Wed May 27, 2020 11:27 pm, edited 1 time in total.
User avatar
MonkZy
Manic Miner
Posts: 278
Joined: Thu Feb 08, 2018 1:01 pm

Re: ZX ULAX emulator

Post by MonkZy »

[mention]Lethargeek[/mention] ,

I guessed it was a Linux issue. OpenAL is not used much on windows. I will figure it out :D

For reference :

On Linux, download the emulator and games from the links in the opening post (i use google drive)

Create a folder and place the contents of the 'exe' folder from ULAX-emuL.zip

Copy the game files you wish to play into the same folder, include both the .sna and the .dux files.

In a terminal, navigate to the emulator directory and launch the emulator.

Code: Select all

cd ~/path/to/emulator
wine emuL.exe game.sna game.dux
The emulator will start in 128K TR-DOS. Press 'End' to load the snapshot. Press 'PG DN' to switch to enhanced graphics (.dux).
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

MonkZy wrote: Wed May 27, 2020 11:26 pm Copy the game files you wish to play into the same folder, include both the .sna and the .dux files.
i myself prefer not to mix the game files and the emulator files in the same folder, but whatever works for you :)
User avatar
MonkZy
Manic Miner
Posts: 278
Joined: Thu Feb 08, 2018 1:01 pm

Re: ZX ULAX emulator

Post by MonkZy »

You are right, of course :D Keeps it simple for typing the command :oops:
User avatar
MonkZy
Manic Miner
Posts: 278
Joined: Thu Feb 08, 2018 1:01 pm

Re: ZX ULAX emulator

Post by MonkZy »

I have solved the Linux sound issue. I had to install some windows audio drivers (xact).

Code: Select all

winetricks xact
Emulator works 100% under wine. Fantastic!
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

[mention]Sokurah[/mention] - i updated Dingo to 1.3 and improved it a bit (thrown fruits are now properly repainted with 2 colors)

Also found a bug with the bonus fruit info we talked about - when getting a new life, it becomes corrupted, as the top symbol row and 2 top attribute rows are overwritten. I fixed it with temporary memory protection trick, but the fix only works in the FULL color mode of course.
User avatar
MonkZy
Manic Miner
Posts: 278
Joined: Thu Feb 08, 2018 1:01 pm

Re: ZX ULAX emulator

Post by MonkZy »

I have written a short shell script to make loading games simpler under Linux/WINE. Simply use the file selection GUI to navigate to the snapshot of the game you wish to launch and double-click it.

Code: Select all

#! /bin/sh

filename=$(zenity --file-selection --title "Select a Snapshot" --file-filter='*.sna *.scl')
dux="${filename%sna}dux"
wine emuL.exe $filename $dux
The .dux file must have the same prefix as the .sna/.scl snapshot files for this script to work. This will involve renaming/duplicating a few of the files in the example games folder.

Today, I am mostly playing Wheelie with no colour clash.

[edit] This script must be launched from the emulator folder!
User avatar
Lethargeek
Manic Miner
Posts: 734
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

[mention]MonkZy[/mention], scl is not a snapshot but a disk image (a cut down version of trd) and fdi format is supported as well
and besides a sna there might be a z80 snapshot or even a tap image (not in the current game pack but possible)
also with (or instead of) dux there might be a xna (VRAM snapshot) alongside its sna (a pair of quicksave files renamed)

so i think the complete code script should look like this

Code: Select all

#! /bin/sh

filename=$(zenity --file-selection --title "Select a Snapshot" --file-filter='*.sna *.z80 *.tap *.scl *.trd *.fdi')
dux="${filename%sna}dux"
xna="${filename%sna}xna"
wine emuL.exe $filename $dux $xna
(not sure if it still works if either dux or xna is absent) :)
Post Reply