Menu ▾ ▴

Tree [a39daa] master /
 History

HTTPS access


File Date Author Commit
 .agents 2026-05-17 Fredrick Meunier Fredrick Meunier [5d28c8] Add release process documentation and distribut...
 .github 2026-10-24 Fredrick Meunier Fredrick Meunier [02c413] Pin the Cygwin install action to its v6 commit ...
 doc 6 hours ago Fredrick Meunier Fredrick Meunier [a39daa] Validate EZX block limits and restore strict ch...
 m4 2026-10-19 Fredrick Meunier Fredrick Meunier [262911] Replace libaudiofile with a portable PCM WAV re...
 myglib 2026-09-13 Fredrick Meunier Fredrick Meunier [1a3784] Use atomic_flag_test_and_set_explicit() which i...
 test 6 hours ago Fredrick Meunier Fredrick Meunier [a39daa] Validate EZX block limits and restore strict ch...
 tools 2026-10-19 Fredrick Meunier Fredrick Meunier [262911] Replace libaudiofile with a portable PCM WAV re...
 .gitignore 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 AUTHORS 2016-10-24 Fredrick Meunier Fredrick Meunier [96fa83] Retire legacy RCS tags
 COPYING 2007-11-30 Stuart Brady Stuart Brady [f7c96d] Remove a full-stop that should not be there.
 ChangeLog 2026-10-25 Fredrick Meunier Fredrick Meunier [d3a017] Updates for a "1.8.0" version
 Makefile.am 1 day ago Fredrick Meunier Fredrick Meunier [f33623] Add read-only EmuZWin EZX snapshot support (pat...
 README 2026-10-25 Fredrick Meunier Fredrick Meunier [de772e] Updates for a "1.8.0" version
 THANKS 2016-10-24 Fredrick Meunier Fredrick Meunier [96fa83] Retire legacy RCS tags
 accessor.pl 2026-03-09 Fredrick Meunier Fredrick Meunier [cf9426] Update dates for a "1.6.0" release
 autogen.sh 2017-06-10 Fredrick Meunier Fredrick Meunier [97f8db] Swtich to using autoreconf
 buffer.c 2026-05-05 Fredrick Meunier Fredrick Meunier [c471d2] Reduce initial bufferallocation from 65536 to 1...
 buffer_license.txt 2017-07-02 Fredrick Meunier Fredrick Meunier [c4f0a7] Add MIT license information for buffer.c
 bzip2.c 2026-08-27 Fredrick Meunier Fredrick Meunier [d30272] Limit decompression of compressed files (part o...
 configure.ac 2026-10-25 Fredrick Meunier Fredrick Meunier [de772e] Updates for a "1.8.0" version
 creator.c 2026-10-10 Fredrick Meunier Fredrick Meunier [a28554] Standardise metadata APIs on UTF-8 with lossy f...
 crypto.c 2026-03-09 Fredrick Meunier Fredrick Meunier [cf9426] Update dates for a "1.6.0" release
 csw.c 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 csw_write.c 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 dck.c 2026-05-04 Fredrick Meunier Fredrick Meunier [96b4b3] Use libspectrum_new0 in libspectrum_dck_block_a...
 dll.c 2021-02-26 Fredrick Meunier Fredrick Meunier [c2d350] Specify config.h as a local header
 dsnap.c 2026-06-27 Fredrick Meunier Fredrick Meunier [b2082b] Deduplicate write_page helper into libspectrum_...
 ezx.c 6 hours ago Fredrick Meunier Fredrick Meunier [a39daa] Validate EZX block limits and restore strict ch...
 file.c 2026-09-16 Fredrick Meunier Fredrick Meunier [9a2f48] Add resolved file abstraction (part of bug #507...
 generate.pl.in 2021-03-06 Alberto Garcia Alberto Garcia [da6be4] Hide all symbols except the ones in the public API
 ide.c 2026-04-20 Fredrick Meunier Fredrick Meunier [7a25be] Use libspectrum_new0 in libspectrum_ide_alloc
 internals.h 1 day ago Fredrick Meunier Fredrick Meunier [f33623] Add read-only EmuZWin EZX snapshot support (pat...
 libspectrum.c 1 day ago Fredrick Meunier Fredrick Meunier [f33623] Add read-only EmuZWin EZX snapshot support (pat...
 libspectrum.h.in 1 day ago Fredrick Meunier Fredrick Meunier [f33623] Add read-only EmuZWin EZX snapshot support (pat...
 libspectrum.pc.in 2026-10-10 Fredrick Meunier Fredrick Meunier [a28554] Standardise metadata APIs on UTF-8 with lossy f...
 libspectrum.qpg.in 2007-02-02 Philip Kendall Philip Kendall [db9c22] Change URLs to sourceforge, my e-mail address t...
 make-perl.c 2026-10-19 Fredrick Meunier Fredrick Meunier [262911] Replace libaudiofile with a portable PCM WAV re...
 memory.c 2021-02-26 Fredrick Meunier Fredrick Meunier [c2d350] Specify config.h as a local header
 microdrive.c 2026-09-19 Fredrick Meunier Fredrick Meunier [69a6ed] Add structured microdrive block accessors
 mmc.c 2026-10-03 Fredrick Meunier Fredrick Meunier [c514a3] Share unsigned endian-safe dword decoders (bug ...
 plusd.c 2026-07-05 Fredrick Meunier Fredrick Meunier [73fbf2] Fix compiler warnings with -Wall -Wextra -Wsign...
 pzx.c 2026-10-08 Fredrick Meunier Fredrick Meunier [a5d24e] Add PZX tape writing with native and legacy dat...
 pzx_internals.h 2026-10-08 Fredrick Meunier Fredrick Meunier [a5d24e] Add PZX tape writing with native and legacy dat...
 pzx_read.c 2026-10-14 Fredrick Meunier Fredrick Meunier [3cb1d6] Fix compiler warnings in Windows builds without...
 pzx_write.c 2026-10-10 Fredrick Meunier Fredrick Meunier [fc7652] Omit TZX-only message, hardware and custom meta...
 pzx_write_internal.h 2026-10-10 Fredrick Meunier Fredrick Meunier [907950] Split PZX writer planning, playback and validat...
 pzx_write_plan.c 2026-10-10 Fredrick Meunier Fredrick Meunier [907950] Split PZX writer planning, playback and validat...
 pzx_write_playback.c 2026-10-10 Fredrick Meunier Fredrick Meunier [907950] Split PZX writer planning, playback and validat...
 pzx_write_validate.c 2026-10-10 Fredrick Meunier Fredrick Meunier [fc7652] Omit TZX-only message, hardware and custom meta...
 rzx.c 2026-10-10 Fredrick Meunier Fredrick Meunier [a28554] Standardise metadata APIs on UTF-8 with lossy f...
 sna.c 2026-06-27 Fredrick Meunier Fredrick Meunier [b2082b] Deduplicate write_page helper into libspectrum_...
 snap_accessors.txt 2026-03-09 Fredrick Meunier Fredrick Meunier [cf9426] Update dates for a "1.6.0" release
 snapshot.c 1 day ago Fredrick Meunier Fredrick Meunier [f33623] Add read-only EmuZWin EZX snapshot support (pat...
 snp.c 2021-02-26 Fredrick Meunier Fredrick Meunier [c2d350] Specify config.h as a local header
 sp.c 2021-02-26 Fredrick Meunier Fredrick Meunier [c2d350] Specify config.h as a local header
 symbol_table.c 2021-02-26 Fredrick Meunier Fredrick Meunier [c2d350] Specify config.h as a local header
 szx.c 2026-10-14 Fredrick Meunier Fredrick Meunier [3cb1d6] Fix compiler warnings in Windows builds without...
 tap.c 2026-10-09 Fredrick Meunier Fredrick Meunier [22c9ea] Recognise ROM pulse recordings when exporting P...
 tap_pzx.c 2026-10-14 Fredrick Meunier Fredrick Meunier [2e30c3] Rename near helper to avoid Windows name conflict
 tape.c 2026-10-20 Fredrick Meunier Fredrick Meunier [5fdc5b] Fix WAV host-limit and initialization warnings ...
 tape_accessors.pl 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 tape_accessors.txt 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 tape_block.c 2026-10-03 Fredrick Meunier Fredrick Meunier [c514a3] Share unsigned endian-safe dword decoders (bug ...
 tape_block.h 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 tape_set.pl 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 tape_text.c 2026-10-14 Fredrick Meunier Fredrick Meunier [dd0e79] Accept native undefined CP1252 mappings and rem...
 timings.c 2021-02-26 Fredrick Meunier Fredrick Meunier [c2d350] Specify config.h as a local header
 tzx_pzx.c 2026-10-08 Fredrick Meunier Fredrick Meunier [6a7218] Keep exactly representable low pauses as ordina...
 tzx_read.c 2026-10-14 Fredrick Meunier Fredrick Meunier [3cb1d6] Fix compiler warnings in Windows builds without...
 tzx_write.c 2026-10-17 Fredrick Meunier Fredrick Meunier [2cdfcf] Preserve exact WAV timing and recording initial...
 update-release.py 2026-05-17 Fredrick Meunier Fredrick Meunier [5d28c8] Add release process documentation and distribut...
 utilities.c 2026-08-15 Fredrick Meunier Fredrick Meunier [67b57b] Fix ZX string token and graphics conversion (th...
 warajevo_read.c 2026-10-03 Fredrick Meunier Fredrick Meunier [c514a3] Share unsigned endian-safe dword decoders (bug ...
 wav.c 3 days ago Fredrick Meunier Fredrick Meunier [d08c3f] Add public PCM WAV reader and streaming writer ...
 wav_format.h 3 days ago Fredrick Meunier Fredrick Meunier [b3413d] Share RIFF WAV format constants between reader ...
 wav_internals.h 3 days ago Fredrick Meunier Fredrick Meunier [d08c3f] Add public PCM WAV reader and streaming writer ...
 wav_macos.c 3 days ago Fredrick Meunier Fredrick Meunier [d08c3f] Add public PCM WAV reader and streaming writer ...
 wav_pcm.c 3 days ago Fredrick Meunier Fredrick Meunier [b3413d] Share RIFF WAV format constants between reader ...
 wav_write.c 3 days ago Fredrick Meunier Fredrick Meunier [b3413d] Share RIFF WAV format constants between reader ...
 windres.rc 2016-10-24 Fredrick Meunier Fredrick Meunier [96fa83] Retire legacy RCS tags
 z80.c 2026-09-12 Fredrick Meunier Fredrick Meunier [7a7ed3] Detect 8K Interface 1 ROMs in Z80 snapshots
 z80em.c 2026-09-12 Fredrick Meunier Fredrick Meunier [ce93db] Make tape playback own signal polarity
 zip.c 2026-08-27 Fredrick Meunier Fredrick Meunier [d30272] Limit decompression of compressed files (part o...
 zip.h 2026-08-27 Fredrick Meunier Fredrick Meunier [d30272] Limit decompression of compressed files (part o...
 zlib.c 2026-09-16 Fredrick Meunier Fredrick Meunier [9a2f48] Add resolved file abstraction (part of bug #507...
 zxs.c 2026-10-14 Fredrick Meunier Fredrick Meunier [3cb1d6] Fix compiler warnings in Windows builds without...

Read Me

libspectrum 1.8.0
=================

libspectrum is a library which is designed to make the input and
output of ZX Spectrum emulator files slightly easier than it would be
otherwise. It should hopefully compile and run on Unix-based systems,
Win32 and Mac OS X.

Currently supported are:

* Snapshots: .z80, .szx, .sna (all read/write), .zxs, .sp., .snp and
  +D snapshots (read only).
* Tape images: .tzx, .tap, .spc, .sta, .ltp and .pzx (read/write); CSW v1/v2
  (read) and v2 (write); Warajevo .tap and Z80Em (read only).
  PZX writing supports native blocks and ROM/turbo/pure-data conversion;
  unsupported blocks are rejected (see doc/libspectrum.txt).
* Input recordings: .rzx (read/write).
* Disk images: .dsk (both plain and extended), .d40, .d80, .fdi, .img,
  .mgt, .opd, .sad, .scl, .td0, .trd and .udi (identification only).
* Timex cartridges: .dck (read only).
* IDE hard disk images: .hdf (read/write).
* Microdrive cartridge images: .mdr (read/write).

On Unix and Mac OS X, compiling libspectrum should just be as easy as

$ ./configure
$ make

and then `make install' should install it in `/usr/local' ready for
use on your system. If you want to install it somewhere other than
`/usr/local', give the `--prefix=DIR' option to `configure' to install
it under `DIR'. Once installed, some work may still be necessary to
ensure that the runtime linker can find libspectrum. For example, on
some Linux systems you may need to run `ldconfig' as root after
`make install' (for example `sudo ldconfig') before newly installed
libraries in `/usr/local/lib' are found. Otherwise, follow the
instructions printed by `make install' or your system's normal shared
library configuration procedure.

For details on the functions available, see `doc/libspectrum.txt'.
Maintainer release notes are in `doc/releasing.md'.

libspectrum is made available under the GNU General Public License,
which means that it is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See `COPYING' for
the full license.

For updates for libspectrum, its homepage is at:

http://fuse-emulator.sourceforge.net/libspectrum.php

Compiling from Git
------------------

If you're using version of libspectrum from Git rather than one
of the released tarballs, you'll need to run `autogen.sh' before
running 'configure' for the first time.

WAV input
---------

WAV input uses a dependency-free standard C reader by default. Configure with
--with-wav-backend=pcm (also the default for auto) or macos (native macOS).
WAV input is always enabled.

The portable reader supports RIFF/WAVE unsigned 8-bit and signed 16-, 24-,
and 32-bit integer PCM at any nonzero sample rate. Extensible PCM is accepted
when valid bits equal container bits. Channels are averaged equally after
conversion to signed 16-bit, without resampling; channel masks are ignored.
Zero is low, positive is high, matching the native macOS tape decoder.
Samples retain signed 16-bit precision for zero-crossing detection.

Compressed audio, IEEE float, RIFX, RF64, multiple fmt/data chunks and partial
frames are unsupported. RIFF sizes and odd-chunk padding are checked strictly.
Files must be seekable and fit the host C library's long-based fseek/ftell
range (typically below 2 GiB on Windows). Empty data is valid WAV but rejected
by the tape decoder. The common decoder still holds all samples in memory.

Compiling for the Wii
---------------------

To compile for the Wii, first make sure the dev tools are in your path
(export PATH=$PATH:$DEVKITPPC/bin). Then, use this configure line:

./configure --target=powerpc-gekko --host=powerpc-gekko \
            --prefix=$DEVKITPPC \
            --without-libgcrypt --with-fake-glib

That is assuming you don't have libgcrypt and glib for the
Wii. At the time of writing, those haven't been ported yet.

Then, type "make" and if everything went well, "make install".

Philip Kendall <philip-fuse@shadowmagic.org.uk>
25th October, 2026