Homebrew A7800DS - Improved

wavemotion

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

Version 2 brings in the new and improved sound core which renders games much closer to the way they are supposed to sound. It's not perfect but it's a major improvement. This comes at a cost of emulation speed - so it really requires the DSi or 3DS now. I've included the older 1.9 DS-LITE version for people that want to play the core games on the older DS hardware - the older hardware won't run all the games, but what it does run will be close to full speed. The newer 2.0 on DSi or above will play most games really well.

Going forward, I've removed the Y button as the 'Full Speed' toggle and instead you can press in the upper right-corner of the screen to toggle that option. Most muggles won't ever use it - and I'd like to free up the X/Y buttons for more useful purposes. For now, the Y button is an alternate fire button.

I've also added a warning should you load a PAL rom. The number of scanlines is different and the sound core optimizations won't work properly with PAL roms. The warning will appear at the bottom of the screen. The A5200DS doesn't have this issue as there are no PAL roms (it was an NTSC machine only). In addition, the highscore support rom only works with NTSC (that's not my call - that's what the original Atari designers supported). Since you can always find the NTSC equivalent rom (and, truth be told, it's harder to find PAL ones these days) there is no reason to suffer :)
 
Last edited by wavemotion,

wavemotion

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

The last of the memory tweaks I think... almost everything is in fast RAM now. This yields another 4-5% speedup and most things are running really well.

This also sees a new A7800DS-LITE version (2.0) which has higher compatibility with the more basic games. Still runs close to full speed but a few more games are playable on the "ancient" DS hardware! Try Astro Blaster or Meteor Shower homebrews!

Edit: I put the wrong version in (debug version again)... please re-download!!
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
917
Trophies
1
XP
7,362
Country
United States
Not ready for a new build yet, but the latest nightly checkin fixes the bank switching auto-detection on the larger ROMs. So huge games like Draker's Quest I and II and E.X.O. will now load and run properly. Spire of the Ancients is supported for the first time though I need better handling on panning left/right (it's an awesome text heavy rogue-like game that requires more than the full resolution of the DS can provide so I'm going to center it and allow shoulder buttons to pan left/right). Alien Brigade graphical glitches are finally fixed - the game still runs on the slow side (47FPS) but is playable now.

I also made a very small change - one line in fact... to check if the bank switching (which moves a lot of memory around) is really needed (i.e. if the game is "switching" into a bank that is already selected) and it turns out that had a meaningful impact on a number of games. Klax now runs full speed. Xenophobe is very close to full speed (and gets above 60FPS in some areas). Other bank switching games saw no improvement (as they really are switching in and out of banks very fast).

Edit: and I finally figured out the strange slowdown in voice sound processing in Frenzy/Berzerk! Whew.

Most things are really playable now - even the massive super carts are running good!

upload_2021-1-6_11-11-48.png
 
Last edited by wavemotion,

wavemotion

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

Got it! A major improvement in bank switching that renders even the most stubborn games playable at full speed (or close enough).

Junkyard Dog, Commando, Ninja Golf, Midnight Mutants, Double Dragon, Ikari Warriors, Klax, Xenophobe, etc. are all well over 60FPS unthrottled.

Only Alien Brigade and Real Sports Baseball are holdouts - they run around 52FPS and are very playable (well, Alien Brigade is playable ... Real Sports Baseball is a trash game).
 

wavemotion

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

This version only adds one important change - if I can't find the game you're loading via MD5SUM, then I will look at the .A78 header and, as a last resort, the filename to try and find a match in our game database to load the proper settings.

This will future-proof the emulator. Since WiP games are being released all the time (UniWarS, Popeye, Spire of the Ancients, etc), it's not always possible to keep the MD5SUMs updated for the latest releases. But so long as you are loading the latest Popeye Rom with the name 'Popeye' in the title... the new engine will find it and load the right settings.
 

wavemotion

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

V2.6 : 02-Apr-2021 by wavemotion-dave
* Faster directory/file listing.
* Support for the latest homebrews: Galaxian and Popeye
* Improved scaling and offset handling using L/R + Arrow Keys to match other emulators.

It's been a while! I've been sitting on a few small fixes and the new scaling to match all other emulators under my care and decided it was a good time to refresh this one.
 

Lolight4

Member
Newcomer
Joined
Jan 10, 2021
Messages
11
Trophies
0
Age
25
XP
126
Country
Portugal
Ha! If you met me, that illusion would quickly be dispelled.

I'm just a slightly overweight middle-aged guy who likes to play classic games :)

Here I am up at the famous Funspot Arcade a few years back... old enough that a chair is welcome!

View attachment 256363
Amazing work! I don't want to be a beggar, but would it be possible to add a bottom screen mode? (For DS Macro users, it would be greatly appreciated!)
Thank you for your awesome work! :D
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
917
Trophies
1
XP
7,362
Country
United States
I don't want to be a beggar, but would it be possible to add a bottom screen mode? (For DS Macro users, it would be greatly appreciated!)
I'll definitely look into it. I just tried a quick-and-dirty hack to switch the screens and while it almost worked, the color depth and screen scaling stuff looked all wonky... so it's going to take a bit of effort based on the way the screen handling was originally designed.
 

Lolight4

Member
Newcomer
Joined
Jan 10, 2021
Messages
11
Trophies
0
Age
25
XP
126
Country
Portugal
I'll definitely look into it. I just tried a quick-and-dirty hack to switch the screens and while it almost worked, the color depth and screen scaling stuff looked all wonky... so it's going to take a bit of effort based on the way the screen handling was originally designed.
Hope it isn't a ton of trouble! I wish all emulators had the option for a bottom screen mode but i understand how difficult it must be to implement these things...
Thank you very much for going through the trouble! I'm sure the rest of the DS Macro fans and people with broken top screens will really appreciate it as well!
 

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
xn--rck9c.xn--tckwe
XP
3,903
Country
United States
I'll definitely look into it. I just tried a quick-and-dirty hack to switch the screens and while it almost worked, the color depth and screen scaling stuff looked all wonky... so it's going to take a bit of effort based on the way the screen handling was originally designed.
fyi lcdMainOnBottom(), lcdMainOnTop(), and lcdSwap() can be used to easily swap the screens, I just did a quick test of replacing the current lcdMainOnTop() with lcdMainOnBottom() and it seemed to work correctly so if you just do a hotkey to call lcdSwap() or so that might work.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
917
Trophies
1
XP
7,362
Country
United States
fyi lcdMainOnBottom(), lcdMainOnTop(), and lcdSwap() can be used to easily swap the screens, I just did a quick test of replacing the current lcdMainOnTop() with lcdMainOnBottom() and it seemed to work correctly so if you just do a hotkey to call lcdSwap() or so that might work.
Sounds easy! I'll definitely do this - probably if you hold down L/R plus X for a second I can do the swap. I assume the touch screen stuff will still "happen" on the bottom screen (the only screen with touch input) which might be weird as the emulator is playing a game and touching where my hot-spots are will still do things...
 
  • Like
Reactions: banjo2 and Pk11

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
xn--rck9c.xn--tckwe
XP
3,903
Country
United States
Sounds easy! I'll definitely do this - probably if you hold down L/R plus X for a second I can do the swap. I assume the touch screen stuff will still "happen" on the bottom screen (the only screen with touch input) which might be weird as the emulator is playing a game and touching where my hot-spots are will still do things...
Yeah, touch will still behave exactly the same as well, there's only one touch screen :P

You could do a variable for if it's swapped and ignore touch if so or something like that, probably wouldn't be a major problem though if it did still trigger.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
917
Trophies
1
XP
7,362
Country
United States
Wow, that turned out to be surprisingly simple!

Okay, I've added the LCD Screen swap to A7800DS as well as my XEGS-DS emulators and checked the code and build in... and will add them to StellaDS and A5200DS soon.

If anyone wants to try it, just grab the most recent nightly build: https://github.com/wavemotion-dave/A7800DS

Press L+R+A for about a half second to toggle swap the screens. You can swap them back the same way.
 
Last edited by wavemotion,

Lolight4

Member
Newcomer
Joined
Jan 10, 2021
Messages
11
Trophies
0
Age
25
XP
126
Country
Portugal
Wow, that turned out to be surprisingly simple!

Okay, I've added the LCD Screen swap to A7800DS as well as my XEGS-DS emulators and checked the code and build in... and will add them to StellaDS and A5200DS soon.

If anyone wants to try it, just grab the most recent nightly build: https://github.com/wavemotion-dave/A7800DS

Press L+R+A for about a half second to toggle swap the screens. You can swap them back the same way.
This works PERFECTLY!
Thank you so much! And I am so glad you are adding these improvements to the other emulators as well, amazing work! :D
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    BigOnYa @ BigOnYa: Ok thanks, I love my X but have not messed with a S yet.