Skip to content
View dsp56300's full-sized avatar
🎯
Focusing
🎯
Focusing
Block or Report

Block or report dsp56300

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
dsp56300/README.md

Motorola DSP 56300 family emulator

CMake GPLv3

Emulation of the Motorola/Freescale/NXP 56300 family DSP

This DSP has been used in plenty of virtual analogue synthesizers and other musical gear that was released after around the mid 90s, such as Access Virus A, B, C, TI / Clavia Nord Lead 3 / Waldorf Q, Microwave II / Novation Supernova, Nova and many others.

The emulator should compile just fine on any platform that supports C++17, no configure is needed as the code uses C++17 standard data types. For performance reasons, it makes excessive use of C++17 features, for example to parse opcode definitions at compile time and to create jump tables of template permutations, so C++17 is a strong requirement.

The build system used is cmake.

Development

Please note that this project is a generic DSP emulator and outputs nothing but a static library after building. To use it, you need to create a project on your own, which can be a command line app, a VST plugin or whatever and instantiate the DSP class and feed data into it.

Minimal example:

#include "../dsp56300/source/dsp56kEmu/dsp.h"

int main(int argc, char* argv[])
{
	// Create DSP memory
	constexpr TWord g_memorySize = 0x040000;

	const DefaultMemoryValidator memoryMap;
	Memory memory(memoryMap, g_memorySize);

	// External SRAM starts at 0x20000
	memory.setExternalMemory(0x020000, true);

	// TODO: Load useful data into memory like this
	// Example: write a nop to P memory at address $100
	// memory.set(MemArea_P, 0x100, 0x000000);

	// Use 56362 peripherals: ESAI, HDI08
	Peripherals56362 periph;

	// Instantiate DSP
	DSP dsp(memory, &periph, &periph);

	// set starting address
	dsp.setPC(0x100); 

	while(true)
	{
		// run forever
		dsp.exec();
	}
}

Popular repositories

  1. gearmulator gearmulator Public

    Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs

    C 318 38

  2. dsp56300 dsp56300 Public

    Motorola/Freescale DSP 56300 family emulator

    C++ 44 10

  3. JUCE JUCE Public

    Forked from juce-framework/JUCE

    JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

    C++ 4 1

  4. mc68k mc68k Public

    Forked from kstenerud/Musashi

    Motorola MC68331 emulator written in C++

    C 2

  5. cpp-terminal cpp-terminal Public

    Forked from jupyter-xeus/cpp-terminal

    C++ library for writing multiplatform terminal applications

    C++