/Echo

Mega Drive sound engine

Primary LanguageCzlib LicenseZlib

=============================================================================
        ___________       ________     ___       ___     _________
       |    _______|    _|   ___  |_  |   |     |   |  _|  _____  |_
       |   |          _|   _|   |___| |   |     |   | |   |     |   |
       |   |_____    |    |           |   |_____|   | |   |     |   |
       |    _____|   |    |           |    _____    | |   |     |   |
       |   |         |_   |_     ___  |   |     |   | |   |     |   |
       |   |_______    |_   |___|  _| |   |     |   | |_  |_____|  _|
       |___________|     |________|   |___|     |___|   |_________|
  ___ ___ _ _ ___ __    ___ ___ ___ _ ___ ___                   _   ___ ___
 |  _|   | | |   |  \  |  _|   |  _| |   |  _|                 | | |  _|   |
 | |_| | | | | | | | | | |_| | | |_| | | | |_   _ _ ___ ___    | | | |_| | |
 |_  | | | | | | | | | |  _| | | | | | | |  _| | | | __| _ \   | | |   |   |
  _| | | | | | | | | | | |_| | | | | | | | |_  | | | __|   /_  | |_| | | | |
 |___|___|___|_|_|__/  |___|_|_|___|_|_|_|___|  \_/|___|_|_\_| |_|_|___|___|

=============================================================================

WARNING: if you used Echo_SetVolumeEx in Echo 1.4, beware that the ABI
changed to require 16 bytes instead of 13. Currently the extra bytes are
ignored, but consider adapting your code (just set them to zeroes).

=============================================================================

Echo is available under the zlib license. Please see the LICENSE file for
details. All files here as-is are made available under that license unless
explicitly stated otherwise.

mdtools repo (includes several tools for use with Echo):
https://github.com/sikthehedgehog/mdtools

Converters from Deflemask to Echo's format:
https://github.com/BigEvilCorporation/dmf2esf
https://github.com/minerscale/dmf2esf-2.0

Some more tools from Oerg866 (XM to ESF converter and ESF optimizer):
https://github.com/oerg866/xm2esf

=============================================================================

*** How to use ***

If you want to use Echo from asm, take the blob from "built/prog-z80.bin" and
the "src-68k/echo.68k" asm file. Include the latter in your source code, then
go to the @Z80Program label (should be near the end of the file) and replace
the string with the path to the blob.

If you want to use Echo from C, check the "c" subdirectory. You will find the
required files. It should work with any Mega Drive C devkit that provides the
stdint.h header (and you should ditch it if it doesn't!).

The documentation for the asm API is in "doc/api-asm.txt", while the
documentation for the C API is in "doc/c-api.txt".

=============================================================================

*** How to build ***

   * Make sure the root of this source code tree is the current directory
   * Assemble src-z80/build.z80 to bin/prog-z80.bin
   * Assemble tester/build.68k to bin/prog-68k.bin (optional)

If you're using Linux, you can use build.sh to build the Echo binary (you'll
need z80asm for this). I still need to provide scripts for the tester ROM
though, sorry :/ (I used asm68k, if you wonder)

Also no source for the data blobs yet, for similar reasons, although I have
more control over those tools at least so I may come up with some good
replacements (or even just rebuild the current tools, pretty sure one of them
(mdtiler) already has a replacement) :/

The last step builds the Echo tester ROM, which is some generic ROM I use to
test the tools and some other stuff I make, and generally contains garbage
tunes in it you shouldn't pay attention to. You don't have to build it to
make use of Echo :P

=============================================================================

*** Making sound effects ***

If you are using assembly and don't feel like using the full-blown tools to
make sound effects, you can use the macros in the "src-68k/esf.68k" file to
create sound effects. For now there is not documentation for it :/ (check the
comments in the source file to see the syntax for each macro)

An equivalent C API may be available in the future.

=============================================================================

CREDITS:

   Main programmer ........ Sik
   Auxiliary programmer ... Oerg866

THANKS FOR TESTING:

   * TµEE (general hardware testing)
   * Eke Eke (timer shenanigans IIRC?)
   * MarkeyJester (*insert comment here*)
   * John Springer (you heart his pizza)
   * Flygon (sorry for your headphones :P)
   * djcouchycouch (for using an API I didn't even check if it worked)
   * BigEvilCorporation (helped with testing Echo 1.4)

OTHER THANKS:

   * Titan (yay demoscene!)

=============================================================================