Joined: 1/24/2018
Posts: 304
Location: Stafford, NY
Asnivor wrote:
I guess quality control wasnt great back then :)
As I've mentioned previously, there are plenty of examples on the ZX Spectrum of buggy and broken games. Doing your research "homework" before reporting a bug is very important here!
c-square wrote:
Yes, standard runs are needed and very appreciated here too
Dylon Stejakoski wrote:
Me and the boys starting over our games of choice for the infinityieth time in a row because of just-found optimizations
^ Why I don't have any submissions despite being on the forums for years now...
I keep testing games.
OutRun works very well (the disk version, the tzx versions I tested seemed to load indefinitely), but there is no function yet to change the disk it seems to me?
Besides, would it be possible when this is implemented, and also for tap and tzx to add an option to change the disk in the "ZX Spectrum" menu as is the case for Commodore 64 (C64 > Disks) in addition to hotkeys in the Datacoder menu?
And I think the movie files are still counted on a 60fps basis and not 50. I don't know if you did anything about it or not.
I've seen that you've made some more changes in the last few hours, I'll try some games with Alkatraz protection (it seems to me that the only game listed with Alkatraz 2 protection is Outrun Europa on WoS, I started but not finished yet, but it's playable. And I saw that there's a hack version that adds color).
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
phoenix1291 wrote:
I keep testing games.
OutRun works very well (the disk version, the tzx versions I tested seemed to load indefinitely), but there is no function yet to change the disk it seems to me?
Correct, I was going to do that once I got my head out of all the different copy protections.
...Which, I *THINK* I have done in the latest dev release just now :)
If you find any dsk games that don't load, please let me know.
Anyway, I should hopefully have multiple disks supported at some point tomorrow. Initially, it will be the same deal as the tapes. You create an xml using the multi-disk bundler tool, then there will be configurable keys for 'Next Disk' and 'Previous Disk'. When asked to change disks (or turn the disk over) you just cycle through till you get to the one you want. I guess this could also be menu driven as well eventually (like the c64 core).
Anyways... tomorrow :)
*edit: and I just read your post properly. It should be fairly easy to make disk/tape changing menu options. I will get this done sooner or later.
Great!
Thank you for all your work and information.
Are there any games or protections in particular to test?
I just finished Astro Marine Corps in disk format. I'm impressed by this game, it must have been a real crazy job for the developers.
I updated the list in my previous message. I think I'll make a list on google docs or something similar, so everyone can put the games that are problematic or not. (if you think it might be useful?).
Do you know if now with your modifications these last days the support of the dsk format is accurate, for loading, "data processing" etc?
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
phoenix1291 wrote:
Great!
Thank you for all your work and information.
Are there any games or protections in particular to test?
It's really hard to know. +3 disk protections are very badly documented, and it looks like even the search on WoS is only dealing with protection schemes on tapes (so the lists I posted previously are probably incorrect). If you aim for Ocean, US Gold, Gremlin and Virgin releases there is more chance than none that you will come across some kind of protection scheme, although it doesnt appear to be documented anywhere which one.
I have been using this initially: http://www.softsea.com/review/Disk-Image-Manager.html
It detects (or in some cases has a best guess) at many of the common copy protection schemes for spectrum and amstrad dsk games.
Although to be honest the Speedlock +3 protection scheme is the only one i've come across that required a bit of hacky work (the CPU gets the controller to read the same sector or sector multiple times, and because of data CRC errors (partially weak sectors) particular bytes within this sector will return different values on each read).
Most of the other protections appear to rely on things like over/undersized sectors, DAMs (deleted address marks) and incorrect sector ID information. So it has been a case of getting the UPD765 controller emulated properly to handle this rather than using anything hacky.
phoenix1291 wrote:
I think I'll make a list on google docs or something similar, so everyone can put the games that are problematic or not. (if you think it might be useful?).
It would be really useful during this dev process (and if you have/can get a github account) if you could post a comment(s) on the current ZXHawk bug issue with any games you find that don't load/have problems etc.
https://github.com/TASVideos/BizHawk/issues/1158
This is primarily where I am working from with regards to bugfixing/development.
phoenix1291 wrote:
Do you know if now with your modifications these last days the support of the dsk format is accurate, for loading, "data processing" etc?
Yes, I believe the dsk format support is done (for reading at least). I may have to expand the underlying structure that the dsk image is parsed into eventually to get better geometry and physical layout information (which I think will be important when it comes to timing), but otherwise the dsk format is a fairly simple format to understand.
As I mentioned previously, timing is not accurate at all yet.
As far as "data processing" within the floppy disk controller, I believe this should be fairly accurate, although tweaks will need to be made is games do not load. And obviously as also stated there are no write or seek commands implemented in the FDC yet (although I havent found a game that uses them yet).
The UPD floppy disk controller has the capacity to be quite a bit more complex, but the Spectrum does NOT use a great deal of the functionality. For example, DMA is not used and there is no interrupt line connected between the ULA and FDC.
This means that from a data-level, everything is pretty simple. Pretty much between every read and write request the CPU makes of the controller, the CPU has to also read the controller's status register. This tells the CPU what to do next. This is a very deterministic process and is why we can get games loading properly with NO emulated drive timing at all. In a real spectrum if the disk drive is not ready (maybe it is still seeking/recalibrating, or data hasnt yet been read from the disk) the main status register is updated on the FDC to inform the CPU to 'come back later' the next time that particular piece of Z80 code cycles around.
This gives a couple of (seemingly) simple timing implementation options when i get round to it.
Anyway, enough (potentially uninteresting) rambling :)
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
The latest dev build now has the ability to switch between disks that have been supplied to the ZXHawk +3 core in the same manner that you would multiple tapes. This currently is done by setting up keyboard shortcuts for this (a new tab is now available in controller configuration).
Note: Try to only do this when the game asks you to, or if you are at the initial menu screen. Until this is implemented fully, expect unpredictable results if you swap disks whilst the emulated drive is doing stuff.
Thanks for explaining. I'll have to take some time to read it again.
Yes, I've already seen your github page :)
phoenix1291 wrote:
(And thanks for your update list on github, it's helpfull and clear about what's implemented or what's need to be!)
Interesting the Disk Image Manager, I see that it allows conversion between different file formats, does it work well? Because for the Apple 2, with software like dsk2nib to convert nib files to dsk (because the Apple 2 core doesn't support nib files), it never worked for me, it must be missing sectors when converting.
So I tried the latest version with the disk switch, with Out Run, again. It worked very well, no problem.
However, (even though I know that being able to change disks via the menu like on the C64hawk core will probably be implemented later) there are two things I noticed, the first of which I'm not 100% sure (I'd have to recheck) is that to switch to disk B, you have to choose "previous disk" and not "next disk".
And the second thing is that if the ZXhawk internal OSD is not displayed, even if the Bizhawk OSD is displayed, no message appears to say if the disk change has been done and which disk is inserted.
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
phoenix1291 wrote:
Interesting the Disk Image Manager, I see that it allows conversion between different file formats, does it work well? Because for the Apple 2, with software like dsk2nib to convert nib files to dsk (because the Apple 2 core doesn't support nib files), it never worked for me, it must be missing sectors when converting.
I have no idea about this. I have only used it to examine dsk structures.
*EDIT: I lie, I do. You will be out of luck doing anything with appleII dsks I think. The Amstrad CPCEMU dsk format is valid for spectrum and amstrad. The AppleII dsk format is something completely different.
phoenix1291 wrote:
So I tried the latest version with the disk switch, with Out Run, again. It worked very well, no problem.
However, (even though I know that being able to change disks via the menu like on the C64hawk core will probably be implemented later) there are two things I noticed, the first of which I'm not 100% sure (I'd have to recheck) is that to switch to disk B, you have to choose "previous disk" and not "next disk".
This works fine for me. Perhaps you have a duplicate in your bindings that is clashing? Next and Prev disk will loop round when it reaches the array boundary on either side.
phoenix1291 wrote:
And the second thing is that if the ZXhawk internal OSD is not displayed, even if the Bizhawk OSD is displayed, no message appears to say if the disk change has been done and which disk is inserted.
Again, this is working for me. Check menu ZX Spectrum > Non-Sync settings and make sure OSD Message Verbosity is at least set to 'Medium'.
Also try binding a key for 'Get Disk Status' as well and see if this displays.
Perhaps you have a duplicate in your bindings that is clashing? Next and Prev disk will loop round when it reaches the array boundary on either side.
I'll check next time. :)
Asnivor wrote:
Again, this is working for me. Check menu ZX Spectrum > Non-Sync settings and make sure OSD Message Verbosity is at least set to 'Medium'.
Also try binding a key for 'Get Disk Status' as well and see if this displays.
Precisely, I completely disabled OSD Messages from ZXhawk for comfort's sake, having the screen or half the screen continuously filled with scrolling text, and hiding Bizhawk's OSD (lag, frames, fps etc (and yes, I could move them, but this is not practical)) is not very comfortable :D
And yes, I mapped a key for the disk status, but it scrolls so fast that it's not easy to spot this message in the middle of others, and if you pause Bizhawk the messages disappear.
Is it possible to use Bizhawk OSD messages to just display "Disk A/B inserted" or something like that?
This is also why the disc change via the menu is very convenient, it is not possible to make mistakes (normally) :)
Do you know if there are games on ZX Spectrum with more than two discs?
(Yes, I know, I'm a pain in the ass :D)
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
With ZXHawk OSD verbosity set to medium (not full) you should only see the disk inserted messages...
I probably need to provide a another option for tape though that does similar. There is a lot of noise otherwise.
With ZXHawk OSD verbosity set to medium (not full) you should only see the disk inserted messages...
I probably need to provide a another option for tape though that does similar. There is a lot of noise otherwise.
So, I have a problem.
(And it's the same with tzx or tap)
Link to video
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
Ok, I'll take a look soon. Although I think I might now what is causing it.
Whenever you save or load state, the disk or tape is re-initialised in the drive/datacorder and this triggers the OSD message. This process is necessary when loading savestates but not saving them.
I would wager that you have rewind enabled or something so it is constantly saving savestates to disk. This would also explain the performance issues you were having with tape games.
I'll try and sort this out tomorrow:
* Disable media re-insertion on save state
I believe that should solve quite a few issues for you.
I would wager that you have rewind enabled or something so it is constantly saving savestates to disk. This would also explain the performance issues you were having with tape games.
Ah, fucking brilliant!
I didn't think about it, but yes, I have rewind enabled, and that's probably what's causing the performance issues on some games and those OSD issues.!
Thanks , it seems logical, so logical that I didn't have the idea to think about it!
(If I have time later in the day I would test without the rewind feature enabled to confirm, even though I'm sure you're right)
Joined: 1/24/2018
Posts: 304
Location: Stafford, NY
phoenix1291 wrote:
yes, I have rewind enabled, and that's probably what's causing the performance issues on some games and those OSD issues.
This sounds like a mistake anyone could make really. Perhaps there should be a warning about enabling rewind for ZXHawk in a platform-specific documentation page?
c-square wrote:
Yes, standard runs are needed and very appreciated here too
Dylon Stejakoski wrote:
Me and the boys starting over our games of choice for the infinityieth time in a row because of just-found optimizations
^ Why I don't have any submissions despite being on the forums for years now...
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
GJTASer2018 wrote:
This sounds like a mistake anyone could make really. Perhaps there should be a warning about enabling rewind for ZXHawk in a platform-specific documentation page?
The issue is that zxhawk *should not* be reloading the disk or tape device every time a save is made.
It's an oversight rather than being by design :)
I've launched the Fuse emulatora few minutes ago, just to see.
There are many emulated models, what the + than those present in ZXhawk?
I saw (on github) for example that you wanted to add support for the Pentagon gigascreen mod.
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
Spectrum 48k (NTSC)
Just a 48k where the ULA outputs at 60FPS, sold in Chile:
https://faqwiki.zxnet.co.uk/wiki/NTSC_Spectrum
I don't know if there were any games produced exclusively for it, so I don't know if I will ever implement it.
Spectrum +3e
This was a homebrew modification to a +2a or +3 based on updated ROM chips:
http://www.worldofspectrum.org/zxplus3e/whatis.html
It's main benefit was the possibility of an IDE interface to connect HDD or CompactFlash drive. Again, I'm not sure there is much benefit in emulating this in bizhawk at the moment
Timex Official Cloneshttps://en.wikipedia.org/wiki/List_of_ZX_Spectrum_clones#Official_clones
There are a few benefits to these models, but compatibility with spectrum games always varied.
Pentagon Unofficial Clones and Scorpian ZS-256https://en.wikipedia.org/wiki/Pentagon_(computer)https://en.wikipedia.org/wiki/List_of_ZX_Spectrum_clones#Scorpion_ZS-256
I might get to these eventually. They use a clone of the beta disc interface that was a 3rd party peripheral for the original spectrums, and have different RAM options. They also use TR-DOS for this (you may see many TRD or SCL disk images around, thats what these relate to):
https://en.wikipedia.org/wiki/TR-DOS
In the first instance though, I am going to focus on getting the official machines released in the UK emulated properly (and perhaps as many of the peripherals as I can). I am not overly bothered about the clones at the moment, but they may come eventually.
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
phoenix1291 wrote:
I didn't think about it, but yes, I have rewind enabled, and that's probably what's causing the performance issues on some games and those OSD issues.!
Latest dev build now only reloads the tape and disk devices when a state is loaded, not saved.
Can you test this when you have a chance and see whether your performance issues with rewind enabled are solved?
Thank you for all this information, once again.
Yes, it seems more relevant to focus on official machines :)
I just tested the latest version with only one game, but it works fine, it's much faster and there are no more OSD problems, thanks!
I found this. Apparently it's only certain games that are compatible.
And the emulator only seems to be on DOS.
I find the attempt interesting even if it doesn't seem to be very conclusive.
Link to video
Joined: 11/27/2017
Posts: 87
Location: United Kingdom
This came after spec256:
https://sites.google.com/site/ulaplus/home
I know some of the other emulators support it. If it ever does get on the todo list for zxhawk, it will probably be pretty far down.
Thanks for the link.
I don't think it's worth considering implementing this, unless you feel it's something essential to the world and the universe.
Even if a certain number of games are monochrome or almost, because of lack of available memory or time to finish the game, that's what makes the charm of the ZX Spectrum, those imperfections, like the color clash.