GimliDS

  • Thread starter Thread starter wavemotion
  • Start date Start date
  • Views Views 13,333
  • Replies Replies 125
  • Likes Likes 31
https://github.com/wavemotion-dave/GimliDS

Version 1.2 release 16-May-2025 by wavemotion-dave
  • Added new DIAGONALS joystick mode for a few Q-Bert clones.
  • Slide-n-Glide joystick mode made more responsive.
  • Extended visual display by 4 pixels for a few games that utilize long screen renderings.
  • Minor tweaks and efficiency improvements under the hood.
Still trying to figure out "what's next" for this emulator. I can't bring in the full cycle-accurate emulation without crippling the emulation speed to the point of unplayability... so I'm trying to brainstorm areas where I might be able to take some half-measures to improve the accuracy and get more games playing more correctly. I've asked the author of Frodo for ideas as well.
 
Thanks for the continued updates Dave, much appreciated.

One thing that may be an easy QoL implementation would be bottom screen dimming / off when a certain time has passed?

But other than that i'm really happy with the emu.

Whats next on your list of systems to tackle? Dragon 32 / Tandy CoCo? Amstrad CPC? 🙃
 
  • Like
Reactions: wavemotion
Great guess - I was just looking at the X-ROAR (Dragon32/64/Tandy CoCo) emu for the DS... I can't even get the existing one (from 2010) to run after following the instructions. Well... it runs, but it doesn't seem to actually boot into the BASIC rom. Anyway... I tried to compile it and failed. I know they dropped official support for compilation on the DS around version 0.27 - but I'm just trying to compile the 0.24 version that was last known to be circulating.

One nice thing about the CoCo (and D32) is that the screen resolution matches the NDS perfectly (256x192) and I think I'll never again take on a machine with a mismatched resolution. It's just to painful to compress and find workarounds to make it squish-fit on the LCD. So no... CPC isn't in the cards.
 
  • Like
Reactions: Chillimonster
And it has one of the best version of Donkey Kong in there.

I had a D32 when it originally released and upgraded the cup to the 6809e and learnt to program assembler on it (forgotten 99.9% of it now though!)

Watching with interest on this.
 
  • Like
Reactions: wavemotion
Still trying to figure out "what's next" for this emulator. I can't bring in the full cycle-accurate emulation without crippling the emulation speed to the point of unplayability... so I'm trying to brainstorm areas where I might be able to take some half-measures to improve the accuracy and get more games playing more correctly. I've asked the author of Frodo for ideas as well.
Are you refering to the older hardware or DSI or both about the accuracy VS speed ?

If only older HW, leave the last executable in that state on GITHUB (already a very good emu for this old boy) and in parralel put a DSi named executable that will still evolve.

CPC isn't in the cards

:cry::cry::cry::cry::cry::cry::cry:
 
Are you refering to the older hardware or DSI or both about the accuracy VS speed ?
Both. There is almost no margin on the DS-Lite/Phat but even the DSi won't have enough CPU cycles to tackle cycle-exact emulation. Or at least I don't think so. With cycle-exact, the emulation gets down to one CPU cycle execution of every chip and interleaves them (so 1 cycle for the VIC graphics... 1 cycle for the CPU... 1 cycle for the timers... etc). And it has to remember the state it last left off in all cases - so this is a tremendous amount of extra processing to get that level of accuracy.

What we have today is line-based emulation. And this line-based emulation works fairly well for most things. We execute 1 scanline worth of graphics... 1 line of CPU... one line of SID music... etc. But the C64 programmers got tricky and they would change the state of the system mid-line. And mid-line changes/detections won't work with line-based emulation.

Many games don't pull any crazy tricks and so line-based emulation works fine. Your brain, eyes, hands and 3rd cousin on your mom's side of the family wouldn't be able to tell the difference between line-based and cycle-based. But for games that really got down to the hardware level... line-based won't cut it.
 
1747569319509.png


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

Version 1.3 release 18-May-2025 by wavemotion-dave
  • New global options with a number of new configurations (dim screen, default buttons, etc).
  • Added ability to swap LCD screens on the main Commodore menu.
  • Slight extension of vertical pixel resolution for some games that utilize more raster lines (Gaplus, etc).
  • Minor cleanup and refactor under the hood for improved maintainability and slight performance tweaks.
This version will auto-upgrade your internal database (so no settings will be lost) and include a new global config menu option that you can tweak some global settings. I've also taken the opportunity to double the internal database size so that you can tweak and configure up to 2000 individual games. That should be enough for anyone :)
 
Thanks for updates, in version 0.8 we could change x origins with L+Right or Left button,
however in the latest versions there are some guardians that keep us not to scrool too far, however
In c64.cpp we have
Code:
        if (keys & KEY_LEFT)
        {
            dampen = 4;
            if (myConfig.offsetX < 64) myConfig.offsetX++;
        }
as long for the default settings image it works just fine, it doesn't work well when image is resized to let say max x - 320px.
how about to add myConfig.scaleX to this equation in example..
if (myConfig.offsetX < 64 + (myConfig.scaleX - 256) ) myConfig.offsetX++;
 
Last edited by plasturion,
  • Like
Reactions: wavemotion
Just out of curiosity, could GimliDS also possibly have (in the future) the necessary features to emulate a VIC-20 or not at all because it's something completely different ?
Same CPU but everything else is different... so it would be some effort.
how about to add myConfig.scaleX to this equation in example..
if (myConfig.offsetX < 64 + (myConfig.scaleX - 256) ) myConfig.offsetX++;
Yeah, I think that will work. I'll give it a try and push it out in my next update!
 
Hi Dave, if you swap LCD, is there a way to swap back?
Yeah - same process. Main Menu -> Swap LCDs

The problem is that on a DS/DSi/XL/LL, only the bottom screen is touch-sensitive. So you have to touch the bottom screen in the position the menu would shown on the top screen :)
 
A question about GimliDS, very similar to the one about SpeccyDS^^

Do you plan to integrate recognition of files with the extensions ".bin", ".G64", or ".tcrt" in the future?
 
  • Like
Reactions: CrashMidnick
A question about GimliDS, very similar to the one about SpeccyDS^^

Do you plan to integrate recognition of files with the extensions ".bin", ".G64", or ".tcrt" in the future?

No specific plans, Indy... but assuming a .bin is just a .crt file without a header, that one is probably quite easy. The other two would require targeted emulation support... and hobby time is at a premium as I feel a bit stretched thin over 10 emulators now :)
 
Yeah, I think that will work. I'll give it a try and push it out in my next update!
However current setting seems to be better in some situations, so I may understand why this setting is default, it's exactly center of unscaled screen. Some games that are 256 pixels wide like "Hans Kloss" by L.K. Avalon, scrolling unscaled image to the right edge-guardian makes it easy to center correctly. In other situations it's good to know what is happen on the even more right side. With unscaled Giana Sisters we take a compromise with cutting left and right column of image. But in this situation we also would like to know at least one of the timer digit, but there's no way to scroll left anymore. How about to inculde image scaling settings to the save states? another things may be add "fast check" option the rest of the screen with single "R" button press. (when lets's say invisible info status bar is on the right side in games like Hot Pop) Another thing may be release "L", "R" button for other key configuration in game, and use image scale option only when game is paused by entering in-game menu. It would be nice if you would like to consider and of course everything is up to you, but you can ingore it. Maybe you or others have some even better ideas here.
Thanks again Dave for all the activity on DS scene! :bow:
 
Last edited by plasturion,
I searched a lot on the internet, but I didn't find all the bios files for the Commodore 64. Could someone point me to a website where I can find the bios?
 

Site & Scene News

Popular threads in this forum