A8DS - An Atari 8-bit Emulator for the DS/DSi/XL/LL

  • Thread starter Thread starter wavemotion
  • Start date Start date
  • Views Views 9,226
  • Replies Replies 27
  • Likes Likes 17
V4.0 : 20-Jan-2025 by wavemotion-dave
  • Major overhaul to add "Cycle Exact" Antic and GTIA which fixes many glitches and artifacts.. however this comes at a CPU emulation cost (see next item).
  • There are now two builds... one for the older DS-Phat/Lite and one for the DSi (or XL/LL) which brings in a higher level of compatibility with the "Cycle Exact" timing.
  • Improved keyboard overlays - added alphanumeric keyboard with text-adventure macros.
  • Improved memory handling - using more memory but in an efficient way for the new features.
  • Improved sound handling - new SIO sounds, new opening jingle.
  • Improved CPU handling to fix one more Acid800 test (25 pass now).
  • Fixed keyboard handling so games like Scorch will register keypresses (broken as of V3.0).
  • Added some of the more obscure missing .CAR cartridge types.
  • So much changed under the hood that old config files will be wiped and old save states will not work. Sorry!

This is a big one... I've brought forward all of the cycle exact changes for the Antic and GTIA. But this comes at a cost of significant CPU power. There are now two different builds:

A8DS.nds - the traditional build that has all the new features except the "Cycle Exact" handling.
A8DSi.nds - the improved build that has everything including the "Cycle Exact" handling. It will not run on an older DS model (nor in 'compatibility' mode of most flash carts).

With A8DS.nds and the non-cycle exact handling you get small graphical artifacts in games like Space Harrier or Atari Blast! (note missing column of letters):
image.png.12ade4eeb8e63f0d357cae71b1bbf1d4.png image.png.f77d2f4a4949835bfd4da65f57b89604.png

With A8DSi.nds and the cycle-exact handling you get the proper output:

image.png.7b644425728c9c90782521d47add7bda.png image.png.8c07f37d5df03f472c9a53d35d022d71.png

For both builds, I've corrected a large number of issues - mostly with separate ANTIC and CPU access but also more robust handling of memory and Pokey access. For the Acid800, I'm up to 25 PASSes now... the same number that modern Atari800 emulator has.

Save states and configurations will be wiped with this new version - simply too much has changed under the hood.

As always, I appreciate the support this community has shown for this little hobby project I did on my spare time!

image.png.699d85cc0cc3c75edfc4db4d86b53800.png
 
V4.1 : 25-Jan-2025 by wavemotion-dave
  • Refactor the OS Enable/Disable on XL/XE emulation to avoid moving large blocks of memory. Speeds up many games that swap the OS in/out.
  • Improved SIO/Disk handling - sound effects reduced in volume and now configurable (default is OFF).
  • Improved cart/disk loading and all disks are left mounted when RESET is pressed allowing you to load up a system the way you want.
  • A dozen new .CAR cartridge types supported including DCART (Bubble Bobble homebrew).
  • Tweak to the TWL++ icon for A8DS to make it look a bit more classic.
  • Many small cleanups and improvements and a few bug fixes as well.
A nice cleanup release... both A8DS.nds (for the DS-Lite/Phat or a DSi running with a flashcart) and A8DSi.nds (for the DSi or above running in 2X CPU mode) are available. If you have the means to run A8DSi.nds, that's strongly encouraged as it will bring out the best in emulation with the new cycle-exact timing for higher compatibility across the board.

One big change is in the way we swap the OS in/out for XL/XE emulation. In the past, this was done with moving memory blocks around to swap in RAM vs OS. Most games don't really do a lot of OS swap in/out - they generally either leave the OS enabled or else disable it to get at the RAM in that address space... but some games do make use of swapping it in and out. Bubble Bobble (via DCART cartridge type) brought this to a head for me as it does tens of thousands of swaps in/out. Moving that much memory each swap was a waste of time... so now I handle the OS swap in/out just like I do the XL/XE extended memory banks... it's just pointers to blocks of memory. This gives a 10x speedup factor for games that do this kind of thing.

There have been some other significant improvements under the hood to speed things up... especially for the DSi and above. Space Harrier cartridge will now sound correct - the 'chipmonk' voice is gone in favor of a much more accurate rendering.

As always, I appreciate the appreciation and I hope anyone running A8DS will adopt this new version!
 
https://github.com/wavemotion-dave/A8DS

V4.2 : 01-Feb-2025 by wavemotion-dave
  • Fixed Turbo 128K cart type so it doesn't inadvertently disable the cartridge port.
  • Added Right-Side cart support for Atari800 (fixing a few A800 emulation issues as well).
  • Added Atari 5200 cart support for carts of 128K or less (rename your 5200 carts to ".a52" for easy loading)
  • Added new key maps for SHIFT and CONTROL to NDS keys.
  • Massive simplification of the configuration handling for machine type. Global configuration is now truly global.
  • New NTSC and PAL color palettes from the awesome Trebor Pro Pack.
  • New Caps Lock LED added to all virtual keyboards.
  • Added new cart types for SIC+ (1MB), Corina (1MB+EE and 512K+512K+EE), Telelink II and MIO_8, XE Multicart and more...
  • Lots of small tweaks and bugfixes as time permitted.
 
atari5200 supported! I guess that A8DS and A5200DS are on collision course now :D
Yeah - I debated adding 5200 support to A8DS ... I don't want to take away from the stand-alone A5200DS. But when I started to look at the various cartridge types I was supporting, the main gaps were of the 5200 types... and my OCD got the better of me :)

But A5200DS still has a place - it's simple. The memory architecture, while essentially the same as the Atari 400, is generally non-expandable. There is no expanded memory and all commercial carts fit well in the 64K flat memory layout. So I can pull tricks to make it faster - this means more of the 5200 versions of games are playable on the older DS-Phat/Lite.

But this is kinda the problem with the 5200... it's often neglected because the Atari 8-bit line (Atari 400/800/XL/XE) is generally a superset.
 

Site & Scene News