Hey, I like "perfect" displays too - my gaming laptop has 4K screen, and my new TV is a Samsung 4K QLED that's got the nearly-OLED quality color depth and dynamic range at half the price of LG's tech.

Having said that, I don't use my Atari devices on flatscreens now, and I sure as shit didn't use them on high-end Sony or JVC monitors in the 80's. Rather, I used my computers and videogames on the hand-me-down circa 1977 Zenith 19" rotary tuner color TV connected via RF on Channel 2 or 3. The fact that Altirra is adding the OPTION (not a requirement, mind you) to emulate the kind of experience I had as a kid and remember with such fondness is great.

Fixed non-3D display drivers running slower than necessary when bloom/distortion were enabled, which they can't support.

Tweaked screen FX defaults and added Reset to Default button.

Added option to auto-scale brightness when bloom and scanlines are enabled. This automatically brightens the scanlines to match the brightness of the non-scanline display, and allows for a common default between the two. It is only enabled when bloom is on since without bloom there isn't enough headroom to do it otherwise.

Program loader now detects and throws errors on DOS/Windows executables.

One small observation I recently noticed: when Altirra loads an XEX file, and the INI address ($02e2-$02e3) are written with zeroes, it jumps to $0000. AFAIK, the DOS binary loading routines only jumps to INI only when the values are different to zero.

I did some checking on this and this doesn't seem to be universal. DOS 2.0S and DOS 2.5, in particular, actually jump to 0 and crash. SpartaDOS doesn't, but the reason why it doesn't is that it actually puts an RTS at 0 which it then jumps to.

Fixed non-3D display drivers running slower than necessary when bloom/distortion were enabled, which they can't support.

Tweaked screen FX defaults and added Reset to Default button.

Added option to auto-scale brightness when bloom and scanlines are enabled. This automatically brightens the scanlines to match the brightness of the non-scanline display, and allows for a common default between the two. It is only enabled when bloom is on since without bloom there isn't enough headroom to do it otherwise.

Program loader now detects and throws errors on DOS/Windows executables.

I did some checking on this and this doesn't seem to be universal. DOS 2.0S and DOS 2.5, in particular, actually jump to 0 and crash. SpartaDOS doesn't, but the reason why it doesn't is that it actually puts an RTS at 0 which it then jumps to.

Thanks, lots of good stuff here...

I appreciate the "auto-scale brightness when bloom and scanlines are enabled". Should make testing various setups easier.

One small observation I recently noticed: when Altirra loads an XEX file, and the INI address ($02e2-$02e3) are written with zeroes, it jumps to $0000. AFAIK, the DOS binary loading routines only jumps to INI only when the values are different to zero.

Hope this helps. Regards!

In the binary load file specification, there is nothing that says INIT to zero address should be ignored. I can imagine that some binary loaders set INITAD to zero before loading a segment and if INITAD is changed, they jump. So it is a peculiarity of one implementation of the binary load function. Of course, INIT to address 0 is legitimate, though unwise at best. But that would be another long debate.

Commonly in loader implementations, INITIAD is pointed to an RTS instruction prior to each segment load and routinely jumped through after loading the segment. Obviously this would allow jumping through $0000, but I haven't yet encountered an executable which sets INITAD to zero. It's completely unnecessary.

Heathcliff has a bug: it overwrites the vertical blank routine pointed to by (VVBLKI) before it updates the VVBLKI vector through SETVBV. The reason for this is a bit obscure. At the end of the cassette boot, the OS attempts to do a disk boot, and on the XL/XE OS, a type 3 poll. Both of these SIO requests normally go unanswered and time out. Because the time out is based on the vertical blank interrupt, this causes the program to always start execution immediately after the VBI, giving it a full frame to successfully overwrite the VBI routine and then update VVBLKI in unsafe order. If you have Fast Boot and/or SIO patch enabled in the emulator, however, no synchronization to vertical blank occurs and the VBI executes between the two steps, causing a crash or other problems.

I have also seen it fail to load a couple of times because of the OS baud rate bug, though Randomize Start Position should make that go away on another attempt. This can also be why you have different success with WAV files, since the timing for the WAV file can be slightly different due to the conversion to FSK and back.

.Mad, no problem for the help, you have helped me loads with the gamebase stuff so its a pleasure to help, I tried Special forces for ages, gave up so its nice Phaeron gave us the reason...

Oh I did mean to say to use the random setting in cassette, mines always ticked but I don't use cassettes so much.

Btw, always keep up to date with the beta's, I'm sure I've said before, unlike some beta versions of other emulators, altirra is pretty rock solid even in beta and the updates Avery does are normally pretty awesome for us users, like the screen crt look in view/ adjust screen effects/

And the hardware updates are ALWAYS worth keeping up with...Latest beta is a few messages above, if you need the bios set then just say the word. ALso lately there's been updates to the cassette side with improved turbo handling etc..

Paul...

PS, I'll look at the BAS files..Sounds like a loader putting stuff in odd places but I've not even opened the zip yet

And probably wrong as well

Just looked at Kung Fu, uses a weird autorun loader, not looked further but I'm betting it loads the bas file in the wrong spot for the expected data..

Not a bug but a feature...If you d&d a file from a zip on to Altirra you get a little window saying extracting (I think, its quick) and then Altirra window put on the task bar and you have to go back to it..

Not seen this before?

Not a problem as such, just a little finicky, I get around it by obviously either unzipping it or use Directory Opus with Altirra as a button that loads the highlighted file even in a zip..

Oops...Another thing..

With Scanlines enabled and point filtering is it supposed to look like this?

If I turn on bilinear filtering it looks nicer but its still banding?

Reset my settings to test again and same...Normal? Add a bit of screen bend and it gets very odd...

Small edit for above.....Found the screen thing, a new box I'd not seen before, "Use Hardware acceleration for screen effects", it was unticked and and when ticked its all good...Its unticked it seems as default, any card related or hardware accel problems? My card is a Nvidia GTX750Ti and seems ok with most stuff bar some shaders missing from the newer cards.

Not a bug but a feature...If you d&d a file from a zip on to Altirra you get a little window saying extracting (I think, its quick) and then Altirra window put on the task bar and you have to go back to it..

Not seen this before?

Not a problem as such, just a little finicky, I get around it by obviously either unzipping it or use Directory Opus with Altirra as a button that loads the highlighted file even in a zip..

Oops...Another thing..

With Scanlines enabled and point filtering is it supposed to look like this?

If I turn on bilinear filtering it looks nicer but its still banding?

Reset my settings to test again and same...Normal? Add a bit of screen bend and it gets very odd...

That's just aliasing. You have to stretch lets say 400 lines with scanlines into lets say 768 pixels. That will give decimal ratio. So some lines will be thicker, and some will be thinner. It can be fixed by setting stretch mode (menu view) to one of the integer options. That will make the image smaller, but will use same pixel size for every line.

Started a couple of new pages in Configure System, an overview page and a recommendations page. The recommendations page has hyperlinks to change settings based on the current settings and whether you're looking for compatibility, accuracy, or performance.

Added an Open Source File List command to the debugger. It displays a dialog with all of the source files referenced by currently loaded symbols. This makes it easier to see what source files actually have line debug info associations and to open those files directly without having to manually find it if the debugger can do so on its own.

Regarding the scanline artifacts, that's an aliasing effect. It's most severe with point sampling because in that mode the scaler can only duplicate pixels, never blend them. At non-integer ratios some rows have to be scaled bigger than others, leading to the uneven stepping. Scanlines makes this worse for two reasons: the fine comb pattern makes the artifact really obvious, and it doubles the height. For instance, full 240 height turns into 480 with scanlines. On a 1366x768 display, there's only enough vertical room to do 1x, and at 1920x1080, there's only room for 2x.

This effect is the reason for the sharp bIlinear option being the default: it renders blocky pixels but with a bit of blending on the edges to reduce the aliasing. Point sampling is only good at exact integer multiples; it looks like #&$* at any other ratio.

As for the hardware acceleration for screen effects option, yes, that does make scanlines look better. The reason for this is that it allows the scanline pattern to be generated at full screen resolution rather than getting stretched along with the image, so there's less error in it. This requires HW acceleration because otherwise the image has to be scaled and masked on the CPU, which is dreadfully slow. I recommend turning on bloom in View > Adjust Screen Effects too, as this will help brighten scanlines to the same level as the non-scanline display.

I now notice a couple of very old games are loading with buggy graphics.
This is very odd.
if i load the BAS file from disk, the graphics are corrupt.
but if i drag the BAS file into the emulator the graphics are perfect.

maybe a similar problem to the MSX. having to hold SHIFT or CTRL while booting to disable a drive and free a little memory.
And the game is possibly only meant to load from tape?.

This is a MEMLO-related problem. When running kungfu.bas directly, no DOS is loaded and MEMLO is at $0700. Booting Kung-Fu Master.atr, MEMLO is at $2000 and so the BASIC program runs much higher in memory. This is just enough for the runtime stack to barely poke into the start of the character map at $3800, corrupting the blank character. The DOS on this disk places MEMLO a bit high; on default settings, DOS 2.0S places it at $1CFC and DOS 2.5 at $1C6C.

Heathcliff has a bug: it overwrites the vertical blank routine pointed to by (VVBLKI) before it updates the VVBLKI vector through SETVBV. The reason for this is a bit obscure. At the end of the cassette boot, the OS attempts to do a disk boot, and on the XL/XE OS, a type 3 poll. Both of these SIO requests normally go unanswered and time out. Because the time out is based on the vertical blank interrupt, this causes the program to always start execution immediately after the VBI, giving it a full frame to successfully overwrite the VBI routine and then update VVBLKI in unsafe order. If you have Fast Boot and/or SIO patch enabled in the emulator, however, no synchronization to vertical blank occurs and the VBI executes between the two steps, causing a crash or other problems.

I have also seen it fail to load a couple of times because of the OS baud rate bug, though Randomize Start Position should make that go away on another attempt. This can also be why you have different success with WAV files, since the timing for the WAV file can be slightly different due to the conversion to FSK and back.

Hello.

I am having problems loading these two tapes in Altirra 3.20 test 12.

Heathcliffe - fun with spelling.

Special Forces.

turning SIO on/off can get better results.

so i guess there is a slight timing issue or duff recording of the tape.

This is a MEMLO-related problem. When running kungfu.bas directly, no DOS is loaded and MEMLO is at $0700. Booting Kung-Fu Master.atr, MEMLO is at $2000 and so the BASIC program runs much higher in memory. This is just enough for the runtime stack to barely poke into the start of the character map at $3800, corrupting the blank character. The DOS on this disk places MEMLO a bit high; on default settings, DOS 2.0S places it at $1CFC and DOS 2.5 at $1C6C.

Thanks again!!!

That totally makes sense.

do you happen to have one of those working DOS disks handy.

sounds like you are asking some one to fix heathcliffe?

I wasn't...

I know the CAS file worked in a previous version of Altirra, and was reporting a possible bug or missing setting by me.

So i was kind of asking for an emulator fix.

changing the boot setting to "deferred" or "type 3 poll" as mentioned above, does the trick 90% of the time.

but if you want to hack the two 'CAS' files so they load 100% of the time. that's perfeclty ok with me.

What, DOS 2.0S or 2.5? You can get them pretty much anywhere. Heck, you could even use the DOS on the Altirra Additions disk, it has a MEMLO of $1C62.

I wasn't...
I know the CAS file worked in a previous version of Altirra, and was reporting a possible bug or missing setting by me.
So i was kind of asking for an emulator fix.
changing the boot setting to "deferred" or "type 3 poll" as mentioned above, does the trick 90% of the time.

Changing the boot setting is a red herring. That setting only affects executable (program) booting, it doesn't affect booting tapes or BASIC programs. What's probably happening is just that the randomized tape offset is shifting the timing so it sometimes happens to work.

So far I don't see anything to fix in the emulator since it's a game bug issue. If you want it to work consistently, make sure fast boot is off and no disk is mounted when you boot the tape so you hear the raspberry right at the end before the game starts. That sound means that the an SIO request is getting sent and timing out, and that'll start the game with the right timing to make it work.