Echo icon indicating copy to clipboard operation
Echo copied to clipboard

Mega Drive sound engine

============================================================================= ___________ ________ ___ ___ _________ | | | ___ | | | | | | _____ | | | | | || | | | | | | | | | | | | | |_____| | | | | | | | | | | _____ | | | | | | | | | ___ | | | | | | | | | |___ |_ || | | | | | | || _| || || || || |________|


| | | | | | \ | | | | | | | | | | | | | || | | | | | | | | | || | | || | | | | _ _ ___ ___ | | | || | | |_ | | | | | | | | | | | | | | | | | | | | | | _| _ \ | | | | | | | | | | | | | | | | || | | | | | | | | | | | _| / | || | | | | ||||||/ ||||||||| _/|||_| ||||_|

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

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!)

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