Jump to content

Photo

Altirra 2.80 released

altirra emulation

626 replies to this topic

#1 phaeron OFFLINE  

phaeron

    River Patroller

  • 2,174 posts
  • Location:USA

Posted Sat Sep 3, 2016 8:35 PM

Version 2.80 of my emulator Altirra is now out:

 

http://www.virtualdub.org/altirra.html

 

Thanks to everyone who provided feedback, suggestions, and bug reports over the past nine months. Would you believe it's now been over seven years since version 1.0? And for anyone else not as interested... thank you for putting up with the 32-page megathread!

 

2.80 final is functionally the same as 2.80-test51 except for the versioning change. The full change log is accessible from the Help menu or the website, but here are the highlights of the release:

  • Profiles: Keep different sets of settings for different usage modes and quickly switch between them.
  • UI: Setup wizard for easier first-time start, more flexible .zip support, better D3D9 windowed vsync performance under Vista+, and ability to set file associations as user-local without requiring admin elevation.
  • 5200 mode: Now easier to use. The setup wizard asks whether you want to start in 5200 mode, and 5200 mode is now a separate default profile with partitioned settings and input maps, so it's easier to switch between 5200 and computer mode without mixing up the settings. Fixed a number of issues with 5200 controller support and added a controller test on the boot cartridge screen so you can tell if your controllers are set up correctly.
  • Input: Improved mouse support, driving/keyboard controller support.
  • Accuracy: Serial bus noise, fast pot scan mode, flash toggle bits, 65C02/65C816 flag and cycle timing fixes, and 5200 power-up DRAM pattern is now more correct.
  • Devices: Corvus Disk Interface, Pocket Modem, joystick dongles, IDE+2 fixes and improvements, MyIDE-II and SIDE 2 hot swap fixes, secondary IDE drive support, DragonCart fixes, 256K RAMBO mode.
  • Disk drives: Improved Indus GT emulation, improved emulation of 810/1050 disk drive differences, DOS 1.x and improved SDFS filesystem support, configurable default mount mode, and new "VRWSafe" mount mode.
  • Firmware: Additional fixes to built-in OS and BASIC.
  • Debugger: Automatic focus switching, uninitialized memory access checking, emulated network tracing, stepping fixes, improved 65C02 and 65C816 support, and coprocessor (Veronica) execution stepping.

...And, as usual, time to start the next set of test releases:

 

http://www.virtualdu...-2.90-test1.zip

http://www.virtualdu...0-test1-src.zip

 

Changes in 2.90 test-1:

  • Switched compiler from Visual Studio 2013 to Visual Studio 2015 for improved C++ support. 2.90 will still support Windows XP but will be the last major release to do so; the next major version after that will require either Vista or Windows 7.
  • HLE kernel removed. It had fallen behind the LLE kernels and there wasn't enough of a reason to keep it.
  • Bicubic filter mode removed for graphics cards that only support pixel shader 1.x; also not enough reason to keep it.
  • History window now shows a preview of the next instruction.
  • Devices dialog improved -- now resizable, shows where child devices can be added, and shows a small settings blurb after select devices.
  • Disk Drives dialog now supports drag and drop and is resizable.
  • VFS (virtual file system) support extended to more places; Disk Explorer can now mount images within .zip files.
  • Added "borderless windowed" or "windowed fullscreen" mode in Options, under Display. This is slightly more expensive on the graphics card but permits easier and faster switching to other programs. (Note that there appears to be a bug in Windows 10 Anniversary Update that prevents the taskbar from auto-hiding as documented if there are top-most windows overlapping a fullscreen window; no workaround for this yet.)
  • Added an option for 16-bit display surfaces that should help on low-end graphics cards.
  • Rewrote some critical emulation routines to avoid use of the MASKMOVDQU instruction, which is horribly slow on AMD APUs.
  • Added CTIA emulation support.
  • Fast boot now accelerates AltirraOS and kernels running under Ultimate1MB.
  • KMK/JZ IDE v1 PBI bus ID is now configurable.
  • Added new "hold keys" feature to allow keys to pre-queued for the next reset when the PC keyboard doesn't allow all the equivalent keys to be held down.
  • SIO burst transfer algorithm rewritten to better respond to timing hiccups on the 6502 side, improving reliability at higher base transfer rates.
  • Fixed saving of window size when exiting in full screen mode; the full screen size is no longer saved as the normal window size.
  • Fixed a crash in the H: device when doing a wildcard rename of a file whose name conflicted with a reserved device name in Windows.
  • Changed the way that H: and PCLink handle automatic reserved device name renaming. Both now use ! as the prefix, but accept either $ or !.
  • Removed DSKINV hook to fix acceleration issues with QMEG's non-standard DSKINV behavior; no easy workaround and not worth it.
  • Fixed UI focus behavior when undocking the active pane.
  • Started support for a compatibility database. This is still pretty rough but allows the emulator to detect problematic images when the Boot Image command is used and to auto-suggest fixes. The built-in database currently has entries for two images for testing (Mr. Do! and Jenny of the Prairie). The compat DB is signature based and will match images regardless of the filename. There is a built-in editor and support for a custom external compatibility database as well; note that the format may be subject to change, though, as I haven't decided if I like the current hashing scheme yet. The runtime engine format is binary for speed, but the source format is JSON and designed to be easy to handle.

 



#2 serj OFFLINE  

serj

    Chopper Commander

  • 200 posts
  • Location:Russia, Omsk city.

Posted Sat Sep 3, 2016 9:50 PM

display ---> Direct3D 9 - does not work.

Display effects - does not work.

 

These settings work in the 2.8 stable version.



#3 serj OFFLINE  

serj

    Chopper Commander

  • 200 posts
  • Location:Russia, Omsk city.

Posted Sat Sep 3, 2016 10:13 PM

hm..
it work, if i reset all settings.

but, set all controllers and bios image - it very long.

 

Avery, please take a look my config file.
what could be the problem ?

Attached Files



#4 serj OFFLINE  

serj

    Chopper Commander

  • 200 posts
  • Location:Russia, Omsk city.

Posted Sat Sep 3, 2016 10:26 PM

I found the culprit.

 
if you switch the setting:
View ---> Stretch Mode ---> Fit to window
the image disappears.


#5 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Sun Sep 4, 2016 2:45 AM

I thought you had been quiet Serj, good to see you are on top form finding issues..Well done!!

 

And Phaeron, what a fantastic set of changes, just when you think it can't get better, Altirra does...

 

Looking forward to trying to break it :)



#6 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Sun Sep 4, 2016 3:00 AM

Avery, you say there are 2 entries for the internal compatibility DB and the editor supports them and the ability for an external db but there are no visible entires when you look at the editor?

 

Does it not show the internal ones, also when I booted Mr Do! I expected a warning or notice as I'd not muted any thing and nothing?

 

Just asking..

 

Just as a note, I normally wipe the settings for Altirra with a new release, I sometimes find odd things happen that go away on their own so I wipe it as normal now and run the first time editor to set stuff up, I'd not mention it but I saw Serj had the same issue, I know in the past you have said it should not matter with updated versions but I wondered if its possible anything might have crept in between versions. I was getting silly things like it booting up and crashing when a new beta was added and when you booted it again it was fine..

 

AS said, no important breaks...

 

Edit re the last thing, was thinking that between versions I may have moved atr's around and I know Altirra retains the last atr inserted, is there any code to check the last atr is still valid ie would that cause a crash (not a full crash, just an emulation crash) if the disk was missing?


Edited by Mclaneinc, Sun Sep 4, 2016 3:09 AM.


#7 Madi OFFLINE  

Madi

    Moonsweeper

  • 305 posts

Posted Sun Sep 4, 2016 3:04 AM

Thank you phaeron for every bit of code you put into this project.

Thank you for every second of the past seven years or so that you made us happy and hope for the better.

I wanted to express my gratitude and appreciation for your marvelous work but I failed to find the right words.

So, Thank you 

madi



#8 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Sun Sep 4, 2016 3:16 AM

Madi, I'd say you did a fine job there...



#9 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Sun Sep 4, 2016 6:31 AM

Update re post http://atariage.com/...d/#entry3587082

 

Seems there's so many copies of Mr Do! out there as ATR's / ATX that its pretty hard to track them all, found versions of Jenny and Mr Do! that did indeed bring up the compatibility screen and very nice and useful it is too!

 

Looks like the hardcoded ones do not get seen by the editor but at least I know they are there :)

 

Sorry for not checking further Avery..Have to say the DB idea is brilliant and especially handy in Gamebases but dead handy in general as how many of us remember every titles little niggles (certainly not me) so to have an auto fix (if wanted) is superb..

 

If this was a user suggestion then I want to thank that person for the idea, its just wonderful, if its your idea Avery then its just another bit of excellence by you.

 

Just incase folk want to see the compatibility screen you won't see it if your emulated Atari matches the criteria in the DB to load the game, easiest way for the Jenny on the prairie is to NOT have basic on and it will pop up, with Mr Do! its accurate sector timing it needs so turn that off if you want to see its warning.

 

This also explains why I wasn't seeing the compat screen on the other full versions of the games, the machine was setup to be able to play them.


Edited by Mclaneinc, Sun Sep 4, 2016 7:14 AM.


#10 atx4us OFFLINE  

atx4us

    Moonsweeper

  • 428 posts
  • Location:Michigan, USA

Posted Sun Sep 4, 2016 9:11 AM

Thank you phaeron for every bit of code you put into this project.

Thank you for every second of the past seven years or so that you made us happy and hope for the better.

I wanted to express my gratitude and appreciation for your marvelous work but I failed to find the right words.

So, Thank you 

madi

Well said.  Ditto for me, too!  Thank you, phaeron!



#11 fujidude OFFLINE  

fujidude

    River Patroller

  • 4,534 posts
  • Location:United States of America

Posted Sun Sep 4, 2016 11:32 AM

Thanks again for additional improvements to Altirra!



#12 Grevle OFFLINE  

Grevle

    Moonsweeper

  • 367 posts
  • Location:Norway

Posted Sun Sep 4, 2016 11:45 AM

Thanks for update.  I learned to use the Altirra Debugger, Very helpful when writing assembler code. Im working on a game when i have the time and inspiration, Im wondering if Altirra can be used to test color composition of Atari graphics. In my case as a example lets say i have game program running in Altirra using screen mode 12 (5 color bitmap) and 2 multicolor players displayed on screen, Can i then use Altirra to alter the color registers on the fly just to see what colors will go nicely together as a test, or by go into Color palette options ?..


Edited by Grevle, Sun Sep 4, 2016 11:49 AM.


#13 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Sun Sep 4, 2016 12:23 PM

Unless the program is resetting the colours I'm sure you could just BREAK,  alter the location with the E (alter bytes) command for colour of the item and return to it?

 

I could be wrong :)

 

Just hitting the shadow registers should be fine..


Edited by Mclaneinc, Sun Sep 4, 2016 12:28 PM.


#14 Triads OFFLINE  

Triads

    Moonsweeper

  • 253 posts
  • Location:Orlando, FL.

Posted Sun Sep 4, 2016 3:21 PM

As always, thanks for the top notch emu..



#15 phaeron OFFLINE  

phaeron

    River Patroller

  • Topic Starter
  • 2,174 posts
  • Location:USA

Posted Sun Sep 4, 2016 5:44 PM

Should fix the display issue:

http://www.virtualdu...-2.90-test2.zip

http://www.virtualdu...0-test2-src.zip

 

In case you're wondering what's going on, I rewrote part of the D3D9 display driver in a bid to try to get rid of the dependency on the DirectX SDK. Microsoft deprecated the DXSDK and then started moving pieces of it into the Windows SDK, which has made a really big mess since they didn't move all of it and using the two together causes all sorts of weird conflicts. I couldn't remove all of the dependencies in -test1, but it's removed in -test2.

 

Regarding the compatibility database, the version that's built into the emulator is precompiled, so the editor can't open it. Currently you have to dig out compatdb.atcompatdb from the source instead. The editable database also has to be compiled to be used, since it needs to be "inverted" for fast lookup. I might put in an auto-compile at some point since it's kind of a hassle to compile, but right now I'm more concerned with making sure the compat DB is a net benefit and not an annoyance.

 

The compatibility warning does indeed only trigger when a compatibility issue is detected with the current configuration; its purpose is to note and correct actual problems, not simply to indicate that a program has compatibility issues. Besides tagging machine configuration issues, the other thing I would like to do with this database is to supply automatic cartridge type mappings, particularly for the annoying 5200 one-chip/two-chip modes.

 

Note that the hashing function currently used by the compatibility database is a bit weird: it is a block-wise content 64-bit FNV1 checksum instead of a more conventional file CRC or MD5. I went this route in order to make the hashes incrementally updatable and agnostic to container format, and FNV1 had a very simple 64-bit hash algorithm. The chance of a hash collection with CRC32 would be way too high once the DB starts getting large. Might convert over to CRC64, though. This means that the checksums that you see in the compatibility database will not match file checksums that you would see anywhere else.

 

Thanks for update.  I learned to use the Altirra Debugger, Very helpful when writing assembler code. Im working on a game when i have the time and inspiration, Im wondering if Altirra can be used to test color composition of Atari graphics. In my case as a example lets say i have game program running in Altirra using screen mode 12 (5 color bitmap) and 2 multicolor players displayed on screen, Can i then use Altirra to alter the color registers on the fly just to see what colors will go nicely together as a test, or by go into Color palette options ?..

 

Altirra's debugger can be used for this by writing registers and shadow variables, but it's not ideal since you have to run the emulation in order to see the change -- the image is generated synchronous to CPU and chipset execution like on the real hardware. If you have a very simple display it may be possible just to use the debug display, which does not require actually stepping the simulation, but only handles rudimentary displays. Color Options isn't what you want since it modifies the hardware->TV mapping instead of the color palette in GTIA. For complex stuff you probably want a specialized tool like Graph2Font.

 



#16 k1w1 OFFLINE  

k1w1

    Chopper Commander

  • 108 posts
  • Location:Brisbane, Australia

Posted Sun Sep 4, 2016 8:08 PM

This new compatibility feature looks like a fantastic addition to Altirra.

 

I am having a bit of trouble however understanding and using the compatibility database creation facility. I think I have figured out that you set Altirra to play a problematic disk. Then run that disk and use the compatibility function to register that setup against the checksum of the disk. Is that correct?

 

Know a few questions: -

 

1) I am guessing this works if you have software that uses OSA, OSB or changes a loading parameter. But will it load a device like the "Joystick Dongle" for instance?

 

2) Does this work with cassette based software to change cassette switches like "Randomize Start Position" ?

 

TIA



#17 Atari_Ace OFFLINE  

Atari_Ace

    Star Raider

  • 88 posts
  • https://ksquiggle.neocities.org/
  • Location:Seattle, WA

Posted Sun Sep 4, 2016 9:09 PM

A minor nit in the debugger.  If you try to cut and paste a word from IE/Edge browser in Win10 into the Altirra debugger, it seems to let some CRLF or control characters through and you then can only see the tops of the characters in the text window.  I noticed this while testing 'u 96A0 la' missing ICBLH symbol I reported earlier (thanks for adding it, BTW).  Here's what it looks like if I paste in 'Direct3D' from above.

 

altdbg1.png



#18 phaeron OFFLINE  

phaeron

    River Patroller

  • Topic Starter
  • 2,174 posts
  • Location:USA

Posted Sun Sep 4, 2016 11:22 PM

I am having a bit of trouble however understanding and using the compatibility database creation facility. I think I have figured out that you set Altirra to play a problematic disk. Then run that disk and use the compatibility function to register that setup against the checksum of the disk. Is that correct?
 
Know a few questions: -
 
1) I am guessing this works if you have software that uses OSA, OSB or changes a loading parameter. But will it load a device like the "Joystick Dongle" for instance?
 
2) Does this work with cassette based software to change cassette switches like "Randomize Start Position" ?

 
You don't need to mount the image beforehand -- there is also a "from image" option in the alias window.
 
Basically, the way it works:

  • A title has one or more aliases, where an alias consists of a series of check rules. If all of the check rules for an alias are matched, the alias matches and the title is detected. A title can have more than one alias to match variants that all have the same behavior.
  • The title has one or more tags associated with it, which are conditions for the compatibility engine to check. Any conditions that fail are flagged for the user as issues with auto-fixes suggested.

Tags are just that, tags... they don't have parameters. For instance, the tag for OS-B means that the title needs exactly OS-B as the kernel ROM. Currently there isn't a tag for attaching the joystick dongle, and as I've said in the past, I'm reluctant to have the emulator supply that. It could be supported, though, if there were a tag for that specific dongle. The editor uses an internal list of tags, but it can keep any foreign tags it sees in the editable DB, and the editable DB stores tags as strings for future expansion.

 

Randomize Start Position is another option that could be bound to a tag, but that tag wouldn't be proper because tape programs don't actually require a randomized start position; they require that the start position not be aligned to a specific offset based on the OS boot timing. That's a harder condition for the compatibility engine to hit and not really a well-defined tag. Also, the compatibility engine doesn't yet support detecting tapes.

 

A minor nit in the debugger.  If you try to cut and paste a word from IE/Edge browser in Win10 into the Altirra debugger, it seems to let some CRLF or control characters through and you then can only see the tops of the characters in the text window.  I noticed this while testing 'u 96A0 la' missing ICBLH symbol I reported earlier (thanks for adding it, BTW).  Here's what it looks like if I paste in 'Direct3D' from above.
 
attachicon.gifaltdbg1.png

 

Will be fixed in next version... rich text mode was left enabled on the control.



#19 R4ngerM4n OFFLINE  

R4ngerM4n

    Moonsweeper

  • 397 posts
  • Beware of my friends!
  • Location:Sofa cushion.

Posted Mon Sep 5, 2016 1:12 AM

Big thanks to Phaeron!



#20 serj OFFLINE  

serj

    Chopper Commander

  • 200 posts
  • Location:Russia, Omsk city.

Posted Mon Sep 5, 2016 5:53 AM

thank you Avery for a great, excellent emulator.

Please do not throw work on this emulator.
and I hope to see much more interesting in the future.



#21 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Mon Sep 5, 2016 6:22 AM

Serj, I don't see any pointers that Avery is going to stop work on Altirra but that's for him to say, Avery strikes me as a very dedicated perfectionist who looks at his work with the point of view of looking for issues and happily fixing any found by us lot, the level that Altirra is at now means it just needs tending here and there but after saying that Avery has added this wonderful compatibility option which I would imagine was quite a lot of work.

 

Does not sound like a man giving up on this wonderful product..

 

Regarding the emulator itself Avery, you refuse monetary donation for reasons I fully understand but us lot tend to feel that there something we could do to help other than 1. using you work there fore proving its worthwhile and loved and 2. beta testing and reporting errors. Are there any other area's you could use a hand with or causes people could give to as a show of thanks?

 

Hardware lends / donations etc?

 

Just asking..

 

Paul.



#22 flashjazzcat OFFLINE  

flashjazzcat

    Quadrunner

  • 12,366 posts
  • Location:United Kingdom

Posted Mon Sep 5, 2016 6:38 AM

Thanks for the new versions: some really nice features.

 

Couple of things I noticed so far. 2.90 Test 1 and Test 2 both lose the display window (leaving a black void) on a second monitor when the application window is maximised with the debugger open if only DirectDraw and Direct3D 9 are checked. Enabling Direct3D 11 seems to fix it, as does dragging Altirra over to the primary display, or restoring the window so it doesn't fill the whole display. I'm running current Windows 10 64-bit with a discreet Nvidia card (driver 9.18.13.4195). I have various debugger panes tiled inside the main application window.

 

Something I just noticed today (running 2.80 Test 48 prior to updating to 2.90 Test 1 and then Test 2) is that folders mounted as virtual SpartaDOS disks return directories with the archived bit set for every file. I didn't notice this before: I just happened to be fiddling with The Last Word's file manager which displays all the file attributes. Tried SDX's MENU.COM as well and the archive bit is set there too, so it's not a bug in the word processor. Perhaps the bit is set deliberately: if so, please ignore.

 

EDIT: Regarding the archive bit - just checked the obvious, and the archive bit is set on the host file system, so there's no problem. Clearing it clears it in the emulator. :)


Edited by flashjazzcat, Mon Sep 5, 2016 6:41 AM.


#23 Mclaneinc OFFLINE  

Mclaneinc

    River Patroller

  • 4,786 posts
  • Location:Northolt, UK

Posted Mon Sep 5, 2016 8:21 AM

Does BASIC interfere with Mr Do!

 

It does not seem to and the game appears to play fine but its sort of an unwritten law that says to remove BASIC when booting a machine code game, just noticed that when playing with the Compatibility settings that it did not mind BASIC being on..

 

Just wondering...



#24 morelenmir OFFLINE  

morelenmir

    Stargunner

  • 1,456 posts
  • Location:West Yorkshire, Great Britain

Posted Mon Sep 5, 2016 1:28 PM

I originally posted the majority of this back in the old thread.  My apologies for repeating myself.

 

I am currently finding my feet again in Atari ASM, using Eclipse/WUDSN and MADS to write/compile and then Altirra to debug.  My current interest is cartridge images and booting.

 

Now, if one is using this workflow to produce 'normal' *.XEX sourcecode and WUDSN IDE to compile and launch them in the Altirra debugger the 'source-level debugger' starts up automatically, with the breakpoints set manually in Eclipse and even the sourcecode itself appearing in its own window showing the current point of execution.  However if you use the same setup, but with ';@com.wudsn.ide.asm.outputfileextension=.rom' specified to create a cartridge image which is then automatically 'sent' to the Altirra debugger, even if you have all the necessary *.LST and *.atdbg files created at compile time the 'source level debugging' system does not start automatically and the breakpoints specified in Eclispse/WUDSN do not seem to be 'seen' by Altirra.  Am I missing a setting somewhere - perhaps in the Altirra commandline?

 

My second and closely allied question is; how do you specify that the *.ROM you are handing off to the Altirra debugger is an 8k cartridge image (or any other sort)?  Currently the 'Select Cartridge Mapper' dialogue opens every time I compile and launch the debugger, which is obviously not a problem in itself but can become a little tedious if you are doing lots of small, incremental changes and want to see how they work out.

 

Needless to say, many thanks as ever Phaeron for v2.8 and striking onwards with v2.9!!!

 

Also a potential small GUI bug:  I use the 'Devices' dialogue to add an SIO2SD device.  However, the 'Remove' button is disabled when that device entry is subsequently selected.


Edited by morelenmir, Mon Sep 5, 2016 1:44 PM.


#25 flashjazzcat OFFLINE  

flashjazzcat

    Quadrunner

  • 12,366 posts
  • Location:United Kingdom

Posted Mon Sep 5, 2016 5:52 PM

Also a potential small GUI bug:  I use the 'Devices' dialogue to add an SIO2SD device.  However, the 'Remove' button is disabled when that device entry is subsequently selected.


Seems to happen with SIDE and SIDE2 as well. Only noticed it with devices beginning with "S" so far.





Also tagged with one or more of these keywords: altirra, emulation

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users