SpeccySE

  • Thread starter Thread starter wavemotion
  • Start date Start date
  • Views Views 11,607
  • Replies Replies 88
  • Likes Likes 19

wavemotion

Benign Geek
Member
Joined
Nov 23, 2020
Messages
1,213
Reaction score
7,634
Trophies
2
XP
10,226
Country
United States
https://github.com/wavemotion-dave/SpeccySE

[Edit: Rebranding to Speccy-SE]

I know the DS homebrew scene doesn't need another ZX Spectrum Emulator when there is already a world-class ZX-DS and it would be much more beneficial to work on something like an Amstrad CPC or C64 emulator.

But who can tell what drives a man to the brink of insanity. Right now, I'm consuming everything I can on this technical marvel of cost-reduced engineering. Not to mention having watched The Rubber-Keyed Wonder documentary about a dozen times in the past week (if you haven't seen it... please do!)

So it's coming whether the world needs it or not.


1742902723599.png
 
Last edited by wavemotion,
The greatest ever home computer :D gets another emulator. If Jetpac plays perfectly on it then happy days.
It's one of my go-to test games - and yes, it will play perfectly :)

I think the only real benefit over ZX-DS is that the interface will be streamlined - and it will launch quickly and easily from SD card for those that aren't using an R4 or similar flash card.

Once I get this cleaned up and put in .TAP support (soon... right now it's just Z80 snapshots), maybe I can convince @RocketRobz to include it in TWL++ to launch Speccy games.
 
Thanks for the early support and good vibes, folks!

At lunchtime, I got tape loading (.TAP) working... hitting the pulse durations was tricky but now I have a reliable loader.

However, it's quite slow! I mean... it's exactly as slow as real hardware... but what a pain! Atic-Atac took almost 5 minutes to load.

So I added a quick hack when we are loading to unthrottle the CPU - but that barely got me a 2.5-3x speedup. So 5 minutes takes 1.5 minutes. Better - but nobody is going to wait that long.

Now I do support .z80 snapshots which load "instantaneously"... but other emulators seem to load .tap files nearly as fast. There must be some other way to hack/patch the system to load much faster since I can't really get the CPU speed any faster.

Edit: Okay... I figured out how people do the 'instant' loading using the standard tape loader. Basically they monitor for the Program Counter of the Z80 to be executing the start of the BIOS tape loader routine and then they just figure out where the loader wants the data and just "magically" loads up the data and issues a return back to the BIOS. The BIOS is unaware of this trick and thinks that the loader routine did it's usual (slow!) thing.

I can manage that... and I'm working on .TZX support tonight.

I'm pleased so far - new intro jingle and new main screen to give a very Spectrum vibe.

1742989946414.png
 
Last edited by wavemotion,
Is it based on an existing emulator or you're doing this from scratch ?
I started with ColecoDS but have gutted 80% of it and inserted the Spectrum specific stuff... so, as usual, it's an amalgamation of stuff that exists with a lot of new code. I've got accelerated TAP playing mostly working... though there are still a few games that won't load properly. I'll get there... hopefully soon!
 
I've been working at every opportunity on this... up at 4AM for a few hours before work, at lunch and after work. Spent the entire weekend and I think I've got something just about playable.

Not ready for a release yet - but if any friendly-types here would like a preview copy to provide a bit of feedback (mostly so I don't embarrass myself on a first release!) - just send me a PM.

1743363838651.png
 
Thanks Dave. I've spent uncountable hours in front of my old 128k. That was the machine where i learned coding, basic first, asm later, so I could find pokes by myself. Nowadays, everything is easier :D

btw,it seems that the name SpeccyDS was used before https://speccyds.wordpress.com . Maybe a rename could be convenient. But your emu is way better, ofc.
 
Okay... added version 0.5b with some improvements for tape handling. I was able to speed the standard loader up to about 20x normal speed... a 48K game will load in under 10 seconds and a full 128K game in about 30 seconds. That's fine - as a design decision, I don't want to optimize the entire loader away. The loading screens are part of the ZX Spectrum experience and really we've gotten too lazy as a society that people must have their games load up yesterday -- maybe this will force people to slow down a bit and play a game a bit longer knowing it will take some time to load up the next game.

I'm going to improve the tape handling more in the near future for non-standard loaders... and I really need to write some documentation for the main github page. Sigh... always too much to do!

@RocketRobz - no pressure to do so... but you guys are welcome to launch SpeccyDS in the standard way for .TAP, .TZX and .Z80 files - the emulator should load it. If you do a custom icon for Spectrum games... please do something colorful/rainbow-y... the garish and bright colors of the system are unmistakable hallmarks!
 
Last edited by wavemotion,
Version 0.6 is ready: https://github.com/wavemotion-dave/SpeccyDS

06-Apr-2025 : Version 0.6 by wavemotion-dave
  • Numerous improvements for tape support, better auto-play and auto-stop for cassettes
  • New cassette background
  • Faster load times across the board
  • Better joypad handling and new control schemes added
  • Improved beeper handling to soften the harsh tone edges
  • Save/Load state fixed
Lots of cleanup and improvement as we put this thing into proper shape. I worked on the readme file on the github page.

Hope you like the new cassette menu/handling :)

1743939357537.png
 
Version 0.6 is ready: https://github.com/wavemotion-dave/SpeccyDS

06-Apr-2025 : Version 0.6 by wavemotion-dave
  • Numerous improvements for tape support, better auto-play and auto-stop for cassettes
  • New cassette background
  • Faster load times across the board
  • Better joypad handling and new control schemes added
  • Improved beeper handling to soften the harsh tone edges
  • Save/Load state fixed
Lots of cleanup and improvement as we put this thing into proper shape. I worked on the readme file on the github page.

Hope you like the new cassette menu/handling :)

View attachment 496294
Thanks Dave for your hard work !

My 2 cents about the cassette menu : I woud have prefered to see the ZX Spectrum color stripes to stick with the "Spectrum feeling" but it is a detail :

1743945343677.png
 
Thanks guys... it's been fun working on this.

One thing I'm particularly pleased with is the new 'Chuckie Style' of joystick control. It works better than I even expected.

I've always found that Chuckie Egg only plays well with real keyboard keys. The game is unforgiving in needing to be directly under the ladder when moving up/down and you need to be right at the correct platform height when moving off left/right. With real keys, this precision is possible... with a joystick/joypad, it can often be frustrating as it's hard to position perfectly to make those transitions. Pressing the diagonals on the joystick helps greatly - but it can still be a bit hit/miss when getting on/off ladders.

So this new mode can be enabled on a per-game basis and basically the emulator will help make the game a bit more "forgiving" in terms of ladder movement.

When the player is moving left/right or up/down, the emulator remembers this when a direction change happens and keeps the old direction 'in motion' for a handful of frames. This means that as you approach a ladder, you can make the transition from left/right to up/down and the emulator will smoothly guide you onto the ladder. Same when getting off (up/down vs left/right). It works remarkably well and goes from joystick frustration to buttery-smooth - nearly (but not perfectly) as precise as real keys.
Post automatically merged:

btw,it seems that the name SpeccyDS was used before https://speccyds.wordpress.com . Maybe a rename could be convenient. But your emu is way better, ofc.
Yeah... so been thinking about that. I contacted CraigT who got back to me tonight and although he abandoned his Speccy-DS almost 18 years ago, he would like me to change the name to avoid confusion.

Which I will... but it has taken a bit of wind out of my sails on this project. I really liked the name - and did work on the graphics and got my github page to match and posted about it on a few sites already... and a rebranding isn't exactly something I'm keen on with so much other work to do on this.

Let’s see… SpeccySE. Name has no obvious Google hits in connection with the ZX Spectrum. Good enough.

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


PS: hate merged posts.
 
Last edited by wavemotion,
SpeccySE sounds cool. Do you reckon at any point we will be able to put in pok files are type in poke cheats??
Yes, for sure .pok files are on the short list to get implemented. Likely very soon.

I just checked in a 0.7b with some design aesthetic improvements. Really trying to keep things simple here... the cassette icon lights green when playing... the "SPECCY 48K/128K" in the upper right is now simplified to a rainbow "48K" or "128K". You can now redefine your keys while playing a game so you don't have to exit out and re-load.

Trying not to over-engineer this thing... the ZX Spectrum is a wonderfully simple design and I don't plan on over complicating my handling. Where I can simplify, I will.
 

Site & Scene News

Popular threads in this forum