Homebrew A7800DS - Improved

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
https://github.com/wavemotion-dave/A7800DS

V3.6 : 04-Jun-2022 by wavemotion-dave
  • Fix for XM detection so the newest Pac-Man Collection (PMC-XM) works!
  • Minor database cleanups so all the more recent games run.
A small update which brings in better compatibility for the games released over the last year. I finally fixed the bug with XM detection so the newest Pac-Man Collection games work! This was mainly prompted by the author of PMC releasing a special 'S=Short Maze' version this week over on Atariage. Find it and enjoy!
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 3.7 is released: https://github.com/wavemotion-dave/A7800DS

V3.7 : 23-Oct-2022 by wavemotion-dave
  • Optmization across the board for faster and smoother performance.
  • Gained enough speed that we have restored full HQ sound for the DS-Lite.
  • bonQ fixed graphical glitches.
  • Keystone Koppers fixed graphical glitches.
  • Latest homebrews added to the internal database.
  • New configuration menu so you can tweak settings - new homebrews won't need a new A7800DS.
  • Better A78 v3 header support so more games run right.

Well.. it's been a while! Significant update with a lot of the old ProSystem bugs squashed. Many thanks to the folks over at Atari Age for their help in getting some improvements for long-standing graphical glitches on this emulator.

Faster performance across the board - so much so that I've put back the full sound core for the DS-Lite. The ting-ting of Asteroids shots is now so much nicer!

A full new Config Menu is available by clicking the gear icon. This allows various tweaks which would normally have to be set by me and re-compiled into a new release. This should future proof the emulator so that any new homebrews can be made to work properly.

Once again thanks to @CrashMidnick for his help in testing this on the DS-Lite. Not every game runs perfectly on the older hardware... but it's better than ever!

1666542719316.png
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 3.8 is released: https://github.com/wavemotion-dave/A7800DS

V3.8 : 26-Oct-2022 by wavemotion-dave
  • Massive optmization of the Maria rendering to help the DS-Lite run more games.
  • Fix for Rampage
  • Fix for Rescue on Fractalus
  • Fix for F-18 Hornet
  • Fix for Double Dragon
  • Fix for Basketbrawl
  • Better A78 header parsing for improved game detection
  • New Moderate Frameskip to show 3/4 frames (not as aggressive as the old 1/2 frameskip)
  • Support for 1024K (+128 byte header) games. Only a few tech demos available so far.
  • Removed most of the old hacks for DS-Lite as the speed is good enough to render those games properly.

Many thanks once again to @CrashMidnick for his help in testing this. He found several bugs that I've since repaired and this is the cleanest version yet. Any bugs that remain are, of course, my own :)

But the big news is a roughly 10% speed-up across the board. So much so that I've been able to strip out the hacks that were making some of the more complex games playable on the DS-Lite. The DS-Lite and DSi now run the same code. More 7800 games are playable across all DS handhelds. Enjoy!
 

exavadeathwitch

Member
Newcomer
Joined
May 31, 2019
Messages
18
Trophies
0
Age
22
XP
106
Country
United States
Version 3.8 is released: https://github.com/wavemotion-dave/A7800DS

V3.8 : 26-Oct-2022 by wavemotion-dave
  • Massive optmization of the Maria rendering to help the DS-Lite run more games.
  • Fix for Rampage
  • Fix for Rescue on Fractalus
  • Fix for F-18 Hornet
  • Fix for Double Dragon
  • Fix for Basketbrawl
  • Better A78 header parsing for improved game detection
  • New Moderate Frameskip to show 3/4 frames (not as aggressive as the old 1/2 frameskip)
  • Support for 1024K (+128 byte header) games. Only a few tech demos available so far.
  • Removed most of the old hacks for DS-Lite as the speed is good enough to render those games properly.

Many thanks once again to @CrashMidnick for his help in testing this. He found several bugs that I've since repaired and this is the cleanest version yet. Any bugs that remain are, of course, my own :)

But the big news is a roughly 10% speed-up across the board. So much so that I've been able to strip out the hacks that were making some of the more complex games playable on the DS-Lite. The DS-Lite and DSi now run the same code. More 7800 games are playable across all DS handhelds. Enjoy!
Are you using software or hardware rendering?
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 3.9 is released: https://github.com/wavemotion-dave/A7800DS

V3.9 : 29-Oct-2022 by wavemotion-dave
  • More optmization and more games playable on the DS-Lite.
  • Highscore A7800.SRAM file moved to /data (move yours manually) - this allows the same high score file even if your roms are in different directories.
  • Fix for One-on-One.
  • Fix for voices in Jinx.
  • Cleanup of code - removed unused functions and vars. Switched to a memory-lite sprintf().
The pipe-dream was to get every game playable on the DS-Lite/Phat. It got close. More than 80% of the library including most of the new homebrews will play full-speed on the older DS hardware. Even the venerable Commando will play just about right on the ancient handheld. A few games are still holdouts... but not many. Everything blazes on the DSi of course provided you launch with Twilight Menu++ or Unlaunch so you get the DSi 2X CPU enabled.

To standardize with my other emulators, I've moved the A7800DS.SRAM file to /data which is where I keep all of the other global settings stuff for all emulators I've worked on. This allows you to have one global high-score file for all your games no matter what directory you put your games into. Please move your A7800DS.SRAM file manually if you want to keep your old highscores (this requires the highscore.rom file - see the Readme for help).
 

exavadeathwitch

Member
Newcomer
Joined
May 31, 2019
Messages
18
Trophies
0
Age
22
XP
106
Country
United States
I’m not sure what you mean. Can you elaborate?

I emulate the 7800 video output directly to the DS lcd memory for speed and let the DS render it … but the emulation of the Maria graphics processor on the 7800 is all software.
you answered my question with this ty. I wasn't sure if you were rendering it line by line or doing a sprite-based render system.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 4.0 is released: https://github.com/wavemotion-dave/A7800DS

V4.0 : 01-Nov-2022 by wavemotion-dave
  • Overhaul the audio system to use the MAXMOD streaming library to eliminate sound 'zingers'
  • Other minor cleanup and tweaks as time permitted.
Finally... it only took a year to get rid of the "zingers" and other sound artifacts. I've switched over to the MAXMOD streaming audio library and ditched the default soundlib. Bask in the total 8-bit sound glory.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 4.1 is released: https://github.com/wavemotion-dave/A7800DS

V4.1 : 02-Nov-2022 by wavemotion-dave
  • Overhaul Maria cycle stealing - all games now use the proper cycle stealing with much closer to accurate timing. This fixes games like One-on-One and Kung Fu Master.
  • Other minor cleanups and tweaks as time permitted.

Sorry for the fast turn-around here but had a break-thru last night with the help of some fine folks over on Atariage. I finally came to mental grips with the way the Maria graphics chip works... basically this powerhouse of a chip in the 7800 will take over after the Horizontal Blanking period and setup to render the previous scanline. During that time, it effectively halts the CPU from running - this is known as "cycle stealing" and is a critical concept for the 7800. The Prosystem emulator has always been a little weak in that area - but the Wii port of ProSystem by Raz0red has dug in and fixed a lot of these cycle inaccuracies. I have now done the same for A7800DS. The games should run much closer to their true speeds - previously games like One-On-One or Kung-Fu-Master would be too fast. This also makes more of the stubborn games playable on the DS-Lite since the hacky way of handling some of this cycle timing has been removed. It's not perfect emulation... but it's closer! Enjoy.

1667393002826.png
 

Attachments

  • 1667393006732.png
    1667393006732.png
    310.4 KB · Views: 29

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
So I'm not ready for a new build (probably this weekend) but I've got some cool stuff coming.

I can now support the 2X bankswitched RAM scheme. This doubles the 16K of extra RAM available for games to use. Unfortunately, it's only used by one test/demo so far... but hopefully more games will support that in the future.

But the big change coming is a new way of handling the High Score Cart.

Hopefully you've been using the highscore.rom which is an add-on peripheral to support high score saving automatically by games that take advantage of it. There are already 50+ games that use it... including some of the classics. The problem is that the original standard only allowed for 69 entries which are chewed up rather quickly if you're playing a lot of the HSC supported games.

Last night I added an 8x density on the HSC by using virtual cart slots backed to a single 16K SRAM file. Each 2K SRAM slot is based on the first letter of the cart filename. The first time you run a game with HSC support and enter an owner-name it will replicate that (along with the magic numbers) across all 8 virtual cart slots. Similarly if you later change the cart owner's name, that gets replicated across all 8 virtual cart slots. The user is blissfully unaware - they think they have one save cart but under the hood it's magically spread out across 8 virtual high score carts.

In this way, the effective number of game entry slots is 552 though based on the game filename it's not quite evenly distributed. But it's good enough - and virtually ensures that we won't run out. The user should never even notice that this virtual cart swapping is going on under the hood.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 4.2 is released: https://github.com/wavemotion-dave/A7800DS

V4.2 : 06-Nov-2022 by wavemotion-dave
  • Added support for bankswitched RAM (32K of RAM switched in 16K chunks). This makes the Ex version of 1942 playable.
  • Added alternate way of handling bankswitched RAM the same way as the DragonFly cart or SN board: via writes to 0xFFFF.
  • Fix graphical glitch for Ballblazer (just hiding it off screen).
  • Numerous small updates to the internal cart database to ensure game run with the proper settings (mostly High Scores)
  • New 8x density on the High Score Cart - transparent to the user but provides more slots so the HSC won't fill up.
  • Flat 32K plus RAM cart type supported.
  • Pokey @800 supported for upcoming homebrews.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 4.3 is released: https://github.com/wavemotion-dave/A7800DS

V4.3 : 11-Nov-2022 by wavemotion-dave
  • Full support for the new Banksets scheme including the upcoming Attack of the Petscii Robots game!
  • Added the stable "illegal" opcode support for the 6502 CPU to ensure all games run properly.
  • New Maria cycle handling is more accurate than it's been in any previous version. More games run closer to perfect.
  • Improved rendering and a bit more optmization to make almost every game playable on the older DS-Lite.
Big update - with the help of some of the designers over on Atariage, I was able to get the new Banksets scheme implemented in A7800DS! This new banking/memory handling is designed for homebrew authors to provide increased ROM density and improved packing and access of graphics data vs code. This allows for games that would have been difficult or impossible without the scheme. The first game being released (soon) is Attack of the Petscii Robots which just looks brilliant (I've been fortunate enough to get an advance sneak peak to ensure A7800DS will run properly with it).

I've also tackled a big chunk of the Maria (graphics processor) cycle inaccuracies and gotten to run much closer to a real Atari 7800 machine. More games work as close to "right" as I can get right now... it's not perfect but it's gotten close!
The optmizations have allowed some of the really complex games like Commando, Alien Brigade and Xenoprobe to be playable on the DS-Lite.

This is probably a wrap on A7800DS for a while... it's made a ton of progress this past month and it's in a state I feel pretty good about!
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
57fps on Ikari Warriors ! 57 fps average on Alien brigade ! Almost fullspeed all the time on Commando... on a DS-lite :blink::blink:
Thanks !
Hard to imagine even now! Alien Brigade ran (glitchy) at 40fps when I started... on a DSi :) :) :)

It's a solid 250% faster now.

Still... Ninja Golf runs at 50fps on the Lite. That thing is really hammering the CPU!

Good news is that Attack of the Petscii Robots (coming in a few weeks) will sustain 60 fps on the Lite!!
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,319
Country
United States
Version 4.4 is released: https://github.com/wavemotion-dave/A7800DS

V4.4 : 14-Nov-2022 by wavemotion-dave
  • New palette options from the Trebor 'Pro Pack' of colors. COOL, WARM (default), and HOT allow you to shift the color temperature slightly on a per-game basis.
  • Improved sound channel mixing so as not to halve the volume when mixing POKEY + TIA.

Small update but important. I figured out (on ColecoDS) how to properly mix channels without cutting the sound in half... so now games like Commando and those homebrews that use POKEY + TIA sound (6 channels total) don't cut the volume in half.

The other change is a choice of 3 color palettes... the three choices I added are are based on the fine work by Trebor (of 'Pro Pack' fame) and provide a COOL, WARM (default) and HOT. Most games you wouldn't notice the difference but games with a lot of green/brown (like Commando, Xevious or Alien Brigade) will shift the colors - find the one that looks best to you!
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    realtimesave @ realtimesave: got a mig switch here, freshly smuggled in from China