Jump to content
IGNORED

Altirra 2.70 released


phaeron

Recommended Posts

If I disable SIO Burst Transfers for Disk (D:) under System --> Acceleration, it's golden. I _think_ I had this setting on under recent previous versions of Altirra when it was still working though. But I can't absolutely swear to it. Under the same Acceleration area, I can leave the D: patch (Disk SIO) enabled without trouble. And yes, I do have (and had all along) the SIO Override Detection enabled to avoid issues with U1MB/SIDE2/PBI HDD and Altirra acceleration.

 

I hope this helps.

 

PS: I haven't seen the sub-modes for Burstio IO acceleration (interrupt & polled) in the configure menu for a while. The help file still refers to them though.

Edited by fujidude
Link to comment
Share on other sites

Update:
http://www.virtualdub.org/beta/Altirra-2.80-test36.zip
http://www.virtualdub.org/beta/Altirra-2.80-test36-src.zip

Fixes some odd behavior with overlapping SIO commands and has a bunch of fixes and improvements to the custom shader support:

  • Fixed some parsing bugs.
  • Precompiled shaders are now used by default if present.
  • Shaders can be precompiled with option shader_precompile=true.
  • Shader profile can be forced above 2.0 with shader_profile_d3d9=2_0, 2_a, 2_b, or 3_0.
  • Profiling is now supported (shader_profiling=true)
  • Includes are now supported when compiling.
  • FP16/FP32 framebuffers are now supported.
  • Border texture addressing is now used when available.
  • Added shader validation.

Attached is a port of a TV shader that you can try. I didn't write it; a link to the original source is in the archive. I removed a couple of components that didn't work well, especially the flicker. Just a warning, it's not that well optimized -- it requires shader model 3.0 and runs at about 7ms/frame on my Quadro K2100. This means that even if you do get it to run you may run into frame rate or vsync problems depending on how fast your graphics card is. However, it looks pretty neat. Unfortunately, running .cg shaders verbatim is not going to be possible since there is simply too great of a difference between Cg and HLSL and the shaders often have a lot of constructs that are not valid in the ps_3_0 profile, even if not actually used.

1) in the debugger: ba r seems to react also on writes. ba r $0600, later POKE $0600,0 from the SDX prompt, hit on STA (BUFADR),Y [$00:0600]. Same reaction in BASIC on POKE 1536,0.


This is unfortunately due to how the CPU core and memory breakpoint systems work in the emulator. On a real 6502 or 65816, indexed store instructions always do a possibly false read followed by a true write. The reason is that the CPU needs an additional cycle to process a carry on a page crossing, and while indexed loads are optimized by doing a speculative read without doing the carry to try to save a cycle, writes can't be done speculatively. This means that for indexed stores the CPU always does a dummy read cycle at a possibly incorrect address before doing the write at the correct address. Altirra emulates this in the CPU core because there are cases where this matters, particularly if the dummy read hits a hardware register that is read sensitive (PIA data register, IDE data register, cartridge banking registers). The problem is that access breakpoints are implemented as a memory layer in the memory subsystem and thus it too sees these false reads. In turn, the way the CPU core works, it doesn't know whether this read is a false read until the next cycle where it computes the carry. The result is that read breakpoints will frequently trigger on indexed writes. It is also possible to get false reads from branches since the CPU will also do a false instruction read in that case. It's all accurate to the real hardware behavior, but not frequently useful.


I've been trying to think of ways to fix this and allow the CPU core to identify false reads for the breakpoint system, but haven't figured out a good way to do so without slowing down the CPU emulation. In the meantime, the only good workaround is to use conditional breakpoints to filter the read breakpoints so they don't trip on the problematic instructions, i.e.: bx "read=(address) and db(pc) != $91". It's annoying, but it's better than nothing.

 

The 65816 core has the same issues, but it's a bit more problematic there because the 65816 explicitly signals when it is doing internal operation (IO) cycles, making it easier for the motherboard to ignore those cycles and avoid unnecessary wait states. I haven't worried about this much because the 65816 mode doesn't attempt to be cycle-exact to anything physical, but it'd be more of an issue if I did (like, say, Rapidus).

2) the audio monitor: perhaps I am interpreting its display incorrectly, but does it show the state of the second Pokey when the stereo is enabled? A little description would be helpful, but I was unable to find it in the help file (a search for /Audio monitor/ returns nothing).

 

The help file is out of date -- I only recently added the second audio monitor in stereo mode. But yes, as you've discovered, when SlightSID emulation is enabled it replaces the standard POKEY monitor.

If I disable SIO Burst Transfers for Disk (D:) under System --> Acceleration, it's golden. I _think_ I had this setting on under recent previous versions of Altirra when it was still working though. But I can't absolutely swear to it. Under the same Acceleration area, I can leave the D: patch (Disk SIO) enabled without trouble. And yes, I do have (and had all along) the SIO Override Detection enabled to avoid issues with U1MB/SIDE2/PBI HDD and Altirra acceleration.

I hope this helps.

PS: I haven't seen the sub-modes for Burstio IO acceleration (interrupt & polled) in the configure menu for a while. The help file still refers to them though.

 

I wasn't able to reproduce the issue with PCLink, but I did run into some odd behavior with the PBI BIOS's high speed driver enabled that may have given a clue. Give the above build a shot. The issue has to do with what happens when the computer tries to send a command while the device is still busy with a previous one. The common behavior is that the device ignores the second command, and a less common behavior is that it interrupts the first command to process the second. The emulator's SIO manager was doing some unholy mix of the two, which may have resulted in some garbled command responses.

 

Older versions of the emulator required you to pick whether the SIO routine was interrupt-based or polling-based as it had two separate strategies for doing burst I/O. I figured out how to combine the two, so current versions only have a single option. As usual, the documentation is out of date.

VintageTV.zip

Edited by phaeron
  • Like 4
Link to comment
Share on other sites

Great news! I just saved a bunch of money on car insurance. :grin: LOL, no, rather test 36 seems to have cleared up the issue with PCLink and Burst IO acceleration. On a related note; is it safe to use the /S switch on PCLINK.SYS? Using it forces PCLink to use the stock OS SIO routines rather than the SDX optimized ones. I would like to do that because under Altirra with the D: patch, the stock OS routines are intercepted and handled by routines in the emulator which run more at host machine speed. So it ends up being faster than even the SDX optimized SIO routines (or any other speedy SIO solution native to the Atari). It's not a huge thing, as burst IO acceleration is pretty fast too. Reliability is of course a higher priority for me than raw speed, but the most speed while still maintaining reliability is what I'm after.

Edited by fujidude
Link to comment
Share on other sites

Hello Everybody,

 

I'm trying to catch up with the Altirra recent developments and the VintageTV topic seems interesting. Can someone please briefly tell me how to use the VintageTV file(s)? Thanks.

 

First, grab the other shaders from this post, it also has the how to there but I'll run through it any way..

 

http://atariage.com/forums/topic/246939-altirra-270-released/page-19?do=findComment&comment=3502384

 

Right make sure you have beta 33 onwards then unpack the shaders where ever you like. After that go to tools / options display effects then browse to the .cgp file ie vintage.cgp. Then the fiddly bit that needs to be done only once, go to tools Keyboard Shortcuts, in the list on the left look for View.EffectRelad, now select a key combination to activate it, once you have decided on your shorcut key(s) push those keys while making sure the cursor in in the text input box to the right of shorcut Global and click add.

 

Now hit your selected shortcut key(s) and the effect will be shown as long as your DirectX is up to date, see Phaerons post mentioned above if its not.

 

If you want a crazy effect the select the Rotate effect cgp file from the above link.

 

And lastly, to stop the effect simply go back to the Tools, options, display effects place and delete the path to the cgp file, ok it and it should stop, If you don't delete the path it will start again the next time you run Altirra so if its one you like there's no need to keep choosing the effect.

Edited by Mclaneinc
Link to comment
Share on other sites

Thanks, Paul for your helpful hints. I'll be sure to check it out to see what Avery has been up to :)

 

Sorry for the ever so simple break down but I thought that there may be others who are not as experienced as yourself who might be stuck so I did it step by step for them.

Link to comment
Share on other sites

 

Sorry for the ever so simple break down but I thought that there may be others who are not as experienced as yourself who might be stuck so I did it step by step for them.

I got the shader effects running. I created a new folder under the Altirra folder called "Shaders" and put all of the shader related files in the new folder.

 

I share the others opinions here, the rotate.cgp can seriously induce motion sickness :) And, the vintage tv.cgp is quite realistic.

Link to comment
Share on other sites

I like the Vintage TV but my old card struggles a little with it, its still pretty smooth but from the extra fan I'm hearing its not all that happy :)

 

But its exactly what Phaeron mentioned in his post..

 

One day I'll upgrade but its not even on my when I win the lottery list :)

Link to comment
Share on other sites

very sorry that the screenshots are creating without the use of filters.

 

I found an error in the filter.
These are the vertical bands become visible in full screen mode.

post-29967-0-61389300-1463202256_thumb.jpg

Edited by serj
Link to comment
Share on other sites

Haven't seen the full-screen bars yet either. Took a quick look at the shader and shaved about 10% off by switching the float framebuffer to half precision, but what's mainly killing it is the main CRT shader that has both a ton of texture samples and a lot of manual sRGB<->linear conversions. It's only about 1.6ms/frame on my NVIDIA-based system but is ~5ms/frame on the Intel Skylake GPU.

 

Update:

http://www.virtualdub.org/beta/Altirra-2.80-test37.zip

http://www.virtualdub.org/beta/Altirra-2.80-test37-src.zip

 

Adds support for a Parallel Bus Interface (PBI) based acceleration hook. Add it from Devices, and it'll add a PBI device on ID 7 that will try to accelerate anything that the regular SIO patch is enabled for. Seems to work for both disks and PCLink on SDX 4.47 without needing to MAP to OS mode.

  • Like 2
Link to comment
Share on other sites

Adds support for a Parallel Bus Interface (PBI) based acceleration hook. Add it from Devices, and it'll add a PBI device on ID 7 that will try to accelerate anything that the regular SIO patch is enabled for. Seems to work for both disks and PCLink on SDX 4.47 without needing to MAP to OS mode.

 

Hi Avery. Again, thanks for your efforts. Although I am familiar with the terminology, it's not really clear to me what that says above. How would this PBI "hook" provide acceleration that the regular SIO patch doesn't already? I think my lack of understanding of what you mean exactly by "PBI hook" and "OS mode" are contributing to my confusion.

Link to comment
Share on other sites

Emulator SIO patches traditionally work by intercepting the SIOV vector in ROM. Problem is, SpartaDOS X doesn't use SIOV, which is why SIO patches typically don't work with it. However, it does call into Parallel Bus Interface device firmware if it is present. So all the new device does is add a PBI device to intercept the SIO calls.

 

There are ways to direct recent versions of SDX to use SIOV. For disk drives, the MAP command will do this (MAP 1 OS for D1:), and for PCLINK.SYS, this used to be /S. However, there are some limitations on this, and you also have to manually enable it.

 

Using PBI to hook requests also has the benefit of hooking at the end of a priority chain, so if the PBI BIOS is present it has priority over the emulator's hook instead of the other way around. This would make the SIO override option unnecessary if only PBI hooking were enabled. This isn't possible yet as the PBI hook can only be enabled if the SIOV hook is also enabled, but I'll probably be fixing that. One downside of the PBI hook is that it requires an XL/XE system and also an XL/XE OS that still supports PBI; some modified OSes have ripped out the PBI support. The second downside is that not all DOSes support PBI. The third downside is that it slightly delays the timing for SIO requests that aren't intercepted since the OS is doing extra work to poll PBI devices on every SIO request.

Edited by phaeron
  • Like 1
Link to comment
Share on other sites

Does the emulator have more than one PCL:?

Now no matter which PCL drive I address returns the same as PCL1 through PCLO:

Also SIOSET has been returning 15 US $09.with no drive installed except the partition O:

I have Ultimate memory set and 13 partitions FDISKed as C: through O:

Link to comment
Share on other sites

Good afternoon, everyone!

 

For the life of me, I cannot figure out how to check out the built-in VBXE emulation available through the latest Altirra release. I have a VBXE on the way from Lotharek (going out in the mail this week, I believe), but was hoping to just have a sneak preview in emulation.

 

I downloaded The Last Word's most-recent release (v3.3 Test 7), but Altirra crashes about three boxes into the progression graph of TLW's loading screen.

 

My current settings for Altirra are 800XL with XL OS. First I tried SDX but TLW came up and said it needed Atari DOS, so I switched to DOS 2.5. That got me past that error, allowing the actual loading screen to appear and the progression bar to begin. But by that 3rd box, Altirra reports that it crashed and offers its usual recommendations (320k and/or PAL). I've tried both, with the same result.

 

As a former Atari800Win user during my Atari hardware sabbatical (ha ha), I admit finding Altirra sometimes overwhelming with its options, but absolutely love its full-screen mode over that of Atari800Win. It's just when I try activating the 3rd party hardwares that it seems to fall apart for me, including ICD MIO emulation, and now VBXE.

 

I do want to apologize if this has been answered elsewhere, but I really did spend a couple hours searching for a solution (and getting distracted by all the great discussions going on here that show me just how behind the curve I am).

 

Any help would certainly be appreciated, though!

 

Thank you, in advance!

Tim

 

Link to comment
Share on other sites

You need to add the MIO device via System->Devices->Add..., then click Add again with the MIO device selected and attach a hard disk. You also need to go into Firmware options and add the MIO ROM. I haven't tested MIO emulation much, but here's a selection of ROMs you can try:

 

attachicon.gifMIO ROMs.zip

 

Hi, FJC, and thank you for your response. I thought I did do what you recommended when I was trying, but then again, the shine is still on my noobness, so I'll go back and doublecheck my steps again--especially now that I figured out what I was doing wrong with the VBXE issue (thanks to your lead, in fact!). ^_^

 

--Tim

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...