Current version

v1.10.4 (stable)

Navigation

Main page
Archived news
Downloads
Documentation
   Capture
   Compiling
   Processing
   Crashes
Features
Filters
Plugin SDK
Knowledge base
Donate
Contact info
Forum
 
Other projects
   Altirra

Search

Archives

01 Dec - 31 Dec 2013
01 Oct - 31 Oct 2013
01 Aug - 31 Aug 2013
01 May - 31 May 2013
01 Mar - 31 Mar 2013
01 Feb - 29 Feb 2013
01 Dec - 31 Dec 2012
01 Nov - 30 Nov 2012
01 Oct - 31 Oct 2012
01 Sep - 30 Sep 2012
01 Aug - 31 Aug 2012
01 June - 30 June 2012
01 May - 31 May 2012
01 Apr - 30 Apr 2012
01 Dec - 31 Dec 2011
01 Nov - 30 Nov 2011
01 Oct - 31 Oct 2011
01 Sep - 30 Sep 2011
01 Aug - 31 Aug 2011
01 Jul - 31 Jul 2011
01 June - 30 June 2011
01 May - 31 May 2011
01 Apr - 30 Apr 2011
01 Mar - 31 Mar 2011
01 Feb - 29 Feb 2011
01 Jan - 31 Jan 2011
01 Dec - 31 Dec 2010
01 Nov - 30 Nov 2010
01 Oct - 31 Oct 2010
01 Sep - 30 Sep 2010
01 Aug - 31 Aug 2010
01 Jul - 31 Jul 2010
01 June - 30 June 2010
01 May - 31 May 2010
01 Apr - 30 Apr 2010
01 Mar - 31 Mar 2010
01 Feb - 29 Feb 2010
01 Jan - 31 Jan 2010
01 Dec - 31 Dec 2009
01 Nov - 30 Nov 2009
01 Oct - 31 Oct 2009
01 Sep - 30 Sep 2009
01 Aug - 31 Aug 2009
01 Jul - 31 Jul 2009
01 June - 30 June 2009
01 May - 31 May 2009
01 Apr - 30 Apr 2009
01 Mar - 31 Mar 2009
01 Feb - 29 Feb 2009
01 Jan - 31 Jan 2009
01 Dec - 31 Dec 2008
01 Nov - 30 Nov 2008
01 Oct - 31 Oct 2008
01 Sep - 30 Sep 2008
01 Aug - 31 Aug 2008
01 Jul - 31 Jul 2008
01 June - 30 June 2008
01 May - 31 May 2008
01 Apr - 30 Apr 2008
01 Mar - 31 Mar 2008
01 Feb - 29 Feb 2008
01 Jan - 31 Jan 2008
01 Dec - 31 Dec 2007
01 Nov - 30 Nov 2007
01 Oct - 31 Oct 2007
01 Sep - 30 Sep 2007
01 Aug - 31 Aug 2007
01 Jul - 31 Jul 2007
01 June - 30 June 2007
01 May - 31 May 2007
01 Apr - 30 Apr 2007
01 Mar - 31 Mar 2007
01 Feb - 29 Feb 2007
01 Jan - 31 Jan 2007
01 Dec - 31 Dec 2006
01 Nov - 30 Nov 2006
01 Oct - 31 Oct 2006
01 Sep - 30 Sep 2006
01 Aug - 31 Aug 2006
01 Jul - 31 Jul 2006
01 June - 30 June 2006
01 May - 31 May 2006
01 Apr - 30 Apr 2006
01 Mar - 31 Mar 2006
01 Feb - 29 Feb 2006
01 Jan - 31 Jan 2006
01 Dec - 31 Dec 2005
01 Nov - 30 Nov 2005
01 Oct - 31 Oct 2005
01 Sep - 30 Sep 2005
01 Aug - 31 Aug 2005
01 Jul - 31 Jul 2005
01 June - 30 June 2005
01 May - 31 May 2005
01 Apr - 30 Apr 2005
01 Mar - 31 Mar 2005
01 Feb - 29 Feb 2005
01 Jan - 31 Jan 2005
01 Dec - 31 Dec 2004
01 Nov - 30 Nov 2004
01 Oct - 31 Oct 2004
01 Sep - 30 Sep 2004
01 Aug - 31 Aug 2004

Stuff

Powered by Pivot  
XML: RSS feed 
XML: Atom feed 

§ Altirra 1.1 released

I finally have some time lately to flush out some of the stuff I've had going on lately, and since all my latest VirtualDub work went out with 1.9.2, it's time for something else. A while ago I posted the first version of Altirra, my Atari 8-bit computer emulator. Due to some encouragement from some friendly people on AtariAge, I went back and fixed a whole bunch of emulation bugs in the emulator, and the result is version 1.1:

(Update: Links to version 1.1 removed -- superceded by current version.)

As proof of its worthiness of release, I present my in-emulator triumph over evil in The Last Starfighter:

[The Last Starfighter victory screen]

The primary improvements are a lot of undocumented features implemented in GTIA, a couple of fixes to POKEY, and several tricky but important timing fixes in ANTIC. The display code now also does aspect ratio locking (a feature that I need to integrate back to VirtualDub).

Working on an emulator for an old computer system is basically working to an inflexible, and unfortunately incomplete, spec. I have access to the official Atari Hardware and OS reference manuals, which describe all hardware registers and kernel calls in the system. You can write an emulator that exactly conforms to those specifications and the result is that you will be able to run maybe half of the software that was released. The other half won't work because it depends on undocumented behavior such as when the display list interrupt bit resets (scan line 248) and the exact number of clock cycles it takes to enter the vertical blank routine (47-53 for XL OS). The spec is unrelenting and frozen -- unless you have a time machine, there is no way to change it. Therefore, you will implement exactly what the hardware does, period, and anything less is a bug. It gives you some appreciation for when you do have leeway to get specs changed to ease implementation.

There is one feature that I wanted to get into this version that I couldn't, which is artifacting. Artifacting is a phenomenon of composite video where unfiltered high frequencies in luminance are misinterpreted by the TV as colors. In NTSC Ataris, the high-resolution modes output pixels at a rate exactly twice the color subcarrier, which means that alternating luminance values produce colors instead of patterns. NTSC is designed with frequency interleaving to mitigate this somewhat, but the Atari produces non-interlaced video with a constant color subcarrier phase, defeating this. The way I tried to simulate this was brute-force, simply converting the video screen to a virtual 13.5MHz (4*Fsc) signal and then separating it out to Y/I/Q with FIR low pass and high pass filters. Well, the result kind of sucked, with an exceptionally blurry luma output and visible rippling in artifacted areas. The result on a real Atari with my LCD monitor's composite input looks significantly better, which leads me to believe there's something I'm missing, possibly a non-linear separation algorithm.

Changelist after the jump.

Changelist:

Version 1.1 [May 12, 2009]:
   [features added]
   * CPU: Added an option to disable illegal opcode support.
   * Disk: Added .XFD support.
   * Disk: Added rudimentary hard disk (H:) support.
   * UI: Added exception handler to write crash information.
   * UI: F8 now also breaks into the debugger.
   * UI: Fixed some window activation issues in the docking system.
   * UI: Display is now locked to correct aspect ratio.
   * UI: Dockable panes are now based on percentage rather than absolute width.
   * UI: Changed location of Registry key to work around antivirus false
positives.
   * Cartridge: Added support for cartridge images that have headers.
   * Cartridge: Added support for MaxFlash 128K and 1M cartridge formats.
   * Debugger: F5/F8/F9/F10/Shift+F10 now work.
   * Debugger: Frames are now double-clickable in the call stack window.
   * Debugger: F10 now works in the console command line.
   * Debugger: Added history window.
   * HLE: Rewrote HLE kernel mode to be based off the LLE kernel for better
compatibility.
   [bugs fixed]
   * Simulator: Init and run vectors are now implemented properly -- fixes
New Year's Miracle demo.
   * Simulator: $FFFF optional headers in executables no longer produce load
errors.
   * Kernel: DRKMSK was not set -- fixes missing status bar in The Last Word.
   * Debugger: The start of instruction PC is now reported instead of the CPU
raw internal PC.
   * Debugger: Fixed infinite loop when viewing disassembly beyond $FFFF.
   * Debugger: Disassembly view edit window now works.
   * Debugger: Fixed a cycle being lost by the CPU on each step or breakpoint
hit.
   * Debugger: Console window now scrolls to bottom when updating.
   * UI: Implemented some Ctrl+Key combinations.
   * UI: Fixed jittering problems in full-screen mode.
   * UI: Fixed some focus problems when docking and undocking panes.
   * UI: Full-screen mode no longer shows window borders when using GDI or
DirectDraw for display.
   * UI: Removed horizontal and vertical blank regions from display window.
   * UI: Caps Lock now works.
   * UI: Mouse pointer is now hidden in full-screen mode.
   * Disk: Improved disk emulation compatibility with SpartaDOS X.
   * Disk: Fixed corruption of first byte on sector writes.
   * Pokey: Added missing channel 2+4 high pass filter.
   * Pokey: Fixed off-by-one in 1.79MHz 16-bit timing that screwed up some demos
using 4-bit polynomial beats.
   * Pokey: Pot scanning is now implemented.
   * GTIA: Color mixing with PRIOR D0-D3=0 now works.
   * GTIA: Fixed incorrect luminance for background in 16 color mode.
   * GTIA: Fixed player/playfield priorities in 9 color mode.
   * GTIA: Fifth player now mixes in PF3 color properly in 16 color/luma modes.
   * GTIA: Color registers no longer have four luma bits.
   * GTIA: ANTIC modes other than 2, 3, and F now work with GTIA modes.
   * GTIA: Implemented psuedo-mode-E caused by resetting the GTIA mode mid-scanline.
   * GTIA: Collisions now register in 9 color mode.
   * GTIA: Implemented one color clock shift in 9 color mode.
   * GTIA: Changing HSCROL in the middle of a mode line now works.
   * ANTIC: Corrected WSYNC, DLI, and VBI timing.
   * CPU: Fixed instruction timing for read-modify-write opcodes using abs,X
addressing.

Comments

Comments posted:


http://www.digitallounge.gatech.edu/gami..

A project to add some of the classic visual characteristics into an Atari emulator. This was on /. a little while ago if you haven't seen it already.

silencer - 14 05 09 - 20:35


You might find the BSNES emulator development interesting... http://byuu.org/

This guy spends lots of time writing test programs that he runs on real SNES hardware to troubleshoot subtle timing issues and document previously undocumented hardware behavior.

Sadly, a lot of the posts from a few years ago got lost when they moved from a single thread on the ZSNES forum (over 100 pages worth of posts) to Byuu's own forum.

I remember a few versions back when some of the testers ran through every SNES game available (except ones that use special chips like FX games) and only came up with a few (less than 10) that didn't work properly. Now I think the list is down to three and I think all "special" chips are now supported too.

Tankadin (link) - 15 05 09 - 02:35


@silencer...

One of the MAME developers had some interesting words to say about the supposed "CRT emulation" at your link...
http://moogle-tech.com/blog/?p=120

Incidentally, MooglyGuy's blog has some really interesting stuff about reverse engineering the N64...
http://moogle-tech.com/blog/

Tankadin (link) - 15 05 09 - 02:40


Blargg's NTSC libraries as linked by Tankadin are the best. The one that silencer linked is utter garbage.

There's a fairly nice PAL emulation in the latest version of VICE the C64 emulator (2.1), if that's what turns you on.

mpz - 16 05 09 - 19:33


Lol at that MAME blog link, calling those Stella filter guys idiots, and then comparing MAME's sucky PNG filters to those student's CRT filter emulation. Just another typical arrogant MAME dev, in another typical MAME dev rant.
Let me just say this, those filters written by those students for Stella are simply SUPERIOR to the lame MAME png crap. Try a MAME from the earlier builds, pre 0.100, and compare scanlines from then to the png crap we now have, simply no comparison whatsoever.
And to the idiot above me, I guess you grew up on Playstations, to call this "Utter garbage". They are trying to emulate the look of a late 70's TV, but I guess you were born way too late to understand this, or even know what a 70's TV looks like when running Videogames.

CTW (link) - 18 05 09 - 08:25


The 'NTSC filter' has been incorporated in the latest SDL build of Atari800 emulator (version 2.1.0 - atari800-2.1.0-winsdl.zip, not available in dx build). It's under 'Display settings' > 'NTSC artifacting quality' > 'NTSC filter'.
A shader-based 'filters' simulating the rf noise/interference, crt curvature geometry or aging phosphor would be something fresh in the emulation world :)
But the main thing I'd like to see in Altirra is tape wobble&hiss playback (like in the ZXSpin emulator) and floppy drive sounds (like in the WinUAE emulator) :)

mg - 18 05 09 - 13:48


@CTW
MAME doesn't even attempt to emulate NTSC. Arcade games used fixed frequency RGB monitors, and the video signal has got nothing to do with NTSC. MAME does a fairly good job of emulating RGB screens (necessary PNG masks not built in, you need to get them separately!).

What the Georgia Tech group came up with is utter garbage and guesswork. If you want NTSC simulation, you're going to want to check out Blargg's NTSC libraries which are based on real observation and modeling of the NTSC signal. Look at the screenshots!

And, of course, VICE 2.1 has fairly authentic PAL emulation.

mpz - 18 05 09 - 14:05


Hey folks, keep it civil, please....

Phaeron - 18 05 09 - 15:08


Two versions, 1.1 already, why not create some project page for it? :)

tvtoon - 28 05 09 - 20:12

Comment form


Please keep comments on-topic for this entry. If you have unrelated comments about VirtualDub, the forum is a better place to post them.
Name:  
Remember personal info?

Email (Optional):
Your email address is only revealed to the blog owner and is not shown to the public.
URL (Optional):
Comment: /

An authentication dialog may appear when you click Post Comment. Simply type in "post" as the user and "now" as the password. I have had to do this to stop automated comment spam.



Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.