Yet another KC emulator
C++ Objective-C Python CSS JavaScript HTML Other

README.md

yakc

Yet another KC emulator (WTF is a 'KC': https://en.wikipedia.org/wiki/KC_85)

Build Status

Live Demo:

http://floooh.github.io/virtualkc/

(should work on all modern browsers with WebGL support except iOS Safari which reloads the page after a few seconds)

How to Build:

> python --version
Python 2.7.10
> cmake --version
cmake version 3.3.2
> git clone https://github.com/floooh/yakc
> cd yakc
> ./fips gen
> ./fips make yakcapp
> ./fips run yakcapp

If it doesn't work out of the box (e.g. on Windows if only VS2015 is installed instead of VS2013) you need to use a different fips build config (run './fips list configs' to see the list of configs, and then './fips set config [cfg]' before running './fips gen' again)

Screenshots

Overlay UI

Pengo Intro Screen

Cave

House Ingame

Goals:

  • small and portable emulator core in a simple C++
  • emulator core has hooks for keyboard-input, audio/video-output, load/save blocks of memory
  • Oryol as input/video/audio wrapper (https://github.com/floooh/oryol)
  • imgui (https://github.com/ocornut/imgui) as simple debugger overlay (view and edit registers, memory, asm/disasm)
  • emulate KC85/3 and KC85/4 (bonus: the final version also has KC85/2)
  • small and fast enough to feel good on browser and mobile

Non-Goals:

  • no complete hardware emulation ('display needling', I/O ports, modules, analog cassette interface, ...) (bonus: modules are in, yay(
  • no emulation of the tricky serial keyboard interface

Potential goals:

  • CPU/memory state recording to allow rewind/replay in debugger (that would be cool!) (snapshotting of current state is in, but no record/replay)
  • support for other East-German 8-bitters (Z9001, Z1013, LC80)
  • Speccy, CPC, KC-compact?

Use of external code: