Skip to content

A C++ framework to create classic computer emulators. Commodore 64, VIC20, C264 series and ZX81 implementations already provided

License

Notifications You must be signed in to change notification settings

Commnets/EMULATORS

Repository files navigation

Framework for Classic EMULATORS (C64, VIC20, Plus4, ZX81...)


Develop By Ignacio Cea Forniés. Copyright (C) 2023.
Used allowed under GPL license.
The framework has been developed fully in C++ (version 20) using Visual Studio Community 2022 (64bits).

For better understanding of the framework unzip html.zip, included in the package.
The package includes classes to develop you own emulator, including also assembler, compiler and consoles, remote and local ones.
The emulation of COMMODORE64 (including Ultimmax mode), VIC20, 264 Series (C16, C116 and Plus4) and ZX81 are included.
To compile the framework, Visual Studio compiler is needed and also the SDL Core, SDL image, SDL Mixer and Raknet libraries are necessary. Download them, install them and set the environmental variables: SDL_HOME, SDL_IMAGEHOME, SDL_MIXERHOME, RAKNET_HOME.

Commodore 64 emulator

The implementation of the framework for Commodore 64 has been included.
Execute C64EmulatorC or C64Emulator /h to see the different options at starting, and the command HELP in the console to manipulate later the emulation.
In that case, the behaviour of the VICII has been emulated following the fantastic article by Christian Bauer that can be found at: Zimmers.net.
The implementation of the SID chip has been based on the resid libry found at: Resid library.






It has been an intention to emulate the location of the keys as they are inthe original keyboard.
For this reason the position of the different key can be a little bit "strange"
The important C64 keys in a Win32 standard Spanish keyboard are:
LEFT CONTROL = CTRL
RIGHT CONTROL = CTRL
LEFT ALT = STOP
SHIFT + LEFT ALT = RUN
TAB = COMMODORE KEY
LEFT BRACKET = +
RIGHT BRACKET = *
APOSTROPHE = :
BACKSLASH = @
ESCAPE = ARROW BACK
GRAVE = POUND
ACCENT = MINUS
OPEN EXCLAMATION = EQUAL
OPEN BRACKET = PLUS
CLOSE BRACKET = ASTERISC
OPEN PARENTHESIS = TWO POINTS
CLOSE PARENTEHEIS = ADDRESS
COMMA = COMMA
PERIOD = PERIOD
MINUS = SLASH
SHIFT COMMA = LESSER THAN
SHIFT PERIOD = GREATER THAN
SHIFT MINUS = QUESTION MARK
Ñ = POINT AND COMMA
SUPR = UP ARROW

VIC20 emulator

The implementation of the framework for VIC20 has been included.
Execute VIC20EmulatorC or VIC20Emulator /h to see the different options at starting, and the command HELP in the console to manipulate later the emulation.
The different configurations of the VIC20 can be simulated using the parameter /w at command line (0=default, 1=3k, 2=8k, 4=all).
The keyboard is configured as Commodore 64.



ZX81 emulator

The implementation of the framework for ZX81 has been included.
Execute ZX81EmulatorC or ZX81Emulator /h to see the different options at starting, and the command HELP in the console to manipulate later the emulation.
The different configurations of the ZX81 can be simulated using the parameter /m to indicate the ROM (ZX811, ZX812, ZX812, or ZX80) and /w (0 = default and 1=16k expansion) at command line.