Fuse 1.5.2 released

Struggling with Fuse or trying to find an emulator with a specific feature. Ask your questions here.
Post Reply
User avatar
Fred
Drutt
Posts: 38
Joined: Tue Feb 27, 2018 3:15 am

Fuse 1.5.2 released

Post 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.
User avatar
PeterJ
Site Admin
Posts: 6852
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: Fuse 1.5.2 released

Post 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]
User avatar
Fred
Drutt
Posts: 38
Joined: Tue Feb 27, 2018 3:15 am

Re: Fuse 1.5.2 released

Post 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.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: Fuse 1.5.2 released

Post 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.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
User avatar
Seven.FFF
Manic Miner
Posts: 735
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Fuse 1.5.2 released

Post 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 :)
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
NXtel NXTP ESP Update ESP Reset CSpect Plugins
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: Fuse 1.5.2 released

Post 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:
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
User avatar
Seven.FFF
Manic Miner
Posts: 735
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Fuse 1.5.2 released

Post 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.
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
NXtel NXTP ESP Update ESP Reset CSpect Plugins
User avatar
Seven.FFF
Manic Miner
Posts: 735
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Fuse 1.5.2 released

Post 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.
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
NXtel NXTP ESP Update ESP Reset CSpect Plugins
User avatar
Seven.FFF
Manic Miner
Posts: 735
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Fuse 1.5.2 released

Post 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.
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
NXtel NXTP ESP Update ESP Reset CSpect Plugins
serbalgi
Drutt
Posts: 27
Joined: Sat Jan 06, 2018 11:13 am

Re: Fuse 1.5.2 released

Post 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
User avatar
Guesser
Manic Miner
Posts: 639
Joined: Wed Nov 15, 2017 2:35 pm
Contact:

Re: Fuse 1.5.2 released

Post 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.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: Fuse 1.5.2 released

Post 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.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
dfzx
Manic Miner
Posts: 673
Joined: Mon Nov 13, 2017 6:55 pm
Location: New Forest, UK
Contact:

Re: Fuse 1.5.2 released

Post 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. :)
Derek Fountain, author of the ZX Spectrum C Programmer's Getting Started Guide and various open source games, hardware and other projects, including an IF1 and ZX Microdrive emulator.
User avatar
PeterJ
Site Admin
Posts: 6852
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: Fuse 1.5.2 released

Post 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.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: Fuse 1.5.2 released

Post 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.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
User avatar
Fred
Drutt
Posts: 38
Joined: Tue Feb 27, 2018 3:15 am

Re: Fuse 1.5.2 released

Post 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?
serbalgi
Drutt
Posts: 27
Joined: Sat Jan 06, 2018 11:13 am

Re: Fuse 1.5.2 released

Post 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.
User avatar
Guesser
Manic Miner
Posts: 639
Joined: Wed Nov 15, 2017 2:35 pm
Contact:

Re: Fuse 1.5.2 released

Post 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. :)
User avatar
PeterJ
Site Admin
Posts: 6852
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: Fuse 1.5.2 released

Post 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
User avatar
Einar Saukas
Bugaboo
Posts: 3070
Joined: Wed Nov 15, 2017 2:48 pm

Re: Fuse 1.5.2 released

Post 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.
User avatar
Fred
Drutt
Posts: 38
Joined: Tue Feb 27, 2018 3:15 am

Re: Fuse 1.5.2 released

Post 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/.
User avatar
Einar Saukas
Bugaboo
Posts: 3070
Joined: Wed Nov 15, 2017 2:48 pm

Re: Fuse 1.5.2 released

Post by Einar Saukas »

Thank you!!!
User avatar
Fred
Drutt
Posts: 38
Joined: Tue Feb 27, 2018 3:15 am

Re: Fuse 1.5.2 released

Post by Fred »

And it's now implemented for the next release.
User avatar
Einar Saukas
Bugaboo
Posts: 3070
Joined: Wed Nov 15, 2017 2:48 pm

Re: Fuse 1.5.2 released

Post by Einar Saukas »

Fred wrote: Fri May 11, 2018 1:41 pm And it's now implemented for the next release.
Awesome!!!
Post Reply