ColecoDS - Improved

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Thanks @ber71 - I fixed up my post to get the right bios name!

I also checked in 7.0a (and updated the main 7.0 release) to include a patch for Sonic Invaders that eliminates the high-pitched screech. It's not a "true fix" but on that game, if the audio tries to hit a high note, I just mute it which makes the game very playable with sound now. Not perfect - but good enough. I'll have to figure out what a real machine does sound-wise.

As an aside, the irony is not lost on me that the one game in this set to have high-pitch audio problems is called Sonic Invaders :D
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
725
Trophies
0
Age
41
XP
2,825
Country
France
Working great even on old HW ! Thanks Dave.

Do you know what's the difference between different rom sizes (Creativision) : i.e. Tennis 6kb and 8kb ?

EDIT : High pitch with tank attack
 
  • Like
Reactions: wavemotion

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Yeah, since there no bankswitching or other goofy logic, even the classic DS-LITE/PHAT will run these games fine with the m6502 CPU core.

I don't know why some games come on different size roms. I can tell you that the roms are really weird... like the 6K rom is not in one place - it's split up over 3 locations. Same with 12K roms. There are memory mirrors all over the place... I just copied what I saw in the documented FunnyMU emulator.

My guess is that changes are superficial... maybe a title screen or a small graphic swap possibly for different regions and what parts were available for that country. Some games do have V1 and V2... VTech got sued over the pac-man clone and had to change it to reverse (the chicken DROPS eggs filling up the maze/board... a sort of reverse pac-man). Same with the DK clone - they had to take out the ape and replace it with an escaped poisoner.

Weird system... but there is a small homebrew community and a few new games being produced. It's interesting if nothing else... and I appear to be the king of the obscure systems these days :D
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
I haven’t noticed the high pitch in tank attack yet but there are two versions.

I did discover that the stray shots that show on the top of Sonic Invaders are a result of showing 32 sprites (a common emulator hack to reduce flicker). In options you can set that game to show the normal 4 sprites per line to fix it. I’ll correct it automatically in the next release. That game does a lot of odd things.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Yeah, the sound on the Creativision is a little wonky to be sure... part of that is the real games did not have great sound. I suspect the same person or few people worked on the small library of games. They pulled tricks that work on real hardware - that are not easy to emulate. For example, if you hit the sound chip very fast, you can get some cool effects - I think they do this in Sonic Invaders to give a kind of pulsating sound. It's really not a super pleasant sound ... but it works on "better" emulators and real hardware. With the DS, I don't have the luxury of sampling the sound a million times per second... so I have to get away with sampling it every few scanlines. For 98% of games, this sounds just fine... but for the games that try to pull some fast-tricks with the hardware, it will not sound accurate.

Such is life when emulating on a older handheld :)
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Not ready for a new build, but did check in 7.0b with some improvements to the CreatiVision driver plus a small optimization of the new m6502 core that should get speed fairly close to 100% for the older DS-LITE/PHAT.

As I near the end of this project, I decided to go back and revisit the original version I started with. We've come a long way!

Edit: And checked in 7.0c which fixes the PV2000 emulation which I inadvertently broke :)
 
Last edited by wavemotion,

wavemotion

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

V7.1: 1-May-2022 by wavemotion-dave
  • Fixed PV-2000 driver (broken in 7.0).
  • Minor optimization for the CreatiVision to help on older DS-LITE/PHAT.
  • Minor cleanups as time permitted.
Finally a release without a lot of changes in it :) Just a spit-and-polish version here - somehow I had broken the PV2000 emulation which is now working again. I did add in F1-F8 key mapping for Memotech MTX games per request.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Just a quick update... not ready for a new build but I'm doing some heavy-duty debug to try and get more games on the obscure systems playable. I figured out a bug in the SG-1000 driver that was preventing the Taiwanese DahJee RAM expanded bootleg games from running. That should be checked in and now just about every SG-1000 game will play (notable exception is the TW bootleg Twinbee - just play the MSX version instead).

The SVI emulation has also been improved but I still can't get the rare MEGALONE to play properly. It's either garbled graphics or keys don't work... and I can't yet figure it out. It's a lot of effort for 1 game - but it's not been ported to any other system.

I'll keep plodding along!

1652014865241.png
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Ha! I figured out why SVI Megalone and Crazy Teeth didn't work. I added all this debug and spent all this time analyzing the code... and it turns out those games simply use the OTHER joystick port (normally Player 2 port).

I sometimes think the universe does this to me just to make sure I don't get too full of myself thinking I'm the smartest guy in the room :D

I'm going to add some simple 2P mapping for the SVI emulation to handle games like these.
 

Cris1997XX

Well-Known Member
Member
Joined
Oct 31, 2021
Messages
469
Trophies
0
Age
23
XP
1,259
Country
Italy
Soo...uhh, I just discovered something. I casually opened Dragon Buster (An MSX2 game) on ColecoDS and it seemed like it didn't work, as usual...but it had sound and apparently gameplay too! The screen was completely black though. Is there a way to fix it? It's a decent game, and it'd be great to play it on the go
 
  • Like
Reactions: wavemotion

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
Interesting! So that's a happy accident given that the MSX2 has the same CPU (Z80 at 3.56Mhz) and Sound Chip (AY) as the MSX1... the only real difference is that it has replaced out the VDP video chip 9918 for a V9938 which is backwards compatible (mostly) with the 9918 but has a bunch of new video modes and slightly higher resolution.

ColecoDS doesn't have support for that chip. It's possible to add - MSXDS currently supports that chip. But it kinda sucks that the screen resolution isn't right for the DS so something is either cut-off, squished or (as MSXDS does) placed on the bottom screen as an "overflow" area.
 

Cris1997XX

Well-Known Member
Member
Joined
Oct 31, 2021
Messages
469
Trophies
0
Age
23
XP
1,259
Country
Italy
Interesting! So that's a happy accident given that the MSX2 has the same CPU (Z80 at 3.56Mhz) and Sound Chip (AY) as the MSX1... the only real difference is that it has replaced out the VDP video chip 9918 for a V9938 which is backwards compatible (mostly) with the 9918 but has a bunch of new video modes and slightly higher resolution.

ColecoDS doesn't have support for that chip. It's possible to add - MSXDS currently supports that chip. But it kinda sucks that the screen resolution isn't right for the DS so something is either cut-off, squished or (as MSXDS does) placed on the bottom screen as an "overflow" area.
I feel like squishing the game is the only option, since the bottom screen is taken by the various buttons and number pad. But it probably won't matter much if the increase in resolution is really small
 
  • Like
Reactions: wavemotion

wavemotion

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

V7.2: 14-May-2022 by wavemotion-dave
  • Improved Einstein driver to allow SHIFT and CONTROL key maps.
  • Added AY Envelope Reset option for the few games that need it (Warp & Warp, Killer Station).
  • Added 2P mapping support for SVI games so MEGALONE (Burken Pak 14) and CRAZY TEETH will play properly.
  • Improved the SG-1000 driver so that the Dahjee and TW bootlegs work.
  • Added F1-F8 as assignable maps on Memotech emulation.

Another stable release with just minor improvements across the board. A few dozen more games playable and a few more options to future-proof the emulator. We're probably up over 1000 playable games on this bad boy now. Enjoy!
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
914
Trophies
1
XP
7,318
Country
United States
I spent the weekend optimizing the CPU and VDP cores... and with tremendous effort was able to get significant improvement in game rendering speeds.

I was able to run Donkey Kong at 82FPS - with the new optimizations, it will now run 105FPS. This is a 28% speed improvement! I've had good days... but not that good. Anyway - this means I can finally unify the CPU cores and jettison the old DrZ80 core. I was only holding onto it for the DS-PHAT and DS-LITE but with these new improvements, I can run the new higher-compatibility core across the board at full speed. This means DS-PHAT/LITE users will soon have the same "nearly perfect" CPU emulation for improved gameplay. This also means I don't have to support some ugly stuff in the code to separate the two cores (just removing one of the cores reduced the size of the program by 100K).

The bad news is that I'll have to wipe the Config database for DS-LITE/PHAT users on the next upgrade (DSi won't be touched).

The extra speed does help the DSi users a bit too... some of the really large MSX games that were borderline playable are now running super-smooth... and the DSi is hardly breaking a sweat on Coleco/ADAM games.

Release coming in the next day or two.

1653997746586.png




EDIT: This is getting out of hand! That's a 38% speed improvement!

1654015182655.png
 
Last edited by wavemotion,

wavemotion

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

V7.3: 31-May-2022 by wavemotion-dave
  • Massive optimization of the VDP core and memory handling so we are now almost 35% faster on Colecovision games and more than 10% faster on all other systems.
  • Due to these optimizations, the DrZ80 core has been removed and only the high-compatibility CZ80 core remains.

This release brings near-parity for the older DS-LITE/PHAT which should run everything at full speed with very high compatibility. Gone is the DrZ80 core - it was really a godsend in the early days of this emulator in terms of speed but more and more of my problems with certain games were due to that not being 100% compatible. Now that I've got the emulator humming at Warp 8.6, it was time for that core to go. Even really big games like MSX Gradius are able to run at 60+ FPS on the older DS hardware. Only the most massive bankswitched games will struggle on the DS-LITE/PHAT (but the DSi should handle them fine).

I'm a little nervous about such a big change this late in the game... so please do tell me if things are generally working well for you. My goal remains to have every release bring higher levels of compatibility with more games running as close to perfect as possible.
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
725
Trophies
0
Age
41
XP
2,825
Country
France
https://github.com/wavemotion-dave/ColecoDS

V7.3: 31-May-2022 by wavemotion-dave
  • Massive optimization of the VDP core and memory handling so we are now almost 35% faster on Colecovision games and more than 10% faster on all other systems.
  • Due to these optimizations, the DrZ80 core has been removed and only the high-compatibility CZ80 core remains.

This release brings near-parity for the older DS-LITE/PHAT which should run everything at full speed with very high compatibility. Gone is the DrZ80 core - it was really a godsend in the early days of this emulator in terms of speed but more and more of my problems with certain games were due to that not being 100% compatible. Now that I've got the emulator humming at Warp 8.6, it was time for that core to go. Even really big games like MSX Gradius are able to run at 60+ FPS on the older DS hardware. Only the most massive bankswitched games will struggle on the DS-LITE/PHAT (but the DSi should handle them fine).

I'm a little nervous about such a big change this late in the game... so please do tell me if things are generally working well for you. My goal remains to have every release bring higher levels of compatibility with more games running as close to perfect as possible.

Thanks for this huge update, you're really a good dev (and Dave ;)). This is nice for older HW users.
At the moment I am working on Amiga stuff but I will report back ASAP.
 

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,207
Trophies
2
Location
Tree
XP
3,490
Country
Poland
Wow, thanks for this update Dave! This is the first one build i tried so far and it work very fast. I tried out some MSX roms and yeah it works better and faster than msxDS on DS lite. Penguin Adventure or Binary Land at 60fps full speed, no slowdowns or frame drops. This is it! Also tried out few colecovision roms and only noticed that boulder dash randomly is freezing (while stage start shows) but other roms , everything else seems to work perfectly fine!
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @Purple_Heart, fuck i'm feeling old too