Giter Site home page Giter Site logo

speccymac's Introduction

SpeccyMac

ZX Spectrum emulator for macOS (currently 48K only), written in Swift 5.

Requires Xcode 13 to build.

Please see issues to check known problems. Please raise more if yours isn't there.

Collaborators welcomed.

ScreenShot

Performance

  • Pretty good when running a release build (quite a bit slower on a debug build).
  • Sound tends to be a bit scratchy, don't know why yet.
  • Kempston joystick is emulated on cursor keys and tilde (key between shift and Z) to fire.

Lots of things still to do

  • Joypad support
  • Hi-res border
  • Check all timings
  • Contended memory
  • Add zip support
  • Add Z80 file support
  • Add TZX/SZX file support
  • 128K mode
  • AY sounds
  • Lots more unit tests

Acknowledgements

speccymac's People

Contributors

foxweb avatar hippietrail avatar shaymanjohn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

speccymac's Issues

Crash in some games

Cobra and Green Beret
Must be caused by 1 or more incorrect instructions in the Z80 class

No graphics other than border colour which fills the whole window

Running the released version on an M1 MacBook Air / Monterey

I see a window with the "Load game" button in the top right corner. The window is a grey colour like the Speccy's "white".

On loading any game I see no graphics but can hear all of the ones that start playing a tune or emitting sound effects. Games which set the border colour change the whole window to that colour. Manic Miner changes the window colour as the music plays, but nothing else is visible.

Add support for .tap tape image files

I think .tap is the next file format that is both common and easy to implement since it's not an audio format and doesn't handle fastloaders.

I intend to work on it so you can assign it to me if you wish.

Add a file dialog to load arbitrary snapshot files

Currently the emulator can only use the snapshot files compiled into it.
Users can only load new games by modifying the code and recompiling.

A file dialog is needed so we can load snapshots directly from the Downloads or Documents folder, etc.

Both a menu and allowing files to be dragged and dropped onto the emulator window would be good ways to implement it.

Symbol Shift not mapped

Symbol Shift appears to not be mapped - Caps Shift is mapped to Shift, but I can't find Symbol Shift at all

Support for .z80 snapshot format

The .z80 snapshot format is probably the next easiest to implement after .sna since it's not an audio format like .tzx and .tap.

It does use compression though but it's a very simple run-length encoding.

I'm gonna start work on this now.

Three times?

$ find . -name manic.sna -ls
22577631      104 -rwxr-xr-x    1 polluks          staff               49179  4 Aug 18:28 ./manic.sna
22577679      104 -rwxr-xr-x    1 polluks          staff               49179  4 Aug 18:28 ./speccyMac/manic.sna
22577665      104 -rwxr-xr-x    1 polluks          staff               49179  4 Aug 18:28 ./speccyMac/Games/manic.sna

Adding a new game snapshot to the Games folder and the filename array in Spectrum.swift but not to the project detects no error

I'm an old programmer from the Speccy and Amiga days using this project to try to get up to speed with old school style programming on new systems after twenty years away, so please excuse me making tons of newbie mistakes.

Before I realized I had to add any new game to the project via the XCode GUI as well as to the folder structure and the source code, I could not figure out what was wrong.

The debug output says "loaded" even though it failed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.