Giter Club home page Giter Club logo

souperemoe's Introduction

superEmoe

A C64 Emulator in C++

Basic operation:

The emulation will be operation accurate, but not cycle accurate. I don't think this will be much of an issue, because it only boils down to when an interrupt occurs (stop current operation or finish current operation)

 while( true ){
  t_start = now();
  for cycles in frame
  {
    processInterupts(); 
    CPU->doOperation();
    VICII->doOperation();
  }
  
  transferFrameToX11_Thread();
  t_end = now();
  sleep( frameTime - (t_end - t_start) );
 }
  • processInterrupts() will have to collect stuff from both the VICII (Raster Interupt) or the X11_Thread (keyboard interaction?)
  • CPU->doOperation() will perform an entire operation in an atomic fashion. Interrupt will happend after the current operation.
  • VICII->doOperation() will can stall the CPU, this will increase the "cycles" variable with "stolenCycles"
  • There will also be a memory object that will have to be connected. Interrupt will be put into a priority queue.
  • XLib will be used to render stuff.

What's working?

  • Basic graphics output via X11: a character ROM is loaded to the correct location and you can run "hello world".
  • The CPU is up and running. Instructions have been mostly verified using unittests (no, I don't have coverage results).
  • You can run bouncingBall, a small demo using way too many jumps, bouncing a ball across the screen

What's TODO?

  • Memory map: make sure everything is where it should be, add paging, ...
  • Memory map: implement that registers of the VICII are correctly updated from memory writes
  • VIC-II: really implement to required display modes, update to the correct colors (the current ones are looking bad).
  • SID: sounds make the games so much better
  • Kernal: write the kernal functions

souperemoe's People

Contributors

mathiashelsen avatar

Watchers

 avatar  avatar

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.