drhelius / Gearsystem

Sega Master System / Game Gear / SG-1000 emulator for macOS, Windows, Linux, BSD and RetroArch.
https://x.com/drhelius
GNU General Public License v3.0
250 stars 45 forks source link

Colecovision and Colecovision ADAM #42

Closed KPreston2900050 closed 2 years ago

KPreston2900050 commented 3 years ago

Trying to integrate Colecovision and Colecovision ADAM

Should be easy to do considering they use the same hardware but for some reason I can not get it to work.

Maybe this would be something you would like to add.

drhelius commented 3 years ago

Can you share the code? I could take a look.

KPreston2900050 commented 3 years ago

I gave up. Just not good with C++. My coding is Z80 Assembly

Feel free to implement the Colecovision. You may even get praises because not many people can do it with a full debugger like what you have which is the only reason I wanted to get it working.

It is not Sega but pretty much an SG 1000 except has the TMS9928 instead. Same 1k of memory, same sound chip. It takes up to 32k cartridges.

If you want to be bold make the ADAM which is a Colecovision with 64k instead of 32 and 6801's that run it's network of peripherals.

No one makes the emulator except for one person who has been working on it for 5 years and can not find the time.

You do amazing work which I can not top so I leave it up to you if you want to put it in.

carmiker commented 2 years ago

I would also welcome this feature. One of my own todo list items is to write a free, MIT-licensed ColecoVision BIOS, so having Gearsystem's debug features available while doing this would make it easier.

I wrote a ColecoVision emulator as a sort of living document on how the system works. The chips are all standard but their interactions were not the best documented, so I did it in the form of C source code, and also collected a fair amount of documents and test roms in the process. These things may help: https://gitlab.com/jgemu/jollycv https://gitlab.com/carmiker/coleco-test-roms https://gitlab.com/carmiker/colecodocs

The main differences between the ColecoVision and the SG-1000 that I can immediately recall are that the Sega PSG is slightly different from the standard SN76489AN, and some differences with interrupts. Specifically, the noise channel on the Sega PSG is amplified 2x vs the standard one. The other difference is that NMIs are used at vblank vs normal IRQs on the Sega systems.

drhelius commented 2 years ago

That is great information, thanks.

drhelius commented 2 years ago

After having a quick look at docs I think I can easily implement it but I will rather prefer having a dedicated emulator for it, so I can try to emulate both ColecoVision and Adam and avoid cluttering Gearsystem. I'll think about it.

KPreston2900050 commented 2 years ago

I hope you do. My original thought when I tried to incorporate Colecovision in your source was a great emulator with a really great debugger.

Please allow me to elaborate. I toy around with making new software for the Colecovision/ADAM in Z80 assembly language but have found that it does not work as good on the real hardware and have no honest way of debugging it.

There is one emulator out there with a nice debugger but the guy stopped development on it and just never has the time.

His older version has a lot of bugs and the last version he worked on incorporated ADAM, the SG1000 and Colecovision then he stopped working on it even after I offered him money to finish the project.

The real issue is outside of MAME/MESS no one has the time to make an ADAM emulator with or without a debugger and the other one which has an extremely low development phase is COLEM.

COLEM is an oldrt emulator from the 90's based on DOS and the guy may be the nicest person on the planet but does have other things to do which everyone can relate to that.

There is CoolCV and that too is limit, has bugs and no debugger. BlueMSX runs Coleco software with no ADAM and is also no longer being developed to my knowledge.

So if I can beg and plead with you I say please. If you make a working, open source version of your emulator that has all the features of the Coleco ADAM then I will be the first to donate to your favorite charity.

The only real difference from ADAM from the Colecovision is that the ADAM has 64k as opposed to the Colecovision's 32k which is used from rom space. It has 6801's to communicate with the peripherals such as disk drive, data packs, printer and keyboard.

Other than that it shares the same TMS9929, SN76489 Sound chip and the same BIOS. The only real difference between this and the Sega systems is the the NMI is jacked up and has to be disabled before you do a major function like write a ton of info to the graphics chip or the data gets scrambled. But that is handled through game programing and built into the hardware design.

So again, put something together and give me a link to your charity even if your favorite charity is you.

drhelius commented 2 years ago

Looking good... :relaxed:

image

drhelius commented 2 years ago

I'm closing this issue, you can follow the progress in this repo:

https://github.com/drhelius/Gearcoleco/tree/develop

drhelius commented 2 years ago

@KPreston2900050 @carmiker

I have almost full compat in the new Gearcoleco. I'll be very grateful if you can try it and report any issues, new features or anything missing.

I'll be adding support for Adam and sgm in the future.

KPreston2900050 commented 2 years ago

No problem. I am eager to try out your work and give any input that may help make it better.

Before any bug checks I would like to ask if it is possible to be able to drag and drop a rom directly on the executable or the running program.

Now only is this a cool feature but it makes testing 500 roms a whole lot easier.

KPreston2900050 commented 2 years ago

Tried to grab the binary and it says that Gearcoleco-1.0.0-Windows.zip not found. I no longer have Visual Studio installed to compile it myself. The pictures you posted are mind blowing.

drhelius commented 2 years ago

Sorry, you're right, I haven't prepare the release. But you can grab a Windows binary for every build (artifacts): https://github.com/drhelius/Gearsystem/actions/runs/1131608742 You'll need the same DLLs included in Gearsystem.

Regarding the drag & drop feature, never thought about it. You can run roms from the command line now if that helps.