Jump to content
IGNORED

Altirra 3.90 released


phaeron

Recommended Posts

When analyzing @Fred_M's Mega Magazine disks, I stumbled over a timing challenge for your disk emulation code.

 

The attached image has three sectors 1039. Track 39 contains 33 sectors, two of them have bad CRCs.

For protection the sector is read twice and both times the code jumps into the loaded sector.

The two needed instances contain "STX $8000, RTS" and "STY $8001, RTS". The third instance is zero-filled.

 

Full disk emulation of a standard 1050 catches the correct instances.

The standard 1050 emulation alway hits the zero-filled instance once and crashes.

It works with standard 810 emulation.

Tried on Altirra 3.90 and 4.00-test23 emulating a standard PAL 800XL.

 

Mega Magazine 2 (1991-11)(A.N.G. Software)(NL)(FW)(Side A)(Magazine)[req 64K].atx

 

Note:

I suspect the triple sector to be a duplication error because the other protected Mega Magazines (#3 to #6) only have two instances of the protection sector.

The other disks have on their tracks 39 either 33 sectors and only one with bad CRC or 34 sectors and two with bad CRC.

Link to comment
Share on other sites

7 hours ago, DjayBee said:

When analyzing @Fred_M's Mega Magazine disks, I stumbled over a timing challenge for your disk emulation code.

 

The attached image has three sectors 1039. Track 39 contains 33 sectors, two of them have bad CRCs.

For protection the sector is read twice and both times the code jumps into the loaded sector.

The two needed instances contain "STX $8000, RTS" and "STY $8001, RTS". The third instance is zero-filled.

 

Full disk emulation of a standard 1050 catches the correct instances.

The standard 1050 emulation alway hits the zero-filled instance once and crashes.

It works with standard 810 emulation.

Tried on Altirra 3.90 and 4.00-test23 emulating a standard PAL 800XL.

 

This one is a tough one. Even in full emulation I'm setting this title fail randomly based on start timing, since the title does just about everything possible to make this unreliable:

  • After the previous read, does a wait on an OS timer, adding up to 1 frame of latency (0-20ms, or as much as 10% of a rotation).
  • Issues a Happy command ($48), which then adds latency based on NAK response times 26.
  • Does almost a full long stroke seek from track 4 to track 39, thus multiplying any difference in seek timing by 36.
  • Ends up almost on top of one of the duplicated sectors.
  • Has two duplicated sectors stupidly close to each other (43 degrees).

I can tune the std emulation to be closer -- the NAK timing is probably the main issue as I never paid much attention to it -- but this would just get it closer to full timing which is failing about 50/50 for me.

 

  • Like 2
Link to comment
Share on other sites

Forgive me for not adding to the thread in any real terms but I just wanted to say that its amazing when you experts join heads just how precise and breakable the emulation is, its just stunning how much expertise and precision is needed even for what would seem a simple thing to the layman. All this work for free, still blows me away..

 

Thank you....End of OT..

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

13 hours ago, phaeron said:

the title does just about everything possible to make this unreliable:

Let's wait if @Fred_Mremembers something about this particular disk.

 

If my assumption is correct and it indeed is a duplication error, special any handling on your side does not make much sense.

As I wrote: The other four issues of the magazine have only duplicates and are therefore not prone to this problem. The read sequence of the sectors is not relevant and so are the stepping time and NAK latency.

Link to comment
Share on other sites

18 hours ago, DjayBee said:

Let's wait if @Fred_Mremembers something about this particular disk.

 

If my assumption is correct and it indeed is a duplication error, special any handling on your side does not make much sense.

As I wrote: The other four issues of the magazine have only duplicates and are therefore not prone to this problem. The read sequence of the sectors is not relevant and so are the stepping time and NAK latency.

 

I was not responsible for the copy protection, so I don't have any knowledge about it. I will ask the creator of the magazine if he remembers and I have multiple original copies, so I can make a dump of another copy if that helps?

 

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

http://www.virtualdub.org/beta/Altirra-4.00-test24.zip

http://www.virtualdub.org/beta/Altirra-4.00-test24-src.zip

  • ARM64 emulation warning now also displays when running the x64 build on the latest Windows 10 Insider Preview, and saving the 'Yes' response to show the website is no longer allowed.
  • Fixed a display error in performance traces where SIO bytes coming from full drive emulators were shown with their ending offset at the actual start offset time.
  • Improved accuracy of NAK timing in the standard disk emulator.
  • Fixed disk timing errors in the standard disk emulator with sector reads after multi-second delays due to the motor off timer expiring during the disk read. The timer is now suspended during the read.
  • Added performance trace channel for the SIO command signal line.
  • Standard disk emulator now waits for the entirety of a long sector to be read when using a 1050-based emulation mode.
  • Fixed a crash when ejecting a disk during a specific point in a Read Sector command.
  • SIDE 3 recovery mode is now supported (powering on with the cartridge reset button pressed).
  • Improved emulation of SIDE 3 RTC to centisecond precision and to include some miscellaneous oscillator bits.
  • Changes to the default audio device in Windows are now tracked when WASAPI audio output mode is in use.
  • Detach All now properly warns when D2: or higher is dirty.
  • Fixed busted Indus GT audio output.
  • Enabled SHA256 hardware acceleration for x86/x64.
  • Fixed some confirmation dialogs that didn't nest properly with the Configure System dialog.
  • "Auto-reload ROMs on cold reset" is now saved.
  • Preliminary SoundBoard 2.0 emulation.
  • Tweaked program icon and updated target cursors to use Vista+ alpha-blended cursors.
  • Reverted Ctrl/Shift input map conflict behavior and changed it to an option that defaults to old behavior. The new behavior made it difficult to use the computer when the default joystick map was enabled as you couldn't type any Ctrl+X characters.
  • Fixed a crash in the debugger when setting breakpoints within the same page separated by banks (e.g. $80 and $FF0081).
  • Rapidus emulator no longer overlays OS/BASIC/self-test ROM with fast RAM windows. (Cartridges are still overlaid according to the hardware design.)
  • Fixed a bug that was causing main RAM to revert to the fast bus after resets even with Rapidus enabled; it now stays on the chip bus as intended when Rapidus is active, as that memory is on the motherboard. Extended memory is now also included in this.

 

  • Like 12
  • Thanks 2
Link to comment
Share on other sites

9 hours ago, Philsan said:

I am sorry if this has been asked already.

 

When I do a copy & paste from Notepad++ or MadStudio to Altirra, I lose lowercase characters formatting.

Would it be possible to keep that information (useful for graphics mode 1 and 2)?

CAPS LOCK is enabled initially on an Atari, so toggle it off before doing the Paste and it'll work as you want.

 

That said, it is odd that the CAPS LOCK state is obeyed when pasting in content at all.

Link to comment
Share on other sites

13 minutes ago, phaeron said:

Has to, as Paste works by pushing keys on the emulated keyboard.

 

If that's the case (pun), wouldn't it be better to set the caps lock state to "off" for a paste operation -- if its state is currently "on" -- and then restore the state after the paste operation is complete?

 

  • Like 2
Link to comment
Share on other sites

16 minutes ago, MrFish said:

If that's the case (pun), wouldn't it be better to set the caps lock state to "off" for a paste operation -- if its state is currently "on" -- and then restore the state after the paste operation is complete?

This requires being able to read the Caps Lock state and that the K: handler is being used, which aren't guaranteed. Currently the Paste function is mostly hardware based with only some dependencies on the OS interrupt handlers, which were unavoidable to throttle the key press rate.

 

Link to comment
Share on other sites

10 minutes ago, phaeron said:

This requires being able to read the Caps Lock state and that the K: handler is being used, which aren't guaranteed. Currently the Paste function is mostly hardware based with only some dependencies on the OS interrupt handlers, which were unavoidable to throttle the key press rate.

 

Fair enough. It's really no big deal, and I suppose there are instances where one might desire a paste operation to capitalize all lower case instances anyway. So, it's nice to have the option.

 

I wasn't aware how it worked until now. I'd noticed my lowercase being capitalized a few times, and just thought it was always doing that. But I probably just didn't think about it at other times when my lower case was being handled the way I expected.

 

Link to comment
Share on other sites

http://www.virtualdub.org/beta/Altirra-4.00-test25.zip

http://www.virtualdub.org/beta/Altirra-4.00-test25-src.zip

  • Fixed "disk already mounted" warning dialog being cut off vertically.
  • Generic dialog now has traditional Windows message box sounds.
  • The New Disk dialog no longer resets settings as frequently now, especially when changing disk formats.
  • Disk Explorer has context menu options to import and export files with text (EOL) translation.
  • SoundBoard 2.0 addressing range and word mode fixes. U1MB no longer controls SB2.0 devices.
  • Some cleanup and consolidation of the way that the standard disk emulator handles the various profiles so the parameters are in nice tables. The default Generic profile now has XF551-style high speed enabled, which had inadvertently been disabled a long time ago.
  • "CPU history not enabled" error in history window now follows dark mode.
  • Added support for VHD differencing images, which store changed blocks from a base image. Note that the emulator currently does not have support for changing the parent path locator in the differencing image, so if you move the base image and neither the absolute or relative paths resolve then you won't be able to mount the differencing image.
  • Fixed some errors in the virtual FAT32 device that caused the last file to be corrupted at certain volume sizes, and the MBR is no longer repeated.
  • Added a virtual FAT16 device. It is currently locked to 4K clusters, so it will only work for file sets <256M.

 

  • Like 6
  • Thanks 7
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...