ColecoDS - Improved

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Thanks for the report! I'll take a good look at Boulder Dash to see what's going on... hopefully can get that sured-up.

@plasturion - yeah, definitely something wonky with Boulder Dash. It fails on DSi as well and seems to go back many generations (I went all the way back to 6.7 and it still fails). On a lark, I tried switching to the DrZ80 core (gone in 7.3 but present in 7.2 and earlier) and that core worked fine with Boulder Dash (no bugs or freezes that I could detect).

That's the first time the venerable DrZ80 core did something better than the CZ80 core! I guess I retired the DrZ80 core too soon... I will probably add it back in and default Boulder Dash (only - unless other games experience similar issues) to the DrZ80 core.
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
https://github.com/wavemotion-dave/ColecoDS

Not ready to publish the next build yet, but did check-in 7.3a which you can try from the main directory above. It adds back the DrZ80 core (in a more sensible way... it's not the default for any game except Boulder Dash which needs the interrupt handling of the DrZ80 core at least until I can figure out why the CZ80 core doesn't do that one game right). You can still select the DrZ80 core for maximum speed on Coleco, MSX, SG-1000 games... but you really won't need it as the new optimizations have been really solid even on older hardware.

I also found another couple of frames of speed... I can get Donkey Kong running at 115 FPS now... a full 40% faster than version 7.2 and roughly 120% faster than the first version I started with.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
https://github.com/wavemotion-dave/ColecoDS

V7.4: 05-June-2022 by wavemotion-dave
  • Added back DrZ80 core and fixed Colecovision Boulder Dash so it doesn't crash.
  • Better Einstein CTC handling so timing is a bit more accurate.
  • Improved Einstein memory swap for faster performance.
  • Improved MSX mapper detection - about 30 more games playable without fiddling with settings.
  • MSX PAL game support added (it was only 80% working before this).
  • A few more frames of performance squeezed out to make more games run buttery-smooth.
Improved compatibility across the board - more games run right as I continue to refine this. The Einstein driver got some love here - been enjoying playing the Einstein version of Lazy Jones! I also added about 30 games to the MSX internal database so they pick the right mapper/settings so the games run first try without having to fiddle with a lot of settings. More than 1000 classic games should now be perfectly playable across all systems on this emulator.

Edit: 7.4a hotfix to make SAVE/LOAD work properly again. Doh! Thanks to a kind user for letting me know.
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Not ready for a new build but did check in 7.4b with support for a very obscure game on the Sord M5 named Up Up Balloon!

This quirky and rather cool game was almost lost to history - the dump of it was always marked as BAD in MESS/MAME and no version would run on an emulator... a kind engineer on another group figured out what was wrong - a missing byte at the start of the rom file. I've added support for adding in that byte automatically in ColecoDS. If you get the MAME version of this Sord M5 game, you can now play it!

In this game, you move a little guy around the screen collecting "GALS" (hearts). Enemies come from all sides - above and below... and you can either attack them from above (piercing them with your arrow) or shoot your arrow (leaving you momentarily defenseless). If you collide with them, you lose a life. Each level requires that you collect 9 hearts (before the level-timer runs out) to move on. As you scroll up and down the canyon, you get near the bottom and this weird barracuda-eel leaps up to try and snatch you out of the sky. It's a fun little shooter that doesn't seem to try to mimic any other game - it's just it's own goofy fun.

I recommend seeking this out to play on ColecoDS - you will be one of a rare few that have ever experienced it!

1654857968207.png
 
Last edited by wavemotion,

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
544
Trophies
0
Age
39
XP
1,950
Country
France
Thanks Dave ! Good job as always.
I red somewhere few months ago that a guy did find an original cartridge and made another dump from it. Is this the same guy who found the missing byte ?
 
  • Like
Reactions: banjo2

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Thanks Dave ! Good job as always.
I red somewhere few months ago that a guy did find an original cartridge and made another dump from it. Is this the same guy who found the missing byte ?
No... this is a different guy. The other guy (see YouTube video) said he spent a great deal of effort getting it to run on an emulator and would give the ROM away to anyone that became a Patron (I think he was asking $20 / month Patron level).

This other guy is just a solid engineer who understands Z80 code and noticed that some instructions were mis-aligned by a single byte and figured out that the header was missing a single 0x00 byte.

I hate for classic games to not get exposure - hopefully this one will get a fair shake now!
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
544
Trophies
0
Age
39
XP
1,950
Country
France
No... this is a different guy. The other guy (see YouTube video) said he spent a great deal of effort getting it to run on an emulator and would give the ROM away to anyone that became a Patron (I think he was asking $20 / month Patron level).

This other guy is just a solid engineer who understands Z80 code and noticed that some instructions were mis-aligned by a single byte and figured out that the header was missing a single 0x00 byte.

I hate for classic games to not get exposure - hopefully this one will get a fair shake now!

Thanks for the explanation, Dave. For sure I will discover this gem once you update the emulator (no pressure here :))

/me now wants to fire up the DS
 

Harry7228

Member
Newcomer
Joined
Jan 7, 2022
Messages
8
Trophies
0
XP
190
Country
Netherlands
Hi Dave, Thanks for all the great additions to this emulator! I have done testing with some Tatung Einstein games, but the key assigment is not working correctly. For example with the game 'Boardello' the keys to move the cursor with the onscreen keyboard are:

Up = F6
Down = Home
Right = F1
Left = F7
Place game piece = Space

The onscreen keyboard is working correctly, but when I assign this keys to the buttons of my DS they don't react.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Nice find, @Harry7228 - you're digging into the real obscure stuff and nothing makes me happier!!

Turns out that none of the game systems would recognize mapping F1-F8 ... but I've got a fix checked in and you can download 7.4c from my github site which should work correctly now.

I also fixed the Sord M5 driver so in addition to Up Up Balloon working, games like Jong Kyo and a few others are now playable.

One stone at a time...
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Not ready for a new build... in fact, the code is in a bit of a state of dis-repair right now :)

But witness this minor miracle! This is The Maze of Galious (MSX 128K) running at 70FPS on a DS-LITE.

It required a reworking of the memory manager and it may not be easy to glue it all back together for all systems... but this should allow the most stubborn games to play full speed (Astro Blaster which swaps in/out of BIOS-RAM mode 1000 times per second could barely manage 12FPS but now will run at 100+ ... same for Wizards Lair which is a stunningly good game - it was unplayable before, but should run above 60FPS when I'm done here).

1655140080548.png
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Not ready for a new build... but did check in 7.4d which has code changes of biblical proportions. Virtually every code file changed as I swap over to the new memory management scheme.

This new scheme provides a 5% slowdown on non-bankswitched games (games smaller than 32K). On the DS-LITE/PHAT, recent core improvements have given us this extra 5% easily ... so we could afford to give it up (on the DSi we generally have 50% headroom to spare!). In exchange for this 5% slowdown (which will not be noticeable when running - everything is still full frame rate) we get a 15-500% improvement (yes, you read that right!) on bankswitched games. Many games that could not be run beyond 10FPS on the DSi can now run at more than 60FPS. Games like Gradius II are even playable on the older DS hardware.

But this is a scary change :) I've tested more than 300 games now (out of 1000 across all systems emulated) and it's been amazingly how good it works. But I really would like to get some feedback on it.

So if you have time, please do download the 7.4d checked in on the trunk of:

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

If you use it, please let me know here even if it's just a "looks great, Dave!" which will give me some confidence.

Save/Load has been updated (and will probably change before 7.5 releases) - the Save files are smaller and more efficient. I've added save capabilities for Creativision games. I've also updated the SRAM support for the MSX games that use SRAM so the memory is backed automatically to a file - so now you can play those cool MSX RPGs like Deep Dungeon II or Hydlide 2 - Shrine of Darkness and have your progress saved. Tons of other improvements I'm already forgetting - more games run more correctly across the board as we march towards the unobtainable "perfection" :D
 
Last edited by wavemotion,

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
544
Trophies
0
Age
39
XP
1,950
Country
France
Huge change log ! Thanks mate.
I tested all systems except MSX and took about 10 random games in each system. Everything is working fine on my side as far as I can see. I tested the emulator mostly with the DS lite but tried some games on DSi as well.
I played with pretty much all options except key remaping. No problem found, save states are stable.

But the really good thing is to see the older hardware playing pretty much everything without frameskip !! I saw 2-3 titles that needed it. Impressive !
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
720
Trophies
1
XP
5,098
Country
United States
Huge thanks, @CrashMidnick ! Yeah, the boost in performance is really beyond anything I would have thought possible. There's almost no difference between DS and DSi now for about 90% of the games.

And even the DSi was struggling with about a dozen games. These games were swapping out memory banks and the old method was moving, quite literally, millions of bytes of data per second. The new method just moves memory pointers around to memory that is already laid out properly. Major paradigm shift - and it's going to open up lots of great possibilities for the future!
 
General chit-chat
Help Users
  • No one is chatting at the moment.
    DEMONGreninjaPG @ DEMONGreninjaPG: oooh pizzza can i get a all meat pizza with pineapple