ColecoDS - Improved

wavemotion

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

V3.2: 20-Nov-2021 by wavemotion-dave
  • More AY sound improvements for the Super Game Module.
  • Slight optimization of VDP rendering.
  • Improved display of Game Titles - slower scroll and centered.
  • Increase in contrast on game selection.
  • Other cleanups and minor improvements across the board.

Another day, another build. Been playing a ton of King and Balloon converted to the Coleco!

1637421893801.png
 

wavemotion

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

V3.3: 22-Nov-2021 by wavemotion-dave
  • AY sound channels are now independent - for a CV total of 6 channels across 2 sound chips on SGM games.
  • Added MC/AY/SGM indicators on-screen for enhanced carts.
  • Other cleanups and minor improvements across the board.
Frustrating weekend. I spent 8+ hours trying to figure out why some of the bank-switching games won't run (most notably Uridium and Deep Dungeon Adventure). Nothing obvious is being done wrong - virtually all other 128K bank switch games are running fine. I poured over the ColEM and MAME drivers in this area to see if something might click. It might have something to do with the emulation of controller input ports - for example Deep Dungeon Adventure is definitely waiting for something (and if you press 5 on controller #2 it will launch an "Easter egg" game... so it's not like the code has just crashed or anything).

I'm also discovering that ColEM base emulator (which is one of the first open source emulators out there and heavily ported) is buggy. The VDP video latching is not done correctly - (the data latch should clear on control writes and data reads) but when you try to do it correctly many games break. Even the original source code makes it clear that they had to disable some of the "proper" emulation features to get it to run most games right. I'm not keen on going into a massive debug cycle to try and get these last few games running.

I'm also frustrated with sound. I'm using the same assembly flubba core but it still sounds a bit scratchy compared to S8DS. It must be the output side - I'm still using the default ARM7 audio output core and flubba has long since moved on to something called maxmod which I may try to get hooked in.

Overall this hasn't been as smooth as I'd have liked. Someone slap me in the head if I take on another emulator for the DS :D
 
Last edited by wavemotion,

Cris1997XX

Well-Known Member
Member
Joined
Oct 31, 2021
Messages
101
Trophies
0
Age
21
XP
205
Country
Italy
https://github.com/wavemotion-dave/ColecoDS

V3.3: 22-Nov-2021 by wavemotion-dave
  • AY sound channels are now independent - for a CV total of 6 channels across 2 sound chips on SGM games.
  • Added MC/AY/SGM indicators on-screen for enhanced carts.
  • Other cleanups and minor improvements across the board.
Frustrating weekend. I spent 8+ hours trying to figure out why some of the bank-switching games won't run (most notably Uridium and Deep Dungeon Adventure). Nothing obvious is being done wrong - virtually all other 128K bank switch games are running fine. It might be something to do with the emulation if input controller ports - for example Deep Dungeon Adventure is definitely waiting for something (and if you press 5 on controller #2 it will launch an "Easter egg" game... so it's not like the code has just crashed or anything).

I'm also discovering that ColEM base emulator (which is one of the first open source emulators out there and heavily ported) is buggy. The VDP video latching is not done correctly - (the data latch should clear on control writes and data reads) but when you try to do it correctly many games break. Even the original source code makes it clear that they had to disable some of the "proper" emulation features to get it to run most games right. I'm not keen on going into a massive debug cycle to try and get these last few games running.

I'm also frustrated with sound. I'm using the same assembly flubba core but it still sounds a bit scratchy compared to S8DS. It must be the output side - I'm still using the default ARM7 audio output core and flubba has long since moved on to something called maxmod which I may try to get hooked in.

Overall this hasn't been as smooth as I'd have liked. Someone slap me in the head if I take on another emulator for the DS :D
Oh, c'monn. We know you want to revive more emulators! *wink wink nudge nudge*
 
  • Like
Reactions: banjo2

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
1,964
Trophies
1
XP
2,431
Country
Canada
No steering control is implemented yet. But you can easily find Turbo SCE which is the Standard Controller Edition which plays fine.
Gee, I didn't realize there were still such interesting new developments in recent years.

Some CV emulators used to emulate the roller controller and so on using the mouse; would mapping this functionality to the touch screen be worth considering?
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
591
Trophies
1
XP
4,057
Country
United States
Some CV emulators used to emulate the roller controller and so on using the mouse; would mapping this functionality to the touch screen be worth considering?

Yes, it's worth doing. And I'll probably do it. The emulation doesn't look too difficult - it's basically 2 bits in one input port that defines the motion. As near as I can tell, it's a quadrature which is a simple but elegant way to know if you're spinning (or driving wheel or whatever) is going clockwise or counterclockwise:

quadrature.jpg


With just 2 bits of information the software can detect motion in one direction or the other... the rate of change of these bits determines how fast the player is moving the wheel/spinner/roller (and in our case we would toggle these bits faster or slower depending on touch-screen activity)

I can do that - much more easily than I can figure out fu*king sound envelopes :D


An yes - It's amazing what the CV homebrew scene has done in the recent decade. TeamPixelboy especially has released more than 50 free homebrew titles that are on par with the best games out there. They release a bunch of new ones every Christmas! CVAddict will get you the full list - I highly recommend Wizard of Wor which is the first home port to have computer AI for player #2 (when playing solo).
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
591
Trophies
1
XP
4,057
Country
United States
Finally. Sound is fixed. Thanks to @FluBBa who took me through getting MAXMOD sound library installed and running... the sound core is now as close to perfect as it's going to get. I'm telling you guys - FluBBa is a national treasure... the guy has forgotten more about NDS development than I'll ever know.

Not ready for an official build, but the new sound core is checked in on: https://github.com/wavemotion-dave/ColecoDS

I've got some testing to do.. and maybe a bit of optimization as I had to write my own mixer for the 6 possible sound channels for Super Game Module games - so that slowed the CPU down a bit (but everything still seems to be running full speed... even on the old DS-LITE).

1637691319882.png
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
591
Trophies
1
XP
4,057
Country
United States
If needed I can help you to keep up to date the French translation. It is up to you.
Appreciated, Crash. To be honest, I kept in the French for a few builds out of respect to Alek (and there was a partial German in the language table as well) but it was falling out of date and I decided to pitch it. I think the emulator is probably not too challenging for even non-native English speakers.

Of course, I jettison French and the sound starts working. Coincidence?!

Just kidding - I don't have anything against other languages... I don't speak more than one language, but I am bi-lingual curious :D

I'm so stoked that the sound is worked out. I'm never doing another sound project again :) :) :)
 
  • Like
Reactions: banjo2

NightScript

Well-Known Member
Member
Joined
Feb 7, 2016
Messages
899
Trophies
0
XP
1,777
Country
United States
Finally. Sound is fixed. Thanks to @FluBBa who took me through getting MAXMOD sound library installed and running... the sound core is now as close to perfect as it's going to get. I'm telling you guys - FluBBa is a national treasure... the guy has forgotten more about NDS development than I'll ever know.

Not ready for an official build, but the new sound core is checked in on: https://github.com/wavemotion-dave/ColecoDS

I've got some testing to do.. and maybe a bit of optimization as I had to write my own mixer for the 6 possible sound channels for Super Game Module games - so that slowed the CPU down a bit (but everything still seems to be running full speed... even on the old DS-LITE).

View attachment 286570
Is it worthwhile to update your other emulators with the new soundlib work you figured out?
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
361
Trophies
0
Age
39
XP
1,487
Country
France
Appreciated, Crash. To be honest, I kept in the French for a few builds out of respect to Alek (and there was a partial German in the language table as well) but it was falling out of date and I decided to pitch it. I think the emulator is probably not too challenging for even non-native English speakers.

Of course, I jettison French and the sound starts working. Coincidence?!

Just kidding - I don't have anything against other languages... I don't speak more than one language, but I am bi-lingual curious :D

I'm so stoked that the sound is worked out. I'm never doing another sound project again :) :) :)

Indeed I was thinking of Alekmaul work and respect. But now this is your emu ;) It was also just in case you cannot translate it anymore due to adding new options.

Of course the sound starts to work when French language was removed, everbody knows that we yell after all so speakers saturate :) :)

People saying that they will never do something again, always do the very same thing again, one day or another :P :P
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
591
Trophies
1
XP
4,057
Country
United States
Is it worthwhile to update your other emulators with the new soundlib work you figured out?
I was just wondering the same thing... part of the problem here is the sound core is sampling at a very high rate and many of my other emulators are not. I think Nintellivision and XEGS would probably benefit the most... StellaDS the least (that one already sounds really good and, honestly, that's just 2 channels of bleeps and bloops mostly).

So I'll probably do it - at least for Nintellivision... but give me a few days to bask in the glory that is proper 8-bit Colecovision sound!
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
591
Trophies
1
XP
4,057
Country
United States
Would it be possible to change the sample rate? I believe TWiLight does something like this.
Yeah... that's kinda what I did and it sounded "okay" (aka crappy.. but acceptable). But with maxmod I can stream at a very high rate and it sounds really nice! The only downside right now is that maxmod doesn't seem to support more than one streaming channel... so when we run a Colecovision Super Game Module that uses the AY sound plus the original SN sound (for a total of 6 channels of sound), I have to mix those 3+3 channels manually. It's not a huge deal... but does come at a slight CPU cost.

Fortunately speed hasn't been one of the problems with ColecoDS. As I've said before - having spare CPU cycles in your back pocket is good insurance for when you need to make something work better.
 

Sweater Fish Del

Well-Known Member
Member
Joined
Jul 8, 2006
Messages
250
Trophies
0
XP
176
Country
United States
Yes, it's worth doing. And I'll probably do it. The emulation doesn't look too difficult - it's basically 2 bits in one input port that defines the motion. As near as I can tell, it's a quadrature which is a simple but elegant way to know if you're spinning (or driving wheel or whatever) is going clockwise or counterclockwise:
Beyond the touchscreen, it would be awesome if you could build in support for the DS slot-2 spinner paddle from Taito to emulate the wheel. I'm sure all three of us who have the paddle and play emulators on our DSes would love it!

There's simple functions in libnds (paddleIsInserted() and readPaddle()) for working with the paddle. I'm happy to help with testing or some code if you need it.
 
General chit-chat
Help Users
    KennieDaMeanie @ KennieDaMeanie: Nah that's just about my ex