Jump to content
IGNORED

StellaDS v6.9 Released - CDFJ+ Driver Updates


wavemotion

Recommended Posts

StellaDS is a port of Stella for the DS/DSi/2DS/3DS/XL/LL handhelds. 

StellaDS

 

https://github.com/wavemotion-dave/StellaDS  
 

V6.9 : 06-Dec-2023 by wavemotion-dave

  • Improved the ARM Thumb driver and the CDFJ driver to squeeze out two more frames of performance.
  • Fixed PAN UP / PAN DOWN handling on the A-button and you can now pan even if another button is pressed (useful for Turbo Arcade).
  • Minor cleanups as time permitted.

 

With the release of ROMs for Turbo Arcade and Elevator Agent from Champ Games (@johnnywc), I went back to the salt mines of trying to squeeze additional performance out of the ARM Thumb driver (and, specifically, the CDFJ+ driver which both games utilize) for these latest offerings. 

 

It was met with mixed results. With 20 hours of effort, I was only able to manage a couple of additional frames of performance (almost 3 on EA). This isn't quite enough to render both at full speed. Although Turbo Arcade is the larger of the two games (at 128K), it turns out Elevator Agent (at 64K) is the more hard-hitting of the two in terms of emulation. It utilizes almost all the tricks and features of CDFJ+ including the optional fast fetchers for LDX and LDY (both with offsets) and has enough 6502 assembly to consume two banks (requiring bank switching) and generally is pushing an ungodly number of bytes through the TIA - enough to choke a horse.  The poor little NDS (even at the DSi CPU speed of 134MHz) is crushed under the weight of that technical challenge.  Part of the small speedup I got was related to the fairly common use of data streams fetching a value and then immediately (next instruction) storing it to the zero page (either RAM or TIA) and optimizing for that.

So here is where StellaDS stands in terms of Champ Games compatibility (roughly from most compatible to least in terms of frames/second rendering)**:


Lady Bug           60FPS Sustained - Fully playable.

Avalanche          60FPS Sustained - Fully playable.

Scramble           60FPS Sustained - Fully playable.

Conquest of Mars   60FPS Sustained - Fully playable even with Flicker Free mode (recommended).
Qyx                60FPS Sustained - Fully playable even with Flicker Free mode (recommended).

Wizard of Wor Arc  60FPS Sustained - Fully playable even with Flicker Free mode (recommended).

Mappy              60FPS Sustained - Fully playable with WAVE Direct audio mode to take advantage of the digital waveform music. 

Robot War          60FPS Sustained - Fully playable.

Super Cobra Arcade 60FPS Sustained - Fully playable even with Flicker Free mode though it might drop down to 58+.
Galagon            60FPS Sustained - Fully playable though I do see on some attack patterns it will drop to 58+ briefly.
Lady Bug Arcade    60FPS Sustained except for when there is a ton of stuff on screen and it might dip down to 58. Fully playable.

Zoo Keeper         60FPS Sustained - Fully playable. With flicker free (recommended) it might drop down to 58+ but fully playable.

Gorf Arcade        60FPS Sustained except for Flagship Battle which drops down to 56FPS - Fully playable.
Turbo Arcade       50+FPS with gusts to 60 - Fully playable with just hints of slowdown on some screens.

Elevator Agent     45-50FPS - A bit too slow to play... but man, what a technical achievement this game is!!

 

I have one pending (not in the official v6.9) potentially unsafe change to the TIA rendering that gets me another couple of frames across the board ... but it needs more vetting. I've uploaded that as 6.9a daily build for the adventurous amongst you.

image.png.a39a9f98d02515b7ce8877e3de56e090.png

 

 

**Running on a DSi with the 2X CPU (134MHz) enabled via Twilight Menu++. The older DS is capped at 67MHz and will not render the ARM-assisted games fast enough.

  • Like 5
Link to comment
Share on other sites

Early morning debug and optimization

 

For CDFJ+ games, I added an option to frame skip. It's tricky since you can't just draw every other frame as the game pulls some tricks on alternating frames so I'm doing 4 frames on, 4 frames off which produces a slight bit of flicker but still fine on the XL/LL models where the LCD tends to hold onto pixels and now I'm sustaining 50FPS on Elevator Agent with gusts to 55. If I could just get another 10% speed boost somewhere (it's like squeezing water from a rock!), this would be perfectly playable (sustained 55 with gusts to 60).

image.png.aa3742ee6cd73f3f44037e2c8863dead.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...