Page 1 of 1

Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 11:59 am
by Fred
A new release of Fuse, the Free Unix Spectrum Emulator, is now available at the SourceForge project:

https://sourceforge.net/projects/fuse-emulator/

Highlights of this release include:
  • Emulate ROM bug loading zero length blocks when using tape traps
  • Fix the format of double-sided +3 disks
  • Spectrum reset is accelerated when phantom typist is enabled and a file is loaded from the menu
  • Add options UI for phantom typist
  • GTK+ 3 UI: Memory browser dialog allows to go to specific offset
Many thanks to everyone who's contributed to this release. Source code and binaries for Windows are currently available on the SourceForge site; compiled binaries for various other platforms should become available in the next few days.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 1:01 pm
by PeterJ
Thanks [mention]Fred[/mention], can I ask what phantom typist is?

Double sided +3 Disks will be of great interest to [mention]Nomad[/mention]

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 1:30 pm
by Fred
Hi Peter.
The phantom typist is how tape and disk autoloading works in Fuse since 1.5.0. The new UI just lets you select the mode from the preferences, in case you are using a custom ROM that changes how file loading is done from the default on a machine - e.g. switching from keyword entry o a 48k machine to single letter entry.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 1:52 pm
by Ast A. Moore
PeterJ wrote: Sat Mar 31, 2018 1:01 pm Thanks Fred, can I ask what phantom typist is?
It’s a feature that types the appropriate load commands for each file type/computer model. E.g., if you load a file of the type BYTES, Fuse will reset the machine, then type LOAD ""CODE for you. If it’s a +3, it’ll reset the machine, then select the +3 BASIC menu, then type LOAD "t:", etc.

Previous versions of Fuse, used a series of snapshots with these commands already “typed in,” as it were. That eliminated the wait time associated with the Spectrum performing a reset and the typing. However, snapshots were deemed problematic (because of the number of possible configurations that needed to be stored), so the phantom typist feature was introduced.

This, however, also came with its set of problems, the biggest being the wait times. For developers, who often need to load several versions of their programs in quick succession, this was a real deal breaker, because the amount of time to make a minor change of, say, a parameter in your code and its subsequent assembly was infinitesimally small, compared to the time it took Fuse to reset the machine and type the load command.

As a compromise, Fuse now runs as fast as it can on your computer during reseting+phantom typing.

P.S. I haven’t tested this new version yet, but when phantom typist was first introduced, I had to roll back to the previous version, as my development process virtually ground to a halt (okay, it’s a hyperbole, but you can imagine the frustration).

I’m not sure if the phantom typist can be disabled completely now, as I think the Fuse team abandoned the use of snapshots for good now (don’t quote me on that, though). If that’s the case, it’s too bad—I loved the snappiness of Fuse for development.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 2:22 pm
by Seven.FFF
Yes, those seeming trivial things make a huge difference when you’re rebuilding and rerunning hundreds or thousand times a day. Even worse is when the machine has a flash loader and/or esxdos loader on boot.

It’s a trade off between emulation accuracy and developer workflow, and not all emulators have a developer workflow.

Stuffing bytes directly in memory is my favourite - the least accurate and most dev-friendly of all :)

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 2:41 pm
by Ast A. Moore
Seven.FFF wrote: Sat Mar 31, 2018 2:22 pm not all emulators have a developer workflow.
Word, man!
Seven.FFF wrote: Sat Mar 31, 2018 2:22 pmStuffing bytes directly in memory is my favourite - the least accurate and most dev-friendly of all :)
Well, Mathew Smith used this method for Manic Miner. He typed and assembled the code on his TRS-80 (I believe), and then shoved the binary data directly into Speccy’s memory via a custom edge-connector interface.

Still, I’m quite happy with my current workflow: hit Command-Option-R in TextMate and boom—the resulting TAP file opens in Fuse virtually instantaneously. Command-Tab back to TextMate, change a value, hit Command-Option-R again. Happens faster than you can say, “Oh, snap!” You can imagine how infuriating the whole phantom typist thing is for me.

Casual gamers must be delighted, though. Especially those who favor all the ten early titles that made you type LOAD ""CODE instead of the usual LOAD "". :lol:

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 3:13 pm
by Seven.FFF
Heh, yes. Stuffing bytes has a few subtle gotchas. Mostly that the machine doesn’t get reset every time. My loader that listens for new code is an earlier version of the game, so sometimes when you change stuff, the end result is a mixture of the old and new versions.

On the bonus side, that's exactly what you need to point out those subtle init bugs, as EsxDOS also lets you load over the top of something else that’s already running.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 3:14 pm
by Seven.FFF
Heh, yes. Stuffing bytes has a few subtle gotchas. Mostly that the machine doesn’t get reset every time. My loader that listens for new code is an earlier version of the game, so sometimes when you change stuff, the end result is a mixture of the old and new versions.

On the bonus side, that's exactly what you need to point out those subtle init bugs, as EsxDOS also lets you load over the top of something else that’s already running.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 3:16 pm
by Seven.FFF
I’d really like to get an edge interface working on the Omni too. Something with a parallel port and custom interrupt that could load code even if there wasn’t a listener already running.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 3:36 pm
by serbalgi
Ast A. Moore wrote: Sat Mar 31, 2018 1:52 pm P.S. I haven’t tested this new version yet, but when phantom typist was first introduced, I had to roll back to the previous version, as my development process virtually ground to a halt (okay, it’s a hyperbole, but you can imagine the frustration).

I’m not sure if the phantom typist can be disabled completely now, as I think the Fuse team abandoned the use of snapshots for good now (don’t quote me on that, though). If that’s the case, it’s too bad—I loved the snappiness of Fuse for development.
I think you can still use the old autoload snapshots on a dev workflow:

Code: Select all

fuse tape_48.szx --tape your_tape.tap
Choose the autoload snapshot from an old version or here:
https://sourceforge.net/p/fuse-emulator ... compressed

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 4:04 pm
by Guesser
Double sided disk images are still somewhat counter-intuitive to use. You need to set the drive options to be a double sided drive to create both sides of the disk (format, flip it, format again). That image will then work with a single head drive (both sides must be formatted though or saving the image fails with bad geometry).
It would be nice if the act of flipping a single sided disk in a single sided drive added the second side, but I guess that could be difficult to achieve.

It also still creates a file with two side 0s. Side 1 of a double sided disk image can't be formatted by fuse by flipping the disk as far as I can see.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 4:12 pm
by Ast A. Moore
serbalgi wrote: Sat Mar 31, 2018 3:36 pm I think you can still use the old autoload snapshots on a dev workflow:

Code: Select all

fuse tape_48.szx --tape your_tape.tap
Choose the autoload snapshot from an old version or here:
https://sourceforge.net/p/fuse-emulator ... compressed
Thanks. That’s too convoluted, though, but I might give it a shot, after Fred cooks up v1.5.2 for macOS.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 7:46 pm
by dfzx
Ast A. Moore wrote: Sat Mar 31, 2018 4:12 pm
serbalgi wrote: Sat Mar 31, 2018 3:36 pm I think you can still use the old autoload snapshots on a dev workflow:

Code: Select all

fuse tape_48.szx --tape your_tape.tap
Choose the autoload snapshot from an old version or here:
https://sourceforge.net/p/fuse-emulator ... compressed
Thanks. That’s too convoluted, though, but I might give it a shot, after Fred cooks up v1.5.2 for macOS.
I've just built and tested fuse 1.5.2 for Linux. I thought I might time a drag and drop load so you'll know what to expect. Truth is, with the "phantom typist" in working in "auto mode" (whatever that is) it's too fast to time. You don't actually see the typing like you used to; you don't actually see anything happen in the Spectrum window. It looks like they've optimised it by turning off the screen updates or something.

Assuming the Mac version you're after is the same as the Linux version, I think you'll like it. :)

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 8:39 pm
by PeterJ
HI [mention]Fred[/mention] I just tried to download from Sourceforge and got an error on the Windows Setup:

The "/fuse/1.5.2/fuse-1.5...5.2-win32-setup.exe" file could not be found or is not available. Please select another file.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 9:04 pm
by Ast A. Moore
dfzx wrote: Sat Mar 31, 2018 7:46 pm with the "phantom typist" in working in "auto mode" (whatever that is) it's too fast to time. You don't actually see the typing like you used to; you don't actually see anything happen in the Spectrum window. It looks like they've optimised it by turning off the screen updates or something.

Assuming the Mac version you're after is the same as the Linux version, I think you'll like it. :)
Thanks for the info, man! I sure hope so, as I’m really used to seeing my program already running by the time the OS switches focus from the text editor to Fuse. Fuse for macOS is a special beast, though. Pretty much a standalone app and not a port. I think Fred builds it using the latest Fuse source as a base, and puts a lot of extra effort into making it a native macOS application. So, we’ll see.

Re: Fuse 1.5.2 released

Posted: Sat Mar 31, 2018 11:19 pm
by Fred
PeterJ wrote: Sat Mar 31, 2018 8:39 pm HI @Fred I just tried to download from Sourceforge and got an error on the Windows Setup:

The "/fuse/1.5.2/fuse-1.5...5.2-win32-setup.exe" file could not be found or is not available. Please select another file.
Hi @PeterJ, I just checked the download and it was OK - could you try again to see if the problem is resolved?

Re: Fuse 1.5.2 released

Posted: Sun Apr 01, 2018 9:06 am
by serbalgi
Guesser wrote: Sat Mar 31, 2018 4:04 pm Double sided disk images are still somewhat counter-intuitive to use. You need to set the drive options to be a double sided drive to create both sides of the disk (format, flip it, format again). That image will then work with a single head drive (both sides must be formatted though or saving the image fails with bad geometry).
That's pretty much the process. A future version will warn when trying to save unformatted sides to DSK images. An UDI format can save unformatted tracks.
It would be nice if the act of flipping a single sided disk in a single sided drive added the second side, but I guess that could be difficult to achieve.
Thanks, it's a nice idea to consider.
It also still creates a file with two side 0s. Side 1 of a double sided disk image can't be formatted by fuse by flipping the disk as far as I can see.
I'm not sure that's an issue to fix. Tracks of both sides are correctly stored in the DSK image, but tracks are formatted by +3DOS and the ID address mark that precedes every sector are always set as head 0:

Code: Select all

DD FORMAT
016Ch (364)
Format a track. (Uses the uPD765A format track command.)

Buffer contains 4 bytes for each sector as follows:
    C - Track number (0...39)
    H - Head number (always 0 on the +3's single-sided drives)
    R - Sector number (0...255)
    N - Log2(sector size)-7 (2 for 512 byte sectors)
DU54 is able to format tracks on double sided drives with correct marks.

Also, I guess your version of Spin Disk Manager use the first address mark to name the side (couldn't found that version). Newer versions of Disk Image Manager use the information in the image rather than the address marks.

Re: Fuse 1.5.2 released

Posted: Sun Apr 01, 2018 1:02 pm
by Guesser
serbalgi wrote: Sun Apr 01, 2018 9:06 am Also, I guess your version of Spin Disk Manager use the first address mark to name the side (couldn't found that version). Newer versions of Disk Image Manager use the information in the image rather than the address marks.
I thought I was using the latest version. It's entirely possible I'm using it incorrectly though :)

It's not an important problem, just noting that disk images formatted double sided can't be reformatted to single sides in fuse.
Since I doubt anyone is emulating double sided 40 track drives in anger it's rather irrelevant. :)

Re: Fuse 1.5.2 released

Posted: Mon Apr 02, 2018 4:26 pm
by PeterJ
Fred wrote: Sat Mar 31, 2018 11:19 pm Hi [mention]PeterJ[/mention] , I just checked the download and it was OK - could you try again to see if the problem is resolved?
Thanks [mention]Fred[/mention] now working fine. Cheers

Re: Fuse 1.5.2 released

Posted: Mon Apr 30, 2018 9:05 pm
by Einar Saukas
Hi [mention]Fred[/mention], may I provide another suggestion for improvement?

When users save a screenshot, it's always their intention to obtain an accurate copy of whatever they are seeing on screen. However that's not what happens in practice. Every emulator I know will simply dump a copy of memory content from screen area starting at 16384. The problem is, quite often this content doesn't correspond to currently visible screen, because the program may have already started to modify screen area in preparation for the next screen. There's a reasonable chance the saved screenshot will contain parts of the current frame mixed with parts of the next frame.

It would be more accurate to "remember" exactly the bytes that produced each piece of the current screen, and save those instead. Fuse is already managing this information anyway for saving MLT screenshots, so it should be trivial to use it for regular screenshots (SCR or otherwise) too.

Games that update screen at 50Hz will mostly benefit from this feature. It's very hard to save a proper SCR image of those games, that won't show parts of 2 different images.

The only drawback is, if users save a screenshot immediately after loading a snapshot, the emulator won't have the same detailed information about generating current screen. In this case only, it can simply fallback into saving a memory dump of the screen memory area. But that's nothing new, really. Try pausing any emulator, then loading a multicolor game, for instance. The screen will appear distortrd, because the emulator won't know how to reconstitute current screen, until running the program for another frame.

Re: Fuse 1.5.2 released

Posted: Tue May 01, 2018 11:19 am
by Fred
Hi [mention]Einar Saukas[/mention] ,

Yes, that should be fairly straightforward to do as basically writing out the first row of each MLT attribute line as the attribute for the SCR - note that there may be some glitches at some points as the real breakdown of the screen image is the MLT image.

I've added your feature request to the Fuse sourceforge tracker here: https://sourceforge.net/p/fuse-emulator ... uests/127/.

Re: Fuse 1.5.2 released

Posted: Tue May 01, 2018 1:51 pm
by Einar Saukas
Thank you!!!

Re: Fuse 1.5.2 released

Posted: Fri May 11, 2018 1:41 pm
by Fred
And it's now implemented for the next release.

Re: Fuse 1.5.2 released

Posted: Fri May 11, 2018 3:04 pm
by Einar Saukas
Fred wrote: Fri May 11, 2018 1:41 pm And it's now implemented for the next release.
Awesome!!!