README.md 3.57 KB
Newer Older
Andre Leiradella's avatar
Andre Leiradella committed
1
2
3
4
# 81-libretro

**81-libretro** is an *work in progress* port of the [EightyOne](http://www.chuntey.com/) (a.k.a. THE Sinclair Emulator) to [libretro](http://www.libretro.com/). It's being developed on Windows with MinGW (64 bits) and Debian 8, and tested on RetroArch 1.2 frontend.

Andre Leiradella's avatar
Andre Leiradella committed
5
6
7
8
## Games

The classic ZX81 games are all over the Internet, but check the [colorized](https://github.com/leiradel/81-libretro/tree/master/colorized) folder for games with Chroma 81 support. There are also many original games for the Zeddy, check [Bob's Stuff](http://www.bobs-stuff.co.uk/zx81.html) for some high quality games. 

Andre Leiradella's avatar
Andre Leiradella committed
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## Emulated Machines

EightyOne emulates a number of ZX80, ZX81, clones, and other computers based on the same hardware:

* Sinclair ZX80
* Sinclair ZX81
* Timex TS1000
* Timex TS1500
* Lambda 8300
* Ringo R470
* MicroDigital TK85
* Jupiter ACE

However, **81-libretro** only emulates the Sinclair ZX81 with 16Kb RAM for now. Other machines will be added as time permits. Push requests are welcome.

Andre Leiradella's avatar
Andre Leiradella committed
24
The port correctly loads and runs ~~some~~ many games I have around in the `p` format. `tzx` format is also supported.
Andre Leiradella's avatar
Andre Leiradella committed
25

Andre Leiradella's avatar
Andre Leiradella committed
26
EightyOne also emulates some ZX Spectrum machines, but those were left out of this core on purpose. For a ZX Spectrum core for libretro, see the [Fuse core](https://github.com/libretro/fuse-libretro).
Andre Leiradella's avatar
Andre Leiradella committed
27
28
29
30
31

## Core Options

The only core option available on the frontend is:

Andre Leiradella's avatar
Andre Leiradella committed
32
* Tape Fast Load (enabled|disabled): Instantly loads files if enabled, or disabled it to see the moving horizontal lines while the game loads
Andre Leiradella's avatar
Andre Leiradella committed
33
* 8K-16K Contents (ROM shadow|RAM|dK'tronics 4K Graphics ROM + 4K RAM): Selects the contents of memory addresses between 8192 and 16383, a shadow copy of the ROM, 8K of RAM, or [dK'tronics 4K ROM plus 4K of RAM](http://www.fruitcake.plus.com/Sinclair/ZX81/Chroma/ChromaInterface_Software_CharacterSetROM.htm)
Andre Leiradella's avatar
Andre Leiradella committed
34
* High Resolution (none|WRX): Enables WRX high resolution
Andre Leiradella's avatar
Andre Leiradella committed
35
* Emulate Chroma 81 (disabled|enabled): Enable the [Chroma 81](http://www.fruitcake.plus.com/Sinclair/ZX81/Chroma/ChromaInterface.htm) interface
36
* Video Presets (clean|tv|noisy): Change how the video is emulated (if Chroma 81 is enabled, the video is set to "clean" regardless of this option)
Andre Leiradella's avatar
Andre Leiradella committed
37
* Sound emulation (none|Zon X-81): Enables sound emulation
38
* Joypad Up, Down, Left, Right and Fire mappings (default|new line|shift|space|.|0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z): Maps a joypad button to a keyboard key, defaults are the cursor keys and 0 to fire
39
40
* Transparent Keyboard Overlay (enabled|disabled): If the keyboard overlay is transparent or opaque
* Time to Release Key in ms (500|1000|100|300): How many milliseconds to wait before releasing the key pressed using the keyboard overlay
Andre Leiradella's avatar
Andre Leiradella committed
41
42
43
44
45
46
47

## Keyboard and Controllers

A keyboard and a cursor joystick are configured and should work out-of-the-box.

## Supported Formats

Andre Leiradella's avatar
Andre Leiradella committed
48
The `p` and the `tzx` formats are supported.
Andre Leiradella's avatar
Andre Leiradella committed
49
50
51

## Save States

52
Save states are supported, but are likely to change when more machines are emulated.
Andre Leiradella's avatar
Andre Leiradella committed
53
54
55

## Setup

Andre Leiradella's avatar
Andre Leiradella committed
56
57
1. Compile **81-libretro** with `make -f Makefile.libretro`
1. Copy the resulting `81_libretro.dll` or `81_libretro.so` into the `cores` folder of your libretro frontend
Andre Leiradella's avatar
Andre Leiradella committed
58
59
1. Profit!

Andre Leiradella's avatar
Andre Leiradella committed
60
61
## Thanks

Andre Leiradella's avatar
Andre Leiradella committed
62
Erik Olofsen for help with:
Andre Leiradella's avatar
Andre Leiradella committed
63
64
65
66
67

* The correct values to set the Z80 registers and some memory variables to successfully load `p` files
* Chroma 81 emulation
* `tzx` support
* Zon X-81 sound emulation
Andre Leiradella's avatar
Andre Leiradella committed
68

Andre Leiradella's avatar
Andre Leiradella committed
69
70
## Versions

Andre Leiradella's avatar
Andre Leiradella committed
71
Versions that are being used to build and test **81-libretro**:
Andre Leiradella's avatar
Andre Leiradella committed
72
73
74
75
76
77
78
79
80

* EightyOne version 1.0 (test a)

## TODO

See the open issues.

## Bugs

Andre Leiradella's avatar
Andre Leiradella committed
81
Many, probably. Open issues or send push requests.
Andre Leiradella's avatar
Andre Leiradella committed
82
83
84
85

## License

GNU GPLv3.0